智慧园区租赁管理
目标:房屋租赁 → 合同 → 计费 → 账单 → 收款的全生命周期管理
一、文档说明
1.1 适用对象
- 产品经理:需求确认、范围控制、验收依据
- 后端开发:领域建模、数据库设计、接口实现
二、系统建设目标
2.1 业务目标
- 实现园区、楼栋、房源的统一资产管理
- 实现企业入驻到退租的全流程闭环
- 支持多园区、多合同、多房源、多计费规则并存
- 支持租金、物业费、水电能耗等多费用类型
- 减少人工算账、漏账、错账风险
三、系统总体架构
3.1 架构概览
前端(Web / 管理后台)
↓
API 网关 / 鉴权(Token / RBAC)
↓
租赁管理服务
↓
MySQL(主数据) + Redis(缓存 / 锁 / 账单幂等)
四、核心业务流程
4.1 企业入驻流程(主流程)
flowchart TD
A[创建园区 / 楼栋 / 房源] --> B[录入企业基础信息]
B --> C[创建租赁合同<br/>起止日期 / 押金]
C --> D[绑定房源]
D --> E[配置计费规则<br/>租金 / 物业费等]
E --> F[系统按规则自动生成账单]
F --> G[收款登记]
4.2 能耗抄表与计费流程账单生成
flowchart TD
A[维护房源表计信息]
A --> A1[水表]
A --> A2[电表]
A --> A3[气表]
A1 --> B[定期抄表]
A2 --> B
A3 --> B
B --> C[计算本期用量]
C --> D[匹配计费规则]
D --> D1[单价计费]
D1 --> E[计算能耗费用]
E --> F[生成账单明细]
F --> G[合并账单]
五、领域模型与ER关系
5.1 基础 ER 关系
- 一个园区 → 多个楼栋
- 一个楼栋 → 多个房源
- 一个企业 → 多个合同
- 一个合同 → 多个房源
- 一个合同 → 多个计费规则
- 一个计费规则 → 多个账单
- 一个账单 → 多笔收款
5.2 能耗计费领域关系
- 一个房源 → 多个表计
- 一个表计 → 多条抄表记录
- 一条抄表记录 → 对应一个账期用量
- 一个计费规则 → 关联表计类型(水 / 电)
- 一个账单 → 包含租金 / 物业 / 水 / 电多条明细
六、核心数据表设计
6.1 园区表 park
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 园区ID | bigint | | 是 | 主键 |
| park_name | 园区名称 | varchar | 100 | 是 | |
| park_address | 园区地址 | varchar | 255 | 否 | |
| status | 状态 | tinyint | | 是 | 1启用 / 0停用 |
6.2 楼栋表 park_building
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 楼栋ID | bigint | | 是 | 主键 |
| park_id | 园区ID | bigint | | 是 | 外键 |
| building_name | 楼栋名称 | varchar | 100 | 是 | |
| floor_count | 楼层数 | int | | 否 | |
6.3 房源表 park_room
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 房源ID | bigint | | 是 | 主键 |
| park_id | 园区ID | bigint | | 是 | |
| building_id | 楼栋ID | bigint | | 是 | |
| room_code | 房号 | varchar | 50 | 是 | 如 101 / A-305 |
| floor_no | 楼层 | int | | 否 | |
| house_type | 房屋类型 | varchar | 20 | 是 | 商铺 / 住宅 / 仓库 / 办公室 |
| build_area | 建筑面积 | decimal | 12,2 | 是 | 单位:㎡ |
| inner_area | 室内面积 | decimal | 12,2 | 否 | 使用面积,单位:㎡ |
| rent_area | 计租面积 | decimal | 12,2 | 是 | 实际用于租金计算的面积 |
| rent_price | 租金单价 | decimal | 12,2 | 否 | 租金,元/㎡/月 |
| property_price | 物业费单价 | decimal | 12,2 | 否 | 元/㎡/月 |
| rent_status | 租赁状态 | tinyint | | 是 | 0空置 / 1已租 / 2预定 |
6.4 房源设备绑定表 park_room_device
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 主键 | bigint | | 是 | |
| park_id | 园区ID | bigint | | 是 | |
| room_id | 房源ID | bigint | | 是 | |
| device_id | 设备ID | bigint | | 是 | |
| device_no | 设备编号 | varchar | 50 | 是 | |
| energy_type | 能源类型 | varchar | 20 | 是 | 水 / 电 / 气 |
| remark | 备注 | varchar | 255 | 否 | |
6.5 入驻租户表 lease_tenant
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 租户ID | bigint | | 是 | 主键 |
| tenant_type | 租户类型 | tyint | | 是 | 0:企业 / 1:个人 |
| tenant_name | 租户名称 | varchar | 200 | 是 | 企业名称或个人姓名 |
| unified_credit_code | 企业统一信用代码 | varchar | 50 | 否 | 仅企业租户 |
| contact_name | 联系人姓名 | varchar | 50 | 是 | 企业联系人 / 个人本人 |
| contact_phone | 手机号码 | varchar | 50 | 是 | |
| id_card_no | 身份证号码 | varchar | 50 | 否 | 个人租户必填 |
| legal_person | 法人代表 | varchar | 50 | 否 | 企业租户 |
| registered_address | 注册地址 | varchar | 255 | 否 | 企业注册地址 |
| office_address | 实际使用地址 | varchar | 255 | 否 | 入驻园区地址 |
| entry_date | 入驻日期 | date | | 否 | 首次入驻 |
| exit_date | 退驻日期 | date | | 否 | 完全退租 |
| status | 租户状态 | varchar | 20 | 是 | 正常入驻 / 已退驻 / 已停用 |
| remark | 备注 | varchar | 500 | 否 | |
6.6 租赁合同表 lease_contract
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 合同ID | bigint | | 是 | 主键 |
| contract_no | 合同编号 | varchar | 50 | 是 | 唯一 |
| park_id | 园区ID | bigint | | 是 | |
| lease_tenant_id | 入驻租户ID | bigint | | 是 | 承租方 |
| party_a_contact | 甲方联系电话 | varchar | 50 | 否 | 园区/业主方 |
| party_b_contact | 乙方联系电话 | varchar | 50 | 否 | 企业联系人 |
| attachment_url | 合同附件地址 | varchar | 500 | 否 | 合同PDF/扫描件 |
| sign_date | 签订日期 | date | | 是 | |
| start_date | 起租日期 | date | | 是 | |
| end_date | 到期日期 | date | | 是 | |
| base_rent_price | 起始租金单价 | decimal | 12,2 | 否 | 展示用,元/㎡/月 |
| deposit_amount | 押金金额 | decimal | 12,2 | 否 | |
| is_renew | 是否续租 | tinyint | | 是 | 0否 / 1是 |
| renew_from_contract_id | 续租来源合同ID | bigint | | 否 | 上一合同 |
| terminate_date | 实际退租日期 | date | | 否 | |
| terminate_type | 退租类型 | tinyint | | 否 | 1到期 / 2提前 / 3违约 |
| terminate_reason | 退租原因 | varchar | 200 | 否 | |
| status | 合同状态 | tinyint | | 是 | 1生效 / 2到期 / 3终止 |
6.7 合同房源表 lease_contract_room
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 主键 | bigint | | 是 | |
| contract_id | 合同ID | bigint | | 是 | |
| room_id | 房源ID | bigint | | 是 | |
| lease_tenant_id | 入驻租户ID | bigint | | 否 | 承租方 |
| rent_area | 实际计租面积 | decimal | 12,2 | 是 | |
| water_init_reading | 水表起始读数 | decimal | 12,2 | 否 | 合同生效时抄表 |
| electric_init_reading | 电表起始读数 | decimal | 12,2 | 否 | 合同生效时抄表 |
| gas_init_reading | 燃气表起始读数 | decimal | 12,2 | 否 | 合同生效时抄表 |
| remark | 备注 | varchar | 255 | 否 | |
6.8 计费规则表 lease_fee_rule
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 主键 | bigint | | 是 | |
| contract_id | 合同ID | bigint | | 否 | |
| room_id | 房源ID | bigint | | 否 | 房间 / 商铺 | |
| fee_type | 费用类型 | varchar | 50 | 是 | 租金 / 物业 / 水 /电 |
| unit_price | 单价 | decimal | 12,4 | 是 | |
| cycle | 计费周期 | varchar | 20 | 是 | 月/季/年 |
6.9 账单表 lease_bill
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 账单项ID | bigint | | 是 | 主键 |
| bill_no | 账单号 | varchar | 50 | 是 | 同一账单下多条明细共用 |
| bill_period | 账单日期 | varchar | 20 | 是 | YYYY-MM |
| lease_tenant_id | 入驻租户ID | bigint | | 是 | 对应入驻企业 / 个人 |
| contract_id | 合同ID | bigint | | 是 | 租赁合同 |
| room_id | 房源ID | bigint | | 是 | 房间 / 商铺 |
| fee_type | 费用类型 | varchar | 50 | 是 | 物业费 / 租金 / 水 / 电 |
| park_meter_id | 抄表ID | bigint | | 否 | 抄表记录表ID |
| usage_value | 用量 | decimal | 12,2 | 否 | 仅能耗类 |
| unit_price | 单价 | decimal | 12,4 | 是 | |
| amount | 应收金额 | decimal | 12,2 | 是 | 当前账单项金额 |
| received_amount | 已收金额 | decimal | 12,2 | 是 | 默认 0 |
| bill_status | 账单状态 | tinyint | | 是 | 0未收 / 1部分 / 2结清 |
| due_date | 到期日 | date | | 是 | |
| remark | 备注 | varchar | 255 | 否 | | |
6.10 收款表 lease_payment
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 主键 | bigint | | 是 | |
| bill_id | 账单ID | bigint | | 是 | |
| pay_no | 支付单号 | varchar | 50 | 是 | |
| pay_amount | 收款金额 | decimal | 12,2 | 是 | |
| pay_time | 收款时间 | datetime | | 是 | |
| pay_channel | 支付方式 | varchar | 50 | 否 | 银行 / 线下现金 / 支付宝 / 微信 |
6.11 抄表记录表 park_meter_reading
| 字段名 | 说明 | 类型 | 长度 | 非空 | 备注 |
|---|
| id | 主键ID | bigint | | 是 | 抄表记录ID |
| park_id | 园区ID | bigint | | 是 | |
| room_id | 房源ID | bigint | | 否 | 房间 / 商铺 |
| device_id | 设备ID | bigint | | 是 | |
| device_no | 设备编号 | varchar | 50 | 是 | |
| energy_type | 能源类型 | varchar | 20 | 是 | 水 / 电 / 气 | |
| unit | 计量单位 | varchar | 10 | 是 | m³ / kWh |
| reading_date | 抄表日期 | date | | 是 | |
| last_value | 上期读数 | decimal | 12,2 | 是 | |
| current_value | 本期读数 | decimal | 12,2 | 是 | |
| usage_value | 本期用量 | decimal | 12,2 | 是 | 本期 - 上期 |
| reading_type | 抄表方式 | tinyint | | 是 | 1人工 / 2系统 |
| remark | 备注 | varchar | 255 | 否 | |