admin.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. const { Op } = require('sequelize');
  2. const express = require('express');
  3. const _ = require('lodash');
  4. const { query, body } = require('express-validator');
  5. const { onSuccess, fill, md5, onError } = require('../../../utils');
  6. const { limit } = require('../../config');
  7. const check = require('../../../middleware/check');
  8. const Admin = require('../../../db/models/admin');
  9. const router = express.Router();
  10. async function fillSingle(data) {
  11. return data;
  12. }
  13. /**
  14. * showdoc
  15. * @catalog v1/后台/管理员
  16. * @title 管理员列表
  17. * @description 管理员列表接口
  18. * @method GET
  19. * @url /master/admin/
  20. * @param page 0 Int 页码: 不传默认取第1页数据,每页20条数据
  21. * @return {"code":0, "count":1, "data": []}
  22. * @return_param id integer id
  23. * @return_param name string 名
  24. * @return_param img string 头像
  25. * @return_param phone string 电话
  26. * @return_param pwd string 密码
  27. * @return_param auth array 权限
  28. * @return_param createdAt date -
  29. * @return_param updatedAt date -
  30. * @remark
  31. * @number
  32. */
  33. router.get('/', async (req, res) => {
  34. const { page = 0 } = req.query;
  35. const where = _.omit(req.query, ['page']);
  36. const info = onSuccess();
  37. info.data = await Admin.findAll({ where, limit, offset: page * limit });
  38. info.data = await fill(info.data, fillSingle);
  39. if (!page) {
  40. info.count = await Admin.count({ where });
  41. }
  42. res.send(info);
  43. });
  44. /**
  45. * showdoc
  46. * @catalog v1/后台/管理员
  47. * @title 管理员详情
  48. * @description
  49. * @method GET
  50. * @url /master/admin/:id
  51. * @param :id 1 STRING 详情ID
  52. * @return {"code":0, "data": {}}
  53. * @return_param id integer id
  54. * @return_param name string 名
  55. * @return_param img string 头像
  56. * @return_param phone string 电话
  57. * @return_param pwd string 密码
  58. * @return_param auth array 权限
  59. * @return_param createdAt date -
  60. * @return_param updatedAt date -
  61. * @remark
  62. * @number
  63. */
  64. router.get('/:id', async (req, res) => {
  65. let data = await Admin.findOne({ where: req.params });
  66. data = await fill(data, fillSingle);
  67. res.send(onSuccess(data));
  68. });
  69. /**
  70. * showdoc
  71. * @catalog v1/后台/管理员
  72. * @title 管理员添加
  73. * @description
  74. * @method POST
  75. * @url /master/admin/
  76. * @param name 1 string 名
  77. * @param phone 1 string 电话
  78. * @param pwd 1 string 密码
  79. * @param auth 1 array 权限
  80. * @return {"code":0, "data": {}}
  81. * @remark
  82. * @number
  83. */
  84. router.post('/', check([body(['name', 'phone', 'pwd']).notEmpty()]), async (req, res) => {
  85. const { pwd, phone, name } = req.body;
  86. pwd && (req.body.pwd = md5(pwd));
  87. const count = await Admin.count({ where: { [Op.or]: [{ phone }, { name }] } });
  88. if (count) {
  89. return res.send(onError('手机号或名称重复'));
  90. }
  91. const data = await Admin.create(req.body);
  92. res.send(onSuccess(data));
  93. });
  94. /**
  95. * showdoc
  96. * @catalog v1/后台/管理员
  97. * @title 管理员修改
  98. * @description
  99. * @method PUT
  100. * @url /master/admin/:id
  101. * @param :id 1 STRING 详情ID
  102. * @param name 0 string 名
  103. * @param phone 0 string 电话
  104. * @param pwd 0 string 密码
  105. * @param auth 0 array 权限
  106. * @return {"code":0, "msg": "修改成功"}
  107. * @remark
  108. * @number
  109. */
  110. router.put('/:id', async (req, res) => {
  111. const { pwd, phone, name } = req.body;
  112. pwd && (req.body.pwd = md5(pwd));
  113. const count = await Admin.count({
  114. where: { [Op.or]: [{ phone }, { name }], id: { [Op.ne]: req.params.id } },
  115. });
  116. if (count) {
  117. return res.send(onError('手机号或名称重复'));
  118. }
  119. const data = await Admin.update(req.body, { where: req.params, limit: 1 });
  120. res.send(onSuccess(null, '修改成功'));
  121. });
  122. /**
  123. * showdoc
  124. * @catalog v1/后台/管理员
  125. * @title 管理员删除
  126. * @description
  127. * @method DELETE
  128. * @url /master/admin/:id
  129. * @param :id 1 STRING 详情ID
  130. * @return {"code":0, "msg": "删除成功"}
  131. * @remark
  132. * @number
  133. */
  134. router.delete('/:id', async (req, res) => {
  135. const data = await Admin.destroy({ where: req.params, limit: 1 });
  136. res.send(onSuccess(null, '删除成功'));
  137. });
  138. module.exports = router;