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 | 否 | 手机号 |
| 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 | 否 | 手机号 |
| 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条 |