# ShopDealerReferee 绑定接口规则与索引建议

接口：`POST /api/shop/shop-dealer-referee`

## 业务规则(后端)

- 邀请人(dealerId)必须存在且有效：以 `shop_dealer_user` 记录存在且 `is_delete=0` 为准
- 当前用户(userId)仅从 token 获取；若 body.userId 存在且与 token 不一致则拒绝
- 禁止自己绑定自己：`dealerId == userId`
- 仅首次绑定生效：若已存在(同一 tenant、同一 user、`level=1`)则直接返回成功(幂等，不改绑)
- 记录溯源字段：`source`、`scene`

## 并发幂等(数据库建议)

建议在 `shop_dealer_referee` 增加溯源字段，并加唯一索引保证并发下不重复写入：

```sql
ALTER TABLE shop_dealer_referee
  ADD COLUMN source VARCHAR(32) NULL COMMENT '来源(如 goods_share)',
  ADD COLUMN scene  VARCHAR(255) NULL COMMENT '场景参数(溯源统计)';

-- 约束：同一 tenant 下，一个用户每个 level 只能有一条推荐关系
ALTER TABLE shop_dealer_referee
  ADD UNIQUE KEY uk_shop_dealer_referee_tenant_user_level (tenant_id, user_id, level);
```

