RUA宠物 - 后台管理 API 接口文档

RUA宠物 - 后台管理 API 接口文档

基础地址:http://www.ruapet.com/admin 统一响应格式:{ "code": 200, "message": "success", "data": ... } 鉴权方式:登录接口在请求头中携带** **Authorization: Bearer {token} 最后更新:2026-08-06


目录


一、通用说明

1.1 统一响应格式

{
  "code": 200,
  "message": "success",
  "data": {}
}
字段 类型 说明
code int 状态码:200=成功,400=参数错误,401=未登录,403=无权限,404=资源不存在,422=参数验证失败
message string 提示信息
data object/array/null 响应数据

1.2 鉴权

需登录的接口须在 HTTP Header 中传入:

Authorization: Bearer {token}

token 有效期 7200 秒(2小时),过期后请使用** **/admin/refresh 刷新。

1.3 分页响应

分页接口统一格式:

{
  "list": [],
  "total": 100,
  "page": 1,
  "page_size": 10
}

二、公开接口(无需登录)

2.1 公开配置

前端初始化用,获取品种字典等公共配置,无需登录。

GET /admin/config/public

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "breeds": {
      "1": [
        { "id": 1, "name": "布偶猫" },
        { "id": 2, "name": "英短" },
        { "id": 3, "name": "美短" }
      ],
      "2": [
        { "id": 4, "name": "金毛" },
        { "id": 5, "name": "柯基" },
        { "id": 6, "name": "泰迪" }
      ],
      "3": [
        { "id": 7, "name": "兔子" },
        { "id": 8, "name": "仓鼠" }
      ]
    }
  }
}
字段 类型 说明
breeds object 按物种(1=猫/2=狗/3=其他)分组的品种列表

2.2 管理员登录

POST /admin/login

请求参数(Body - JSON)

参数 类型 必填 说明
username string 用户名
password string 密码(明文)

请求示例

{
  "username": "admin",
  "password": "admin123"
}

响应示例

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "refresh_token": "a1b2c3d4e5f6...",
    "expire_in": 7200,
    "permissions": ["dashboard", ...],
    "admin": {
      "id": 1,
      "username": "admin",
      "real_name": "超级管理员",
      "avatar_url": "/upload/admin_avatar.jpg",
      "role_id": 1
    }
  }
}
字段 类型 说明
token string JWT Token,后续请求放入 Header
refresh_token string 刷新令牌,Token 过期后用此换新(Header: X-Refresh-Token)
expire_in int Token 有效期(秒),默认 7200
admin.id int 管理员ID
admin.username string 用户名
admin.real_name string 真实姓名
admin.role_id int 角色ID,0=超级管理员

错误响应

code message 说明
401 用户名或密码错误 账号或密码不对
403 账号已被禁用 管理员被停用
422 用户名和密码不能为空 未传入必要参数

2.3 刷新Token

access_token 过期后调用此接口刷新,refresh_token 为一次性使用,刷新后旧 refresh_token 作废。

POST /admin/refresh
Header: X-Refresh-Token: {refresh_token}
参数 位置 类型 必填 说明
X-Refresh-Token Header string 登录时获取的 refresh_token

响应示例

{
  "code": 200,
  "message": "Token已刷新",
  "data": {
    "token": "eyJhbGciOi...",
    "refresh_token": "new_rf_token...",
    "expire_in": 7200
  }
}
code message 说明
401 缺少刷新令牌 Header 未传入 X-Refresh-Token
401 刷新令牌无效或已过期 Token 已失效,需重新登录

三、需登录(无特定权限)

以下接口仅需登录即可访问,无需特定权限码。

3.0 认证服务

3.0.1 获取当前管理员信息

GET /admin/me

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "username": "admin",
    "real_name": "超级管理员",
    "avatar_url": "/upload/admin_avatar.jpg",
    "phone": "138****8888",
    "email": "admin@example.com",
    "role_id": 1,
    "role_name": "超级管理员",
    "status": 1,
    "last_login_time": "2026-08-05 10:30:00",
    "last_login_ip": "127.0.0.1",
    "login_count": 42,
    "permissions": ["dashboard", "system", ...]
  }
}

用于前端页面刷新后恢复当前管理员信息和权限列表。


3.0.2 修改自身密码

PUT /admin/password

请求参数(Body - JSON)

参数 类型 必填 说明
old_password string 原密码
new_password string 新密码(至少6位)

响应示例

{ "code": 200, "message": "密码已修改", "data": null }
code message 说明
422 新旧密码不能为空 参数缺失
422 原密码错误 旧密码不对

3.0.3 退出登录

POST /admin/logout
Header: X-Refresh-Token: {refresh_token}

标记 refresh_token 失效。后续刷新 Token 需要重新登录。

响应示例

{ "code": 200, "message": "已退出", "data": null }

四、需登录(需权限)

以下所有接口均需在 Header 中传入** Authorization: Bearer {token}。 Token 过期返回 **{ code: 401, message: "登录已过期" }


4.1 数据看板

后台首页概览统计,含概览、趋势、营收、动态、热门排行五大子接口。

4.1.1 数据概览

GET /admin/dashboard

(与旧版 2.1 相同,已保留)

4.1.2 趋势数据

GET /admin/dashboard/trend?range=7d|30d

请求参数

参数 类型 必填 默认值 说明
range string 7d 时间范围:7d=近7天 30d=近30天

响应示例

{
  "code": 200,
  "data": {
    "range": "7d",
    "start_date": "2026-07-29",
    "user_trend": [
      { "date": "2026-07-29", "count": 12 },
      { "date": "2026-07-30", "count": 18 }
    ],
    "post_trend": [
      { "date": "2026-07-29", "count": 8 },
      { "date": "2026-07-30", "count": 15 }
    ],
    "order_trend": [
      { "date": "2026-07-29", "count": 3 },
      { "date": "2026-07-30", "count": 7 }
    ]
  }
}

4.1.3 营收统计

GET /admin/dashboard/revenue?range=7d|30d

响应示例

{
  "code": 200,
  "data": {
    "range": "7d",
    "total_revenue": 12580.00,
    "refund_total": 320.00,
    "refund_count": 2,
    "net_revenue": 12260.00,
    "status_count": [
      { "status": 0, "name": "待支付", "count": 15 },
      { "status": 1, "name": "待服务", "count": 8 },
      { "status": 2, "name": "服务中", "count": 3 },
      { "status": 3, "name": "已完成", "count": 42 },
      { "status": 4, "name": "已退款", "count": 2 }
    ],
    "daily_revenue": [
      { "date": "2026-07-29", "amount": "1680.00", "orders": 5 }
    ]
  }
}

4.1.4 最近动态

GET /admin/dashboard/activity?limit=10
参数 类型 必填 默认值 说明
limit int 10 每类数据最大条数(上限50)

响应示例

{
  "code": 200,
  "data": {
    "recent_users": [
      { "id": 101, "nickname": "新用户A", "avatar_url": "...", "create_time": "2026-08-05 09:30:00" }
    ],
    "recent_orders": [
      { "id": 50, "order_no": "SO20260805...", "total_amount": "198.00", "status": 1, "status_name": "待服务", "nickname": "宠主小明", "create_time": "..." }
    ],
    "recent_posts": [
      { "id": 520, "title": "带猫出门", "nickname": "宠主小明", "create_time": "..." }
    ],
    "pending_counts": {
      "posts": 12,
      "activities": 3
    }
  }
}

4.1.5 热门排行

GET /admin/dashboard/hot

响应示例

{
  "code": 200,
  "data": {
    "hot_posts": [
      { "id": 1, "title": "热门帖标题", "like_count": 380, "comment_count": 52, "view_count": 5200 }
    ],
    "hot_services": [
      { "id": 3, "name": "宠物SPA", "order_count": 320 }
    ]
  }
}

4.2 用户管理

4.2.1 用户列表

GET /admin/user/list

请求参数(Query)

