需求描述(Describe)
为用户列表接口 ListUsers 增加更细粒度的筛选能力,并增强模糊搜索范围:支持按邮箱(filter_by_email)、手机号(filter_by_phone)、用户状态(filter_by_stat)、认证类型(filter_by_authentication_type)、系统(filter_by_system)进行过滤;同时模糊搜索 fuzzy_keyword 扩展到匹配 uid/email/phone(与 name 一起按 OR 关系组合)。
本次变更依据当前分支最新 5 次提交:
4a821c1f:新增邮箱/手机号/状态/认证类型/系统筛选入参
2fce3513:模糊搜索扩展到 uid/email/phone
db50e71e:刷新 Swagger 文档
4bd3e7bc:状态筛选改为字符串枚举
808cc4ba:刷新 Swagger 文档
实现方案
- 扩展接口入参:在
pkg/dms-common/api/dms/v1/user.go 的 ListUserReq 中新增查询参数字段,并新增 UserStatFilter 字符串枚举类型。
- 后端筛选落地:在
internal/dms/service/user.go 的 ListUsers 中根据入参构建过滤条件(邮箱/手机号/状态/认证类型/系统),并将 fuzzy_keyword 组合为 OR 条件(name/uid/email/phone)。
- 参数透传:在
pkg/dms-common/dmsobject/user.go 中使用 url.Values 方式组装请求查询参数,确保新增筛选项随请求传递。
- 文档同步:执行 Swagger 生成更新
api/swagger.yaml / api/swagger.json,确保前端可按最新契约生成/调试请求。
变更影响面
受影响的模块或功能
- 用户管理:用户列表查询与筛选(后端
internal/dms/service/user.go 与请求透传 pkg/dms-common/dmsobject/user.go)
- API 契约与文档:
api/swagger.yaml / api/swagger.json(新增查询参数与枚举说明)
- 前端查询页面(间接受影响):需要按新增参数与枚举值发起请求(尤其是
filter_by_stat)
外部引用的潜在问题或风险
- API 契约变更风险:
filter_by_stat 使用字符串枚举值(Normal/Disabled),若现有调用方仍传 0/1 可能导致筛选失效或报错。
- 参数兼容风险:新增参数虽然为可选,但若网关/中间层对未知 query 参数有拦截策略,可能影响请求。
- 搜索行为变化:
fuzzy_keyword 的命中字段变更为包含 uid/email/phone 后,结果集会比旧逻辑更宽,需要确认前端展示与分页体验。
版本兼容性
- 新增筛选字段均为查询参数形式,原则上不破坏未使用这些参数的旧调用方。
- 存在潜在兼容点:
filter_by_stat 的取值语义从旧格式切换为字符串枚举,需要调用方对齐最新值;建议在服务端保持对旧值(如 0/1)的兼容策略或同步前端改造计划。
测试建议
- 接口集成测试:
filter_by_email / filter_by_phone:分别覆盖命中与不命中场景
filter_by_stat:覆盖 Normal、Disabled 两个枚举值(以及若需要兼容旧值再覆盖 0/1)
filter_by_authentication_type、filter_by_system:覆盖枚举边界值
fuzzy_keyword:验证 OR 关系生效(分别构造 name/uid/email/phone 命中用例)
- 回归测试:
- 分页(page_size/page_index)、排序(order_by)、删除过滤(filter_del_user)不受新增筛选影响
- 文档一致性验证:
- 通过 Swagger UI 或契约测试工具校验新增 query 参数与枚举在文档中可用、参数名正确
变更涉及的关键文件(仅供定位)
pkg/dms-common/api/dms/v1/user.go
internal/dms/service/user.go
pkg/dms-common/dmsobject/user.go
api/swagger.yaml / api/swagger.json
需求描述(Describe)
为用户列表接口
ListUsers增加更细粒度的筛选能力,并增强模糊搜索范围:支持按邮箱(filter_by_email)、手机号(filter_by_phone)、用户状态(filter_by_stat)、认证类型(filter_by_authentication_type)、系统(filter_by_system)进行过滤;同时模糊搜索fuzzy_keyword扩展到匹配uid/email/phone(与name一起按 OR 关系组合)。本次变更依据当前分支最新 5 次提交:
4a821c1f:新增邮箱/手机号/状态/认证类型/系统筛选入参2fce3513:模糊搜索扩展到 uid/email/phonedb50e71e:刷新 Swagger 文档4bd3e7bc:状态筛选改为字符串枚举808cc4ba:刷新 Swagger 文档实现方案
pkg/dms-common/api/dms/v1/user.go的ListUserReq中新增查询参数字段,并新增UserStatFilter字符串枚举类型。internal/dms/service/user.go的ListUsers中根据入参构建过滤条件(邮箱/手机号/状态/认证类型/系统),并将fuzzy_keyword组合为 OR 条件(name/uid/email/phone)。pkg/dms-common/dmsobject/user.go中使用url.Values方式组装请求查询参数,确保新增筛选项随请求传递。api/swagger.yaml/api/swagger.json,确保前端可按最新契约生成/调试请求。变更影响面
受影响的模块或功能
internal/dms/service/user.go与请求透传pkg/dms-common/dmsobject/user.go)api/swagger.yaml/api/swagger.json(新增查询参数与枚举说明)filter_by_stat)外部引用的潜在问题或风险
filter_by_stat使用字符串枚举值(Normal/Disabled),若现有调用方仍传0/1可能导致筛选失效或报错。fuzzy_keyword的命中字段变更为包含uid/email/phone后,结果集会比旧逻辑更宽,需要确认前端展示与分页体验。版本兼容性
filter_by_stat的取值语义从旧格式切换为字符串枚举,需要调用方对齐最新值;建议在服务端保持对旧值(如0/1)的兼容策略或同步前端改造计划。测试建议
filter_by_email/filter_by_phone:分别覆盖命中与不命中场景filter_by_stat:覆盖Normal、Disabled两个枚举值(以及若需要兼容旧值再覆盖0/1)filter_by_authentication_type、filter_by_system:覆盖枚举边界值fuzzy_keyword:验证 OR 关系生效(分别构造 name/uid/email/phone 命中用例)变更涉及的关键文件(仅供定位)
pkg/dms-common/api/dms/v1/user.gointernal/dms/service/user.gopkg/dms-common/dmsobject/user.goapi/swagger.yaml/api/swagger.json