const _ = require('lodash'); const jwt = require('jsonwebtoken'); const { Op } = require('sequelize'); const express = require('express'); const { body } = require('express-validator'); const paramCheck = require('../../../middleware/check'); const { getToken } = require('../../../utils/qiniu'); const { setCookie, md5, clearCookie, onSuccess, onError } = require('../../../utils'); const { jwtSecretAdmin } = require('../../../config'); const Admin = require('../../../db/models/admin'); const { home } = require('../../../models/page'); const router = express.Router(); router.get('/', async (req, res, next) => { // if (!req.admin) { // return res.redirect('/master/login'); // } // const admin = req.cookies.token || req.session.admin; // // const admin = jwt.decode(token, jwtSecretAdmin); // if (!admin) { // return res.redirect('/master/login'); // } res.render('master'); }); // // 登录 // router.get('/login', (req, res) => { // if (req.admin) { // return res.redirect('/master'); // } // const admin = req.cookies.token || req.session.admin; // // const admin = jwt.decode(token, jwtSecretAdmin); // if (admin) { // return res.redirect('/master'); // } // res.render('master'); // }); /** * showdoc * @catalog v1/后台/登陆相关 * @title 登录 * @description 登录接口 * @method POST * @url /master/login * @param phone 1 string 手机号 * @param password 1 string 密码 * @return * @remark * @number */ // 登录 router.post( '/login', paramCheck([body(['phone', 'password']).isString()]), async (req, res, next) => { const { phone, password } = req.body; const data = await Admin.findOne({ where: { [Op.or]: [{ phone }, { name: phone }], pwd: md5(password), }, }); if (!data || !data.id) { return res.send(onError('帐号或密码错误')); } req.session.admin = data; // setCookie({ // res, // key: 'token', // value: data, // domain: '', // }); return res.send(onSuccess(data)); } ); /** * showdoc * @catalog v1/后台/登陆相关 * @title 退出登录 * @description 退出登录接口 * @method GET * @url /master/signout * @return * @remark * @number */ // 登出 router.get('/signout', async (req, res) => { // clearCookie(res, 'token'); req.session.destroy(async err => { err && console.error(err, 'err'); // res.redirect('/master/login'); }); // return res.send(onSuccess(null, '退出成功')); return res.redirect('/master'); }); /** * showdoc * @catalog v1/后台/登陆相关 * @title 获取七牛token * @description 获取七牛token * @method GET * @url /master/qiniu_token * @return {"code":0,"data": "zgHXZu267Ka7IF3EIljfVVsW6jdNAplr0gGd-bfQ:EgvJ8ouY3hPrxNzxsfOubQg2Om4=:eyJpbnNlcnRPbmx5IjoxLCJzY29wZSI6InNlYWdpbmUtdGVzdCIsImRlYWRsaW5lIjoxNjU1MjgwNDM1fQ=="endpoint: "https://s4.360chief.com/"prefix: "bpp/"} * @remark * @number */ router.get('/qiniu_token', async (req, res) => { const data = await getToken(); res.json(onSuccess(data)); }); /** * showdoc * @catalog v1/后台/登陆相关 * @title 个人信息 * @description 个人信息接口 * @method GET * @url /master/my * @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":"项目经理"}} * @remark * @number */ router.get('/my', async (req, res) => { const data = await Admin.findOne({ where: { id: req.admin.id }, }); res.send(onSuccess(data)); }); /** * showdoc * @catalog v1/后台/首页相关 * @title 首页数据 * @description 首页数据接口 * @method GET * @url /master/home * @return {"code":0,"data":{}} * @return_param sCount integer 样本总数 * @return_param sReserves integer 储蓄量总计 * @return_param sVolume integer 积蓄量总计 * @return_param clueCount integer 咨询量总计 * @return_param bCount integer 商家数量 * @return_param clue7 array 近七天咨询量(第一个是今天) * @return_param bus array 商家地区分布 * @return_param bus.psum integer 商家地区分布数量 * @remark * @number */ router.get('/home', async (req, res) => { const data = await home(); res.send(data); }); /** * showdoc * @catalog v1/后台/登陆相关 * @title 修改该密码 * @description 修改密码接口 * @method PUT * @url /master/pwd/ * @param npwd 1 string 新密码 * @param pwd 1 string 密码 * @return {"code":0, "msg": "修改成功"} * @remark * @number */ router.put('/pwd', paramCheck([body(['npwd', 'pwd']).isString()]), async (req, res) => { const { pwd, npwd } = req.body; const aItem = await Admin.findOne({ where: { id: req.admin.id, pwd: md5(pwd) } }); if (!aItem) { res.send(onError('密码错误')); } req.boyd.pwd = md5(npwd); const data = await Admin.update(_.pick(req.body, ['pwd']), { where: { id: req.admin.id }, limit: 1, }); res.send(onSuccess(null, '修改成功')); }); module.exports = router;