参数 类型 必填 默认值 说明
keyword string - 搜索关键词(匹配昵称/手机号)
status int - 状态筛选:0=禁用 1=正常(不传=全部)
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1001,
        "nickname": "宠主小明",
        "avatar_url": "/upload/avatar_1001.jpg",
        "phone": "138****1234",
        "gender": 1,
        "status": 1,
        "pet_count": 3,
        "post_count": 12,
        "create_time": "2026-07-15 10:30:00"
      }
    ],
    "total": 12580,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
id int 用户ID
phone string 手机号(脱敏: 138****1234)
gender int 性别: 0=未知 1=男 2=女
status int 0=禁用 1=正常
pet_count int 该用户的宠物数量
post_count int 该用户的帖子数量

4.2.2 用户详情

GET /admin/user/:id

请求参数: 路径传用户ID

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "user": {
      "id": 1001,
      "nickname": "宠主小明",
      "avatar_url": "/upload/avatar_1001.jpg",
      "phone": "138****1234",
      "gender": 1,
      "real_name_status": 0,
      "status": 1,
      "create_time": "2026-07-15 10:30:00",
      "update_time": "2026-07-20 14:22:00"
    },
    "pet_count": 3,
    "post_count": 12
  }
}
字段 类型 说明
user.real_name_status int 实名状态: 0=未认证 1=已认证
pet_count int 该用户宠物数量
post_count int 该用户已审核通过的帖子数

4.2.3 封禁/解封用户

PUT /admin/user/:id/ban

请求参数(Body - JSON)

参数 类型 必填 说明
status int 0=封禁 1=解封

请求示例

{
  "status": 0
}

响应示例

{ "code": 200, "message": "已封禁", "data": null }

注意:status=-1 为注销状态,前端不可通过此接口操作。


4.2.4 编辑用户

PUT /admin/user/:id

请求参数(Body - JSON)

参数 类型 必填 说明
nickname string 用户昵称
avatar_url string 头像URL
phone string 手机号
gender int 性别:0=未知 1=男 2=女

请求示例

{
  "nickname": "新昵称",
  "gender": 2
}

响应示例

{ "code": 200, "message": "用户信息已更新", "data": null }

4.2.5 删除用户

DELETE /admin/user/:id

软删除,将用户 status 设为 -1(注销状态)。已注销用户不可重复删除。

响应示例

{ "code": 200, "message": "用户已删除", "data": null }

错误说明

code message 说明
422 用户不存在 ID无效或已被删除

接口汇总

方法 路径 说明
GET /admin/user/list 用户列表(含关键词/状态筛选)
GET /admin/user/:id 用户详情(含宠物数/帖子数)
PUT /admin/user/:id/ban 封禁/解封用户
PUT /admin/user/:id 编辑用户资料
DELETE /admin/user/:id 软删除用户(status=-1)

4.3 宠物管理

后台宠物列表(含已删除)、详情、软删除违规宠物。

4.3.1 宠物列表

GET /admin/pet/list?keyword=&species=&status=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 默认值 说明
keyword string - 搜索关键词(匹配宠物名)
species int - 物种: 1=猫 2=狗 3=其他
status int - 0=隐藏 1=正常,不传=全部
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "user_id": 1001,
        "name": "团团",
        "species": 1,
        "breed": "英短",
        "gender": 1,
        "age": 3,
        "avatar_url": "/upload/pet_cover.jpg",
        "status": 1,
        "species_name": "猫",
        "is_deleted": false,
        "nickname": "宠主小明",
        "create_time": "2026-06-01 10:00:00"
      }
    ],
    "total": 8900,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
status int 0=隐藏 1=正常
is_deleted bool 是否已软删除
species_name string 物种中文名
nickname string 所属用户昵称
delete_time string\ null

4.3.2 宠物详情

GET /admin/pet/:id

返回宠物完整信息,额外包含:

字段 类型 说明
owner object 主人信息(id/nickname/avatar_url/phone)
personality object\ null
health_record_count int 健康记录数
photo_count int 照片数

4.3.3 删除宠物

DELETE /admin/pet/:id

软删除(设 status=0 + delete_time),已删除的不可重复删除。


4.3.4 编辑宠物

PUT /admin/pet/:id

请求参数(Body - JSON)

参数 类型 必填 说明
name string 宠物名称
species int 物种:1=猫 2=狗 3=其他
breed string 品种
gender int 性别:0=未知 1=公 2=母
age int 年龄(月)
avatar_url string 头像URL
personality_id int 性格标签ID

请求示例

{
  "name": "小团团",
  "age": 4
}

响应示例

{ "code": 200, "message": "宠物信息已更新", "data": null }

4.3.5 恢复宠物

PUT /admin/pet/:id/restore

恢复已软删除的宠物,将 delete_time 置空、status 恢复为删除前的状态。

响应示例

{ "code": 200, "message": "宠物已恢复", "data": null }

4.3.6 品种管理

4.3.6.1 品种列表
GET /admin/pet/breed

请求参数(Query)

参数 类型 必填 默认值 说明
species int - 物种筛选:1=猫 2=狗 3=其他

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "species": 1,
      "name": "英短",
      "sort": 1,
      "create_time": "2026-06-01 10:00:00"
    },
    {
      "id": 2,
      "species": 1,
      "name": "布偶",
      "sort": 2,
      "create_time": "2026-06-01 10:00:00"
    }
  ]
}
4.3.6.2 新增品种
POST /admin/pet/breed

请求参数(Body - JSON)

参数 类型 必填 说明
species int 物种:1=猫 2=狗 3=其他
name string 品种名称
sort int 排序,默认99

请求示例

{
  "species": 1,
  "name": "暹罗猫"
}

响应示例

{ "code": 200, "message": "品种已添加", "data": null }
4.3.6.3 编辑品种
PUT /admin/pet/breed/:id

请求参数(Body - JSON)

参数 类型 必填 说明
name string 品种名称
sort int 排序
4.3.6.4 删除品种
DELETE /admin/pet/breed/:id

物理删除。如果有宠物正在使用该品种,不允许删除。

响应示例

{ "code": 200, "message": "品种已删除", "data": null }

4.3.7 性格标签管理

4.3.7.1 性格标签列表
GET /admin/pet/personality

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "name": "粘人精",
      "description": "喜欢时刻跟在主人身边",
      "icon_url": "/upload/personality/clingy.png",
      "sort": 1,
      "status": 1,
      "create_time": "2026-06-01 10:00:00"
    }
  ]
}
4.3.7.2 新增性格标签
POST /admin/pet/personality

请求参数(Body - JSON)

参数 类型 必填 说明
name string 标签名称
description string 标签描述
icon_url string 图标URL
sort int 排序,默认99
status int 状态:0=禁用 1=启用,默认1
4.3.7.3 编辑性格标签
PUT /admin/pet/personality/:id

请求参数(Body - JSON)

参数 类型 必填 说明
name string 标签名称
description string 标签描述
icon_url string 图标URL
sort int 排序
status int 状态:0=禁用 1=启用
4.3.7.4 删除性格标签
DELETE /admin/pet/personality/:id

物理删除。如果有宠物正在使用该标签,不允许删除。

接口汇总

方法 路径 说明
GET /admin/pet/list 宠物列表(含关键词/物种/状态筛选)
GET /admin/pet/:id 宠物详情(含主人/性格/健康记录数)
DELETE /admin/pet/:id 软删除宠物
PUT /admin/pet/:id 编辑宠物信息
PUT /admin/pet/:id/restore 恢复已删除宠物
GET /admin/pet/breed 品种列表
POST /admin/pet/breed 新增品种
PUT /admin/pet/breed/:id 编辑品种
DELETE /admin/pet/breed/:id 删除品种
GET /admin/pet/personality 性格标签列表
POST /admin/pet/personality 新增性格标签
PUT /admin/pet/personality/:id 编辑性格标签
DELETE /admin/pet/personality/:id 删除性格标签

4.4 内容审核

4.4.1 帖子审核列表

GET /admin/content/post

请求参数(Query)

