在 Y2Ksoft 的 260+ 套系统中,花溪保利凤凰湾物业ERP是一个架构分层的标杆——它不只是单文件HTML,而是Express模块化后端 + 三端分离前端 + Nginx反向代理的真·全栈部署。PC后台、员工APP、业主小程序三个入口共用一套API,日处理缴费、报修、巡检、停车等高频业务。
本文将拆解这套系统的10大路由模块、30+数据表模型、三端分离架构,以及 Y2Ksoft 在物业赛道沉淀的行业 Know-how。
| 项目 | 详情 |
|---|---|
| 系统名称 | 花溪保利凤凰湾物业ERP系统 v1.1.0 |
| 技术栈 | Node.js Express + SQLite (better-sqlite3) + JWT + Bcrypt |
| 部署端口 | 3003(Nginx /fenghuang/ → 3003) |
| 线上地址 | https://www.y2ksoft.cn/fenghuang/admin/ |
| 前端架构 | 三端分离:admin(PC后台) + app(员工APP) + wx(业主小程序) |
| 数据规模 | 30+张表 + 完整种子数据(楼栋/房屋/业主/账单/车位/设备/员工) |
| 路由模块 | 10个独立路由文件(auth/property/finance/workorder/device/parking/security/community/hr/system) |
与 Y2Ksoft 90% 系统的「单文件HTML全栈」不同,凤凰湾物业采用三端分离+模块化路由的进阶架构:
花溪保利凤凰湾物业ERP/
├── backend/
│ ├── server.js ← Express 主入口(注册10个路由 + CORS白名单)
│ ├── database/
│ │ ├── init.js ← SQLite 初始化 + 自动迁移
│ │ └── seed.js ← 30+表 DDL + 种子数据
│ ├── middleware/
│ │ └── auth.js ← JWT 签发/验证 + 密码哈希升级
│ ├── routes/
│ │ ├── auth.js ← 登录/注册/密码修改
│ │ ├── property.js ← 楼栋·房屋·业主·装修·钥匙
│ │ ├── finance.js ← 费项·抄表·账单·收费·减免·流水
│ │ ├── workorder.js ← 报修·投诉·增值服务
│ │ ├── device.js ← 设备台账·维保计划·维保记录·巡检
│ │ ├── parking.js ← 车位·车辆·道闸记录
│ │ ├── security.js ← 巡逻·排班·事件·访客·门禁·消防
│ │ ├── community.js ← 通知·场馆·保洁·绿化·垃圾
│ │ ├── hr.js ← 员工管理·薪资
│ │ └── system.js ← 系统设置·数据备份
│ └── public/
│ ├── admin/ ← PC 管理后台(index.html + app.js + styles.css)
│ ├── app/ ← 员工 APP 端
│ └── wx/ ← 业主小程序端
└── package.json
楼栋→单元→房屋 树形结构
业主档案·迁入迁出·装修登记·钥匙领用
费项配置·抄表录入·周期账单
在线收费·减免审批·流水对账
业主报修·投诉建议·增值服务
紧急分级·派工·完工评价
设备台账·维保计划自动排期
维保记录·巡检点位·异常上报
车位编号·车辆绑定·月卡
道闸进出记录·临停计费
巡逻路线·排班交接·事件记录
访客登记·门禁刷卡·消防器材
通知公告·场馆预约·保洁任务
绿化养护·垃圾分类清运
员工档案·部门·岗位
入职离职·薪资记录
JWT双Token·密码Bcrypt
明文密码自动升级哈希
系统包含30+张业务表,覆盖物业管理的全场景。以下是核心表结构:
| 表名 | 核心字段 | 关系 |
|---|---|---|
buildings | zone区域·name楼栋名·type类型·units单元数·floors层数 | 1→N rooms |
rooms | building楼栋·unit单元·room_no房号·type户型·area面积·status状态 | 1→1 owner |
owners | name·phone·id_card身份证·family_members家庭成员·room_no·checkin_date | 关联 rooms |
property_changes | room_no·type变更类型·from_name/to_name·date | 业主变更历史 |
renovations / keys | 装修登记(押金/状态/违规)+ 钥匙领用归还 | 关联 rooms |
| 表名 | 核心字段 |
|---|---|
fee_configs | name费项名·category分类·price单价·unit计费单位·cycle周期·late_rate滞纳金率 |
meters | room_no·type水/电/气·last_reading上次读数·current_reading本次读数·period账期 |
bills | bill_no单号·room_no·owner_name·period账期·items明细JSON·total总额·late_fee滞纳金·status状态·due_date·paid_at·pay_method |
transactions | type收入/支出·category分类·amount金额·method方式·handler经手人·related_no关联单号 |
reductions | bill_no·room_no·amount减免额·reason原因·status审批状态·applicant/approver |
| 表名 | 核心字段 |
|---|---|
repairs | order_no·room_no·type·title·content·urgency紧急度·status·assignee派工人·source来源·rating评价 |
complaints | order_no·category·level·content·status·handler·deadline·result·revisit_note回访 |
services | order_no·type增值服务类型·price·worker·appoint_time预约时间 |
devices | code编号·name·category·location·brand·model·install_date·status |
maint_plans / maint_records / inspections | 维保计划(周期/下次日期)+ 维保记录 + 巡检记录 |
| 表名 | 核心字段 |
|---|---|
parking_spaces | zone·space_no·type·owner_name·plate·monthly_fee·status |
vehicles / gate_logs | 车辆绑定 + 道闸进出(plate/direction/gate/fee/time) |
patrol_routes / patrol_logs | 巡逻路线(points点位JSON)+ 巡逻记录 |
shifts | guard·shift班次·date·handover交接内容 |
incidents / visitors / access_logs | 安全事件 + 访客登记 + 门禁刷卡记录 |
fire_equipment | 消防器材(名称/类型/位置/检查日期/状态) |
| 表名 | 核心字段 |
|---|---|
notices | title·type·content·publisher·publish_date·status |
venues / venue_bookings | 场馆(容量/费用)+ 预约记录 |
cleaning_tasks | area区域·worker·shift·date·status·check_result检查结果 |
green_tasks | area·content养护内容·worker·date·status |
garbage_logs | type垃圾类型·amount数量·handler·date |
staff | name·role角色·dept部门·entry_date·salary·status |
inventory / stock_logs / suppliers | 库存(名称/规格/库存/预警)+ 出入库 + 供应商 |
凤凰湾物业在 Nginx 层面做了路径分流,三端共用同一套后端 API:
# Nginx 配置(简化)
location /fenghuang/ {
proxy_pass http://127.0.0.1:3003/; # 所有请求转发到3003端口
}
# 三端入口:
# /fenghuang/admin/ → PC管理后台(物业工作人员用)
# /fenghuang/app/ → 员工移动端(保安/保洁/维修工用)
# /fenghuang/wx/ → 业主小程序Web版(业主缴费/报修/公告)
index.html + app.js + styles.css
完整10大模块操作界面
Glassmorphism 深蓝金主题
移动端适配的轻量界面
巡检打卡·工单处理·排班查看
适配手机屏幕
微信小程序Web版
在线缴费·报修申请·公告查看
场馆预约·访客登记
架构优势:三端共享同一套后端API——物业工作人员在PC后台录入的费项,业主在小程序端实时可见;业主在小程序提交的报修,维修工在APP端立即收到派单。数据流转零延迟。
凤凰湾物业在安全层面做了两件很巧妙的事:
// server.js —— 只允许白名单域名访问
const allowedOrigins = [
'http://localhost:3003',
'https://www.y2ksoft.cn',
'http://www.y2ksoft.cn'
];
app.use(cors({
origin(origin, cb) {
if (!origin || allowedOrigins.includes(origin)) return cb(null, true);
return cb(new Error('未授权的来源')); // 拒绝非白名单请求
},
credentials: true
}));
系统内置了一个幂等迁移脚本——首次启动时自动检测数据库中的密码是否为明文,如果是则自动用 Bcrypt 哈希替换:
// database/init.js
export function migratePasswords() {
const users = db.prepare('SELECT * FROM users').all();
for (const u of users) {
if (!u.password.startsWith('$2b$')) { // 检测明文密码
db.prepare('UPDATE users SET password=? WHERE id=?')
.run(bcrypt.hashSync(u.password, 10), u.id);
}
}
}
凤凰湾是一个高端住宅小区,「凤凰」+「湾」的品牌意象决定了系统的视觉调性——沉稳、尊贵、有温度:
:root{
--bg:#0a1220; /* 深蓝夜幕——沉稳底座 */
--bg2:#0e1930; /* 微亮深蓝——卡片底色 */
--gold:#d4af37; /* 凤凰金——核心强调色 */
--gold2:#f0d060; /* 亮金——高亮/悬停 */
--blue:#4a90d9; /* 水湾蓝——信息面板 */
--green:#3ecf8e; /* 生态绿——正向指标 */
--red:#ef5b6b; /* 警示红——欠费/过期 */
--orange:#f0a13c; /* 暖橙——待处理 */
--txt:#e8eefb; /* 冰蓝白——正文 */
--line:rgba(120,160,220,.14);
}
body{background:
radial-gradient(900px 500px at 15% 20%, rgba(212,175,55,.14), transparent 60%),
radial-gradient(800px 600px at 85% 80%, rgba(74,144,217,.18), transparent 60%),
linear-gradient(160deg,#0a1220,#101d38 60%,#0a1220);
}
左上金色辉光象征「凤凰」、右下蓝色辉光象征「湾水」——两层径向渐变叠加形成金蓝交织的品牌氛围。登录页的Logo是一个金底深字的圆形徽章,正面看是「凤」字的意象。
PC后台首页是一个物业驾驶舱,展示核心运营指标:
| 维度 | 能力 |
|---|---|
| 架构分层 | Express模块化路由(10个独立文件)+ 三端分离前端 + Nginx代理 |
| 数据规模 | 30+表,覆盖资产/收费/工单/设备/停车/安保/社区/环境/人力全场景 |
| 安全体系 | JWT + Bcrypt + CORS白名单 + 密码自动升级迁移 |
| 多端覆盖 | PC后台(物业人员)+ APP(一线员工)+ 小程序(业主),三端共享API |
| 视觉标准 | 深蓝金Glassmorphism,庄园品质感 |
| 生产部署 | systemd自启服务 + Nginx反向代理 + 线上持续运行 |
从楼栋管理到业主缴费、从设备巡检到保安巡逻——物业管理的「颗粒度」,就体现在这些数据表的设计细节里。凤凰湾物业ERP是 Y2Ksoft 在建筑地产业态的标杆之作。
如果这篇文章对你有帮助,欢迎分享