Skip to content

18:基础资料:品牌、产品、行业、地区、岗位和结算规则

1. 什么是基础资料

基础资料本身通常不产生审批流,但为客户、跟进、评估和合同提供可选项和规则引用。它们的质量直接影响主业务的数据正确性。

当前项目主要包括:

text
客户品牌、品牌负责人、产品、行业、地区、岗位、结算规则

2. 基础资料模块与表

领域Service被谁使用
产品ProductServiceImplproduct产品跟进、项目评估、合同、试单
品牌CustomerBrandServiceImplcustomer_brand客户资料、品牌统计
品牌负责人BrandOwnerRelationServiceImplbrand_owner_relation品牌归属和权限/展示
客户-品牌关系CustomerBrandRelationServiceImplcustomer_brand_relation客户品牌关联扩展
行业IndustryDictServiceImplindustry_dict客户行业树、列表展示
地区RegionServiceImplregion客户地区、导入下拉
岗位PositionServiceImplposition服务岗位与项目资料
岗位日志PositionChangeLogServiceImplposition_change_log岗位修改审计
结算规则SettlementRuleServiceImplsettlement_rule项目评估和合同

3. 产品:所有业务的共同外键

Product 不是一个可有可无的下拉项。customer_product_follow.product_id、试单和合同都围绕产品展开。

产品被删除或停用前需要确认:

text
是否已被客户产品跟进引用
是否已被项目评估引用
是否已被合同引用
是否已被试单引用

Demo 中即使产品先只用字符串,也应尽快演进为独立 demo_product 表和 product_id 外键,而不要长期把产品名称复制到每张业务表。

4. 行业和结算规则都是树

IndustryDictServiceImplSettlementRuleServiceImpl 都需要处理层级关系。

典型字段:

text
id
parent_id
ancestors
name
sort

结算规则 Service 会将扁平记录转为树,并递归构造完整名称路径。客户保存时行业可能从前端接收完整路径,但主表只保存最后一级行业 id;详情再根据祖先字段还原路径。

这是一种常见模式:入库保存稳定 id,展示时转换为名称和树路径。

5. 品牌和负责人

品牌相关表的关系:

text
customer_brand
  -> brand_owner_relation        一个品牌可有负责人关系
  -> customer_brand_relation     客户与品牌的扩展关系
customer_info.brand_id           客户主资料引用品牌

当前客户列表会批量加载品牌信息、品牌负责人或统计。修改品牌领域时要同时检查客户详情、列表、产品跟进统计是否依赖该字段。

6. 地区的两个来源

当前项目既有数据库 region,也有静态资源:

text
src/main/resources/static/region.json

静态 JSON 主要适合前端/导入级联下拉;数据库关系 customer_region 保存的是客户实际选择的地区。不要把“地区字典”和“客户地区关系”混为一张表。

7. 基础资料接口的共同形态

大多数基础资料 Controller 都有:

text
/save
/edit
/findById
/query/page
/del
/del/batch

它们使用同一套 @QueryPage + QueryModel + QueryResultModel 分页协议。基础资料是练习正式项目代码风格的最佳起点,因为跨表业务和审批相对少。

8. Demo 实施建议

按难度逐步加:

text
阶段 1:demo_product
  - 产品分页、详情、CRUD
  - 跟进表保存 product_id

阶段 2:demo_industry
  - parent_id 树
  - 客户选择行业路径,保存最后一级 id

阶段 3:demo_settlement_rule
  - 树形规则
  - 项目评估/合同保存 rule_id 列表

阶段 4:demo_brand
  - 客户引用 brand_id
  - 列表和详情显示 brandName

每加一个基础表,都应做两类测试:

text
自身 CRUD 是否正确
被客户/跟进/合同引用时,关联查询和删除保护是否正确

9. 源码阅读清单

text
ProductController / ProductServiceImpl
CustomerBrandController / CustomerBrandServiceImpl
BrandOwnerRelationController / BrandOwnerRelationServiceImpl
IndustryDictController / IndustryDictServiceImpl
RegionController / RegionServiceImpl
SettlementRuleController / SettlementRuleServiceImpl
PositionController / PositionServiceImpl
pginit.sql 中 product、customer_brand、industry_dict、region、settlement_rule、position

Lucking