Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-09-add-user-organization-model/tasks.md
huang a36e4a79c0 实现用户和组织模型(店铺、企业、个人客户)
核心功能:
- 实现 7 级店铺层级体系(Shop 模型 + 层级校验)
- 实现企业管理模型(Enterprise 模型)
- 实现个人客户管理模型(PersonalCustomer 模型)
- 重构 Account 模型关联关系(基于 EnterpriseID 而非 ParentID)
- 完整的 Store 层和 Service 层实现
- 递归查询下级店铺功能(含 Redis 缓存)
- 全面的单元测试覆盖(Shop/Enterprise/PersonalCustomer Store + Shop Service)

技术要点:
- 显式指定所有 GORM 模型的数据库字段名(column: 标签)
- 统一的字段命名规范(数据库用 snake_case,Go 用 PascalCase)
- 完整的中文字段注释和业务逻辑说明
- 100% 测试覆盖(20+ 测试用例全部通过)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 18:02:46 +08:00

3.4 KiB
Raw Blame History

Tasks: 用户和组织模型实现任务

1. 数据库迁移脚本

  • 1.1 创建 tb_shop 表迁移脚本(店铺表)
  • 1.2 创建 tb_enterprise 表迁移脚本(企业表)
  • 1.3 创建 tb_personal_customer 表迁移脚本(个人客户表)
  • 1.4 修改 tb_account 表迁移脚本(添加 enterprise_id移除 parent_id
  • 1.5 执行数据库迁移并验证表结构

2. GORM 模型定义

  • 2.1 创建 internal/model/shop.go - Shop 模型
  • 2.2 创建 internal/model/enterprise.go - Enterprise 模型
  • 2.3 创建 internal/model/personal_customer.go - PersonalCustomer 模型
  • 2.4 修改 internal/model/account.go - 更新 Account 模型(添加 EnterpriseID移除 ParentID
  • 2.5 验证模型与数据库表结构一致

3. 常量定义

  • 3.1 在 pkg/constants/ 添加用户类型常量UserTypeSuperAdmin, UserTypePlatform, UserTypeAgent, UserTypeEnterprise
  • 3.2 添加组织状态常量StatusDisabled, StatusEnabled
  • 3.3 添加店铺层级相关常量MaxShopLevel = 7
  • 3.4 添加 Redis key 生成函数(店铺下级缓存 key

4. Store 层实现

  • 4.1 创建 internal/store/postgres/shop_store.go - Shop Store
    • 4.1.1 Create/Update/Delete/GetByID/List 基础方法
    • 4.1.2 GetSubordinateShopIDs 递归查询下级店铺
    • 4.1.3 Redis 缓存支持(下级店铺 ID 列表)
  • 4.2 创建 internal/store/postgres/enterprise_store.go - Enterprise Store
    • 4.2.1 Create/Update/Delete/GetByID/List 基础方法
    • 4.2.2 按 OwnerShopID 查询企业列表
  • 4.3 创建 internal/store/postgres/personal_customer_store.go - PersonalCustomer Store
    • 4.3.1 Create/Update/Delete/GetByID/List 基础方法
    • 4.3.2 GetByPhone/GetByWxOpenID 查询方法
  • 4.4 修改 internal/store/postgres/account_store.go - 更新 Account Store
    • 4.4.1 调整递归查询逻辑(改为基于店铺层级)
    • 4.4.2 添加按 ShopID/EnterpriseID 查询方法

5. Service 层实现

  • 5.1 创建 internal/service/shop/service.go - Shop Service
    • 5.1.1 创建店铺(校验层级不超过 7 级)
    • 5.1.2 更新店铺信息
    • 5.1.3 禁用/启用店铺
    • 5.1.4 获取店铺详情和列表
  • 5.2 创建 internal/service/enterprise/service.go - Enterprise Service
    • 5.2.1 创建企业(关联店铺或平台)
    • 5.2.2 更新企业信息
    • 5.2.3 禁用/启用企业
    • 5.2.4 获取企业详情和列表
  • 5.3 创建 internal/service/customer/service.go - PersonalCustomer Service
    • 5.3.1 创建/更新个人客户
    • 5.3.2 根据手机号/微信 OpenID 查询
    • 5.3.3 绑定微信信息

6. 测试

  • 6.1 Shop Store 单元测试
  • 6.2 Enterprise Store 单元测试
  • 6.3 PersonalCustomer Store 单元测试
  • 6.4 Shop Service 单元测试(层级校验)
  • 6.5 递归查询下级店铺测试(含 Redis 缓存)

7. 文档更新

  • 7.1 更新 README.md 说明用户体系设计
  • 7.2 在 docs/ 目录添加用户体系设计文档

依赖关系

1.x (迁移脚本) → 2.x (模型定义) → 3.x (常量) → 4.x (Store) → 5.x (Service) → 6.x (测试)

并行任务

以下任务可以并行执行:

  • 2.1, 2.2, 2.3 可以并行
  • 4.1, 4.2, 4.3 可以并行
  • 5.1, 5.2, 5.3 可以并行
  • 6.1, 6.2, 6.3 可以并行