#### 提现 **参数**: - 角色编号, 角色, 提现金额 - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 提现记录表 - 字段:角色编号, 角色, 提现金额, 审核状态, 审核时间 - 角色字段 - 用户 - 技师 - 审核状态字段 - 申请中 - 已通过 - 已驳回 - 钱包流水表 - 字段:角色, 角色编号, 交易类型, 交易金额, 钱包余额, 钱包冻结金额, 状态 - 交易类型字段 - 提现 **后台逻辑**: - 根据角色及角色编号,查询钱包数据 - 如果余额不足,则返回失败 - 如果余额足够,则添加事务处理 - 检验 - 提现金额大于0 - 提现金额小于等于钱包余额减钱包冻结金额 - 创建提现记录 - 角色编号:角色编号 - 角色:角色 - 提现金额:提现金额 - 审核状态:申请中 - 更新钱包数据 - 添加数据修改乐观锁 - 钱包冻结金额增加提现金额 - 发送提现通知(比如对接极光推送) #### 退款 **参数**: - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **涉及表和关键列**: - 订单表 - 字段:编号, 用户编号, 状态 - 状态 - 待支付 - 待服务 - 待评价 - 已完成 - 已取消 - 订单历史记录表 - 字段:历史记录编号, 订单编号, 角色, 角色编号, 状态 - 角色 - 用户 - 技师 - 代理 - 状态 - 下单 - 接单 - 出发 - 到达 - 开始 - 结束 - 撤离 - 取消(退款) **后台逻辑**: 1. 查询钱包明细 - 订单编号 - 钱包明细类型为退款 - 如果存在,则逻辑停止 2. 查询订单记录 - 订单编号 - 状态存在已到达或开始服务,则停止逻辑 - 状态不存在支付,则停止逻辑 2. 更新数据 - 开启事务 - 计算退款金额 - 订单金额 = 订单实际支付金额 加 订单使用余额抵扣金额 - 如果记录订单状态不存在接单、出发 - 退款金额 = 订单金额 - 否则,如果记录订单状态存在出发 - 退款金额 = (订单金额-订单车费金额) * 0.5 - 否则,如果记录订单状态存在接单 - 退款金额 = (订单金额-订单车费金额) * 0.2 + 订单车费金额 - 钱包总额加退款金额 - 添加钱包明细表 - 钱包编号 - 钱包明细类型为退款 - 钱包明细金额为退款金额 - 提交事务 #### 分润 #### 查询钱包 **参数**: - 角色 - 角色编号 **后台逻辑**: - 查询钱包数据 - 角色编号 - 角色 - 返回钱包数据 #### 钱包明细 **参数**: - 钱包编号 **后台逻辑**: - 查询钱包明细数据 - 钱包编号 - 返回钱包明细数据