Files
shaguabijia-app-server/docs/api/admin-feedbacks-list.md
T
ouzhou 27f76918b2 feat(admin): 运营后台跟进——review 加固 + 反馈改版 + 列表页码分页 (#51)
本 PR 汇合三块运营后台改动(原 #50 仅含其中「加固」一块,已并入本 PR 并关闭)。

## 1. review 加固 (436b2a3)
- 超管防自锁:降级/禁用最后一个 active super_admin 前校验,杜绝零超管死局
- 时间筛选统一 tz-aware(列为 timestamptz),比较绝对时刻、不依赖 DB 会话时区
- 上报审核 / 调余额(set·扣减)加行锁,防并发/连点重复发钱
- ad_audit 复算排序补 id 次级键;health-check 限 finance;调账/拒绝 reason 去空白校验

## 2. 反馈改版 (5a18dbb)
- contact 可选、截图≤6;admin 反馈列表筛选/排序;admin·wallet 接口调整 + docs

## 3. 列表页码分页 (1a7a624)
- CursorPage 加 total;新增 offset_paginate(count 与分页同源)
- 上报/审计日志从 id 游标改 offset 分页(支持跳页)
- 用户 / 提现 / 上报 / 审计日志 四页接入页码分页

测试:admin 套件 47 passed。前端配套改动见 shaguabijia-admin-web。

---------

Co-authored-by: OuYingJun1024 <1034284404@qq.com>
Reviewed-on: #51
Co-authored-by: ouzhou <ouzhou@wonderable.ai>
Co-committed-by: ouzhou <ouzhou@wonderable.ai>
2026-06-14 22:54:07 +08:00

2.4 KiB
Raw Blame History

GET /admin/api/feedbacks — 反馈工单列表(offset 分页 + 筛选/排序)

所属:Admin·反馈 组(前缀 /admin/api/feedbacks | 鉴权:Bearer admin_token(角色:任意已登录管理员,无 require_role,仅 get_current_admin | ← 返回 API 索引

入参(query

字段 类型 必填 默认 说明
status string null 反馈状态,精确匹配:new(待处理) / handled(已处理);传空/不传则不筛
user_id int null 按提交用户 id 精确筛
content string null 反馈内容模糊匹配(ilike,≤100 字)
created_from datetime null 提交时间 ≥(ISO,统一按 UTC 比较)
created_to datetime null 提交时间 ≤(ISO,统一按 UTC 比较)
sort_by string id 排序列:id / created_at
sort_order string desc asc / desc
limit int 20 1100
cursor int null 上一页 next_cursor(offset 分页,cursor=offset)

出参

响应 200:{ items: FeedbackOut[], next_cursor: int|null }(next_cursor=null 表示末页)

FeedbackOut

字段 类型 说明
id int 反馈 id
user_id int 提交用户 id
content string 反馈内容
contact string 联系方式(微信/QQ/手机,便于回访)
images string[] | null 截图相对路径列表(如 ["/media/feedback/u1_ab12.jpg"]),无图为 null
status string 反馈状态:new(待处理) / handled(已处理)
created_at datetime 提交时间(UTC)

错误码

  • 401 未带/无效/过期 admin token、管理员被禁用(头带 WWW-Authenticate: Bearer)
  • 422 limit 超出 1100 范围 / sort_by·sort_order 不在允许集 / 字段类型不合法

说明

  • offset 分页(同 admin-users-list):cursor 即 offset,传上一页返回的 next_cursor;next_cursor=null 即末页。改用 offset 是为了在任意列排序下游标语义统一,代价是翻页期间数据变动可能错位一条(admin 低频可接受)。
  • 排序:sort_by(id/created_at)× sort_order(asc/desc),恒以 id 同向兜底次序。
  • status / user_id 精确匹配、content 模糊、created_from/created_to 时间范围,均可叠加。
  • 关联表 feedback;截图为相对路径,经 GET /media/feedback/<file> 静态读。