/** * 意见反馈管理控制器(客户端接口) * 提供客户端调用的意见反馈相关接口 */ const Framework = require("../../framework/node-core-framework.js"); module.exports = { /** * @swagger * /api/feedback/submit: * post: * summary: 提交反馈 * description: 提交用户反馈 * tags: [前端-意见反馈] * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - type * - content * properties: * type: * type: string * description: 反馈类型 * content: * type: string * description: 反馈内容 * contact: * type: string * description: 联系方式(可选) * responses: * 200: * description: 提交成功 */ 'POST /feedback/submit': async (ctx) => { try { // 从body中获取user_id和sn_code,实际应该从token中解析 const body = ctx.getBody(); const user_id = body.user_id; const sn_code = body.sn_code; if (!user_id) { return ctx.fail('请先登录'); } const { type, content, contact } = body; if (!type || !content) { return ctx.fail('反馈类型和内容不能为空'); } // 这里可以将反馈保存到数据库,暂时只返回成功 // 如果需要保存,可以创建一个 feedback 表 return ctx.success({ message: '反馈提交成功,感谢您的反馈!', feedbackId: `FB${Date.now()}` }); } catch (error) { console.error('提交反馈失败:', error); return ctx.fail('提交反馈失败: ' + error.message); } }, /** * @swagger * /api/feedback/list: * post: * summary: 获取反馈列表 * description: 根据用户ID获取反馈列表 * tags: [前端-意见反馈] * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * page: * type: integer * description: 页码 * pageSize: * type: integer * description: 每页数量 * responses: * 200: * description: 获取成功 */ 'POST /feedback/list': async (ctx) => { try { // 从body中获取user_id,实际应该从token中解析 const body = ctx.getBody(); const user_id = body.user_id; if (!user_id) { return ctx.fail('请先登录'); } const page = body.page || 1; const pageSize = body.pageSize || 20; // 这里可以从数据库查询反馈列表,暂时返回空列表 return ctx.success({ count: 0, total: 0, rows: [], list: [] }); } catch (error) { console.error('获取反馈列表失败:', error); return ctx.fail('获取反馈列表失败: ' + error.message); } }, /** * @swagger * /api/feedback/detail: * get: * summary: 获取反馈详情 * description: 根据反馈ID获取详细信息 * tags: [前端-意见反馈] * parameters: * - in: query * name: feedbackId * required: true * schema: * type: string * description: 反馈ID * responses: * 200: * description: 获取成功 */ 'GET /feedback/detail': async (ctx) => { try { // 从body中获取user_id,实际应该从token中解析 const body = ctx.getBody() || {}; const user_id = body.user_id; if (!user_id) { return ctx.fail('请先登录'); } const { feedbackId } = ctx.query; if (!feedbackId) { return ctx.fail('反馈ID不能为空'); } // 这里可以从数据库查询反馈详情,暂时返回空 return ctx.fail('反馈记录不存在'); } catch (error) { console.error('获取反馈详情失败:', error); return ctx.fail('获取反馈详情失败: ' + error.message); } } };