Skip to content

用户管理页面增加新的筛选项 #564

Description

@LordofAvernus

需求描述(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 文档

实现方案

  1. 扩展接口入参:在 pkg/dms-common/api/dms/v1/user.goListUserReq 中新增查询参数字段,并新增 UserStatFilter 字符串枚举类型。
  2. 后端筛选落地:在 internal/dms/service/user.goListUsers 中根据入参构建过滤条件(邮箱/手机号/状态/认证类型/系统),并将 fuzzy_keyword 组合为 OR 条件(name/uid/email/phone)。
  3. 参数透传:在 pkg/dms-common/dmsobject/user.go 中使用 url.Values 方式组装请求查询参数,确保新增筛选项随请求传递。
  4. 文档同步:执行 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:覆盖 NormalDisabled 两个枚举值(以及若需要兼容旧值再覆盖 0/1
    • filter_by_authentication_typefilter_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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions