# 家庭成员渠道展示设计文档 **日期:** 2026-05-22 **版本:** 1.0 --- ## 1. 背景 管理端「家庭成员」列表(`familyMember.vue`)目前不展示渠道信息。后端 `FamilyMemberEntity` 已有 `channelIds` 字段(逗号分隔的渠道 ID),但 `FamilyMemberDTO` 未暴露,需后端补充渠道名称字段,前端新增列展示。 --- ## 2. 改动范围 | 端 | 文件 | 改动类型 | |----|------|---------| | 后端 | `FamilyMemberDTO.java` | 新增 `channelNames` 字段 | | 后端 | `FamilyMemberServiceImpl.java` | 重写 `page()` 方法,填充 `channelNames` | | 前端 | `src/views/modules/member/components/familyMember.vue` | 新增「所属渠道」列 | --- ## 3. 后端设计 ### 3.1 FamilyMemberDTO 新增字段 ```java @ApiModelProperty(value = "渠道名称,逗号分隔,如「渠道A、渠道B」") private String channelNames; ``` ### 3.2 FamilyMemberServiceImpl — 重写 page() 在基类 `CrudServiceImpl.page()` 结果返回后,批量填充 `channelNames`: ``` 1. 收集所有行的 channelIds(过滤空值) 2. 解析出所有渠道 ID,去重 3. 一次性查询 ChannelEntity(channelDao.selectBatchIds) 4. 建立 id -> channelName 的 Map 5. 逐行拼接 channelNames(逗号分隔,若 channelIds 为空则 channelNames 为空字符串) ``` **只做一次批量查询,不产生 N+1 问题。** --- ## 4. 前端设计 **文件:** `src/views/modules/member/components/familyMember.vue` 在「就读学校」列后新增: ```html ``` - `channelNames` 有值时直接展示(如「渠道A、渠道B」) - 为空时展示「-」 --- ## 5. 数据流 ``` GET /core/family/member/page → FamilyMemberServiceImpl.page() → 基类查询 ht_family_member → 批量查 ht_channel(by channelIds) → 填充每行 channelNames → 返回 PageData → 前端列表展示 channelNames ``` --- ## 6. 不在本次范围内 - 管理端修改成员渠道的功能(规格书 §4.4 属于小程序端能力) - 渠道筛选/过滤