seed_special_users_ab_groups.sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. /*
  2. 预置 80 个特殊实验账号(尚未完成首次验证码登录)
  3. - A 组:A001@lyrria.com ~ A040@lyrria.com
  4. - B 组:B001@lyrria.com ~ B040@lyrria.com
  5. 前置条件:
  6. 1. 已执行 add_special_user_fields.sql
  7. 2. users 表已存在(含 user_segment、is_test_user 等字段)
  8. 账号状态说明:
  9. - user_type = guest,is_verified = 0,registered_at = NULL
  10. - 邮箱已占用,防止被其他用户注册
  11. - 首次验证码登录时,后端需识别「guest + is_special_user」并完成注册化
  12. (后续改造 verify_and_auth / register_with_email 时处理)
  13. 幂等:按 email 冲突时仅更新特殊用户标记,不覆盖已注册用户数据
  14. */
  15. SET NAMES utf8mb4;
  16. -- A 组 A001 ~ A030
  17. INSERT INTO `users` (
  18. `user_id`,
  19. `username`,
  20. `user_type`,
  21. `user_segment`,
  22. `is_test_user`,
  23. `is_special_user`,
  24. `special_group`,
  25. `email`,
  26. `is_verified`,
  27. `user_level`,
  28. `current_background_image_id`
  29. )
  30. SELECT
  31. UUID(),
  32. CONCAT('A', LPAD(n, 3, '0')),
  33. 'guest',
  34. 'individual',
  35. 0,
  36. 1,
  37. 'A',
  38. CONCAT('A', LPAD(n, 3, '0'), '@lyrria.com'),
  39. 0,
  40. 0,
  41. 'default'
  42. FROM (
  43. SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
  44. UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
  45. UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
  46. UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20
  47. UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25
  48. UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL SELECT 30
  49. ) AS seq
  50. ON DUPLICATE KEY UPDATE
  51. `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
  52. `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
  53. -- A 组 A031 ~ A040(追加 10 人)
  54. INSERT INTO `users` (
  55. `user_id`,
  56. `username`,
  57. `user_type`,
  58. `user_segment`,
  59. `is_test_user`,
  60. `is_special_user`,
  61. `special_group`,
  62. `email`,
  63. `is_verified`,
  64. `user_level`,
  65. `current_background_image_id`
  66. )
  67. SELECT
  68. UUID(),
  69. CONCAT('A', LPAD(n, 3, '0')),
  70. 'guest',
  71. 'individual',
  72. 0,
  73. 1,
  74. 'A',
  75. CONCAT('A', LPAD(n, 3, '0'), '@lyrria.com'),
  76. 0,
  77. 0,
  78. 'default'
  79. FROM (
  80. SELECT 31 AS n UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35
  81. UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40
  82. ) AS seq
  83. ON DUPLICATE KEY UPDATE
  84. `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
  85. `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
  86. -- B 组 B001 ~ B030
  87. INSERT INTO `users` (
  88. `user_id`,
  89. `username`,
  90. `user_type`,
  91. `user_segment`,
  92. `is_test_user`,
  93. `is_special_user`,
  94. `special_group`,
  95. `email`,
  96. `is_verified`,
  97. `user_level`,
  98. `current_background_image_id`
  99. )
  100. SELECT
  101. UUID(),
  102. CONCAT('B', LPAD(n, 3, '0')),
  103. 'guest',
  104. 'individual',
  105. 0,
  106. 1,
  107. 'B',
  108. CONCAT('B', LPAD(n, 3, '0'), '@lyrria.com'),
  109. 0,
  110. 0,
  111. 'default'
  112. FROM (
  113. SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
  114. UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
  115. UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
  116. UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20
  117. UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25
  118. UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL SELECT 30
  119. ) AS seq
  120. ON DUPLICATE KEY UPDATE
  121. `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
  122. `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
  123. -- B 组 B031 ~ B040(追加 10 人)
  124. INSERT INTO `users` (
  125. `user_id`,
  126. `username`,
  127. `user_type`,
  128. `user_segment`,
  129. `is_test_user`,
  130. `is_special_user`,
  131. `special_group`,
  132. `email`,
  133. `is_verified`,
  134. `user_level`,
  135. `current_background_image_id`
  136. )
  137. SELECT
  138. UUID(),
  139. CONCAT('B', LPAD(n, 3, '0')),
  140. 'guest',
  141. 'individual',
  142. 0,
  143. 1,
  144. 'B',
  145. CONCAT('B', LPAD(n, 3, '0'), '@lyrria.com'),
  146. 0,
  147. 0,
  148. 'default'
  149. FROM (
  150. SELECT 31 AS n UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35
  151. UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40
  152. ) AS seq
  153. ON DUPLICATE KEY UPDATE
  154. `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
  155. `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
  156. -- 校验
  157. SELECT
  158. `special_group`,
  159. COUNT(*) AS cnt
  160. FROM `users`
  161. WHERE `is_special_user` = 1
  162. AND `email` LIKE '%@lyrria.com'
  163. AND (`email` LIKE 'A%@lyrria.com' OR `email` LIKE 'B%@lyrria.com')
  164. GROUP BY `special_group`
  165. ORDER BY `special_group`;