|
|
@@ -4,25 +4,25 @@
|
|
|
|
|
|
团队模块包含以下核心数据表:
|
|
|
|
|
|
-1. **team_user_referrals** - 用户推荐关系表
|
|
|
-2. **team_user_talents** - 达人等级表
|
|
|
-3. **team_profits** - 团队收益记录表
|
|
|
-4. **team_referral_codes** - 推荐码表
|
|
|
-5. **team_talent_configs** - 达人等级配置表
|
|
|
-6. **team_profit_rules** - 收益分成规则表
|
|
|
-7. **team_referral_changes** - 推荐关系修改记录表
|
|
|
-8. **team_user_relation_cache** - 用户关系缓存表
|
|
|
-9. **team_invite_rewards** - 邀请奖励记录表
|
|
|
-10. **team_referral_code_usages** - 邀请码使用记录表
|
|
|
+1. **promotion_user_referrals** - 用户推荐关系表
|
|
|
+2. **promotion_user_talents** - 达人等级表
|
|
|
+3. **promotion_profits** - 团队收益记录表
|
|
|
+4. **promotion_referral_codes** - 推荐码表
|
|
|
+5. **promotion_talent_configs** - 达人等级配置表
|
|
|
+6. **promotion_profit_rules** - 收益分成规则表
|
|
|
+7. **promotion_referral_changes** - 推荐关系修改记录表
|
|
|
+8. **promotion_user_relation_cache** - 用户关系缓存表
|
|
|
+9. **promotion_invite_rewards** - 邀请奖励记录表
|
|
|
+10. **promotion_referral_code_usages** - 邀请码使用记录表
|
|
|
|
|
|
## 2. 表结构详细设计
|
|
|
|
|
|
-### 2.1 用户推荐关系表 (team_user_referrals)
|
|
|
+### 2.1 用户推荐关系表 (promotion_user_referrals)
|
|
|
|
|
|
存储用户与其直接推荐人(直接上级)的关系,间接关系通过缓存或实时计算获取。该表是实现"直间推播种收获贡献百分比农作物收益"功能的基础。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_user_referrals` (
|
|
|
+CREATE TABLE `promotion_user_referrals` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
`referrer_id` bigint(20) NOT NULL COMMENT '直接推荐人ID',
|
|
|
@@ -36,17 +36,17 @@ CREATE TABLE `team_user_referrals` (
|
|
|
|
|
|
> 注意:表中只存储直接推荐关系(直推),间接推荐关系(间推)通过递归查询或缓存获取。这种设计简化了数据结构,同时通过缓存机制保证了查询效率。
|
|
|
|
|
|
-### 2.2 达人等级表 (team_user_talents)
|
|
|
+### 2.2 达人等级表 (promotion_user_talents)
|
|
|
|
|
|
存储用户的达人等级信息,包括直推人数和团队总人数。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_user_talents` (
|
|
|
+CREATE TABLE `promotion_user_talents` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
`talent_level` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '达人等级:0无,1初级,2中级,3高级,4资深,5顶级',
|
|
|
`direct_count` int(11) NOT NULL DEFAULT '0' COMMENT '直推人数',
|
|
|
- `team_count` int(11) NOT NULL DEFAULT '0' COMMENT '团队总人数',
|
|
|
+ `promotion_count` int(11) NOT NULL DEFAULT '0' COMMENT '团队总人数',
|
|
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
PRIMARY KEY (`id`),
|
|
|
@@ -55,15 +55,15 @@ CREATE TABLE `team_user_talents` (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级表';
|
|
|
```
|
|
|
|
|
|
-### 2.3 团队收益记录表 (team_profits)
|
|
|
+### 2.3 团队收益记录表 (promotion_profits)
|
|
|
|
|
|
记录团队成员产生的分成收益,是实现"直间推播种收获贡献百分比农作物收益"功能的核心表。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_profits` (
|
|
|
+CREATE TABLE `promotion_profits` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '获得收益的用户ID',
|
|
|
- `team_member_id` bigint(20) NOT NULL COMMENT '团队成员ID',
|
|
|
+ `promotion_member_id` bigint(20) NOT NULL COMMENT '团队成员ID',
|
|
|
`source_id` bigint(20) NOT NULL COMMENT '收益来源ID',
|
|
|
`source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收益来源类型',
|
|
|
`item_id` bigint(20) NOT NULL COMMENT '物品ID',
|
|
|
@@ -73,7 +73,7 @@ CREATE TABLE `team_profits` (
|
|
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
PRIMARY KEY (`id`),
|
|
|
KEY `idx_user_id` (`user_id`),
|
|
|
- KEY `idx_team_member_id` (`team_member_id`),
|
|
|
+ KEY `idx_promotion_member_id` (`promotion_member_id`),
|
|
|
KEY `idx_source` (`source_type`,`source_id`),
|
|
|
KEY `idx_relation_type` (`relation_type`),
|
|
|
KEY `idx_created_at` (`created_at`)
|
|
|
@@ -82,12 +82,12 @@ CREATE TABLE `team_profits` (
|
|
|
|
|
|
> 注意:`relation_type`字段用于区分直推和间推收益,便于统计和分析。`source_type`为'farm_harvest'时表示农场收获收益,是团队收益的主要来源。
|
|
|
|
|
|
-### 2.4 推荐码表 (team_referral_codes)
|
|
|
+### 2.4 推荐码表 (promotion_referral_codes)
|
|
|
|
|
|
存储用户的推荐码信息。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_referral_codes` (
|
|
|
+CREATE TABLE `promotion_referral_codes` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
`code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '推荐码',
|
|
|
@@ -103,17 +103,17 @@ CREATE TABLE `team_referral_codes` (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐码表';
|
|
|
```
|
|
|
|
|
|
-### 2.5 达人等级配置表 (team_talent_configs)
|
|
|
+### 2.5 达人等级配置表 (promotion_talent_configs)
|
|
|
|
|
|
存储不同达人等级的配置信息。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_talent_configs` (
|
|
|
+CREATE TABLE `promotion_talent_configs` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`level` tinyint(3) unsigned NOT NULL COMMENT '等级',
|
|
|
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '等级名称',
|
|
|
`direct_count_required` int(11) NOT NULL COMMENT '所需直推人数',
|
|
|
- `team_count_required` int(11) NOT NULL COMMENT '所需团队总人数',
|
|
|
+ `promotion_count_required` int(11) NOT NULL COMMENT '所需团队总人数',
|
|
|
`profit_rate` decimal(5,4) NOT NULL COMMENT '间推分成比例',
|
|
|
`benefits` json DEFAULT NULL COMMENT '等级权益',
|
|
|
`icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '等级图标',
|
|
|
@@ -124,12 +124,12 @@ CREATE TABLE `team_talent_configs` (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='达人等级配置表';
|
|
|
```
|
|
|
|
|
|
-### 2.6 收益分成规则表 (team_profit_rules)
|
|
|
+### 2.6 收益分成规则表 (promotion_profit_rules)
|
|
|
|
|
|
存储不同来源的收益分成规则。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_profit_rules` (
|
|
|
+CREATE TABLE `promotion_profit_rules` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`source_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源类型',
|
|
|
`direct_profit_rate` decimal(5,4) NOT NULL COMMENT '直推分成比例',
|
|
|
@@ -144,12 +144,12 @@ CREATE TABLE `team_profit_rules` (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收益分成规则表';
|
|
|
```
|
|
|
|
|
|
-### 2.7 推荐关系修改记录表 (team_referral_changes)
|
|
|
+### 2.7 推荐关系修改记录表 (promotion_referral_changes)
|
|
|
|
|
|
记录用户推荐关系的修改历史。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_referral_changes` (
|
|
|
+CREATE TABLE `promotion_referral_changes` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
`old_referrer_id` bigint(20) DEFAULT NULL COMMENT '旧推荐人ID',
|
|
|
@@ -164,12 +164,12 @@ CREATE TABLE `team_referral_changes` (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐关系修改记录表';
|
|
|
```
|
|
|
|
|
|
-### 2.8 用户关系缓存表 (team_user_relation_cache)
|
|
|
+### 2.8 用户关系缓存表 (promotion_user_relation_cache)
|
|
|
|
|
|
用户关系缓存表是一个统一的缓存表,用于存储用户之间的所有推荐关系(包括上下级关系)。通过合理设计字段和索引,一张表可以同时满足查询用户上级和下级的需求,减少数据冗余,简化维护。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_user_relation_cache` (
|
|
|
+CREATE TABLE `promotion_user_relation_cache` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
|
|
`related_user_id` bigint(20) NOT NULL COMMENT '关联用户ID(上级)',
|
|
|
@@ -200,12 +200,12 @@ CREATE TABLE `team_user_relation_cache` (
|
|
|
| created_at | timestamp | 创建时间 |
|
|
|
| updated_at | timestamp | 更新时间 |
|
|
|
|
|
|
-### 2.9 邀请奖励记录表 (team_invite_rewards)
|
|
|
+### 2.9 邀请奖励记录表 (promotion_invite_rewards)
|
|
|
|
|
|
邀请奖励记录表用于记录用户邀请他人注册时获得的奖励,支持多种奖励类型和来源追踪。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_invite_rewards` (
|
|
|
+CREATE TABLE `promotion_invite_rewards` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`user_id` bigint(20) NOT NULL COMMENT '获得奖励的用户ID',
|
|
|
`invited_user_id` bigint(20) NOT NULL COMMENT '被邀请的用户ID',
|
|
|
@@ -259,12 +259,12 @@ id | user_id | invited_user_id | reward_type | reward_id | reward_amount | rewar
|
|
|
- 用户2邀请用户4注册,获得了50点经验值奖励
|
|
|
- 当用户2升级时,用户1获得了1个ID为1002的物品奖励
|
|
|
|
|
|
-### 2.10 邀请码使用记录表 (team_referral_code_usages)
|
|
|
+### 2.10 邀请码使用记录表 (promotion_referral_code_usages)
|
|
|
|
|
|
邀请码使用记录表用于详细记录每次邀请码的使用情况,包括谁使用了哪个邀请码、何时使用、使用结果等信息。
|
|
|
|
|
|
```sql
|
|
|
-CREATE TABLE `team_referral_code_usages` (
|
|
|
+CREATE TABLE `promotion_referral_code_usages` (
|
|
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
`code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '使用的邀请码',
|
|
|
`code_owner_id` bigint(20) NOT NULL COMMENT '邀请码所有者用户ID',
|
|
|
@@ -319,29 +319,29 @@ id | code | code_owner_id | user_id | ip_address | status | result
|
|
|
|
|
|
1. 查询用户4的所有上级:
|
|
|
```sql
|
|
|
-SELECT * FROM team_user_relation_cache WHERE user_id = 4;
|
|
|
+SELECT * FROM promotion_user_relation_cache WHERE user_id = 4;
|
|
|
```
|
|
|
|
|
|
2. 查询用户1的所有下级:
|
|
|
```sql
|
|
|
-SELECT * FROM team_user_relation_cache WHERE related_user_id = 1;
|
|
|
+SELECT * FROM promotion_user_relation_cache WHERE related_user_id = 1;
|
|
|
```
|
|
|
|
|
|
3. 查询用户2的直接下级:
|
|
|
```sql
|
|
|
SELECT u.* FROM users u
|
|
|
-JOIN team_user_relation_cache r ON u.id = r.user_id
|
|
|
+JOIN promotion_user_relation_cache r ON u.id = r.user_id
|
|
|
WHERE r.related_user_id = 2 AND r.level = 1;
|
|
|
```
|
|
|
|
|
|
4. 查询用户1的第2代下级:
|
|
|
```sql
|
|
|
SELECT u.* FROM users u
|
|
|
-JOIN team_user_relation_cache r ON u.id = r.user_id
|
|
|
+JOIN promotion_user_relation_cache r ON u.id = r.user_id
|
|
|
WHERE r.related_user_id = 1 AND r.depth = 2;
|
|
|
```
|
|
|
|
|
|
-> 注意:该表是缓存表,其数据可以通过`team_user_referrals`表重新计算生成。使用单一表存储所有关系,减少了数据冗余,简化了维护,同时通过合理的索引设计,保证了查询效率。
|
|
|
+> 注意:该表是缓存表,其数据可以通过`promotion_user_referrals`表重新计算生成。使用单一表存储所有关系,减少了数据冗余,简化了维护,同时通过合理的索引设计,保证了查询效率。
|
|
|
|
|
|
## 3. 数据关系
|
|
|
|
|
|
@@ -349,12 +349,12 @@ WHERE r.related_user_id = 1 AND r.depth = 2;
|
|
|
|
|
|
```
|
|
|
┌───────────────────┐
|
|
|
- │team_talent_configs│
|
|
|
+ │promotion_talent_configs│
|
|
|
└─────────┬─────────┘
|
|
|
│
|
|
|
▼
|
|
|
┌───────────────────┐ ┌───────────────────┐
|
|
|
-│team_user_referrals│◄───────────┤ team_user_talents │
|
|
|
+│promotion_user_referrals│◄───────────┤ promotion_user_talents │
|
|
|
└─────────┬─────────┘ └─────────┬─────────┘
|
|
|
│ │
|
|
|
│ │
|
|
|
@@ -362,19 +362,19 @@ WHERE r.related_user_id = 1 AND r.depth = 2;
|
|
|
│ │ │
|
|
|
▼ ▼ │
|
|
|
┌───────────────────┐ ┌───────────────────┐│
|
|
|
-│team_referral_codes│ │team_user_relation_cache│
|
|
|
+│promotion_referral_codes│ │promotion_user_relation_cache│
|
|
|
└───────────────────┘ └───────────────────┘│
|
|
|
│
|
|
|
│
|
|
|
▼
|
|
|
┌───────────────────┐
|
|
|
- │ team_profits │
|
|
|
+ │ promotion_profits │
|
|
|
└─────────┬─────────┘
|
|
|
│
|
|
|
│
|
|
|
▼
|
|
|
┌───────────────────┐
|
|
|
- │ team_profit_rules │
|
|
|
+ │ promotion_profit_rules │
|
|
|
└───────────────────┘
|
|
|
```
|
|
|
|
|
|
@@ -403,25 +403,25 @@ WHERE r.related_user_id = 1 AND r.depth = 2;
|
|
|
|
|
|
### 4.2 唯一索引
|
|
|
|
|
|
-- `team_user_referrals`: `user_id`(确保每个用户只有一个直接推荐人)
|
|
|
-- `team_user_talents`: `user_id`(确保每个用户只有一条达人记录)
|
|
|
-- `team_referral_codes`: `code`(确保推荐码唯一)
|
|
|
-- `team_referral_codes`: `user_id`(确保每个用户只有一个推荐码)
|
|
|
-- `team_talent_configs`: `level`(确保等级唯一)
|
|
|
-- `team_profit_rules`: `source_type`(确保来源类型唯一)
|
|
|
-- `team_user_relation_cache`: `user_id,related_user_id`(确保用户与上级的关系唯一)
|
|
|
+- `promotion_user_referrals`: `user_id`(确保每个用户只有一个直接推荐人)
|
|
|
+- `promotion_user_talents`: `user_id`(确保每个用户只有一条达人记录)
|
|
|
+- `promotion_referral_codes`: `code`(确保推荐码唯一)
|
|
|
+- `promotion_referral_codes`: `user_id`(确保每个用户只有一个推荐码)
|
|
|
+- `promotion_talent_configs`: `level`(确保等级唯一)
|
|
|
+- `promotion_profit_rules`: `source_type`(确保来源类型唯一)
|
|
|
+- `promotion_user_relation_cache`: `user_id,related_user_id`(确保用户与上级的关系唯一)
|
|
|
|
|
|
### 4.3 普通索引
|
|
|
|
|
|
-- `team_user_referrals`: `referrer_id`
|
|
|
-- `team_user_talents`: `talent_level`
|
|
|
-- `team_profits`: `user_id`, `team_member_id`, `source_type,source_id`, `created_at`
|
|
|
-- `team_referral_codes`: `status`
|
|
|
-- `team_profit_rules`: `status`
|
|
|
-- `team_referral_changes`: `user_id`, `change_time`
|
|
|
-- `team_user_relation_cache`: `user_id`, `related_user_id`, `level`, `depth`(支持各种查询场景)
|
|
|
-- `team_invite_rewards`: `user_id`, `invited_user_id`, `reward_type`, `reward_source`, `status`, `created_at`(支持多种查询和统计场景)
|
|
|
-- `team_referral_code_usages`: `code`, `code_owner_id`, `user_id`, `status`, `created_at`(支持邀请码使用记录的多种查询场景)
|
|
|
+- `promotion_user_referrals`: `referrer_id`
|
|
|
+- `promotion_user_talents`: `talent_level`
|
|
|
+- `promotion_profits`: `user_id`, `promotion_member_id`, `source_type,source_id`, `created_at`
|
|
|
+- `promotion_referral_codes`: `status`
|
|
|
+- `promotion_profit_rules`: `status`
|
|
|
+- `promotion_referral_changes`: `user_id`, `change_time`
|
|
|
+- `promotion_user_relation_cache`: `user_id`, `related_user_id`, `level`, `depth`(支持各种查询场景)
|
|
|
+- `promotion_invite_rewards`: `user_id`, `invited_user_id`, `reward_type`, `reward_source`, `status`, `created_at`(支持多种查询和统计场景)
|
|
|
+- `promotion_referral_code_usages`: `code`, `code_owner_id`, `user_id`, `status`, `created_at`(支持邀请码使用记录的多种查询场景)
|
|
|
|
|
|
## 5. JSON字段结构
|
|
|
|
|
|
@@ -461,7 +461,7 @@ WHERE r.related_user_id = 1 AND r.depth = 2;
|
|
|
初始化5级达人的配置数据:
|
|
|
|
|
|
```sql
|
|
|
-INSERT INTO `team_talent_configs` (`level`, `name`, `direct_count_required`, `team_count_required`, `profit_rate`, `benefits`) VALUES
|
|
|
+INSERT INTO `promotion_talent_configs` (`level`, `name`, `direct_count_required`, `promotion_count_required`, `profit_rate`, `benefits`) VALUES
|
|
|
(1, '初级达人', 5, 10, 0.0100, '{"farm_output_bonus": 0.01}'),
|
|
|
(2, '中级达人', 10, 30, 0.0150, '{"farm_output_bonus": 0.02}'),
|
|
|
(3, '高级达人', 20, 50, 0.0200, '{"farm_output_bonus": 0.03, "daily_gift": {"item_id": 1001, "amount": 1}}'),
|
|
|
@@ -474,7 +474,7 @@ INSERT INTO `team_talent_configs` (`level`, `name`, `direct_count_required`, `te
|
|
|
初始化基本的收益分成规则:
|
|
|
|
|
|
```sql
|
|
|
-INSERT INTO `team_profit_rules` (`source_type`, `direct_profit_rate`, `max_indirect_level`, `status`, `rules`) VALUES
|
|
|
+INSERT INTO `promotion_profit_rules` (`source_type`, `direct_profit_rate`, `max_indirect_level`, `status`, `rules`) VALUES
|
|
|
('farm_harvest', 0.0500, 20, 1, '{"min_amount": 10, "max_amount": 1000}'),
|
|
|
('task_complete', 0.0300, 10, 1, '{"min_amount": 5, "max_amount": 500}'),
|
|
|
('item_sell', 0.0200, 5, 1, '{"min_amount": 1, "max_amount": 100, "excluded_items": [1001, 1002]}');
|
|
|
@@ -508,7 +508,7 @@ INSERT INTO `team_profit_rules` (`source_type`, `direct_profit_rate`, `max_indir
|
|
|
|
|
|
### 8.1 分表策略
|
|
|
|
|
|
-当用户数量增长到一定规模时,可以考虑按用户ID范围对`team_user_referrals`和`team_profits`表进行分表。
|
|
|
+当用户数量增长到一定规模时,可以考虑按用户ID范围对`promotion_user_referrals`和`promotion_profits`表进行分表。
|
|
|
|
|
|
### 8.2 缓存策略
|
|
|
|
|
|
@@ -516,7 +516,7 @@ INSERT INTO `team_profit_rules` (`source_type`, `direct_profit_rate`, `max_indir
|
|
|
2. 缓存用户的推荐关系和达人信息等频繁访问的数据
|
|
|
3. 使用Redis缓存用户的所有上级(包括直接和间接)
|
|
|
4. 使用Redis缓存用户的所有下级(包括直接和间接)
|
|
|
-5. 使用数据库缓存表(`team_user_relation_cache`)持久化存储用户的上下级关系
|
|
|
+5. 使用数据库缓存表(`promotion_user_relation_cache`)持久化存储用户的上下级关系
|
|
|
6. 设置合理的缓存过期时间,如1天
|
|
|
7. 推荐关系变更时主动更新相关缓存和缓存表
|
|
|
8. 定期校验和修复缓存表数据,确保与实际推荐关系一致
|