当前位置: 首页 > news >正文

Content Hub接口文档

反馈系统后端接口文档

概述

反馈系统用于收集用户对系统功能的意见、建议和问题反馈,支持用户提交反馈、查看反馈列表、回复反馈等功能。

基础信息

  • Base URL: /api/feedback
  • 数据格式: JSON
  • 字符编码: UTF-8

数据结构

反馈对象 (Feedback)

{"id": 1,"name": "张三","email": "zhangsan@example.com","type": "suggestion","content": "建议增加夜间模式功能","source": "autops","status": "pending","created_at": "2024-10-16T10:30:00Z","updated_at": "2024-10-16T10:30:00Z","replies": [{"id": 1,"feedback_id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑在下个版本中加入此功能。","is_admin": true,"created_at": "2024-10-16T14:20:00Z"}]
}

回复对象 (Reply)

{"id": 1,"feedback_id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑在下个版本中加入此功能。","is_admin": true,"created_at": "2024-10-16T14:20:00Z"
}

字段说明

反馈类型 (type)

  • suggestion: 功能建议
  • bug: 问题反馈
  • question: 使用咨询
  • other: 其他

反馈状态 (status)

  • pending: 待处理
  • replied: 已回复
  • closed: 已关闭

反馈来源 (source)

  • autops: 假条生成页面
  • knowledge: 知识库页面
  • cultivation: 修炼页面
  • general: 通用反馈

API 接口

1. 提交反馈

接口地址: POST /api/feedback/

请求参数:

{"name": "张三",                    // 可选,用户姓名"email": "zhangsan@example.com",   // 可选,用户邮箱"type": "suggestion",              // 必填,反馈类型"content": "建议增加夜间模式功能",    // 必填,反馈内容"source": "autops"                 // 可选,反馈来源,默认为 "general"
}

响应示例:

{"success": true,"message": "反馈提交成功","data": {"id": 1,"name": "张三","email": "zhangsan@example.com","type": "suggestion","content": "建议增加夜间模式功能","source": "autops","status": "pending","created_at": "2024-10-16T10:30:00Z","updated_at": "2024-10-16T10:30:00Z"}
}

错误响应:

{"success": false,"message": "反馈内容不能为空","code": 400
}

2. 获取反馈列表

接口地址: GET /api/feedback/list

查询参数:

  • page: 页码,默认为 1
  • pageSize: 每页数量,默认为 10,最大为 100
  • source: 反馈来源,可选
  • type: 反馈类型,可选
  • status: 反馈状态,可选
  • keyword: 搜索关键词,可选(搜索内容和姓名)

请求示例:

GET /api/feedback/list?page=1&pageSize=10&source=autops&type=suggestion

响应示例:

{"success": true,"data": {"list": [{"id": 1,"name": "张三","email": "zhangsan@example.com","type": "suggestion","content": "建议增加夜间模式功能","source": "autops","status": "replied","created_at": "2024-10-16T10:30:00Z","updated_at": "2024-10-16T14:20:00Z","replies": [{"id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑在下个版本中加入此功能。","is_admin": true,"created_at": "2024-10-16T14:20:00Z"}]}],"total": 25,"page": 1,"pageSize": 10,"totalPages": 3}
}

3. 获取反馈详情

接口地址: GET /api/feedback/{id}

路径参数:

  • id: 反馈ID

响应示例:

{"success": true,"data": {"id": 1,"name": "张三","email": "zhangsan@example.com","type": "suggestion","content": "建议增加夜间模式功能","source": "autops","status": "replied","created_at": "2024-10-16T10:30:00Z","updated_at": "2024-10-16T14:20:00Z","replies": [{"id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑在下个版本中加入此功能。","is_admin": true,"created_at": "2024-10-16T14:20:00Z"}]}
}

4. 获取反馈回复列表

接口地址: GET /api/feedback/{id}/replies

路径参数:

  • id: 反馈ID

响应示例:

{"success": true,"data": [{"id": 1,"feedback_id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑在下个版本中加入此功能。","is_admin": true,"created_at": "2024-10-16T14:20:00Z"},{"id": 2,"feedback_id": 1,"author": "张三","content": "好的,期待新版本!","is_admin": false,"created_at": "2024-10-16T15:10:00Z"}]
}

5. 回复反馈

接口地址: POST /api/feedback/{id}/reply

路径参数:

  • id: 反馈ID

请求参数:

{"author": "管理员",                          // 必填,回复人姓名"content": "感谢您的建议,我们会考虑实现。",   // 必填,回复内容"is_admin": true                           // 可选,是否为管理员回复,默认 false
}

响应示例:

{"success": true,"message": "回复提交成功","data": {"id": 2,"feedback_id": 1,"author": "管理员","content": "感谢您的建议,我们会考虑实现。","is_admin": true,"created_at": "2024-10-16T15:30:00Z"}
}

6. 获取反馈回复显示内容(原有功能)

接口地址: GET /api/feedback/reply

描述: 获取在反馈表单上方显示的公告回复内容

响应示例:

{"success": true,"data": {"data": [{"content": "感谢大家的反馈!\n我们已收到很多宝贵建议,正在积极改进中。\n\n近期将推出以下功能:\n1. 夜间模式\n2. 批量导出\n3. 自定义模板"}]}
}

7. 更新反馈状态

接口地址: PUT /api/feedback/{id}/status

路径参数:

  • id: 反馈ID

请求参数:

{"status": "replied"  // 必填,新状态值
}

响应示例:

{"success": true,"message": "状态更新成功"
}

8. 删除反馈

接口地址: DELETE /api/feedback/{id}

路径参数:

  • id: 反馈ID

响应示例:

