- 新增国家级/用户级 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>
32 lines
1.5 KiB
JavaScript
32 lines
1.5 KiB
JavaScript
// 国家资料级联同步索引:批量迁移前执行,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"});
|