2026-07-05-supply-distribution-system.md 9.3 KB

供应商销售体系 — 实施计划

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 在管理后台建立供应商销售体系,支持多体系管理、成员、商品关联、结算

Architecture: 4 张新表 (supply_system, supply_system_member, supply_settlement, supply_settlement_detail) + 扩展现有 product_orders 表。后端 Spring Boot 2.7.18 新增 4 Entity + 4 Mapper + 2 Service + 2 Controller。前端 Vue 2 + Element UI 新增 3 页面 + 修改 3 个现有页面。

Tech Stack: Spring Boot 2.7.18 / MyBatis-Plus / Vue 2 / Element UI


File Structure

后端新增

文件 职责
entity/SupplySystem.java 供应商体系实体
entity/SupplySystemMember.java 体系成员实体
entity/SupplySettlement.java 结算记录实体
entity/SupplySettlementDetail.java 结算明细实体
mapper/SupplySystemMapper.java 体系 Mapper
mapper/SupplySystemMemberMapper.java 成员 Mapper
mapper/SupplySettlementMapper.java 结算 Mapper
mapper/SupplySettlementDetailMapper.java 结算明细 Mapper
service/SupplySystemService.java 体系 + 成员业务逻辑
service/SupplySettlementService.java 结算业务逻辑
controller/admin/SupplySystemController.java 体系/成员 API
controller/admin/SupplySettlementController.java 结算 API

后端修改

文件 修改内容
entity/ProductOrder.java supplySystemId, supplierUserId 字段
entity/Product.java 已有 distributionSystemId, profitRate — 确认可用

前端新增

文件 职责
src/views/admin/supply-system/List.vue 体系列表
src/views/admin/supply-system/Form.vue 新建/编辑体系
src/views/admin/supply-system/Detail.vue 体系详情(4 Tab)

前端修改

文件 修改内容
src/api/admin.js 新增 supply-system CRUD API
src/views/admin/ProductEdit.vue 增加「所属供应商体系」下拉框
src/views/admin/ProductEdit.vue 选择体系后自动填充 profit_rate
src/views/Layout.vue 侧边栏新增「供应商体系」菜单
src/router/index.js 新增 supply-system 路由

Tasks

Task 1: 数据库迁移 SQL

文件: 在 cfc-backend/src/main/resources/ 下创建 supply_system_schema.sql

  • 编写 4 张 CREATE TABLE 语句(见设计文档第 2.1 节)
  • 编写 ALTER TABLE product_orders 语句(加两个字段 + 索引)

Task 2: 后端 Entity + Mapper(4 组)

文件:

  • Create: entity/SupplySystem.java, entity/SupplySystemMember.java
  • Create: entity/SupplySettlement.java, entity/SupplySettlementDetail.java
  • Create: mapper/SupplySystemMapper.java, mapper/SupplySystemMemberMapper.java
  • Create: mapper/SupplySettlementMapper.java, mapper/SupplySettlementDetailMapper.java

Entity 模板 (以 SupplySystem 为例,使用 @Data + @TableName + @TableId(type = IdType.AUTO),实现 Serializable):