参数 类型 必填 默认值 说明
audit_status int - 审核状态: 0=待审 1=通过 2=拒绝
keyword string - 搜索关键词(匹配帖子内容)
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 520,
        "user_id": 1001,
        "nickname": "宠主小明",
        "content": "带团团出去散步,阳光真好呀",
        "images": ["/upload/post_img1.jpg", "/upload/post_img2.jpg"],
        "like_count": 32,
        "comment_count": 5,
        "audit_status": 0,
        "audit_reason": "",
        "create_time": "2026-07-29 16:20:00"
      }
    ],
    "total": 12,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
content string 帖子正文
images array 图片URL数组
like_count int 点赞数
comment_count int 评论数
audit_status int 0=待审 1=通过 2=拒绝
audit_reason string 拒绝原因(仅拒绝时有值)
nickname string 发布者昵称

4.4.2 审核帖子

PUT /admin/content/post/:id/audit

请求参数(Body - JSON)

参数 类型 必填 说明
audit_status int 1=审核通过 2=拒绝
audit_reason string 否* 拒绝原因(拒绝时必填)

请求示例

{
  "audit_status": 2,
  "audit_reason": "包含违规内容"
}

响应示例

{ "code": 200, "message": "已拒绝", "data": null }

4.4.3 活动审核列表

GET /admin/content/activity

请求参数(Query)

参数 类型 必填 默认值 说明
audit_status int - 审核状态: 0=待审 1=通过 2=拒绝
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "title": "杭州流浪猫救助日",
        "category": 1,
        "city": "杭州",
        "organizer_name": "杭州宠物救助协会",
        "start_time": "2026-08-15 09:00:00",
        "end_time": "2026-08-15 17:00:00",
        "current_participants": 0,
        "max_participants": 50,
        "audit_status": 0,
        "create_time": "2026-07-28 14:00:00"
      }
    ],
    "total": 3,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
category int 分类: 1=救助 2=领养日 3=义卖 4=环保 5=科普 6=其他
current_participants int 当前报名人数
max_participants int 最大人数,0=不限

4.4.4 审核活动

PUT /admin/content/activity/:id/audit

请求参数(Body - JSON)

参数 类型 必填 说明
audit_status int 1=审核通过 2=拒绝

请求示例

{
  "audit_status": 1
}

响应示例

{ "code": 200, "message": "审核通过", "data": null }

4.4.5 寻宠/寻主列表

GET /admin/content/lostpet?type=&audit_status=&status=&city=&keyword=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 默认值 说明
type int - 1=寻宠 2=寻主
audit_status int - 0=待审核 1=通过 2=拒绝
status int - 0=已下架 1=寻找中 2=已找到
city string - 城市筛选
keyword string - 标题/描述模糊搜索
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "user_id": 1001,
        "type": 1,
        "title": "急寻!三花猫走失",
        "pet_name": "花花",
        "species": 1,
        "breed": "三花",
        "city": "杭州",
        "district": "西湖区",
        "location_name": "文三路",
        "view_count": 120,
        "status": 1,
        "audit_status": 0,
        "user_nickname": "宠主小明",
        "type_name": "寻宠",
        "status_name": "寻找中",
        "create_time": "2026-08-03 10:00:00"
      }
    ],
    "total": 50,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
type int 1=寻宠 2=寻主
type_name string 类型中文
status_name string 状态中文
user_nickname string 发布者昵称

4.4.6 审核寻宠/寻主

PUT /admin/content/lostpet/:id/audit

请求参数(Body - JSON)

参数 类型 必填 说明
audit_status int 1=通过 2=拒绝
audit_reason string 否(拒绝时必填) 拒绝原因

请求示例

{ "audit_status": 2, "audit_reason": "包含不实信息" }

拒绝时自动下架(status 设为 0)。


4.4.7 上下架切换

PUT /admin/content/lostpet/:id/toggle

请求参数(Body - JSON)

参数 类型 必填 说明
status int 0=下架 1=上架(仅审核通过的记录可上架)

请求示例

{ "status": 0 }

4.4.8 帖子详情

GET /admin/content/post/:id

返回帖子完整信息 + 关联图片列表 + 最近50条评论。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "post": {
      "id": 520,
      "user_id": 1001,
      "nickname": "宠主小明",
      "title": "今天带崽去公园",
      "content": "天气真好...",
      "content_type": 1,
      "video_cover_url": "",
      "city": "杭州",
      "like_count": 32,
      "comment_count": 8,
      "favorite_count": 15,
      "view_count": 320,
      "audit_status": 1,
      "audit_reason": "",
      "create_time": "2026-07-30 10:30:00"
    },
    "images": [
      { "id": 1, "image_url": "/upload/post/pic1.jpg", "sort": 1 }
    ],
    "comments": [
      {
        "id": 1,
        "user_id": 1002,
        "nickname": "宠友小红",
        "avatar_url": "/upload/avatar_1002.jpg",
        "content": "好可爱!",
        "like_count": 5,
        "create_time": "2026-07-30 11:00:00"
      }
    ],
    "comment_total": 50
  }
}

4.4.9 活动详情

GET /admin/content/activity/:id

返回活动完整信息 + 报名用户列表。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "activity": {
      "id": 1,
      "title": "杭州流浪猫救助日",
      "description": "一起来帮助流浪猫...",
      "category": 1,
      "city": "杭州",
      "address": "西湖区文三路",
      "organizer_name": "杭州宠物救助协会",
      "start_time": "2026-08-15 09:00:00",
      "end_time": "2026-08-15 17:00:00",
      "max_participants": 50,
      "current_participants": 12,
      "audit_status": 1,
      "cover_url": "/upload/activity/cover1.jpg",
      "create_time": "2026-07-28 14:00:00"
    },
    "signups": [
      {
        "id": 1,
        "user_id": 1001,
        "nickname": "宠主小明",
        "avatar_url": "/upload/avatar_1001.jpg",
        "phone": "138****1234",
        "create_time": "2026-07-29 09:00:00"
      }
    ],
    "signup_total": 12
  }
}

接口汇总

方法 路径 说明
GET /admin/content/post 帖子审核列表(含审核状态/关键词筛选)
PUT /admin/content/post/:id/audit 审核帖子(通过/拒绝)
GET /admin/content/activity 活动审核列表
PUT /admin/content/activity/:id/audit 审核活动(通过/拒绝)
GET /admin/content/lostpet 寻宠/寻主列表(含多维度筛选)
PUT /admin/content/lostpet/:id/audit 审核寻宠/寻主
PUT /admin/content/lostpet/:id/toggle 上下架切换
GET /admin/content/post/:id 帖子详情(含图片+评论)
GET /admin/content/activity/:id 活动详情(含报名列表)

4.5 Banner管理

4.5.1 Banner列表

GET /admin/banner?status=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 默认值 说明
status int - 状态筛选:0=下架 1=上架(不传=全部)
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "title": "夏日宠物清凉计划",
        "image_url": "/upload/banner_summer.jpg",
        "link_type": 1,
        "link_value": "5",
        "sort_order": 1,
        "status": 1,
        "create_time": "2026-07-01 10:00:00",
        "update_time": "2026-07-20 15:00:00"
      }
    ],
    "total": 5,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
title string Banner标题
image_url string 图片URL
link_type int 跳转类型: 0=无跳转 1=服务详情 2=活动详情 3=外链
link_value string 跳转值(服务/活动ID或外部URL)
sort_order int 排序序号(越小越靠前)
status int 0=下架 1=上架

4.5.2 新增Banner

POST /admin/banner

请求参数(Body - JSON)

参数 类型 必填 说明
title string Banner标题
image_url string 图片URL(先调上传接口)
link_type int 跳转类型,默认0
link_value string 跳转值
sort_order int 排序,默认99
status int 1=上架 0=下架,默认1

请求示例

{
  "title": "新春领养活动",
  "image_url": "/upload/banner_spring.jpg",
  "link_type": 2,
  "link_value": "3",
  "sort_order": 2,
  "status": 1
}

响应示例

{ "code": 200, "message": "Banner已添加", "data": null }

4.5.3 更新Banner

PUT /admin/banner/:id

请求参数(Body - JSON): 按需传参,不传的字段保持不变

参数 类型 必填 说明
title string 标题
image_url string 图片URL
link_type int 跳转类型
link_value string 跳转值
sort_order int 排序
status int 上架/下架

