02技师列表.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. -- Active: xiaoding_test@@192.168.110.85@3306
  2. /*
  3. 这段sql语句是根据"market_dist_teams"表获取的,这个表的解释是:
  4. 1、当一个用户A邀请另一个用户B的时候,数据是这样的
  5. - object_id是A的id
  6. - object_type是A的用户类型
  7. - user_id是B的id
  8. - 统计的时候A是B的一级邀请人
  9. 2、当用户B邀请C的时候,数据是这样的
  10. - object_id是B的id
  11. - object_type是B的用户类型
  12. - user_id是C的id
  13. - 统计的时候B是C的一级邀请人
  14. - 统计的时候A是C的二级邀请人
  15. 请重写我的统计sql
  16. */
  17. -- 技师列表视图
  18. DROP VIEW IF EXISTS manage_coach_list;
  19. CREATE OR REPLACE VIEW manage_coach_list AS
  20. WITH
  21. /* 一级邀请人信息 */
  22. inviter_level1 AS (
  23. SELECT mdt1.user_id, m1.nickname
  24. FROM
  25. market_dist_teams mdt1
  26. LEFT JOIN member_users m1 ON mdt1.object_id = m1.id
  27. WHERE
  28. mdt1.level = 1
  29. ),
  30. /* 二级邀请人信息 */
  31. inviter_level2 AS (
  32. SELECT mdt1.user_id, m2.nickname
  33. FROM
  34. market_dist_teams mdt1
  35. LEFT JOIN market_dist_teams mdt2 ON mdt1.object_id = mdt2.user_id
  36. LEFT JOIN member_users m2 ON mdt2.object_id = m2.id
  37. WHERE
  38. mdt1.level = 1
  39. AND mdt2.level = 1
  40. ),
  41. /* 钱包余额信息 */
  42. coach_wallet AS (
  43. SELECT owner_id, total_balance
  44. FROM wallet
  45. WHERE
  46. owner_type = 'App\\Models\\CoachUser'
  47. )
  48. SELECT
  49. cu.id,
  50. /* 性别 */
  51. mu.gender,
  52. /* 技师名称 */
  53. ci.nickname,
  54. /* 头像 */
  55. ci.avatar,
  56. /* 手机号码 */
  57. mu.mobile,
  58. /* 注册地址 */
  59. mu.register_area,
  60. /* 注册时间 */
  61. mu.created_at,
  62. /* 当前所属区域 */
  63. cl.city,
  64. /* 所属店铺 */
  65. sar.shop_name,
  66. /* 调度区域 */
  67. cl.location,
  68. /* 是否开通会员 */
  69. CASE
  70. WHEN cu.is_vip = 1 THEN '是'
  71. ELSE '否'
  72. END AS is_vip,
  73. /* 开通会员时间 */
  74. cu.vip_time,
  75. /* 一级邀请人 */
  76. il1.nickname AS inviter_level1_name,
  77. /* 二级邀请人 */
  78. il2.nickname AS inviter_level2_name,
  79. /* 余额 */
  80. COALESCE(cw.total_balance, 0) AS balance,
  81. /* 状态 */
  82. cu.state,
  83. /* 邀请码 */
  84. cu.invite_code,
  85. /* 二维码 */
  86. cu.qr_code,
  87. /* 认证状态 */
  88. CASE
  89. WHEN cq.state = 2 THEN '已认证'
  90. WHEN cq.state = 1 THEN '认证中'
  91. WHEN cq.state = 3 THEN '认证失败'
  92. ELSE '未认证'
  93. END AS auth_status
  94. FROM
  95. coach_users cu
  96. LEFT JOIN member_users mu ON cu.user_id = mu.id
  97. LEFT JOIN coach_info_records ci ON cu.info_record_id = ci.id
  98. LEFT JOIN coach_locations cl ON cu.id = cl.coach_id
  99. AND cl.type = 2
  100. LEFT JOIN shop_auth_records sar ON cu.shop_id = sar.id
  101. LEFT JOIN coach_qual_records cq ON cu.qualification_record_id = cq.id
  102. LEFT JOIN inviter_level1 il1 ON cu.user_id = il1.user_id
  103. LEFT JOIN inviter_level2 il2 ON cu.user_id = il2.user_id
  104. LEFT JOIN coach_wallet cw ON cu.user_id = cw.owner_id
  105. WHERE
  106. cu.deleted_at IS NULL;