一、功能介绍
来源设置维护一级渠道与二级渠道组成的树。一级渠道定义渠道类型、人脉角色和默认启停,二级渠道继承父级的渠道类型与人脉角色;名称、编码、备注、状态和同级顺序可维护。系统会阻止删除仍有子渠道或仍被客资 `source_id` 引用的节点。来源树与变更按当前企业隔离,服务会读取租户上下文并按 `auth_corp_id` 查询;控制器也有查看、新增、编辑、删除、启停和排序的服务端功能守卫。人脉渠道来自当前企业可见启用会员角色。
二、功能亮点
- 树形列表显示渠道名称、类型、层级、状态、人脉渠道、编码和操作。
- 一级渠道可新增二级渠道;页面不提供第三级入口。
- 同级渠道名称会查重,二级名称也不能与父级相同。
- 新节点自动追加到同级末尾,上移和下移通过交换相邻排序值实现。
- 删除前会检查直接子节点和全部客资引用。
- 更新一级渠道类型或人脉角色会同步到所有直接子渠道。
三、使用场景
适用于在当前企业内定义门店自然到访、活动、广告、员工推荐等客资来源层级,并验证导入和筛选口径。来源树、权限和人脉角色候选都已按当前企业隔离。
四、使用权限
- 前端用 `add` 控制新增一级/二级,用 `edit` 控制编辑、启停和排序,用 `del` 控制删除。
- 后端控制器已对查看、新增、编辑、删除、启停和排序做服务端功能守卫;前端按钮隐藏只是额外约束。
- 来源实体已映射 `auth_corp_id`,服务按租户上下文过滤,只作用于当前企业来源树。
- 人脉渠道来自当前企业可见启用的会员角色,不是跨企业共享字典。
五、前置条件
- 确认当前企业租户上下文和按钮权限正常;来源设置只应在已验签企业内操作。
- 建立来源字典台账,定义一级/二级名称、稳定编码、渠道类型、负责人和外部导入映射。
- 查询客资 `source_id` 使用量,已使用渠道优先禁用,不删除。
- 确认所选“人脉渠道”属于当前企业可见启用会员角色,不是别的企业的角色。
- 如业务依赖 APP 人脉必填,先做端到端验证;`personnelRequired` 已被客资新建弹窗消费,但仍要验证当前渠道和角色映射。
- 操作前导出或记录完整来源树及排序,以便发生数据误配时人工恢复。
六、操作步骤
- 进入「客户管理 → 客户设置 → 来源设置」。页面提供渠道搜索框,可按名称关键字过滤加载来源树。
- 新增一级渠道时点击「新增一级渠道」,填写必填名称,可选编码,并在 `SCRM/会员` 中选择渠道类型。
- 同级名称必须唯一;二级名称不能与父级相同。渠道编码会校验格式与企业内唯一性,不符合规则会直接被拒绝。
- 选择一个或多个“人脉渠道”。候选来自当前企业可见启用会员角色,保存时后端会按名称去重并拒绝不存在的角色名。
- 只有选择了人脉渠道后才可打开“人脉必填”;清空人脉渠道会自动关闭该开关。APP 新建客资会消费这个字段,但仍要核对渠道和角色映射。
- 填写备注并设置初始启用状态,点击「确定」。新渠道按同级最大排序值加 1 放在末尾。
- 需要二级渠道时,只在一级行点击「新增子渠道」。二级渠道的渠道类型和人脉渠道不可编辑,保存时继承父级;人脉必填可按子渠道单独设置。
- 后端会阻止以二级渠道作为父节点,避免创建页面不可表达的节点。
- 编辑一级渠道的类型或人脉角色后,所有直接子渠道会同步继承值;若父级清空人脉角色,子渠道的人脉必填也会关闭。
- 点击“禁用/启用”会立即保存。禁用一级渠道不会改动直接子渠道各自的启停状态;重新启用一级渠道也不会改动子渠道各自的启停状态。
- 点击“上移/下移”只与同父级相邻节点交换排序。最前项继续上移或最后项继续下移时,后端会拒绝并提示“已位于最前,无法继续上移”或“已位于最后,无法继续下移”。
- 删除前阅读二次确认。父节点仍有子渠道会被拒绝;叶子节点被任何客资引用也会被拒绝。只有无子节点且无客资引用时才会物理删除。
- 每次操作后重新加载树,核对父子继承、状态和排序;再到客资列表和导入映射抽样验证,不要仅凭成功提示。
七、字段与规则说明
- 页面设计为两级来源树;一级可新增子渠道,二级没有新增入口。
- 当前来源树按企业隔离,名称查重、排序、启停和删除保护都在当前企业数据上执行。
- 同级名称不可重复,二级名称不可与父级相同;名称会去除首尾空格。
- 渠道类型只允许 `SCRM` 或 `会员`;二级始终继承父级。
- 人脉渠道来自当前企业可见启用会员角色,以逗号保存角色名称;二级继承父级。
- 渠道编码会校验格式与企业内唯一性。
- `personnelRequired` 已被客资新建流程消费,但前端仍应校验当前渠道选择。
- 禁用一级渠道不会改动直接子渠道各自的启停状态;子渠道此前的独立启用状态仍然保留。
- 删除父渠道前必须先处理子渠道;删除任何叶子渠道前必须没有客资引用。
- 禁用不会改写历史客资 `source_id`,删除保护以该 ID 引用为准。
- 启停和上移/下移都带有 `AuditLog` 注解,会记录操作者与时间字段。
八、风险与限制
当前企业内的新增、重命名、禁用或排序会影响导入口径和前端客资创建;错误编码和人脉角色会造成映射歧义或必填误判。
注意
当前页面可作为当前企业的来源字典维护入口,但仍应优先禁用而非删除,编码人工查重,父级启停前记录所有子渠道状态,并对人脉必填做真实 APP 提交验证。
九、常见问题
- 为什么其他企业看不到我新增的渠道?来源树按企业隔离,渠道只作用于当前企业。
- 为什么有按钮权限控制仍要看后端守卫?因为页面按钮只是前端约束,真正的访问还要过服务端功能权限。
- 为什么二级渠道不能选择渠道类型或人脉渠道?它们必须继承一级渠道,父级更新也会同步子级。
- 为什么重新启用一级渠道后子渠道没有变化?重新启用不会改动子渠道各自的启停状态。
- 为什么边界位置继续上移/下移被拒绝?后端会提示“已位于最前,无法继续上移”或“已位于最后,无法继续下移”,不再假装移动成功。
- 为什么不能删除?仍有子渠道或客资通过 `source_id` 引用时后端会拒绝。
- 人脉必填会在 APP 生效吗?会被客资新建流程消费,但仍要端到端验证当前渠道和角色映射。
- 渠道编码可以重复吗?不能,当前后端会校验格式与企业内唯一性。
- 可以创建第三级渠道吗?页面不支持;后端也会拦截,禁止这样做。
十、相关指南
通过《管理客资列表》核对来源 ID 和历史引用;来源口径稳定后再在《查看获客分析》中使用来源参数或后续界面分析,正式渠道投放则参考《创建渠道活码》。
说明
页面入口:/customer/settings/source