响应示例

{ "code": 200, "message": "Banner已更新", "data": null }

4.5.4 删除Banner

DELETE /admin/banner/:id

请求参数: 路径传Banner ID

响应示例

{ "code": 200, "message": "Banner已删除", "data": null }

删除为软删除,仅将 status 置为 0(下架),不物理删除记录。


4.5.5 Banner详情

GET /admin/banner/:id

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "title": "夏日宠物清凉计划",
    "image_url": "/upload/banner_summer.jpg",
    "link_type": 1,
    "link_value": "5",
    "sort_order": 1,
    "status": 1,
    "create_time": "2026-07-01 10:00:00",
    "update_time": "2026-07-20 15:00:00"
  }
}

4.5.6 上架/下架

PUT /admin/banner/:id/toggle

Toggle 切换状态:1 → 0(下架),0 → 1(上架)。

响应示例

{ "code": 200, "message": "Banner已上架", "data": null }

接口汇总

方法 路径 说明
GET /admin/banner Banner列表(含状态筛选+分页)
POST /admin/banner 新增Banner
PUT /admin/banner/:id 更新Banner
DELETE /admin/banner/:id 删除Banner(软删除)
GET /admin/banner/:id Banner详情
PUT /admin/banner/:id/toggle 上架/下架切换

4.6 服务管理

4.6.1 服务分类列表

GET /admin/service/category

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "name": "领养",
      "icon_url": "/upload/icon_adopt.png",
      "sort_order": 1,
      "status": 1,
      "create_time": "2026-06-01 10:00:00"
    },
    {
      "id": 2,
      "name": "上门喂养",
      "icon_url": "/upload/icon_feed.png",
      "sort_order": 2,
      "status": 1,
      "create_time": "2026-06-01 10:00:00"
    }
  ]
}
字段 类型 说明
sort_order int 排序(越小越前)

4.6.2 新增服务分类

POST /admin/service/category

请求参数(Body - JSON)

参数 类型 必填 说明
name string 分类名称
icon_url string 图标URL
sort_order int 排序,默认99

请求示例

{
  "name": "医疗",
  "icon_url": "/upload/icon_medical.png",
  "sort_order": 5
}

响应示例

{ "code": 200, "message": "分类已添加", "data": null }

4.6.3 服务项目列表

GET /admin/service/list

请求参数(Query)

参数 类型 必填 默认值 说明
category_id int 0 分类ID(0=全部)
keyword string - 搜索关键词(匹配服务名称)
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "name": "专业上门喂养",
        "cover_url": "/upload/service_feeding.jpg",
        "price": 49.00,
        "original_price": 69.00,
        "sales": 320,
        "status": 1,
        "category_name": "上门喂养",
        "create_time": "2026-07-01 10:00:00"
      }
    ],
    "total": 150,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
price float 当前价格
original_price float 原价
sales int 销量
category_name string 所属分类名称

4.6.4 编辑分类

PUT /admin/service/category/:id

请求参数(Body - JSON)

参数 类型 必填 说明
name string 分类名称
icon_url string 图标URL
sort int 排序
status int 状态:0=禁用 1=启用

请求示例

{
  "name": "宠物医疗",
  "sort": 3
}

响应示例

{ "code": 200, "message": "分类已更新", "data": null }

4.6.5 启用/禁用分类

PUT /admin/service/category/:id/toggle

Toggle 切换分类的启用/禁用状态。

响应示例

{ "code": 200, "message": "分类已禁用", "data": null }

4.6.6 删除分类

DELETE /admin/service/category/:id

物理删除。如果有关联的服务项目,不允许删除。

错误说明

code message 说明
422 该分类下有服务项目,不可删除 存在关联服务

响应示例

{ "code": 200, "message": "分类已删除", "data": null }

4.6.7 服务项目详情

GET /admin/service/:id

返回完整服务项目详情。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "category_id": 2,
    "category_name": "上门喂养",
    "name": "专业上门喂养",
    "cover_url": "/upload/service_feeding.jpg",
    "images": ["/upload/service/feed1.jpg", "/upload/service/feed2.jpg"],
    "price": "49.00",
    "original_price": "69.00",
    "description": "专业宠物喂养服务...",
    "duration": 30,
    "sales": 320,
    "rating": 4.8,
    "rating_count": 56,
    "status": 1,
    "create_time": "2026-07-01 10:00:00",
    "update_time": "2026-07-20 15:00:00"
  }
}

4.6.8 新增服务

POST /admin/service

请求参数(Body - JSON)

参数 类型 必填 说明
category_id int 分类ID
name string 服务名称
cover_url string 封面图URL
images array 图片列表
price float 价格
original_price float 原价
description string 服务描述
duration int 服务时长(分钟)
status int 状态:0=下架 1=上架,默认1

请求示例

{
  "category_id": 2,
  "name": "节假日上门喂养",
  "price": 69.00,
  "original_price": 99.00,
  "description": "节假日期间上门喂养服务...",
  "duration": 45
}

响应示例

{ "code": 200, "message": "服务项目已添加", "data": null }

4.6.9 编辑服务

PUT /admin/service/:id

请求参数(Body - JSON): 按需传参,不传的字段保持不变

参数 类型 必填 说明
category_id int 分类ID
name string 服务名称
cover_url string 封面图URL
images array 图片列表
price float 价格
original_price float 原价
description string 服务描述
duration int 服务时长
status int 上下架状态

4.6.10 上架/下架

PUT /admin/service/:id/toggle

Toggle 切换服务项目的上下架状态。

响应示例

{ "code": 200, "message": "服务已下架", "data": null }

4.6.11 删除服务

DELETE /admin/service/:id

软删除。校验无进行中的订单(状态为待确认/已确认/服务中)。如有进行中订单,不允许删除。

错误说明

code message 说明
422 存在进行中的订单,不可删除 有待服务订单

接口汇总

方法 路径 说明
GET /admin/service/category 服务分类列表
POST /admin/service/category 新增分类
PUT /admin/service/category/:id 编辑分类
PUT /admin/service/category/:id/toggle 启用/禁用分类
DELETE /admin/service/category/:id 删除分类
GET /admin/service/list 服务项目列表(含分类/关键词筛选)
GET /admin/service/:id 服务项目详情
POST /admin/service 新增服务项目
PUT /admin/service/:id 编辑服务项目
PUT /admin/service/:id/toggle 上架/下架切换
DELETE /admin/service/:id 删除服务项目(软删除)

4.7 系统配置

后台统一管理系统各项配置:首页功能、通用配置、维护模式、App版本、用户协议。修改后立即生效。

4.7.1 获取首页配置

GET /admin/system/config?group=home

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "home.show_banners": { "value": "1", "description": "是否展示轮播图模块" },
    "home.show_categories": { "value": "1", "description": "是否展示服务分类入口" },
    "home.show_hot_services": { "value": "1", "description": "是否展示热门服务模块" },
    "home.show_hot_topics": { "value": "1", "description": "是否展示热门话题模块" },
    "home.show_personalities": { "value": "1", "description": "是否展示性格标签模块" },
    "home.hot_services_limit": { "value": "6", "description": "热门服务展示数量" },
    "home.hot_topics_limit": { "value": "5", "description": "热门话题展示数量" },
    "home.banner_sort": { "value": "1", "description": "轮播图排序" },
    "home.category_sort": { "value": "2", "description": "服务分类排序" },
    "home.hot_services_sort": { "value": "3", "description": "热门服务排序" },
    "home.hot_topics_sort": { "value": "4", "description": "热门话题排序" },
    "home.personalities_sort": { "value": "5", "description": "性格标签排序" }
  }
}
配置键 默认值 说明
home.show_banners 1 轮播图模块开关,0=关闭
home.show_categories 1 服务分类入口开关
home.show_hot_services 1 热门服务模块开关
home.show_hot_topics 1 热门话题模块开关
home.show_personalities 1 性格标签模块开关
home.hot_services_limit 6 热门服务每页展示数量
home.hot_topics_limit 5 热门话题展示数量
home.banner_sort ~ home.personalities_sort 1~5 模块排序(越小越靠前)

