|
|
@@ -105,7 +105,8 @@
|
|
|
- 数据来源:`product_orders WHERE supplySystemId=? AND buyerId=? AND fulfillStatus='completed'`(或按 familyId 归集),金额 ÷100 转元。
|
|
|
|
|
|
### 3.3 团队成员 = 邀请(与推荐人解耦)
|
|
|
-- 供应商体系成员本就是 `member/add`(管理员/归属人添加)或邀请码,已是「邀请制」,**无需改加入机制**;只需在文档/口径上明确:本「我的团队」=邀请制,与 `referral_tree` 推广页无关。
|
|
|
+- ~~供应商体系成员本就是 `member/add`(管理员/归属人添加)或邀请码,已是「邀请制」,**无需改加入机制**~~ —— **此结论已于 2026-11-02 修正**:廖总明确要求"在我的团队加一个邀请功能,邀请其他用户加入团队",且供应商体系现有 `member/add` 只支持**管理员直接添加**,无邀请码/无受邀人记录(`SupplySystemMember` 无 `inviteCode`/`invitedBy` 字段),**邀请是新增缺口**(见 §3.5 / T38)。
|
|
|
+- 口径不变:本「我的团队」=邀请制,与 `referral_tree` 推广页(`promotion/team.vue`)无关。
|
|
|
- `promotion/team.vue`(referral 模型)保留为「推广/分佣」独立页,不并入本设计。
|
|
|
|
|
|
### 3.4 服务指派(团队管理核心能力,新增)
|
|
|
@@ -118,6 +119,19 @@
|
|
|
- 对接:`AfterSalesRequest` 建单时可自动生成一条待指派服务任务;`ProductServicePerson` 的商品服务人可作为指派候选。
|
|
|
- 前端:`vendor/team-system.vue` 增加「服务指派」入口/列表;新增服务任务页(成员侧)。
|
|
|
|
|
|
+### 3.5 邀请功能(T38,2026-11-02 廖总需求)
|
|
|
+- **需求原话**:「在我的团队加一个邀请功能,邀请其他用户加入团队。」
|
|
|
+- **现状确认(勿重复核查)**:后端 `SupplySystemController` 只有 `member/add`(管理员直接加,参数仅 `systemId/userId`,不带 parentId、不联动 `supply_hierarchy`);`SupplySystemMember` 无邀请码/受邀人字段;前端 `vendor/team-system.vue`(780 行)**无任何邀请入口**。虚拟体系 `DistributionService.generateInviteCode/registerByInviteCode` 有邀请码实现可参照(但结算模型不同,仅复用"码生成/凭码注册"手法)。
|
|
|
+- **方案(邀请码 + 邀请即挂上级)**:
|
|
|
+ 1. `supply_system_member` 扩列 `invite_code`(幂等 `ensureColumn` + 同步 `schema.sql`,唯一索引可后置)——每个成员一个**个人专属邀请码**(复用生成则不变,支持 re-generate 置旧码失效)。
|
|
|
+ 2. 生成:`POST /supply-team/invite-code`(入参 `systemId`,从 `@RequestAttribute("userId")` 取当前成员)→ 返回码 + 分享文案;已生成过则幂等复用(或按"刷新"重置)。
|
|
|
+ 3. 加入:`POST /supply-team/invite/join`(入参 `inviteCode`)→ 校验码有效 + 用户未加入过该体系 → ① `addMember(systemId,userId)`(role=member/status=active)② `addRelation(systemId, inviterId, userId)`(挂 `supply_hierarchy`,parentId=邀请人,level=父 level+1)→ 返回团队/邀请人信息。
|
|
|
+ 4. 查询(确认页用):`POST /supply-team/invite/info`(入参 `inviteCode`)→ 团队名、邀请人昵称/头像、成员数(不泄露其他隐私)。
|
|
|
+ 5. **语义**:邀请加入的人是**团队成员**(非客户);邀请人=其上级 → 自然形成「每个成员都有自己的团队 = 他邀请的人」(与 §0.5 结算口径一致:成员子树整体结算给该成员)。
|
|
|
+- **前端**:`vendor/team-system.vue` 团队成员区加「邀请成员」按钮 → 弹窗:邀请码 + 复制按钮 + 二维码(`teamId+inviteCode` 生成小程序码,可后置);新增受邀确认页(展示邀请人/团队 → 点"加入")与"加入成功"态(跳转我的团队)。
|
|
|
+- **边界**:同一 `(systemId,userId)` 只加入一次(`addMember` 已有 existing 检查);被移除(status=inactive)后可再申请;role=member 不可自助变更(沿用 `change-role` 管理员权限);邀请不与资金/佣金计算直接挂钩(结算走唯一负责人口径,§0.5)。
|
|
|
+- **待确认项(不阻塞,默认按此实施)**:① 自助加入即生效 or 需团队负责人确认(**默认即生效**,负责人可移除);② 邀请码有效期/限量(**默认永久有效+唯一**,可后续加过期时间列)。
|
|
|
+
|
|
|
## 4. 数据模型与接口清单(Phase 1)
|
|
|
|
|
|
### 4.1 实体/表
|
|
|
@@ -133,11 +147,15 @@
|
|
|
| `POST /api/admin/supply-team/service-assign` | 服务指派 |
|
|
|
| `POST /api/admin/supply-team/service-tasks` | 成员侧:我的服务任务 |
|
|
|
| `POST /api/admin/supply-team/customer/{id}/services` | 客户的服务记录 |
|
|
|
+| `POST /api/admin/supply-team/invite-code` | 生成/获取我的邀请码(幂等) |
|
|
|
+| `POST /api/admin/supply-team/invite/info` | 邀请码信息(确认页展示:团队名/邀请人) |
|
|
|
+| `POST /api/admin/supply-team/invite/join` | 凭邀请码加入团队(挂邀请人为上级) |
|
|
|
|
|
|
### 4.3 前端(cfc-frontend)
|
|
|
-- `pages/vendor/team-system/team-system.vue`:「客户归属」→「客户数量」文案。
|
|
|
+- `pages/vendor/team-system/team-system.vue`:「客户归属」→「客户数量」文案;成员区加「邀请成员」入口。
|
|
|
- `pages/vendor/team-customers/team-customers.vue`:卡片加「关联订单 N / 关联金额 ¥X」+ 购买明细下钻。
|
|
|
- 新增 `pages/vendor/team-service/index.vue`(服务任务/指派)或并入 team-system。
|
|
|
+- 新增受邀确认页(`invite/join.vue`:展示邀请人/团队 → 加入)或弹窗。
|
|
|
|
|
|
## 5. 派发任务拆解(入池)
|
|
|
|
|
|
@@ -148,9 +166,11 @@
|
|
|
| **T34** | 团队服务指派能力(`supply_service_assignment` 表 + 指派/我的任务/客户记录接口 + 前端入口) | P1 |
|
|
|
| **T35** | 活动管理团队(`activities` 加 `teamId` + 活动团队创建/成员/服务,Phase 2) | P2 |
|
|
|
| **T37(新)** | **消除 70/30 内部分配冲突**:`DistributionService.calculateCommission` 改为「整体结算给系统唯一负责人 `ownerId`」,平台不参与成员间分配;`ownerId` 接入结算;明确成员子树=其团队 | P1 |
|
|
|
+| **T38(新)** | **团队邀请功能**:`supply_system_member` 扩 `invite_code` + 邀请码生成/信息/凭码加入接口(加入=addMember+addRelation 挂邀请人为上级)+ 前端「邀请成员」入口与受邀确认页 | P1 |
|
|
|
|
|
|
> T32 原 prompt(团队-SKU 聚合)前提错误,已按本设计修订为客户维度购买明细。
|
|
|
> T37 源于 2026-11-01 末次澄清(§0.5/§1.5):平台只向**唯一负责人**结算,团队内部分配平台不负责。
|
|
|
+> T38 源于 2026-11-02 廖总需求(§3.5):在我的团队加邀请功能,邀请其他用户加入团队。
|
|
|
|
|
|
### 5.1 T37 修正要求(负责人结算)
|
|
|
|
|
|
@@ -161,8 +181,6 @@
|
|
|
- 兼容:`level1Amount/level2Amount` 旧字段若已有前端消费,改为 `settleToUserId/settleAmount`,旧字段置 null 或标记 `@Deprecated` 一期过渡,二期移除。
|
|
|
- **不动供应商体系**:`SupplySettlementService` 已符合口径(T37 不改 `SupplySettlement*`)。
|
|
|
|
|
|
-## 6. 技术约束(AGENTS.md 铁律)
|
|
|
-
|
|
|
## 6. 技术约束(AGENTS.md 铁律)
|
|
|
- 后端统一 `@PostMapping`;`@Resource` 注入;`@RequestAttribute("userId")` 取用户;`Result<T>` 包装。
|
|
|
- 新增/修改接口前查 `docs/superpowers/api/API_REFERENCE.md` 避免重复,并同步写入。
|
|
|
@@ -176,4 +194,5 @@
|
|
|
- [ ] 客户列表仅含「邀请制团队」成员关系下的购买用户,不含 referral 推广下线混淆。
|
|
|
- [ ] 可对某客户(售后/咨询)指派团队成员,被指派成员能在「服务任务」中看到并跟进;`AfterSalesRequest` 可联动。
|
|
|
- [ ] `DistributionService.calculateCommission` 不再输出 70/30 L1/L2 拆分;结算对象=系统唯一负责人(`ownerId`);`SupplySettlementService` 保持「整体结算给 `adminId`」不变。
|
|
|
+- [ ] 团队成员可在「我的团队」生成/复制个人邀请码;他人凭码加入后成为其下级(`supply_hierarchy.parentId=邀请人`),同一用户不可重复加入同一体系;邀请人不改变(`member/add` 管理员添加仍可用)。
|
|
|
- [ ] `mvn clean compile` 通过;API_REFERENCE 同步;未破坏现有 4 套团队功能。
|