seed_special_users_ab_groups.sql 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. 预置 60 个特殊实验账号(尚未完成首次验证码登录)
  3. - A 组:A001@lyrria.com ~ A030@lyrria.com
  4. - B 组:B001@lyrria.com ~ B030@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 组 30 人
  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. -- B 组 30 人
  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('B', LPAD(n, 3, '0')),
  70. 'guest',
  71. 'individual',
  72. 0,
  73. 1,
  74. 'B',
  75. CONCAT('B', LPAD(n, 3, '0'), '@lyrria.com'),
  76. 0,
  77. 0,
  78. 'default'
  79. FROM (
  80. SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
  81. UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
  82. UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
  83. UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20
  84. UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25
  85. UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL SELECT 30
  86. ) AS seq
  87. ON DUPLICATE KEY UPDATE
  88. `is_special_user` = IF(`user_type` = 'registered', `is_special_user`, VALUES(`is_special_user`)),
  89. `special_group` = IF(`user_type` = 'registered', `special_group`, VALUES(`special_group`));
  90. -- 校验
  91. SELECT
  92. `special_group`,
  93. COUNT(*) AS cnt
  94. FROM `users`
  95. WHERE `is_special_user` = 1
  96. AND `email` LIKE '%@lyrria.com'
  97. AND (`email` LIKE 'A%@lyrria.com' OR `email` LIKE 'B%@lyrria.com')
  98. GROUP BY `special_group`
  99. ORDER BY `special_group`;