4.7.2 保存首页配置

PUT /admin/system/homeConfig
Body: { "configs": { "home.show_banners": "0", "home.hot_services_limit": "10" } }

请求参数

参数 类型 必填 说明
configs object key-value 配置对象(仅允许home. 前缀)

请求示例

{
  "configs": {
    "home.show_banners": "0",
    "home.hot_services_limit": "8"
  }
}

仅传需要修改的项即可,其他配置保持不变。保存后 C端首页聚合接口** **立即生效


4.7.3 通用配置保存

PUT /admin/system/config

统一配置保存接口,支持所有配置组(home、system、maintenance 等)。Body 中传入 key-value 对,不传的配置保持不变。

请求参数(Body - JSON)

参数 类型 必填 说明
configs object key-value 配置对象

请求示例

{
  "configs": {
    "sensitive_words": "违法,诈骗,赌博",
    "max_post_images": "9",
    "service_fee_rate": "0.05"
  }
}

响应示例

{ "code": 200, "message": "配置已保存", "data": null }

配置通过** **GET /admin/system/config?group= 读取,不传 group 返回所有配置键值对。


4.7.4 维护模式

获取维护状态
GET /admin/system/maintenance

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "enabled": false,
    "message": "系统维护中,预计2小时后恢复"
  }
}
设置维护模式
PUT /admin/system/maintenance

请求参数(Body - JSON)

参数 类型 必填 说明
enabled bool 是否开启维护模式
message string 维护提示信息

请求示例

{
  "enabled": true,
  "message": "系统升级中,预计凌晨2点恢复"
}

4.7.5 App版本管理

获取版本信息
GET /admin/system/version?platform=android|ios

请求参数(Query)

参数 类型 必填 说明
platform string 平台:android 或 ios

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "platform": "android",
    "version": "1.2.0",
    "code": 12,
    "force_update": false,
    "update_url": "https://download.example.com/app-v1.2.0.apk",
    "update_log": "- 新增地图找宠功能\n- 修复已知问题"
  }
}
设置版本信息
PUT /admin/system/version

请求参数(Body - JSON)

参数 类型 必填 说明
platform string 平台:android 或 ios
version string 版本号(如 1.2.0)
code int 版本码(递增整数)
force_update bool 是否强制更新,默认 false
update_url string 更新下载地址
update_log string 更新日志

请求示例

{
  "platform": "android",
  "version": "1.3.0",
  "code": 13,
  "force_update": true,
  "update_url": "https://download.example.com/app-v1.3.0.apk",
  "update_log": "- 新增会员体系\n- 优化性能"
}

4.7.6 协议管理

获取协议
GET /admin/system/agreement?type=user|privacy

请求参数(Query)

参数 类型 必填 说明
type string 协议类型:user=用户协议 privacy=隐私政策

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "type": "user",
    "content": "## 用户服务协议\n\n欢迎使用RUA宠物..."
  }
}
设置协议
PUT /admin/system/agreement

请求参数(Body - JSON)

参数 类型 必填 说明
type string 协议类型:user 或 privacy
content string 协议内容(支持 Markdown)

请求示例

{
  "type": "privacy",
  "content": "## 隐私政策\n\n我们重视您的隐私..."
}

接口汇总

方法 路径 说明
GET /admin/system/config?group=home 获取首页配置
PUT /admin/system/homeConfig 保存首页配置
PUT /admin/system/config 通用配置保存
GET /admin/system/maintenance 获取维护模式状态
PUT /admin/system/maintenance 设置维护模式
GET /admin/system/version 获取App版本信息
PUT /admin/system/version 设置App版本信息
GET /admin/system/agreement 获取协议内容
PUT /admin/system/agreement 设置协议内容

4.8 广告位管理

独立于 Banner 的运营广告位。支持按投放时间范围自动上下线,多广告位复用。

4.8.1 广告列表

GET /admin/advert/list?position=&status=&page=1&pageSize=20
参数 类型 必填 默认值 说明
position string - 广告位标识筛选
status int - 0=禁用 1=启用
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "position": "home_feed",
        "title": "宠物保险限时优惠",
        "image_url": "/upload/ad/insurance.jpg",
        "link_type": "external",
        "link_url": "https://www.example.com/pet-insurance",
        "sort": 1,
        "start_time": "2026-08-01 00:00:00",
        "end_time": "2026-09-01 00:00:00",
        "status": 1,
        "create_time": "2026-08-03 10:00:00"
      }
    ],
    "total": 3,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
position string 广告位标识:home_feed=首页信息流
link_type string external=外链, service=服务页, page=内页
start_time string\ null
end_time string\ null
status int 0=禁用 1=启用

4.8.2 创建广告

POST /admin/advert
Body: { "position": "home_feed", "title": "广告标题", "image_url": "...", "link_url": "...", "start_time": "...", "end_time": "..." }
参数 类型 必填 说明
position string 广告位标识
title string 广告标题
image_url string 广告图片
link_type string 跳转类型,默认 external
link_url string 跳转地址
sort int 排序,默认0
start_time string 投放开始时间
end_time string 投放结束时间

4.8.3 更新广告

PUT /admin/advert/:id

可更新所有字段(position/title/image_url/link_type/link_url/sort/start_time/end_time/status)。


4.8.4 删除广告

DELETE /admin/advert/:id

C端使用Ad::getActiveByPosition('home_feed', 3) 自动筛选启用+投放时间范围内的广告。


4.8.5 广告详情

GET /admin/advert/:id

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "position": "home_feed",
    "title": "宠物保险限时优惠",
    "image_url": "/upload/ad/insurance.jpg",
    "link_type": "external",
    "link_url": "https://www.example.com/pet-insurance",
    "sort": 1,
    "start_time": "2026-08-01 00:00:00",
    "end_time": "2026-09-01 00:00:00",
    "status": 1,
    "create_time": "2026-08-03 10:00:00"
  }
}

4.8.6 上架/下架

PUT /admin/advert/:id/toggle

Toggle 切换广告状态:1 → 0(下架),0 → 1(上架)。

响应示例

{ "code": 200, "message": "广告已上架", "data": null }

接口汇总

方法 路径 说明
GET /admin/advert/list 广告列表(含广告位/状态筛选)
POST /admin/advert 创建广告
PUT /admin/advert/:id 更新广告
DELETE /admin/advert/:id 删除广告
GET /admin/advert/:id 广告详情
PUT /admin/advert/:id/toggle 上架/下架切换

4.9 订单管理

全量订单列表 + 状态流转(确认/开始服务/完成/退款)。

4.9.1 订单列表

GET /admin/order/list?order_status=&pay_status=&order_no=&keyword=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 说明
order_status int 0-6 状态筛选
pay_status int 0-2 支付状态筛选
order_no string 订单编号搜索
keyword string 用户昵称搜索
page int 页码
pageSize int 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "order_no": "SO202608031530000123",
        "user_id": 1001,
        "user_nickname": "宠主小明",
        "pet_name": "团团",
        "service_name": "宠物SPA",
        "appoint_date": "2026-08-10",
        "appoint_time": "14:00-15:00",
        "pet_count": 1,
        "amount": "198.00",
        "pay_amount": "198.00",
        "pay_status": 1,
        "order_status": 1,
        "order_status_cn": "待确认",
        "remark": "",
        "create_time": "2026-08-03 15:30:00",
        "pay_time": "2026-08-03 15:30:01",
        "finish_time": null
      }
    ],
    "total": 50,
    "page": 1,
    "page_size": 20
  }
}

4.9.2 订单详情

GET /admin/order/:id

返回完整订单信息 +** user(用户信息对象) + **service(服务详情对象)。


4.9.3 状态流转

状态流转图

待支付(0) ──支付──▶ 待确认(1) ──确认──▶ 已确认(2) ──开始──▶ 服务中(3) ──完成──▶ 已完成(4)
   │                    │                    │
   └──取消──▶ 已取消(5)   └──退款──▶ 已退款(6)
