编辑 | blame | 历史 | 原始文档

转运任务支付功能实现进度

已完成的工作

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 调用支付模块接口
- [ ] 实现签名验证逻辑
- [ ] 处理异常情况和重试逻辑

下一步操作建议

🎉 核心功能已全部完成!

接下来需要完成的工作:

  1. 优先级最高:数据库初始化
  • 执行 sql/task_payment_tables.sql 创建表和字典
  • 确认附加费用类型字典正确创建
  1. 优先级2:配置支付模块
  • application.yml 中配置支付模块URL
  • 配置回调基础URL(包括域名)
  1. 优先级3:集成测试
  • 测试附加费用管理功能
  • 测试现金/挂账支付流程
  • 测试支付信息展示(APP端和后台)
  • 验证金额计算正确性
  1. 优先级4:对接真实支付模块
  • 根据支付模块实际接口文档修改 PaymentModuleServiceImpl.java
  • 替换TODO标记的模拟代码为真实的HTTP调用
  • 测试微信/支付宝二维码生成
  • 测试支付状态轮询与回调
  • 实现签名验证逻辑
  1. 可选功能:任务列表结算按钮
  • app/pages/task/list.vue 任务卡片增加“结算”按钮

注意事项

  1. 金额精度:所有金额计算使用 BigDecimal,保留两位小数
  2. 事务管理:附加费用操作和支付操作已添加 @Transactional 注解
  3. 权限控制:支付相关接口需要JWT鉴权,确保只有任务相关人员可操作
  4. 数据权限:遵循现有部门/分公司隔离规则
  5. 回调安全:实际项目中需要严格验证回调签名
  6. 二维码过期:前端应提示二维码过期时间并允许重新生成
  7. 支付状态一致性:以后端支付状态为准,回调与轮询保持一致