_index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. const _ = require('lodash');
  2. const jwt = require('jsonwebtoken');
  3. const { Op } = require('sequelize');
  4. const express = require('express');
  5. const { body } = require('express-validator');
  6. const paramCheck = require('../../../middleware/check');
  7. const { getToken } = require('../../../utils/qiniu');
  8. const { setCookie, md5, clearCookie, onSuccess, onError } = require('../../../utils');
  9. const { jwtSecretAdmin } = require('../../../config');
  10. const Admin = require('../../../db/models/admin');
  11. const { home } = require('../../../models/page');
  12. const router = express.Router();
  13. router.get('/', async (req, res, next) => {
  14. // if (!req.admin) {
  15. // return res.redirect('/master/login');
  16. // }
  17. // const admin = req.cookies.token || req.session.admin;
  18. // // const admin = jwt.decode(token, jwtSecretAdmin);
  19. // if (!admin) {
  20. // return res.redirect('/master/login');
  21. // }
  22. res.render('master');
  23. });
  24. // // 登录
  25. // router.get('/login', (req, res) => {
  26. // if (req.admin) {
  27. // return res.redirect('/master');
  28. // }
  29. // const admin = req.cookies.token || req.session.admin;
  30. // // const admin = jwt.decode(token, jwtSecretAdmin);
  31. // if (admin) {
  32. // return res.redirect('/master');
  33. // }
  34. // res.render('master');
  35. // });
  36. /**
  37. * showdoc
  38. * @catalog v1/后台/登陆相关
  39. * @title 登录
  40. * @description 登录接口
  41. * @method POST
  42. * @url /master/login
  43. * @param phone 1 string 手机号
  44. * @param password 1 string 密码
  45. * @return
  46. * @remark
  47. * @number
  48. */
  49. // 登录
  50. router.post(
  51. '/login',
  52. paramCheck([body(['phone', 'password']).isString()]),
  53. async (req, res, next) => {
  54. const { phone, password } = req.body;
  55. const data = await Admin.findOne({
  56. where: {
  57. [Op.or]: [{ phone }, { name: phone }],
  58. pwd: md5(password),
  59. },
  60. });
  61. if (!data || !data.id) {
  62. return res.send(onError('帐号或密码错误'));
  63. }
  64. req.session.admin = data;
  65. // setCookie({
  66. // res,
  67. // key: 'token',
  68. // value: data,
  69. // domain: '',
  70. // });
  71. return res.send(onSuccess(data));
  72. }
  73. );
  74. /**
  75. * showdoc
  76. * @catalog v1/后台/登陆相关
  77. * @title 退出登录
  78. * @description 退出登录接口
  79. * @method GET
  80. * @url /master/signout
  81. * @return
  82. * @remark
  83. * @number
  84. */
  85. // 登出
  86. router.get('/signout', async (req, res) => {
  87. // clearCookie(res, 'token');
  88. req.session.destroy(async err => {
  89. err && console.error(err, 'err');
  90. // res.redirect('/master/login');
  91. });
  92. // return res.send(onSuccess(null, '退出成功'));
  93. return res.redirect('/master');
  94. });
  95. /**
  96. * showdoc
  97. * @catalog v1/后台/登陆相关
  98. * @title 获取七牛token
  99. * @description 获取七牛token
  100. * @method GET
  101. * @url /master/qiniu_token
  102. * @return {"code":0,"data": "zgHXZu267Ka7IF3EIljfVVsW6jdNAplr0gGd-bfQ:EgvJ8ouY3hPrxNzxsfOubQg2Om4=:eyJpbnNlcnRPbmx5IjoxLCJzY29wZSI6InNlYWdpbmUtdGVzdCIsImRlYWRsaW5lIjoxNjU1MjgwNDM1fQ=="endpoint: "https://s4.360chief.com/"prefix: "bpp/"}
  103. * @remark
  104. * @number
  105. */
  106. router.get('/qiniu_token', async (req, res) => {
  107. const data = await getToken();
  108. res.json(onSuccess(data));
  109. });
  110. /**
  111. * showdoc
  112. * @catalog v1/后台/登陆相关
  113. * @title 个人信息
  114. * @description 个人信息接口
  115. * @method GET
  116. * @url /master/my
  117. * @return {"code":0,"data":{"id":1000,"account":"admin111","name":"测试","roleId":1000,"img":"https://s4.360chief.com/bpp/5996773316732686.png","createdAt":"2022-06-13 11:07:11","roleName":"项目经理"}}
  118. * @remark
  119. * @number
  120. */
  121. router.get('/my', async (req, res) => {
  122. const data = await Admin.findOne({
  123. where: { id: req.admin.id },
  124. });
  125. res.send(onSuccess(data));
  126. });
  127. /**
  128. * showdoc
  129. * @catalog v1/后台/首页相关
  130. * @title 首页数据
  131. * @description 首页数据接口
  132. * @method GET
  133. * @url /master/home
  134. * @return {"code":0,"data":{}}
  135. * @return_param sCount integer 样本总数
  136. * @return_param sReserves integer 储蓄量总计
  137. * @return_param sVolume integer 积蓄量总计
  138. * @return_param clueCount integer 咨询量总计
  139. * @return_param bCount integer 商家数量
  140. * @return_param clue7 array 近七天咨询量(第一个是今天)
  141. * @return_param bus array 商家地区分布
  142. * @return_param bus.psum integer 商家地区分布数量
  143. * @remark
  144. * @number
  145. */
  146. router.get('/home', async (req, res) => {
  147. const data = await home();
  148. res.send(data);
  149. });
  150. /**
  151. * showdoc
  152. * @catalog v1/后台/登陆相关
  153. * @title 修改该密码
  154. * @description 修改密码接口
  155. * @method PUT
  156. * @url /master/pwd/
  157. * @param npwd 1 string 新密码
  158. * @param pwd 1 string 密码
  159. * @return {"code":0, "msg": "修改成功"}
  160. * @remark
  161. * @number
  162. */
  163. router.put('/pwd', paramCheck([body(['npwd', 'pwd']).isString()]), async (req, res) => {
  164. const { pwd, npwd } = req.body;
  165. const aItem = await Admin.findOne({ where: { id: req.admin.id, pwd: md5(pwd) } });
  166. if (!aItem) {
  167. res.send(onError('密码错误'));
  168. }
  169. req.boyd.pwd = md5(npwd);
  170. const data = await Admin.update(_.pick(req.body, ['pwd']), {
  171. where: { id: req.admin.id },
  172. limit: 1,
  173. });
  174. res.send(onSuccess(null, '修改成功'));
  175. });
  176. module.exports = router;