@Data
@TableName("supply_system")
public class SupplySystem implements Serializable {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Long adminId;
    private Integer settlementPeriodDays;
    private BigDecimal platformProfitRate;  // 百分比,如 5.00
    private String description;
    private String status;       // active/disabled
    private Date createdAt;
    private Date updatedAt;
}
  • 创建 SupplySystem.java
  • 创建 SupplySystemMember.java(字段: id/systemId/userId/role/status/joinedAt)
  • 创建 SupplySettlement.java(字段见设计文档 2.1)
  • 创建 SupplySettlementDetail.java(字段见设计文档 2.1)
  • 创建 4 个 Mapper(每个 extends BaseMapper<Entity>,加 @Mapper
  • 编译: cd cfc-backend && mvn clean compile → 通过

Task 3: 扩展 ProductOrder Entity

  • [ ] 在 ProductOrder.java 中新增:

    private Long supplySystemId;
    private Long supplierUserId;
    
  • [ ] 确认 Product.java 已有 distributionSystemIdprofitRate 字段

  • [ ] 编译通过


Task 4: SupplySystemService — 体系 + 成员业务逻辑

文件: Create service/SupplySystemService.java

方法:

  • list(params) — 分页查询(支持 keyword 模糊搜索 name,status 过滤)
  • detail(id) — 按 ID 查询
  • create(params) — 创建体系,创建者自动成为 admin 成员
  • update(params) — 更新体系
  • toggleStatus(id) — 切换 active/disabled
  • listAll() — 查询所有 active 体系(供前端下拉框)
  • memberList(systemId) — 查询成员列表(联表 User 取 nickname/phone)
  • addMember(systemId, userId) — 添加成员(role=member)
  • removeMember(memberId) — 移除成员
  • changeRole(memberId, role) — 变更角色

DI: @Resource SupplySystemMapper, SupplySystemMemberMapper, UserMapper

  • 创建 Service,实现所有方法
  • 编译通过

Task 5: SupplySettlementService — 结算业务逻辑

文件: Create service/SupplySettlementService.java

方法:

  • list(params) — 分页查询(支持 systemId, status 过滤)
  • detail(id) — 按 ID 查询
  • detailItems(settlementId) — 查询结算明细列表
  • createSettlement(params) — 创建结算单
  • confirm(id) — 确认结算(pending → settled)

  • [ ] 创建 Service

  • [ ] 编译通过


Task 6: SupplySystemController — API 控制器

文件: Create controller/admin/SupplySystemController.java

路由 /api/admin/supply-system,提供端点:

端点 方法
/list list
/create create
/update update
/detail detail
/toggle-status toggleStatus
/list-all listAll
/member/list memberList
/member/add addMember
/member/remove removeMember
/member/change-role changeRole
  • 创建 Controller
  • 编译通过

Task 7: SupplySettlementController — 结算 API

文件: Create controller/admin/SupplySettlementController.java

路由 /api/admin/supply-settlement,提供端点:

端点 方法
/list list
/detail detail
/detail-items detailItems
/create createSettlement
/confirm confirm
  • 创建 Controller
  • 编译通过

Task 8: 前端 API 层

文件: Modify cfc-web/src/api/admin.js

商品管理 API 之前添加 15 个 API 函数(对应后端所有端点)。

关键函数:

  • getSupplySystemList, createSupplySystem, updateSupplySystem
  • getSupplySystemDetail, toggleSupplySystemStatus
  • listAllSupplySystems — 供 ProductEdit 下拉框使用
  • getSupplySystemMembers, addSupplySystemMember, removeSupplySystemMember, changeSupplySystemMemberRole
  • getSupplySettlementList, getSupplySettlementDetail, getSupplySettlementDetailItems
  • createSupplySettlement, confirmSupplySettlement

  • [ ] 在 admin.js 末尾添加 15 个 API 导出函数


Task 9: 前端 — 供应商体系列表页 List.vue

文件: Create src/views/admin/supply-system/List.vue

  • 搜索栏:按名称搜索
  • el-table:名称/账期/平台留利/状态/操作(详情/编辑/启用禁用)
  • 新建按钮 → /supply-system/create
  • 分页
  • 搜索防抖 + 加载状态

Task 10: 前端 — 供应商体系表单页 Form.vue

文件: Create src/views/admin/supply-system/Form.vue

  • 新建模式 (/supply-system/create) vs 编辑模式 (/supply-system/:id/edit)
  • 表单字段:名称/管理员(远程搜索用户)/账期天数/平台留利%/描述
  • 表单验证 (名称/管理员必填)
  • 提交后跳转列表

Task 11: 前端 — 体系详情页 Detail.vue

文件: Create src/views/admin/supply-system/Detail.vue

4 个 el-tab-pane:

  • 商品 Tab:按 distribution_system_id 查询商品列表
  • 成员 Tab:成员表格 + 添加/移除/改角色
  • 订单 Tab:订单列表,每行可选收款方(下拉框绑定体系成员)
  • 结算 Tab:结算记录 + 生成结算单 + 确认结算

Task 12: 路由 + 菜单 + ProductEdit 修改

  • router/index.js:新增 4 个路由(List/Create/Detail/Edit)
  • Layout.vue:侧边栏新增 { path: '/supply-system', label: '供应商体系', icon: 'el-icon-s-management', perm: 'supply:system' }
  • ProductEdit.vue:增加「所属体系」下拉选择器,选择后自动填充 profit_rate(% × 10 = ‰)

Task 13: 编译验证

  • 后端cd cfc-backend && mvn clean compile — 0 error
  • 前端cd cfc-web && npm run build — Build complete

Self-review 核对

  • 所有设计文档的 API 端点 → 有对应的 Controller 方法
  • 所有 Controller 方法 → 有对应的 Service 方法
  • 所有前端页面 → 有对应的后端 API
  • 所有新建 Entity → 有对应的 CREATE TABLE SQL
  • ProductOrder 扩展字段 → 有 ALTER TABLE SQL
  • 路由配置包含所有 supply-system 路径
  • Layout 菜单引用正确路径(/supply-system) ```