接口 路径 前置状态 后置状态 说明
确认 PUT /admin/order/:id/confirm 1(待确认) 2(已确认) 商家确认预约
开始 PUT /admin/order/:id/start 2(已确认) 3(服务中) 开始提供服务
完成 PUT /admin/order/:id/complete 2/3 4(已完成) 服务完成
退款 PUT /admin/order/:id/refund 1/2/3(已支付未完成) 6(已退款) 退款处理

接口汇总

方法 路径 说明
GET /admin/order/list 全量订单列表
GET /admin/order/:id 订单详情
PUT /admin/order/:id/confirm 确认订单
PUT /admin/order/:id/start 开始服务
PUT /admin/order/:id/complete 完成订单
PUT /admin/order/:id/refund 退款

4.10 评价管理

全量评价列表 + 隐藏/显示违规评价 + 查看详情 + 删除评价。

4.10.1 评价列表

GET /admin/comment/list?status=&service_item_id=&keyword=&page=1&pageSize=20
参数 类型 必填 说明
status int 0=隐藏 1=显示
service_item_id int 服务项目ID筛选
keyword string 评价内容模糊搜索
page int 页码
pageSize int 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "order_id": 5,
        "user_id": 1001,
        "user_nickname": "宠主小明",
        "service_item_id": 3,
        "service_name": "宠物SPA",
        "rating": 5,
        "content": "服务非常好...",
        "images": ["/upload/review/img1.jpg"],
        "is_anonymous": 0,
        "status": 1,
        "create_time": "2026-08-03 16:00:00"
      }
    ],
    "total": 50,
    "page": 1,
    "page_size": 20
  }
}

4.10.2 切换显示/隐藏

PUT /admin/comment/:id/toggle

Toggle 切换评价的 status(显示↔隐藏),隐藏的评价在C端不展示。


4.10.3 评价详情

GET /admin/comment/:id

返回评价完整信息,包含用户信息、服务信息。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "order_id": 5,
    "user_id": 1001,
    "user_nickname": "宠主小明",
    "user_avatar": "/upload/avatar_1001.jpg",
    "service_item_id": 3,
    "service_name": "宠物SPA",
    "rating": 5,
    "content": "服务非常好...",
    "images": ["/upload/review/img1.jpg"],
    "is_anonymous": 0,
    "status": 1,
    "create_time": "2026-08-03 16:00:00"
  }
}

4.10.4 删除评价

DELETE /admin/comment/:id

物理删除评价,同时回写服务项目的评分统计。

响应示例

{ "code": 200, "message": "评价已删除", "data": null }

接口汇总

方法 路径 说明
GET /admin/comment/list 评价列表(含状态/服务筛选)
PUT /admin/comment/:id/toggle 切换显示/隐藏
GET /admin/comment/:id 评价详情
DELETE /admin/comment/:id 删除评价

4.11 系统通知管理

系统通知推送管理。支持全员推送指定用户推送。通知有3种状态:草稿(0) → 已发布(1) → 已撤回(2)。

4.11.1 通知列表

GET /admin/notification/list?status=&keyword=&page=1&pageSize=20

请求参数

参数 类型 必填 说明
status int 状态筛选:0=草稿 1=已发布 2=已撤回
keyword string 标题/内容模糊搜索
page int 页码,默认1
pageSize int 每页条数,默认20

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "title": "系统维护通知",
        "content": "平台将于8月10日进行升级维护...",
        "target_type": 0,
        "target_user_id": null,
        "is_top": 1,
        "status": 1,
        "publish_time": "2026-08-03 14:00:00",
        "create_time": "2026-08-03 10:00:00",
        "update_time": "2026-08-03 14:00:00"
      }
    ],
    "total": 10,
    "page": 1,
    "page_size": 20
  }
}
字段 类型 说明
target_type int 推送范围:0=全部用户 1=指定用户
target_user_id string 指定用户ID列表JSON,仅 target_type=1 时有值
is_top int 是否置顶:0=否 1=是
status int 状态:0=草稿 1=已发布 2=已撤回
publish_time string 发布时间,草稿状态为null

4.11.2 创建通知(草稿)

POST /admin/notification

请求参数

参数 类型 必填 说明
title string 通知标题
content string 通知内容
target_type int 推送范围:0=全部用户(默认),1=指定用户
target_user_ids array 指定用户ID数组,target_type=1时必填
is_top int 是否置顶:0=否(默认),1=是

响应示例

{
  "code": 200,
  "message": "创建成功",
  "data": {
    "id": 2,
    "title": "新功能上线",
    "content": "地图找宠功能已上线...",
    "target_type": 0,
    "target_user_id": null,
    "is_top": 0,
    "status": 0,
    "create_time": "2026-08-03 15:00:00"
  }
}

4.11.3 更新通知

PUT /admin/notification/:id

约束:仅草稿已撤回状态可编辑,已发布的通知不可修改。

请求参数(路径)

参数 类型 必填 说明
id int 通知ID

请求参数(Body)

参数 类型 必填 说明
title string 通知标题
content string 通知内容
target_type int 推送范围
target_user_ids array 指定用户ID数组
is_top int 是否置顶

4.11.4 发布通知

PUT /admin/notification/:id/publish

发布后** **status 变为 1,publish_time 记录发布时间。C端用户即可看到该通知。

请求参数(路径)

参数 类型 必填 说明
id int 通知ID

错误说明

code message 说明
422 通知不存在 ID无效
422 通知已发布 重复发布

4.11.5 撤回通知

PUT /admin/notification/:id/revoke

约束:仅已发布状态可撤回。撤回后** **status 变为 2,C端不再可见。

错误说明

code message 说明
422 通知不存在 ID无效
422 仅已发布的通知可撤回 状态不符合

4.11.6 删除通知

DELETE /admin/notification/:id

物理删除通知记录。


4.11.7 通知详情

GET /admin/notification/:id

返回通知完整信息。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "title": "系统维护通知",
    "content": "平台将于8月10日进行升级维护...",
    "target_type": 0,
    "target_user_id": null,
    "is_top": 1,
    "status": 1,
    "publish_time": "2026-08-03 14:00:00",
    "create_time": "2026-08-03 10:00:00",
    "update_time": "2026-08-03 14:00:00"
  }
}

接口汇总

方法 路径 说明
GET /admin/notification/list 通知列表(含筛选)
POST /admin/notification 创建通知(草稿)
PUT /admin/notification/:id 更新通知
PUT /admin/notification/:id/publish 发布通知
PUT /admin/notification/:id/revoke 撤回通知
DELETE /admin/notification/:id 删除通知
GET /admin/notification/:id 通知详情

4.12 角色管理

RBAC 角色 CRUD + 权限分配。

4.12.1 角色列表

GET /admin/role/list

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "name": "超级管理员",
      "description": "拥有所有权限",
      "status": 1,
      "create_time": "2026-08-03 10:00:00"
    },
    {
      "id": 2,
      "name": "运营人员",
      "description": "内容运营与服务管理",
      "status": 1,
      "create_time": "2026-08-03 10:00:00"
    }
  ]
}

4.12.2 角色详情(含权限)

GET /admin/role/:id

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "name": "超级管理员",
    "description": "拥有所有权限",
    "status": 1,
    "permissions": [1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,30,31,32,33,34,40,41,42,43,44,45,46,50,51,52,53,54,55,56,60,61,62,63,64,65,66],
    "permission_codes": ["dashboard","system","admin:user:list","admin:user:create","admin:user:edit","admin:user:delete","admin:role:list","admin:role:create","admin:role:edit","admin:role:delete","admin:role:permission","admin:perm:list","admin:perm:create","admin:perm:edit","admin:perm:delete","user","user:list","user:detail","user:ban","user:pet:list","content","content:post:list","content:post:audit","content:activity:list","content:activity:audit","content:lostpet:list","content:lostpet:audit","service","service:category:list","service:category:create","service:category:edit","service:category:delete","service:list:list","service:order:list","operation","operation:banner:list","operation:banner:create","operation:banner:edit","operation:banner:delete","operation:config:list","operation:log:list"],
    "create_time": "2026-08-03 10:00:00"
  }
}

4.12.3 创建角色

POST /admin/role
Body: { "name": "内容编辑", "description": "管理内容", "permissions": [41,42,43,44] }

