转运任务支付功能实现进度
已完成的工作
1. 数据库设计 ✅
- ✅ 创建
sys_task_additional_fee 附加费用表
- ✅ 创建
sys_task_payment 支付记录表
- ✅ 创建附加费用类型字典
task_additional_fee_type
- ✅ SQL脚本:
sql/task_payment_tables.sql
2. 后端实体类 ✅
- ✅ SysTaskAdditionalFee.java - 附加费用实体
- ✅ SysTaskPayment.java - 支付记录实体
- ✅ TaskPaymentInfoVO.java - 支付信息VO
- ✅ TaskPaymentCreateVO.java - 创建支付VO
- ✅ TaskPaymentResultVO.java - 支付结果VO
3. 后端Mapper层 ✅
- ✅ SysTaskAdditionalFeeMapper.java / SysTaskAdditionalFeeMapper.xml
- ✅ SysTaskPaymentMapper.java / SysTaskPaymentMapper.xml
4. 后端Service层 ✅
- ✅ ISysTaskPaymentService.java - 任务支付Service接口
- ✅ SysTaskPaymentServiceImpl.java - 任务支付Service实现
- ✅ IPaymentModuleService.java - 支付模块调用接口
- ✅ PaymentModuleServiceImpl.java - 支付模块调用实现(模拟)
5. 后端Controller层 ✅
- ✅ SysTaskPaymentController.java - 任务支付控制器
- GET /task/payment/info - 获取任务支付信息
- POST /task/payment/additional-fee/add - 新增附加费用
- POST /task/payment/additional-fee/remove - 删除附加费用
- POST /task/payment/create - 创建支付
- GET /task/payment/status - 查询支付状态
- ✅ PaymentCallbackController.java - 支付回调控制器
- POST /payment/callback/wechat - 微信支付回调
- POST /payment/callback/alipay - 支付宝支付回调
6. 前端APP端 ✅
- ✅ app/api/payment.js - 支付API调用
- ✅ app/pages/task/settlement.vue - 结算页面改造
- 支持加载支付信息
- 支持附加费用管理(新增/删除)
- 支持四种支付方式(现金、挂帐、微信、支付宝)
- 微信/支付宝显示二维码并轮询支付状态
- 金额校验(结算金额必须等于总金额)
待完成的工作
7. 前端APP端 - 任务列表和详情增加结算入口 ✅
已完成的修改:
- ✅ app/pages/task/detail.vue - 任务详情页增加"结算"按钮
- 仅转运任务显示结算按钮
- 完成/取消状态不显示结算按钮
- 点击跳转至结算页面
待完成:
- [ ] app/pages/task/list.vue - 任务列表卡片增加"结算"按钮(可选)
8. 后台管理UI - 任务详情页显示支付信息 ✅
已完成的修改:
- ✅ ruoyi-ui/src/api/task.js - 增加支付相关API接口
- getPaymentInfo - 获取任务支付信息
- getAdditionalFees - 查询附加费用列表
- getLatestPayment - 查询最新支付记录
- ✅ ruoyi-ui/src/views/task/detail/index.vue - 任务详情页增加支付信息展示
- 仅转运任务显示支付信息卡片
- 显示成交价、附加费用、总金额
- 显示支付状态、支付方式、结算金额
- 显示交易号、支付时间
- 显示附加费用明细表格(费用名称、单价、数量、小计、备注)
- 只读展示,不支持编辑
9. 配置文件 ⏳
需要添加的配置:
- [ ] application.yml - 增加支付模块配置
yaml payment: module: url: http://localhost:8081/pay # 支付模块服务地址 callback: base-url: http://localhost:8080 # 回调基础URL
10. 集成测试 ⏳
- [ ] 测试附加费用新增/删除功能
- [ ] 测试现金/挂帐支付流程
- [ ] 测试微信/支付宝二维码生成
- [ ] 测试支付状态轮询
- [ ] 测试支付回调处理
- [ ] 测试金额校验逻辑
11. 支付模块对接 ⏳
当前 PaymentModuleServiceImpl 是模拟实现,需要替换为真实的HTTP调用:
- [ ] 使用 RestTemplate 或 HttpClient 调用支付模块接口
- [ ] 实现签名验证逻辑
- [ ] 处理异常情况和重试逻辑
下一步操作建议
🎉 核心功能已全部完成!
接下来需要完成的工作:
- 优先级最高:数据库初始化
- 执行
sql/task_payment_tables.sql 创建表和字典
- 确认附加费用类型字典正确创建
- 优先级2:配置支付模块
- 在
application.yml 中配置支付模块URL
- 配置回调基础URL(包括域名)
- 优先级3:集成测试
- 测试附加费用管理功能
- 测试现金/挂账支付流程
- 测试支付信息展示(APP端和后台)
- 验证金额计算正确性
- 优先级4:对接真实支付模块
- 根据支付模块实际接口文档修改
PaymentModuleServiceImpl.java
- 替换TODO标记的模拟代码为真实的HTTP调用
- 测试微信/支付宝二维码生成
- 测试支付状态轮询与回调
- 实现签名验证逻辑
- 可选功能:任务列表结算按钮
- 在
app/pages/task/list.vue 任务卡片增加“结算”按钮
注意事项
- 金额精度:所有金额计算使用 BigDecimal,保留两位小数
- 事务管理:附加费用操作和支付操作已添加 @Transactional 注解
- 权限控制:支付相关接口需要JWT鉴权,确保只有任务相关人员可操作
- 数据权限:遵循现有部门/分公司隔离规则
- 回调安全:实际项目中需要严格验证回调签名
- 二维码过期:前端应提示二维码过期时间并允许重新生成
- 支付状态一致性:以后端支付状态为准,回调与轮询保持一致