case.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. const Case = require('../module/Case');
  2. const Router = require('koa-router');
  3. const permission = require('../intercept/permission');
  4. const router = new Router();
  5. async function getCase(id) {
  6. let _case = new Case();
  7. _case.id = id;
  8. let [result = {}] = await _case.query()
  9. return result
  10. }
  11. /**
  12. * 获取案例数据
  13. */
  14. router.get('/', async ctx => {
  15. let { page = 1, keyword = '', limit = 15, label, language } = ctx.request.query;
  16. let _case = new Case();
  17. _case.hide = 0;
  18. let result = await _case.paging(page, Number(limit), keyword, label, language)
  19. ctx.body = {
  20. msg: '成功获取数据',
  21. content: result
  22. }
  23. });
  24. /**
  25. * 获取具体案例
  26. */
  27. router.get('/:id', async ctx => {
  28. let language = Number(ctx.query.language)
  29. let id = ctx.params.id;
  30. (!id || !Number.isFinite(Number(id))) &&
  31. ctx.error('该案例不存在,请刷新后重试!');
  32. let result = await getCase(id)
  33. if (language && result.language !== language) {
  34. let reResult = null
  35. let reId = language === 1 ? result.chinese_id:
  36. language === 2 ? result.english_id : null
  37. reId && (reResult = await getCase(reId))
  38. reResult && (result = reResult)
  39. }
  40. ctx.body = {
  41. msg: '成功获取!',
  42. content: result
  43. };
  44. });
  45. /**
  46. * 添加案例
  47. */
  48. router.post('/', permission, async ctx => {
  49. let body = ctx.request.body;
  50. let _case = new Case();
  51. _case.pro_type = body.proType;
  52. _case.title = body.title;
  53. _case.content = body.content;
  54. _case.cover = body.cover;
  55. _case.logo = body.logo;
  56. _case.label = body.label;
  57. _case.date = body.date;
  58. _case.sort = Number(body.sort) || 0;
  59. _case.link = body.link;
  60. _case.address = body.address;
  61. _case.type = body.type;
  62. _case.user_id = ctx.session.user.id
  63. _case.language = body.language;
  64. _case.chinese_id = Number(body.chinese_id) || 0;
  65. _case.english_id = Number(body.english_id) || 0;
  66. let { insertId } = await _case.insert()
  67. ctx.body = {
  68. msg: '成功添加!',
  69. insertId
  70. };
  71. });
  72. /**
  73. * 修改案例
  74. */
  75. router.put('/', permission, async ctx => {
  76. let body = ctx.request.body;
  77. let _case = new Case();
  78. _case.id = body.id;
  79. if (!await _case.exists()) {
  80. ctx.error('该案例不存在!')
  81. }
  82. _case.pro_type = body.proType;
  83. _case.title = body.title;
  84. _case.content = body.content;
  85. _case.cover = body.cover;
  86. _case.label = body.label;
  87. _case.logo = body.logo;
  88. _case.date = body.date;
  89. _case.sort = Number(body.sort) || 0;
  90. _case.link = body.link;
  91. _case.type = body.type;
  92. _case.address = body.address;
  93. _case.language = body.language;
  94. _case.chinese_id = Number(body.chinese_id) || 0;
  95. _case.english_id = Number(body.english_id) || 0;
  96. await _case.update()
  97. ctx.body = {
  98. msg: '成功修改!'
  99. };
  100. });
  101. /**
  102. * 删除案例
  103. */
  104. router.delete('/:id', permission, async ctx => {
  105. let id = ctx.params.id;
  106. (!id || !Number.isFinite(Number(id))) &&
  107. ctx.error('该案例不存在,请刷新后重试!');
  108. let _case = new Case();
  109. _case.id = id;
  110. _case.hide = 0;
  111. (await _case.exists()) ||
  112. ctx.error('该案例不存在,请刷新后重试!');
  113. _case.hide = 1;
  114. await _case.update();
  115. ctx.body = { msg: '成功删除!' };
  116. });
  117. module.exports = exports = { path: '/case', router };