请求参数

参数 类型 必填 说明
name string 角色名称
description string 角色描述
permissions array 权限ID列表

4.12.4 更新角色

PUT /admin/role/:id
Body: { "name": "新名称", "status": 0 }

不可禁用/删除超级管理员角色(id=1)。


4.12.5 删除角色

DELETE /admin/role/:id

4.12.6 分配权限

PUT /admin/role/:id/permission
Body: { "permissions": [1,30,31,32,33,34,40,41,42,43,44,45,46] }
参数 类型 必填 说明
permissions array 权限ID列表

接口汇总

方法 路径 说明
GET /admin/role/list 角色列表
GET /admin/role/:id 角色详情
POST /admin/role 创建角色
PUT /admin/role/:id 更新角色
DELETE /admin/role/:id 删除角色
PUT /admin/role/:id/permission 分配权限

4.13 权限管理

权限节点树形查询 + CRUD。

4.13.1 权限树

GET /admin/permission/tree

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "parent_id": 0,
      "name": "仪表盘",
      "code": "dashboard",
      "type": 1,
      "icon": "dashboard",
      "path": "/dashboard",
      "sort": 1
    },
    {
      "id": 10,
      "parent_id": 0,
      "name": "系统管理",
      "code": "system",
      "type": 1,
      "icon": "setting",
      "path": "",
      "sort": 10,
      "children": [
        {
          "id": 11,
          "parent_id": 10,
          "name": "管理员列表",
          "code": "admin:user:list",
          "type": 1,
          "icon": "",
          "path": "/system/admin",
          "sort": 11
        },
        {
          "id": 12,
          "parent_id": 10,
          "name": "管理员新增",
          "code": "admin:user:create",
          "type": 2,
          "icon": "",
          "path": "",
          "sort": 12
        }
      ]
    }
  ]
}
字段 类型 说明
id int 权限ID
parent_id int 父级ID
name string 权限名称
code string 权限标识
type int 类型: 1=菜单 2=按钮 3=接口
icon string 菜单图标
path string 菜单路径
sort int 排序
children array 子权限(type=1 菜单时)

4.13.2 权限扁平列表

GET /admin/permission/list

返回所有权限的扁平数组(无树形嵌套),按 sort 排序,用于配置页的复选框列表。


4.13.3 创建权限节点

POST /admin/permission
Body: { "parent_id": 10, "name": "新权限", "code": "system:new", "type": 1, "icon": "", "path": "/system/new", "sort": 25 }
参数 类型 必填 说明
name string 权限名称
code string 权限标识(唯一)
parent_id int 父级ID,默认0
type int 类型: 1=菜单 2=按钮 3=接口,默认1
icon string 菜单图标
path string 菜单路径
sort int 排序

4.13.4 更新权限节点

PUT /admin/permission/:id
Body: { "name": "新名称", "sort": 20 }

4.13.5 删除权限节点

DELETE /admin/permission/:id

有子权限的节点不可删除。

接口汇总

方法 路径 说明
GET /admin/permission/tree 权限树
GET /admin/permission/list 权限扁平列表
POST /admin/permission 创建权限
PUT /admin/permission/:id 更新权限
DELETE /admin/permission/:id 删除权限

4.14 管理员账号管理

管理员账号 CRUD。超级管理员(id=1)不可删除,管理员不可删除自己。

4.14.1 管理员列表

GET /admin/admin/list?keyword=&status=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 默认值 说明
keyword string - 搜索关键词(匹配用户名/真实姓名)
status int - 状态筛选:0=禁用 1=正常(不传=全部)
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "username": "admin",
        "real_name": "系统管理员",
        "role_id": 1,
        "role_name": "超级管理员",
        "phone": "138****1234",
        "email": "admin@ruapet.com",
        "avatar_url": "/upload/admin/avatar1.jpg",
        "status": 1,
        "last_login_time": "2026-08-05 09:00:00",
        "create_time": "2026-06-01 10:00:00"
      }
    ],
    "total": 5,
    "page": 1,
    "page_size": 20
  }
}

4.14.2 管理员详情

GET /admin/admin/:id

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "username": "admin",
    "real_name": "系统管理员",
    "role_id": 1,
    "role_name": "超级管理员",
    "phone": "138****1234",
    "email": "admin@ruapet.com",
    "avatar_url": "/upload/admin/avatar1.jpg",
    "status": 1,
    "last_login_time": "2026-08-05 09:00:00",
    "create_time": "2026-06-01 10:00:00",
    "update_time": "2026-08-01 14:00:00"
  }
}

4.14.3 新增管理员

POST /admin/admin

请求参数(Body - JSON)

参数 类型 必填 说明
username string 用户名(唯一)
password string 密码(最少6位)
real_name string 真实姓名
role_id int 角色ID
phone string 手机号
email string 邮箱
avatar_url string 头像URL

请求示例

{
  "username": "operator01",
  "password": "123456",
  "real_name": "运营专员",
  "role_id": 2,
  "phone": "13900001234",
  "email": "op01@ruapet.com"
}

响应示例

{ "code": 200, "message": "管理员已创建", "data": { "id": 3 } }

4.14.4 编辑管理员

PUT /admin/admin/:id

请求参数(Body - JSON): 按需传参,不传的字段保持不变

参数 类型 必填 说明
real_name string 真实姓名
role_id int 角色ID
phone string 手机号
email string 邮箱
avatar_url string 头像URL
password string 新密码(不传则不修改)

4.14.5 删除管理员

DELETE /admin/admin/:id

不允许删除超级管理员(id=1)和自己。

错误说明

code message 说明
422 不允许删除超级管理员 id=1
422 不能删除自己 操作者本人

4.14.6 启用/禁用

PUT /admin/admin/:id/toggle

Toggle 切换管理员状态:1 → 0(禁用),0 → 1(启用)。

响应示例

{ "code": 200, "message": "管理员已禁用", "data": null }

接口汇总

方法 路径 说明
GET /admin/admin/list 管理员列表(含关键词/状态筛选)
GET /admin/admin/:id 管理员详情
POST /admin/admin 新增管理员
PUT /admin/admin/:id 编辑管理员
DELETE /admin/admin/:id 删除管理员
PUT /admin/admin/:id/toggle 启用/禁用切换

4.15 操作日志

系统通过** OperationLog 中间件自动记录**所有 POST/PUT/DELETE 操作(GET 查询不记录)。日志记录内容包括:谁、何时、什么模块、什么操作、目标ID。

4.15.1 日志列表

GET /admin/log/list?admin_name=&module=&action=&start_time=&end_time=&page=1&pageSize=20

请求参数(Query)

参数 类型 必填 默认值 说明
admin_name string - 管理员用户名(模糊搜索)
module string - 模块标识(如:role、user、content)
action string - 操作类型:create、update、delete
start_time string - 开始时间(YYYY-MM-DD HH:mm:ss)
end_time string - 结束时间
page int 1 页码
pageSize int 20 每页条数

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "admin_user_id": 1,
        "admin_name": "admin",
        "module": "role",
        "action": "create",
        "target": "",
        "target_id": 3,
        "detail": "role create id=3",
        "ip": "127.0.0.1",
        "create_time": "2026-08-03 15:30:00",
        "module_cn": "角色管理",
        "action_cn": "新增"
      },
      {
        "id": 2,
        "admin_user_id": 1,
        "admin_name": "admin",
        "module": "content",
        "action": "update",
        "target": "",
        "target_id": 5,
        "detail": "content update id=5",
        "ip": "127.0.0.1",
        "create_time": "2026-08-03 15:25:00",
        "module_cn": "内容审核",
        "action_cn": "编辑"
      }
    ],
    "total": 156,
    "page": 1,
    "page_size": 20
  }
}

响应字段说明

字段 类型 说明
id int 日志ID
admin_user_id int 管理员ID
admin_name string 管理员用户名
module string 模块标识
module_cn string 模块中文名
action string 操作类型标识
action_cn string 操作类型中文(新增/编辑/删除)
target string 操作对象描述
target_id int 操作对象ID
detail string 操作摘要
ip string 操作IP
create_time string 操作时间

