yumi-java/sql/20260716_user_country_sync_mongo_indexes.js
hy001 c884827072 feat(other): 国家资料级联同步用户与团队冗余快照
- 新增国家级/用户级 Redis 写锁(token+Lua 安全释放),统一 country -> user 锁序
- 后台改国家码/名称时按 countryId 游标分批同步 RDS 与 mongo 全部国家冗余字段,
  含注册国家码同事务重命名、团队区域重算(CAS + 投影回滚)与两次缓存失效
- 建团(BD 邀请/后台)、改用户资料、注册、编辑团队等写国家快照路径接入锁防竞态,
  团队国家码一律取国家主表标准值
- 违规调整/账号状态改为仅写变更字段,防止旧快照覆盖同步结果
- 团队账单结算改用账单自身 region,配合团队迁区
- 补充 user_base_info (country_id,id) 索引与 mongo 复合索引迁移脚本

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:11:57 +08:00

32 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 国家资料级联同步索引批量迁移前执行createIndex 对同名同定义索引幂等。
db.getCollection("team_profile").createIndex(
{"country.countryId": 1, _id: 1}, {name: "idx_country_id_cursor"});
db.getCollection("team_member").createIndex(
{teamId: 1, memberId: 1}, {name: "idx_team_member"});
db.getCollection("team_member").createIndex(
{memberId: 1, teamId: 1}, {name: "idx_member_team"});
db.getCollection("active_voice_room").createIndex(
{userId: 1}, {name: "idx_user_id"});
db.getCollection("room_profile_manager").createIndex(
{userId: 1}, {name: "idx_user_id"});
db.getCollection("user_daily_active_log").createIndex(
{userId: 1, activeDate: 1}, {name: "idx_uid_date", unique: true});
db.getCollection("user_daily_active_log").createIndex(
{activeDate: 1, sysOrigin: 1}, {name: "idx_date_origin"});
db.getCollection("user_daily_active_log").createIndex(
{activeDate: 1, registerCountryCode: 1}, {name: "idx_date_country"});
db.getCollection("team_bill_cycle").createIndex(
{billBelong: 1, status: 1}, {name: "idx_billBelong_status"});
db.getCollection("team_bill_cycle").createIndex(
{teamId: 1, status: 1}, {name: "idx_team_status"});
db.getCollection("team_member_target").createIndex(
{teamId: 1, history: 1}, {name: "idx_team_history"});
db.getCollection("team_member_target").createIndex(
{userId: 1, history: 1}, {name: "idx_user_history"});
db.getCollection("agent_activity_count").createIndex(
{teamId: 1, history: 1}, {name: "idx_team_history"});