Skip to content
Back to case files
WorkIn progress

Smart Property & Community

Unit binding, certification review, fee payment, visitor invitations and access control

Role
Full-stack (endpoints and mini-program pages)
Scale
4 console identities · 3 resident identities
Period
Aug 2026 — Present
Spring BootMyBatis-PlusMySQLRedisuni-appWeChat mini programVue 2

What I did

  • Three kinds of resident (owner / family member / tenant) against four console identities, with data isolated by tenant and level
  • Phone numbers made unique per account domain with a hardened login path, preventing cross-domain collision
  • Unit binding, member management and certification review implemented in the mini program, with identity switching
  • Self-service parking-space fee payment: choose a space → see arrears → pay → callback settles, replacing the offline or console-only path

Context

One residential community has at least three kinds of people: owners, family members, tenants. They see different things — an owner sees property and fees, a family member can open doors but cannot pay, a tenant has rights only while the lease runs. Above that, the platform serves several property companies and projects, and data must not leak between them.

Identity matrix

Layer Identity Typical rights
Resident Owner See unit and bills, pay, invite visitors, open doors, file repairs
Resident Family member Open doors, read notices; cannot change the unit or pay
Resident Tenant Open doors and file repairs within the lease term, expiring automatically
Console Super admin Platform-level configuration and troubleshooting across tenants
Console Operations Review and content within assigned tenants
Console Tenant admin Units, people, fees and devices of their own tenant
Console Tenant user Day-to-day operations within the tenant, granted by menu

Whether a record is visible is decided by four dimensions at once — identity type × role × app center × tenant. The model is enforced in the API, not by hiding buttons: the frontend decides whether an entry point appears, the backend decides whether the data can be fetched.

The loop

Unit binding → Certification review → Fee payment
     │                 │                  │
     ├─ Members        ├─ Owner / tenant  ├─ Property fee
     └─ Multiple units └─ Re-upload docs  └─ Space-management fee
                                            │
Visitor invitation → Door opening → Repair / inspection → Records

Almost every daily property action leaves a record: who certified when, which unit is in arrears, who approved a visitor, which door opening failed.

What I worked on

Identity and tenancy

Two account systems run in parallel: console accounts (super admin / operations / tenant admin / tenant user) and resident accounts (owner / member / tenant). Both log in by phone number, and early on the same number could overwrite itself across the two domains.

I made phone numbers unique per domain and hardened the login path, then constrained cross-tenant and cross-level queries and operations — a tenant admin sees only their own tenant’s users, and cross-level operations are refused.

Fees

Parking-space fees had no resident-facing entry: you paid offline or the console collected on your behalf. I added the mini-program path — choose a space → see arrears → pay → callback settles it — with payment records surfaced on the console.

Certification

Owner and tenant certification require property documents or lease contracts, reviewed by the property manager. The trap is that incomplete material is the norm: some fields must be optional, otherwise a null lands in the database and blocks the rest of the flow. I adjusted validation and persistence so only the genuinely required fields are mandatory.

Engineering notes

  • Four-dimensional access control: identity type × role × app center × tenant, all four deciding visibility
  • Two account systems, no contamination: domain-scoped phone uniqueness and isolated login paths
  • Traceable states: certification, payment and door opening all leave records for later verification
  • Identity switching: one WeChat account can bind both owner and tenant identities, with menus and data trimmed per identity

Team and scope

The team owns community and unit modelling, visitor and access-device integration, repair and inspection flows, and the property console as a whole. I own identity and tenancy validation, the space-fee payment path, and unit binding and certification review on the mini program.