88e030b7
王彪总
init project
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
# Service-Fee 费用管理微服务模块
## 模块概述
`service-fee` 是社区管理系统中的核心费用管理微服务模块,采用**命令驱动架构**设计理念,负责处理社区内所有费用相关的业务逻辑。该模块包含23个命令子模块,覆盖费用管理、停车计费、抄表管理、收据管理等核心功能。
## 技术架构
### 命令驱动架构设计
本模块采用命令驱动架构,所有业务操作都通过具体的命令类实现,每个命令类对应一个特定的业务场景,通过 `@Java110Cmd` 注解声明服务代码,实现业务逻辑的解耦和复用。
### 核心架构特点
1. **命令模式实现**:每个业务操作封装为独立的命令类
2. **事务管理**:使用 `@Java110Transactional` 注解确保数据一致性
3. **参数验证**:统一的参数验证机制,确保输入数据的有效性
4. **服务编排**:通过服务接口调用实现业务逻辑的组合
## 模块结构
```
service-fee/
├── src/main/java/com/java110/fee/
│ ├── cmd/ # 命令处理层(核心)
│ │ ├── carMonth/ # 月租车月卡管理
│ │ ├── fee/ # 费用核心管理
│ │ ├── feeCombo/ # 费用套餐管理
│ │ ├── feeComboMember/ # 费用套餐成员管理
│ │ ├── feeConfig/ # 费用配置管理
│ │ ├── feePrintPage/ # 费用打印页面管理
│ │ ├── feePrintPageTemplate/ # 费用打印模板管理
│ │ ├── feeSub/ # 费用子项管理
│ │ ├── meter/ # 抄表管理
│ │ ├── meterType/ # 表类型管理
│ │ ├── meterWater/ # 水表抄表管理
│ │ ├── oweFeeCallable/ # 欠费管理
│ │ ├── ownerCarNew/ # 业主车辆管理
│ │ ├── payFeeBatch/ # 批量缴费管理
│ │ ├── payFeeDetailDiscountNew/ # 缴费明细折扣管理
│ │ ├── payFeeDetailNew/ # 缴费明细管理
│ │ ├── payFeeQrcode/ # 缴费二维码管理
│ │ ├── payFeeRule/ # 缴费规则管理
│ │ ├── receipt/ # 收据管理
│ │ ├── returnPayFee/ # 退费管理
│ │ ├── tempCarFee/ # 临时停车费管理
│ │ └── tempCarFeeConfigAttr/ # 临时停车费配置属性管理
│ ├── api/ # API接口层
│ ├── bmo/ # 业务模型对象
│ ├── dao/ # 数据访问层
│ └── smo/ # 服务模型对象
```
## 核心命令接口清单
### 1. 月租车月卡管理 (carMonth)
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `BuyCarMonthOrderCmd` | `carMonth.buyCarMonthOrder` | 购买月租车月卡订单处理 |
| `QueryAppCarMonthCardCmd` | `carMonth.queryAppCarMonthCard` | 查询停车月卡信息 |
**核心功能**:
- 月卡购买订单处理
- 月卡信息查询
- 车辆信息验证
- 物联网服务集成
### 2. 费用核心管理 (fee) - 44个命令接口
**费用操作类**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `PayFeeCmd` | `fee.payFee` | 前台现金或转账收费处理 |
| `ListFeeCmd` | `fee.listFee` | 费用列表查询 |
| `UpdateFeeCmd` | `fee.updateFee` | 费用信息更新 |
| `DeleteFeeCmd` | `fee.deleteFee` | 费用删除 |
| `FinishFeeCmd` | `fee.finishFee` | 费用完成处理 |
**费用查询类**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `ListAdminFeeCmd` | `fee.listAdminFee` | 管理员费用查询 |
| `ListOwnerOweFeeCmd` | `fee.listOwnerOweFee` | 业主欠费查询 |
| `QueryFeeDetailCmd` | `fee.queryFeeDetail` | 费用明细查询 |
| `ListBillCmd` | `fee.listBill` | 账单列表查询 |
**批量操作类**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `PayBatchFeeCmd` | `fee.payBatchFee` | 批量缴费处理 |
| `PayBatchFeeACmd` | `fee.payBatchFeeA` | 批量缴费处理A |
**费用创建类**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveRoomCreateFeeCmd` | `fee.saveRoomCreateFee` | 保存房屋创建费用 |
| `SaveParkingSpaceCreateFeeCmd` | `fee.saveParkingSpaceCreateFee` | 保存车位创建费用 |
### 3. 费用配置管理 (feeConfig) - 7个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveFeeConfigCmd` | `feeConfig.saveFeeConfig` | 保存费用配置 |
| `UpdateFeeConfigCmd` | `feeConfig.updateFeeConfig` | 更新费用配置 |
| `DeleteFeeConfigCmd` | `feeConfig.deleteFeeConfig` | 删除费用配置 |
| `ListFeeConfigsCmd` | `feeConfig.listFeeConfigs` | 费用配置列表查询 |
| `ListConfigFeeObjsCmd` | `feeConfig.listConfigFeeObjs` | 配置费用对象列表查询 |
| `ListAdminConfigFeeObjsCmd` | `feeConfig.listAdminConfigFeeObjs` | 管理员配置费用对象查询 |
| `QueryAdminFeeConfigsCmd` | `feeConfig.queryAdminFeeConfigs` | 管理员费用配置查询 |
**核心功能**:
- 费用项配置管理
- 计费规则设置
- 费用类型定义
- 支付方式配置
### 4. 费用套餐管理 (feeCombo) - 4个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveFeeComboCmd` | `feeCombo.saveFeeCombo` | 保存费用套餐 |
| `UpdateFeeComboCmd` | `feeCombo.updateFeeCombo` | 更新费用套餐 |
| `DeleteFeeComboCmd` | `feeCombo.deleteFeeCombo` | 删除费用套餐 |
| `ListFeeComboCmd` | `feeCombo.listFeeCombo` | 费用套餐列表查询 |
### 5. 抄表管理 (meter) - 9个命令接口
**楼层分摊抄表**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveFloorShareReadingCmd` | `meter.saveFloorShareReading` | 保存楼层分摊抄表 |
| `AuditFloorShareReadingCmd` | `meter.auditFloorShareReading` | 审核楼层分摊抄表 |
| `ListFloorShareReadingCmd` | `meter.listFloorShareReading` | 楼层分摊抄表列表查询 |
| `DeleteFloorShareReadingCmd` | `meter.deleteFloorShareReading` | 删除楼层分摊抄表 |
**楼层分摊表管理**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveFloorShareMeterCmd` | `meter.saveFloorShareMeter` | 保存楼层分摊表 |
| `UpdateFloorShareMeterCmd` | `meter.updateFloorShareMeter` | 更新楼层分摊表 |
| `DeleteFloorShareMeterCmd` | `meter.deleteFloorShareMeter` | 删除楼层分摊表 |
| `ListFloorShareMeterCmd` | `meter.listFloorShareMeter` | 楼层分摊表列表查询 |
**费用查询**:
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `ListFloorShareFeeCmd` | `meter.listFloorShareFee` | 楼层分摊费用列表查询 |
### 6. 水表抄表管理 (meterWater) - 6个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveMeterWaterCmd` | `meterWater.saveMeterWater` | 保存水表抄表记录 |
| `SaveProxyFeeCmd` | `meterWater.saveProxyFee` | 保存代收费记录 |
| `UpdateMeterWaterCmd` | `meterWater.updateMeterWater` | 更新水表抄表记录 |
| `DeleteMeterWaterCmd` | `meterWater.deleteMeterWater` | 删除水表抄表记录 |
| `ListMeterWatersCmd` | `meterWater.listMeterWaters` | 水表抄表列表查询 |
| `ListAdminMeterWatersCmd` | `meterWater.listAdminMeterWaters` | 管理员水表抄表查询 |
### 7. 欠费管理 (oweFeeCallable) - 5个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `SaveOweFeeCallableCmd` | `oweFeeCallable.saveOweFeeCallable` | 保存欠费记录 |
| `WriteOweFeeCallableCmd` | `oweFeeCallable.writeOweFeeCallable` | 写入欠费记录 |
| `DeleteOweFeeCallableCmd` | `oweFeeCallable.deleteOweFeeCallable` | 删除欠费记录 |
| `ListOweFeeCallableCmd` | `oweFeeCallable.listOweFeeCallable` | 欠费记录列表查询 |
| `ListAdminOweFeeCallableCmd` | `oweFeeCallable.listAdminOweFeeCallable` | 管理员欠费记录查询 |
### 8. 临时停车费管理 (tempCarFee) - 3个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `GetTempCarFeeOrderCmd` | `tempCarFee.getTempCarFeeOrder` | 获取临时停车费订单 |
| `QueryTempCarFeeOrderCmd` | `tempCarFee.queryTempCarFeeOrder` | 查询临时停车费订单 |
| `NotifyTempCarFeeOrderCmd` | `tempCarFee.notifyTempCarFeeOrder` | 临时停车费订单通知 |
### 9. 收据管理 (receipt) - 4个命令接口
| 命令接口 | 服务代码 | 功能描述 |
|---------|---------|---------|
| `GeneratorReceiptCmd` | `receipt.generatorReceipt` | 生成收据 |
| `ListAccountReceiptCmd` | `receipt.listAccountReceipt` | 账户收据列表查询 |
| `ListAdminAccountReceiptCmd` | `receipt.listAdminAccountReceipt` | 管理员账户收据查询 |
| `QueryAdminFeeReceiptCmd` | `receipt.queryAdminFeeReceipt` | 管理员费用收据查询 |
### 10. 其他重要模块
**费用套餐成员管理 (feeComboMember)**:
- 费用套餐成员CRUD操作
- 套餐成员关系管理
**缴费明细管理 (payFeeDetailNew)**:
- 缴费明细CRUD操作
- 明细状态管理
**退费管理 (returnPayFee)**:
- 退费申请处理
- 退费审核流程
**缴费二维码管理 (payFeeQrcode)**:
- 缴费二维码生成
- 扫码支付处理
## 业务功能分类
### 1. 费用生命周期管理
- **费用创建**:`SaveRoomCreateFeeCmd`, `SaveParkingSpaceCreateFeeCmd`
- **费用查询**:`ListFeeCmd`, `QueryFeeDetailCmd`
- **费用支付**:`PayFeeCmd`, `PayMonthFeeCmd`
- **费用更新**:`UpdateFeeCmd`, `FinishFeeCmd`
- **费用删除**:`DeleteFeeCmd`
### 2. 停车费用管理
- **月租车月卡**:购买、查询、续费
- **临时停车费**:订单生成、查询、通知
- **停车位费用**:车位费用设置、查询
### 3. 抄表费用管理
- **水表抄表**:抄表记录、费用计算
- **楼层分摊**:公共区域费用分摊
- **代收费管理**:代收费用处理
### 4. 收据和账单管理
- **收据生成**:缴费收据生成和管理
- **账单查询**:费用账单列表查询
- **欠费管理**:欠费查询和催缴
## 技术实现特点
### 1. 命令模式实现
```java
@Java110Cmd(serviceCode = "fee.payFee")
public class PayFeeCmd extends Cmd {
@Override
public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) {
// 参数验证逻辑
}
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) {
// 业务逻辑处理
}
}
```
### 2. 事务管理
- 使用 `@Java110Transactional` 注解确保业务操作的原子性
- 分布式锁机制防止并发问题
- 事务ID统一管理
### 3. 参数验证机制
- 统一的参数验证框架
- 业务规则校验
- 数据完整性检查
### 4. 服务编排
- 通过服务接口调用组合业务逻辑
- 支持服务降级和容错处理
- 异步处理支持
## 部署和配置
### 依赖服务
- `service-user`:用户信息服务
- `service-community`:小区信息服务
- `service-store`:商户信息服务
- 物联网服务:停车系统集成
### 配置说明
- 数据库配置:费用相关表结构
- 缓存配置:费用计算缓存
- 事务配置:分布式事务管理
## 开发规范
### 命令类命名规范
- 操作类型 + 业务对象 + Cmd
- 例如:`SaveFeeConfigCmd`, `ListFeeCmd`
### 服务代码规范
- 模块名.操作名
- 例如:`fee.payFee`, `feeConfig.saveFeeConfig`
### 事务使用规范
- 写操作必须使用 `@Java110Transactional`
- 读操作不使用事务注解
- 复杂业务操作需要分布式锁保护
## 扩展和定制
### 新增费用类型
1. 在 `feeConfig` 模块添加费用配置
2. 在 `fee` 模块添加对应的命令接口
3. 实现费用计算逻辑
### 集成第三方支付
1. 实现支付接口适配器
2. 在支付命令中集成支付逻辑
3. 处理支付回调通知
## 总结
`service-fee` 模块通过命令驱动架构实现了完整的费用管理体系,具备高度的可扩展性和维护性。23个命令子模块覆盖了社区费用管理的各个方面,为社区运营提供了稳定可靠的费用处理能力。
|