钱包.md 3.1 KB

提现

参数:

- 角色编号, 角色, 提现金额
- user_id 通过 Auth::id() 获取

涉及表和关键列:

  • 提现记录表
    • 字段:角色编号, 角色, 提现金额, 审核状态, 审核时间
    • 角色字段
    • 用户
    • 技师
    • 审核状态字段
    • 申请中
    • 已通过
    • 已驳回
  • 钱包流水表
    • 字段:角色, 角色编号, 交易类型, 交易金额, 钱包余额, 钱包冻结金额, 状态
    • 交易类型字段
    • 提现

后台逻辑:

  • 根据角色及角色编号,查询钱包数据
  • 如果余额不足,则返回失败
  • 如果余额足够,则添加事务处理

    • 检验
      • 提现金额大于0
      • 提现金额小于等于钱包余额减钱包冻结金额
    • 创建提现记录

      • 角色编号:角色编号
      • 角色:角色
      • 提现金额:提现金额
      • 审核状态:申请中
    • 更新钱包数据

      • 添加数据修改乐观锁
      • 钱包冻结金额增加提现金额
  • 发送提现通知(比如对接极光推送)

退款

参数:

- 用户编号 通过 Auth::id() 获取
- 订单编号 通过路由获取

涉及表和关键列:

- 订单表
    - 字段:编号, 用户编号, 状态
    - 状态
        - 待支付
        - 待服务
        - 待评价
        - 已完成
        - 已取消
- 订单历史记录表
    - 字段:历史记录编号, 订单编号, 角色, 角色编号, 状态
    - 角色
        - 用户
        - 技师
        - 代理
    - 状态
        - 下单
        - 接单
        - 出发
        - 到达
        - 开始
        - 结束
        - 撤离
        - 取消(退款)

后台逻辑:

  1. 查询钱包明细
    • 订单编号
    • 钱包明细类型为退款
    • 如果存在,则逻辑停止
  2. 查询订单记录
    • 订单编号
    • 状态存在已到达或开始服务,则停止逻辑
    • 状态不存在支付,则停止逻辑
  3. 更新数据

    • 开启事务
    • 计算退款金额
      • 订单金额 = 订单实际支付金额 加 订单使用余额抵扣金额
      • 如果记录订单状态不存在接单、出发
        • 退款金额 = 订单金额
      • 否则,如果记录订单状态存在出发
        • 退款金额 = (订单金额-订单车费金额) * 0.5
      • 否则,如果记录订单状态存在接单
        • 退款金额 = (订单金额-订单车费金额) * 0.2 + 订单车费金额
    • 钱包总额加退款金额

    • 添加钱包明细表

      • 钱包编号
      • 钱包明细类型为退款
      • 钱包明细金额为退款金额
    • 提交事务

分润

查询钱包

参数:

- 角色
- 角色编号

后台逻辑:

- 查询钱包数据
    - 角色编号
    - 角色
- 返回钱包数据

钱包明细

参数:

- 钱包编号

后台逻辑:

- 查询钱包明细数据
    - 钱包编号
- 返回钱包明细数据