14提现管理.sql 6.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. -- Active: xiaoding_test@@192.168.110.85@3306@xiaoding_test
  2. /*
  3. 提现角色/渠道是wallet_withdraw_records表中wallet_id关联wallet表获取owner_type字段做为提现角色,
  4. 用户名称是wallet_withdraw_records表中wallet_id关联wallet表获取owner_type钱包类型去判断用户角色,
  5. 角色有技师角色、用户角色、店铺角色、业务员角色、代理商,
  6. 如果owner_type钱包类型为技师角色则通过owner_id继续关联coach_users表判断owner_id与coach_users表id是否相同,
  7. 相同则继续通过coach_users表的user_id去member_users表去关联查询出nickname做为用户名称,
  8. 如果owner_type钱包类型为用户角色则通过owner_id与member_users表去关联查询出nickname做为用户名称,
  9. 如果owner_type钱包类型为店铺角色则通过owner_id与shop_auth_records表shop_id判断是否相同,
  10. 相同则获取shop_name做为用户名称,不相同则用户名称空着即可,
  11. 如果owner_type钱包类型为业务员角色则通过owner_id与salesmen表id判断是否相同,
  12. 相同则获取salesmen表的user_id继续去关联member_users表获取nickname字段做为用户名称,
  13. 不相同则用户名空着即可,如果owner_type钱包类型为代理商角色则通过owner_id与agent_infos表id判断是否相同,
  14. 相同则获取agent_infos表的user_id继续去关联member_users表获取nickname字段做为用户名称,不相同则用户名称空着即可,
  15. 提现金额是wallet_withdraw_records表中amount字段,申请时间是wallet_withdraw_records表中的created_at字段,
  16. 提现方式是wallet_withdraw_records表中withdraw_type字段,提现手续费是wallet_withdraw_records表中的fee字段,
  17. 审核人是wallet_withdraw_records表中的auditor字段,体现时间是wallet_withdraw_records表中的withdraw_time字段,
  18. 体现状态是wallet_withdraw_record表中的audit_state字段,区/县是wallet_withdraw_records表中的area_code字段,
  19. 剩余金额是wallet_withdraw_record表通过wallet_id关联wallet表获取available_balance字段做为剩余金额
  20. */
  21. /*
  22. 提现管理视图
  23. */
  24. DROP VIEW IF EXISTS v_withraw_management;
  25. CREATE OR REPLACE VIEW v_withraw_management AS
  26. SELECT
  27. wwr.id as id, /* 提现记录ID */
  28. wwr.wallet_id as wallet_id, /* 钱包ID */
  29. wwr.external_no as external_no, /* 外部订单号 */
  30. wwr.withdraw_type as withdraw_type, /* 提现方式 */
  31. wwr.withdraw_account as withdraw_account, /* 提现账户 */
  32. wwr.withdraw_account_name as withdraw_account_name, /* 提现账户名称 */
  33. wwr.amount as amount, /* 提现金额 */
  34. wwr.fee as fee, /* 提现手续费 */
  35. wwr.withdraw_time as withdraw_time, /* 提现时间 */
  36. wwr.area_code as area_code, /* 区/县 */
  37. wwr.remark as remark, /* 备注 */
  38. wwr.auditor as auditor, /* 审核人 */
  39. wwr.audit_state as audit_state, /* 审核状态 */
  40. wwr.audit_time as audit_time, /* 审核时间 */
  41. wwr.audit_remark as audit_remark, /* 审核备注 */
  42. wwr.trans_no as trans_no, /* 交易流水号 */
  43. wwr.state as state, /* 提现状态 */
  44. wwr.created_at as created_at, /* 提现申请时间 */
  45. CASE
  46. WHEN w.owner_type = 'App\Models\MemberUser' THEN '用户'
  47. WHEN w.owner_type = 'App\Models\CoachInfoRecord' THEN '技师'
  48. WHEN w.owner_type = 'App\Models\AgentInfoRecord' THEN '代理商'
  49. WHEN w.owner_type = 'App\Models\ShopAuthRecord' THEN '店铺'
  50. ELSE '未知角色'
  51. END as role, /* 提现用户角色 */
  52. COALESCE(
  53. CASE
  54. WHEN w.owner_type = 'App\Models\MemberUser' THEN mu.nickname
  55. WHEN w.owner_type = 'App\Models\CoachInfoRecord' THEN ci.nickname
  56. WHEN w.owner_type = 'App\Models\AgentInfoRecord' THEN ai.contact_name
  57. WHEN w.owner_type = 'App\Models\ShopAuthRecord' THEN sar.shop_name
  58. END, '未知昵称') as nickname, /* 用户/技师/代理商/店铺昵称 */
  59. COALESCE(
  60. CASE
  61. WHEN w.owner_type = 'App\Models\MemberUser' THEN mu.mobile
  62. WHEN w.owner_type = 'App\Models\CoachInfoRecord' THEN ci.mobile
  63. WHEN w.owner_type = 'App\Models\AgentInfoRecord' THEN ai.contact_mobile
  64. WHEN w.owner_type = 'App\Models\ShopAuthRecord' THEN sar.contact_phone
  65. END, '未知联系方式') as contact, /* 用户/技师/代理商/店铺联系方式 */
  66. CASE
  67. WHEN w.owner_type = 'App\Models\MemberUser' THEN mu.avatar
  68. WHEN w.owner_type = 'App\Models\CoachInfoRecord' THEN ci.avatar
  69. ELSE NULL
  70. END as avatar, /* 用户/技师头像 */
  71. w.total_balance as total_balance, /* 总余额 */
  72. w.available_balance as available_balance, /* 可用余额 */
  73. w.frozen_amount as frozen_amount, /* 冻结余额 */
  74. w.total_income as total_income, /* 累计收入 */
  75. w.total_expense as total_expense, /* 累计支出 */
  76. w.owner_id as owner_id, /* 用户ID */
  77. COALESCE((
  78. SELECT SUM(wwr_sub.amount)
  79. FROM wallet_withdraw_records wwr_sub
  80. WHERE wwr_sub.wallet_id = wwr.wallet_id AND wwr_sub.state = 2
  81. ), 0) as total_successful_withdrawal, /* 累计提现成功金额 */
  82. (SELECT COUNT(*) FROM wallet_withdraw_records wwr_sub WHERE wwr_sub.wallet_id = wwr.wallet_id) as total_withdrawals, /* 提现次数 */
  83. (SELECT COUNT(*) FROM wallet_withdraw_records wwr_sub WHERE wwr_sub.wallet_id = wwr.wallet_id AND wwr_sub.state = 2) as successful_withdrawals, /* 提现成功次数 */
  84. (SELECT COUNT(*) FROM wallet_withdraw_records wwr_sub WHERE wwr_sub.wallet_id = wwr.wallet_id AND wwr_sub.state = 3) as failed_withdrawals, /* 提现失败次数 */
  85. (SELECT COUNT(*) FROM wallet_withdraw_records wwr_sub WHERE wwr_sub.wallet_id = wwr.wallet_id AND wwr_sub.state = 1) as processing_withdrawals /* 正在提现次数 */
  86. FROM wallet_withdraw_records wwr /* 钱包提现记录表 */
  87. LEFT JOIN wallet w ON w.id = wwr.wallet_id /* 钱包表 */
  88. LEFT JOIN member_users mu ON mu.id = w.owner_id AND w.owner_type = 'App\Models\MemberUser' /* 用户表 */
  89. LEFT JOIN coach_info_records ci ON ci.id = w.owner_id AND w.owner_type = 'App\Models\CoachInfoRecord' /* 技师表 */
  90. LEFT JOIN agent_info_records ai ON ai.id = w.owner_id AND w.owner_type = 'App\Models\AgentInfoRecord' /* 代理商表 */
  91. LEFT JOIN shop_auth_records sar ON sar.id = w.owner_id AND w.owner_type = 'App\Models\ShopAuthRecord' /* 店铺表 */