4.15.2 模块筛选选项

GET /admin/log/modules

返回所有模块的标识-中文映射,供筛选下拉框使用。

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    { "value": "role", "label": "角色管理" },
    { "value": "permission", "label": "权限管理" },
    { "value": "user", "label": "用户管理" },
    { "value": "content", "label": "内容审核" },
    { "value": "banner", "label": "Banner管理" },
    { "value": "service", "label": "服务管理" },
    { "value": "order", "label": "订单管理" },
    { "value": "system", "label": "系统配置" }
  ]
}

4.15.3 自动记录机制

记录范围:所有通过** **AdminAuth 中间件的 POST/PUT/DELETE 请求。

方法 记录动作 示例
POST create POST /admin/role → 新增角色
PUT update PUT /admin/role/3/permission → 分配权限
DELETE delete DELETE /admin/banner/5 → 删除Banner
GET 不记录 GET /admin/user/list → 不记日志

模块提取规则:从 URL 路径中提取(/admin/{module}/...)。


4.15.4 日志详情

GET /admin/log/:id

返回单条操作日志的完整信息。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "admin_user_id": 1,
    "admin_name": "admin",
    "module": "role",
    "action": "create",
    "target": "",
    "target_id": 3,
    "detail": "role create id=3",
    "ip": "127.0.0.1",
    "create_time": "2026-08-03 15:30:00",
    "module_cn": "角色管理",
    "action_cn": "新增"
  }
}

接口汇总

方法 路径 说明
GET /admin/log/list 日志列表(支持筛选)
GET /admin/log/modules 模块下拉选项
GET /admin/log/:id 日志详情

4.16 会员管理

会员等级字典 CRUD + 用户会员列表/详情 + 手动加减成长值。预置3个等级:普通会员(0~999) / 银牌会员(1000~4999,95折) / 金牌会员(5000~999999,9折)。

4.16.1 等级列表

GET /admin/member/levelList

返回所有等级(含禁用),按 level 升序。

响应示例

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "name": "普通会员",
      "level": 1,
      "icon_url": "",
      "min_growth": 0,
      "max_growth": 999,
      "discount": 1.00,
      "description": "注册即享",
      "status": 1,
      "create_time": "2026-07-01 10:00:00"
    },
    {
      "id": 2,
      "name": "银牌会员",
      "level": 2,
      "min_growth": 1000,
      "max_growth": 4999,
      "discount": 0.95,
      "status": 1
    }
  ]
}

4.16.2 等级详情

GET /admin/member/level/:id

返回等级信息 + 当前使用该等级的用户数。

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 2,
    "name": "银牌会员",
    "level": 2,
    "icon_url": "",
    "min_growth": 1000,
    "max_growth": 4999,
    "discount": 0.95,
    "description": "累计消费满1000",
    "status": 1,
    "user_count": 128,
    "create_time": "2026-07-01 10:00:00"
  }
}

4.16.3 创建等级

POST /admin/member/level

请求参数

参数 类型 必填 说明
name string 等级名称
level int 等级序号(唯一)
icon_url string 图标URL
min_growth int 最低成长值
max_growth int 最高成长值
discount float 折扣(1.00=不打折)
description string 等级权益描述
status int 状态:0=禁用 1=启用(默认)

4.16.4 更新等级

PUT /admin/member/level/:id

参数同创建,均为可选。修改 level 序号时检查唯一性。


4.16.5 删除等级

DELETE /admin/member/level/:id

约束:有用户正在使用的等级不可删除,返回错误提示当前用户数。


4.16.6 用户会员列表

GET /admin/member/userList?keyword=&level_id=&page=1&pageSize=20

请求参数

参数 类型 必填 说明
keyword string 用户昵称模糊搜索
level_id int 等级筛选
page int 页码
pageSize int 每页条数

按成长值降序排列,返回含** user_nickname **level_name


4.16.7 用户会员详情

GET /admin/member/userDetail/:userId

路径参数为用户ID。自动初始化未开通会员的用户为最低等级。响应格式同 C端** **3.22.1


4.16.8 手动加成长值

POST /admin/member/addGrowth

请求参数

参数 类型 必填 说明
user_id int 用户ID
amount int 成长值数量(>0)
remark string 备注说明

响应示例

{
  "code": 200,
  "message": "成长值添加成功",
  "data": {
    "user_id": 1,
    "added": 100,
    "growth_now": 1300,
    "upgraded": false,
    "new_level": null
  }
}

添加后自动检测是否升级,upgraded=true 时** **new_level 包含新等级信息。


4.16.9 手动减成长值

POST /admin/member/reduceGrowth

请求参数

参数 类型 必填 说明
user_id int 用户ID
amount int 成长值数量(>0)
remark string 备注(默认"违规扣除")

扣除后自动检测是否降级,成长值最低为 0。

接口汇总

方法 路径 说明
GET /admin/member/levelList 等级列表
GET /admin/member/level/:id 等级详情(含用户数)
POST /admin/member/level 创建等级
PUT /admin/member/level/:id 更新等级
DELETE /admin/member/level/:id 删除等级
GET /admin/member/userList 用户会员列表
GET /admin/member/userDetail/:userId 用户会员详情
POST /admin/member/addGrowth 手动加成长值
POST /admin/member/reduceGrowth 手动减成长值

附录:状态码速查表

状态码 含义 常见场景
200 成功 一切正常
400 请求参数错误 参数格式不正确
401 未登录 / Token无效 Token过期、未传认证头、缺少刷新令牌、用户名或密码错误
403 无权限 账号已被禁用、权限不足
404 资源不存在 请求的ID不存在
422 参数验证失败 必填参数缺失、业务校验不通过(如:分类下有服务不可删除、存在进行中订单不可删除、原密码错误、用户不存在等)

更新日志

日期 版本 说明
2026-07-30 v2.0 新增后台管理API(登录/看板/用户管理/内容审核/Banner管理/服务管理/系统配置)
2026-08-03 v3.0 新增后台RBAC权限体系:角色管理CRUD+权限分配、权限节点树形管理CRUD、种子数据(预置2角色+66权限节点)、AdminAuth中间件权限拦截、登录返回permissions
2026-08-03 v3.1 新增操作日志系统:OperationLog中间件自动拦截POST/PUT/DELETE写入日志、日志分页查询+多维度筛选(管理员/模块/操作/时间)、模块中文映射
2026-08-03 v3.2 数据监管模块:寻宠/寻主后台管理(列表+审核+上下架)、宠物档案后台管理增强(列表含已删除+详情含关联信息+软删除违规宠物)
2026-08-03 v3.3 运营配置模块:首页功能配置(5大模块开关+展示数量+排序,后台保存C端立即生效)、广告位管理(CRUD+投放时间范围自动上下线)
2026-08-03 v3.4 服务预约下单模块:后台订单管理(全量列表+状态流转:确认→开始→完成→退款)、订单号自动生成、状态机校验
2026-08-03 v3.5 服务评价模块:后台评价列表+隐藏/显示切换
2026-08-03 v3.7 系统通知推送模块:后台创建/编辑/发布/撤回/删除通知(草稿→发布→撤回状态机),C端列表+详情(全员推送+指定用户推送+内存分页+权限校验)
2026-08-05 v3.8 会员体系模块:后台等级字典CRUD+用户会员列表/详情+手动加减成长值(自动升降级检测)
2026-08-05 v3.9 P0-P2功能补全:Auth登出+刷新Token+管理员信息+改密,Dashboard趋势+营收+动态+排行,用户编辑/删除,宠物编辑/恢复+品种CRUD+性格标签CRUD,帖子/活动详情,服务分类编辑/删除+服务项目全CRUD,管理员账号管理CRUD,RBAC权限补全(12个新权限节点),系统配置通用保存,路由从65条增至118条
2026-08-05 v3.10 P3功能补全:5模块detail端点(Advert/Banner/Comment/Notification/Log),Advert+Banner toggle,Banner分页修复,Comment删除,Member等级详情,Dashboard动态流+热门排行,维护模式+App版本+协议管理,路由118条→134条