{"success": true,"message": "删除成功"
}

9. 删除回复

接口地址: DELETE /api/feedback/reply/{replyId}

路径参数:

  • replyId: 回复ID

响应示例:

{"success": true,"message": "回复删除成功"
}

错误码说明

错误码 说明
400 请求参数错误
401 未授权访问
403 权限不足
404 资源不存在
422 数据验证失败
500 服务器内部错误

数据库设计建议

feedback 表

CREATE TABLE feedback (id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) COMMENT '反馈人姓名',email VARCHAR(255) COMMENT '联系邮箱',type ENUM('suggestion', 'bug', 'question', 'other') NOT NULL COMMENT '反馈类型',content TEXT NOT NULL COMMENT '反馈内容',source VARCHAR(50) DEFAULT 'general' COMMENT '反馈来源',status ENUM('pending', 'replied', 'closed') DEFAULT 'pending' COMMENT '处理状态',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_source (source),INDEX idx_type (type),INDEX idx_status (status),INDEX idx_created_at (created_at)
);

feedback_replies 表

CREATE TABLE feedback_replies (id BIGINT PRIMARY KEY AUTO_INCREMENT,feedback_id BIGINT NOT NULL COMMENT '反馈ID',author VARCHAR(100) NOT NULL COMMENT '回复人姓名',content TEXT NOT NULL COMMENT '回复内容',is_admin BOOLEAN DEFAULT FALSE COMMENT '是否为管理员回复',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (feedback_id) REFERENCES feedback(id) ON DELETE CASCADE,INDEX idx_feedback_id (feedback_id),INDEX idx_created_at (created_at)
);

feedback_reply_content 表(原有功能)

CREATE TABLE feedback_reply_content (id BIGINT PRIMARY KEY AUTO_INCREMENT,content TEXT NOT NULL COMMENT '回复内容',position ENUM('top', 'bottom', 'left', 'right') DEFAULT 'top' COMMENT '显示位置',is_active BOOLEAN DEFAULT TRUE COMMENT '是否启用',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

实现注意事项

  1. 分页性能优化: 大量数据时建议使用游标分页而非偏移分页
  2. XSS防护: 反馈内容和回复内容需要进行HTML转义
  3. 敏感词过滤: 建议对用户提交的内容进行敏感词检查
  4. 频率限制: 对提交反馈的频率进行限制,防止恶意刷屏
  5. 邮件通知: 可以考虑在收到新反馈或回复时发送邮件通知
  6. 权限控制: 删除和状态更新操作需要管理员权限
  7. 数据备份: 定期备份反馈数据,防止重要信息丢失

前端集成示例

// 获取反馈列表
const response = await FeedbackAPI.getFeedbackList({page: 1,pageSize: 10,source: 'autops'
})// 提交回复
await FeedbackAPI.replyFeedback(feedbackId, {author: '张三',content: '谢谢回复',is_admin: false
})
http://www.rkmt.cn/news/22703.html

相关文章:

  • 2025年方钢/扁钢/圆钢/光轴/六角钢/异型钢/冷拉冷拔钢/热轧钢厂家最新权威推荐榜:Q355B/Q345B/16Mn/45#/40Cr/A3/Q235B钢材实力解析
  • 鸿蒙应用开发从入门到实战(二十四):一文搞懂ArkUI网格布局
  • 完整教程:深入浅出 Redis:从核心原理到运维实战指南一
  • Docker 部署 PHP 全手册
  • VSCode 使用默认profile打开文件
  • 【数据结构】不带表头节点的双向链表的基本操作 - 实践
  • 基于Java+Springboot+Vue开发的新闻管理系统源码+运行步骤
  • Python 将多个DataFrame合并到一个Excel工作表的sheet中有几种方法
  • 2025 涂料供应厂家最新推荐榜:权威品牌测评 + 选购指南,家装工程选品必看
  • 2025 年中走丝线切割源头厂家最新推荐排行榜发布,解读优质厂家技术亮点与选择攻略伺服/高效/自动中走丝线切割厂家推荐
  • 2024浙江省省赛决赛wp
  • 2025年苏州保洁服务公司最新权威推荐榜:专业家政与深度清洁口碑优选,覆盖日常保洁、开荒保洁、深度清洁及企业保洁服务
  • 2025 年快速退火炉优质厂家最新推荐榜单:真空 / 半导体 / 晶圆 / 高温 / 桌面 / 半自动 / 全自动 / 芯片 / 硅片 / RTP 设备企业权威评选
  • Luogu P10027 梦境世界 题解 [ 蓝 ] [ 多维 DP ]
  • winserver文件备份到minio
  • 教你把未分配的磁盘合并到C盘或者D盘?如何把未分配的硬盘空间分配到另一个磁盘?Windows 11,如何将未分配的磁盘分配给 C 盘?怎么把未分配的磁盘合并到d盘
  • 实用指南:VMware挂载Kail Linux
  • OpenCV基础操作与图像处理 - 指南
  • 2025年行业内游乐设施/过山车游乐设施权威榜单厂家-河北天鸿游乐设备
  • 机器学习技术助力美国西海岸地震预警系统升级
  • 2025年市场课桌椅/钢塑课桌椅最新TOP排名厂家-江西华聚智能家具集团有限公司
  • AT 随机做题 I
  • 画图3D真好用 - Gon
  • 高校与某中心共建机器人技术教育项目
  • WordPress维护模式完整指南:手动实现与插件方案
  • 原型链污染学习
  • 重新认识 Golang 中的 json 编解码
  • 关于价值原语与AI元人文构想的对话全记录——DeepSeek研究
  • Pytorch66页实验题
  • uni-app x开发商城系统,商品列表