problem.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const express = require('express');
  2. const _ = require('lodash');
  3. const { query, body } = require('express-validator');
  4. const { onSuccess, fill } = require('../../../utils');
  5. const { limit } = require('../../config');
  6. const check = require('../../../middleware/check');
  7. const Problem = require('../../../db/models/problem');
  8. const router = express.Router();
  9. async function fillSingle(data) {
  10. return data;
  11. }
  12. /**
  13. * showdoc
  14. * @catalog v1/后台/常见问题
  15. * @title 常见问题列表
  16. * @description 常见问题列表接口
  17. * @method GET
  18. * @url /master/problem/
  19. * @param page 0 Int 页码: 不传默认取第1页数据,每页20条数据
  20. * @return {"code":0, "count":1, "data": []}
  21. * @return_param id integer id
  22. * @return_param name string 问题名称
  23. * @return_param tid integer 类型ID
  24. * @return_param content text 问题内容
  25. * @return_param createdAt date -
  26. * @return_param updatedAt date -
  27. * @remark
  28. * @number
  29. */
  30. router.get('/', async (req, res) => {
  31. const { page = 0 } = req.query;
  32. const where = _.omit(req.query, ['page']);
  33. const info = onSuccess();
  34. info.data = await Problem.findAll({ where, limit, offset: page * limit });
  35. info.data = await fill(info.data, fillSingle);
  36. if (!page) {
  37. info.count = await Problem.count({ where });
  38. }
  39. res.send(info);
  40. });
  41. /**
  42. * showdoc
  43. * @catalog v1/后台/常见问题
  44. * @title 常见问题详情
  45. * @description
  46. * @method GET
  47. * @url /master/problem/:id
  48. * @param :id 1 STRING 详情ID
  49. * @return {"code":0, "data": {}}
  50. * @return_param id integer id
  51. * @return_param name string 问题名称
  52. * @return_param tid integer 类型ID
  53. * @return_param content text 问题内容
  54. * @return_param createdAt date -
  55. * @return_param updatedAt date -
  56. * @remark
  57. * @number
  58. */
  59. router.get('/:id', async (req, res) => {
  60. let data = await Problem.findOne({ where: req.params });
  61. data = await fill(data, fillSingle);
  62. res.send(onSuccess(data));
  63. });
  64. /**
  65. * showdoc
  66. * @catalog v1/后台/常见问题
  67. * @title 常见问题添加
  68. * @description
  69. * @method POST
  70. * @url /master/problem/
  71. * @param name string 问题名称
  72. * @param tid integer 类型ID
  73. * @param content text 问题内容
  74. * @return {"code":0, "data": {}}
  75. * @remark
  76. * @number
  77. */
  78. router.post('/', check([body([]).notEmpty()]), async (req, res) => {
  79. const data = await Problem.create(req.body);
  80. res.send(onSuccess(data));
  81. });
  82. /**
  83. * showdoc
  84. * @catalog v1/后台/常见问题
  85. * @title 常见问题修改
  86. * @description
  87. * @method PUT
  88. * @url /master/problem/:id
  89. * @param :id 1 STRING 详情ID
  90. * @param name string 问题名称
  91. * @param tid integer 类型ID
  92. * @param content text 问题内容
  93. * @return {"code":0, "msg": "修改成功"}
  94. * @remark
  95. * @number
  96. */
  97. router.put('/:id', async (req, res) => {
  98. const data = await Problem.update(req.body, { where: req.params, limit: 1 });
  99. res.send(onSuccess(null, '修改成功'));
  100. });
  101. /**
  102. * showdoc
  103. * @catalog v1/后台/常见问题
  104. * @title 常见问题删除
  105. * @description
  106. * @method DELETE
  107. * @url /master/problem/:id
  108. * @param :id 1 STRING 详情ID
  109. * @return {"status":0, "msg": "删除成功"}
  110. * @remark
  111. * @number
  112. */
  113. router.delete('/:id', async (req, res) => {
  114. const data = await Problem.destroy({ where: req.params, limit: 1 });
  115. res.send(onSuccess(null, '删除成功'));
  116. });
  117. module.exports = router;