取消申请.txt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. 好的,我已经查询到了apply/cancel相关的逻辑。原项目中有两个取消/撤回功能:
  2. 1. cancelOrder - 取消订单 (Controller第188行)
  3. 接口: ApplyController::cancelOrder()
  4. 参数: order_id (订单ID)
  5. 业务逻辑:
  6. 验证阶段:
  7. 1. 查询订单信息(remote_order表)
  8. 2. 验证订单状态:只能取消 CREATE(1) 或 PAYCOMPLTET 状态的订单
  9. 3. 查询关联的申请单(remote_application表)
  10. 4. 验证申请单状态:report_status 必须是 3、4、5、11 之一(申请中的状态)
  11. 执行阶段:
  12. 1. 更新申请单状态
  13. - 将 report_status 设置为 11(撤回状态)
  14. 2. 保存进度日志
  15. - 调用 saveProgressLog(doctor, 10, application_id)
  16. - type = 10
  17. 3. 推送微信消息
  18. - 调用 pushWechatCancel(order_id)
  19. 4. 根据支付类型处理退款:
  20. 4. 医院挂账 (pay_type = 1):
  21. - 更新订单状态为 REDUCE
  22. - 查询机构当前余额 (current_money)
  23. - 退款:current_money = current_money + order_money
  24. - 更新机构余额
  25. - 记录流水到 remote_water 表:
  26. {
  27. 'id': UUID,
  28. 'hospital_id': 医院ID,
  29. 'order_id': 订单ID,
  30. 'money': 订单金额,
  31. 'type': ADD (增加),
  32. 'why': REFUNDINCOME (退款收入),
  33. 'timestamp': 当前时间戳
  34. }
  35. 患者支付 (pay_type = 0):
  36. - 更新订单状态为 CANCEL
  37. ---
  38. 2. recall - 撤回申请单 (Controller第223行)
  39. 接口: ApplyController::recall()
  40. 参数: id (申请单ID)
  41. 业务逻辑:
  42. 验证阶段:
  43. 1. 验证申请单状态:只能撤回 step4(4) 发起状态的申请单
  44. 执行阶段:
  45. 1. 更新申请单状态
  46. - 调用 updateStatus(id, step11, 4, doctor)
  47. - 将 report_status 设置为 step11(11)(撤回状态)
  48. - BBS type = 4
  49. 2. 保存进度日志
  50. - 调用 save_progress(id, doctor, '撤回了远程申请', 4)
  51. - type = 4
  52. 3. 发送消息通知
  53. - 调用 insertMessage(id, doctor, '撤回了远程申请', ['remote_institution_id','remote_doctor_id'])
  54. - 发送给:受邀机构的受邀医生
  55. ---
  56. 状态码说明:
  57. 'remote_status' => [
  58. 'step2' => 2, // 保存完善病例资料
  59. 'step3' => 3, // 完善病例资料保存继续
  60. 'step4' => 4, // 选择医院发起申请
  61. 'step5' => 5, // 驳回申请
  62. 'step6' => 6, // 接收申请
  63. 'step7' => 7, // 写报告
  64. 'step8' => 8, // 审核报告
  65. 'step9' => 9, // 最终完成报告
  66. 'step10' => 10, // 确认报告
  67. 'step11' => 11, // 撤回报告
  68. ]
  69. ---
  70. 两个功能的区别:
  71. 1. cancelOrder:
  72. - 针对订单的取消
  73. - 涉及退款处理(医院挂账需要退款到机构账户)
  74. - 推送微信消息
  75. - 进度日志 type=10
  76. 2. recall:
  77. - 针对申请单的撤回
  78. - 只能撤回发起状态(step4)的申请
  79. - 发送消息通知给受邀方
  80. - 进度日志 type=4
  81. - BBS记录 type=4
  82. 需要我帮你实现这两个功能吗?