| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 好的,我已经查询到了apply/cancel相关的逻辑。原项目中有两个取消/撤回功能:
- 1. cancelOrder - 取消订单 (Controller第188行)
- 接口: ApplyController::cancelOrder()
- 参数: order_id (订单ID)
- 业务逻辑:
- 验证阶段:
- 1. 查询订单信息(remote_order表)
- 2. 验证订单状态:只能取消 CREATE(1) 或 PAYCOMPLTET 状态的订单
- 3. 查询关联的申请单(remote_application表)
- 4. 验证申请单状态:report_status 必须是 3、4、5、11 之一(申请中的状态)
- 执行阶段:
- 1. 更新申请单状态
- - 将 report_status 设置为 11(撤回状态)
- 2. 保存进度日志
- - 调用 saveProgressLog(doctor, 10, application_id)
- - type = 10
- 3. 推送微信消息
- - 调用 pushWechatCancel(order_id)
- 4. 根据支付类型处理退款:
- 4. 医院挂账 (pay_type = 1):
- - 更新订单状态为 REDUCE
- - 查询机构当前余额 (current_money)
- - 退款:current_money = current_money + order_money
- - 更新机构余额
- - 记录流水到 remote_water 表:
- {
- 'id': UUID,
- 'hospital_id': 医院ID,
- 'order_id': 订单ID,
- 'money': 订单金额,
- 'type': ADD (增加),
- 'why': REFUNDINCOME (退款收入),
- 'timestamp': 当前时间戳
- }
- 患者支付 (pay_type = 0):
- - 更新订单状态为 CANCEL
- ---
- 2. recall - 撤回申请单 (Controller第223行)
- 接口: ApplyController::recall()
- 参数: id (申请单ID)
- 业务逻辑:
- 验证阶段:
- 1. 验证申请单状态:只能撤回 step4(4) 发起状态的申请单
- 执行阶段:
- 1. 更新申请单状态
- - 调用 updateStatus(id, step11, 4, doctor)
- - 将 report_status 设置为 step11(11)(撤回状态)
- - BBS type = 4
- 2. 保存进度日志
- - 调用 save_progress(id, doctor, '撤回了远程申请', 4)
- - type = 4
- 3. 发送消息通知
- - 调用 insertMessage(id, doctor, '撤回了远程申请', ['remote_institution_id','remote_doctor_id'])
- - 发送给:受邀机构的受邀医生
- ---
- 状态码说明:
- 'remote_status' => [
- 'step2' => 2, // 保存完善病例资料
- 'step3' => 3, // 完善病例资料保存继续
- 'step4' => 4, // 选择医院发起申请
- 'step5' => 5, // 驳回申请
- 'step6' => 6, // 接收申请
- 'step7' => 7, // 写报告
- 'step8' => 8, // 审核报告
- 'step9' => 9, // 最终完成报告
- 'step10' => 10, // 确认报告
- 'step11' => 11, // 撤回报告
- ]
- ---
- 两个功能的区别:
- 1. cancelOrder:
- - 针对订单的取消
- - 涉及退款处理(医院挂账需要退款到机构账户)
- - 推送微信消息
- - 进度日志 type=10
- 2. recall:
- - 针对申请单的撤回
- - 只能撤回发起状态(step4)的申请
- - 发送消息通知给受邀方
- - 进度日志 type=4
- - BBS记录 type=4
- 需要我帮你实现这两个功能吗?
|