46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
# 兑换码状态同步规则
|
||
|
||
## 数据流
|
||
|
||
```
|
||
远程API(根据产品配置的接口地址)
|
||
│
|
||
▼ 请求参数:start_time, end_time, app_id(产品code)
|
||
▼ Header:Authorization = md5(start_time + end_time)
|
||
│
|
||
▼ 返回数据(status=2 已使用的兑换码列表)
|
||
│
|
||
▼ 逐条匹配本地 claim_records
|
||
│
|
||
▼ 匹配成功 → 更新状态
|
||
▼ 匹配失败 → 记录未匹配
|
||
```
|
||
|
||
## 匹配规则
|
||
|
||
| 步骤 | 说明 |
|
||
|------|------|
|
||
| 1. 取数据 | 调用产品配置的 API 接口,按使用时间范围查询已使用的兑换码 |
|
||
| 2. 过滤 | 只处理 `status=2`(已使用)的记录 |
|
||
| 3. 匹配 | 用 `coupon_code` + `product_id` 匹配本地 `claim_records` 表 |
|
||
| 4. 更新 | 匹配到的记录如果本地 `status != 2`,则更新状态、使用时间、会员ID |
|
||
|
||
## 未匹配的常见原因
|
||
|
||
| 原因 | 说明 |
|
||
|------|------|
|
||
| 该兑换码不是通过本系统领取的 | API 返回的是该产品下所有已使用的码,包含其他渠道发放的 |
|
||
| 产品归属不对 | `claim_records.product_id` 与当前产品的 ID 不一致 |
|
||
| 领取记录已被删除 | 数据已被清理 |
|
||
|
||
## 同步方式
|
||
|
||
### 1. 手动同步
|
||
- 位置:后台设置 → 兑换码状态同步
|
||
- 选择时间范围,点击"立即同步"
|
||
- 结果显示:API 总条数、匹配条数、更新条数、已匹配 code 列表、未匹配 code 列表
|
||
|
||
### 2. 定时任务
|
||
- 每天凌晨 2 点执行,同步前一天的数据
|
||
- crontab:`0 2 * * * php /path/to/cron_sync.php`
|