123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- const _ = require('lodash');
- const moment = require('moment');
- const jwt = require('jsonwebtoken');
- 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 { jwtSecretBusin } = require('../../../config');
- const Business = require('../../../db/models/business');
- const { smsCode } = require('../../../models/page');
- const redis = require('../../../utils/redis');
- const router = express.Router();
- /**
- * showdoc
- * @catalog v1/商家/登陆相关
- * @title 登录
- * @description 登录接口
- * @method POST
- * @url /business/login
- * @param account 1 string 账号
- * @param password 1 string 密码
- * @return
- * @remark
- * @number
- */
- // 登录
- router.post(
- '/login',
- paramCheck([body(['account', 'password']).isString()]),
- async (req, res, next) => {
- const { account, password } = req.body;
- const busItem = await Business.findOne({
- where: {
- account,
- },
- });
- if (!busItem) {
- return res.send(onError('您还没有开通账号,请联系我们申请开通'));
- }
- const data = await Business.findOne({
- where: {
- account,
- pwd: md5(password),
- },
- });
- if (!data || !data.id) {
- return res.send(onError('密码输入错误,请重试'));
- }
- if (data.deadline !== '' && moment().diff(data.deadline) > 0) {
- return res.send(onError('商家到期'));
- }
- req.session.business = data;
- // setCookie({
- // res,
- // key: 'token',
- // value: data,
- // domain: '',
- // });
- await Business.update(
- { lastTime: moment().format('YYYY-MM-DD HH:mm:ss') },
- { where: { id: data.id } }
- );
- return res.send(onSuccess(data));
- }
- );
- /**
- * showdoc
- * @catalog v1/商家/短信登录
- * @title 短信登录
- * @description 短信登录接口
- * @method POST
- * @url /business/phone_login/
- * @param phone 1 string 联系方式
- * @param code 1 string 短信验证码
- * @return {"code":0, "data": "增加成功"}
- * @remark
- * @number
- */
- router.post(
- '/phone_login',
- paramCheck([body(['phone']).isString(), body(['code']).isInt()]),
- async (req, res) => {
- const { phone, code } = req.body;
- const data = await Business.findOne({
- where: {
- phone,
- },
- });
- if (!data || !data.id) {
- return res.send(onError('您还没有开通账号,请联系我们申请开通'));
- }
- // 判断验证码是否正确
- const codeItem = await redis.get(`smsCode:${phone}`);
- if (code !== codeItem) {
- return res.send(onError('验证码不正确'));
- }
- // 正确后删除redis中的验证码
- await redis.del(`smsCode:${phone}`);
- req.session.business = data;
- // setCookie({
- // res,
- // key: 'token',
- // value: data,
- // domain: '',
- // });
- await Business.update(
- { lastTime: moment().format('YYYY-MM-DD HH:mm:ss') },
- { where: { id: data.id } }
- );
- return res.send(onSuccess(data));
- }
- );
- /**
- * showdoc
- * @catalog v1/商家/短信登录
- * @title 短信验证码
- * @description 短信验证码接口
- * @method POST
- * @url /business/sms
- * @param phone 1 string 手机号
- * @return {"code":0, "data": "发送成功"}
- * @remark
- * @number
- */
- router.post('/sms', paramCheck([body(['phone']).notEmpty()]), async (req, res) => {
- const data = await Business.findOne({
- where: {
- phone: req.body.phone,
- },
- });
- if (!data || !data.id) {
- return res.send(onError('您还没有开通账号,请联系我们申请开通'));
- }
- const info = await smsCode(req.body);
- res.send(info);
- });
- /**
- * showdoc
- * @catalog v1/商家/登陆相关
- * @title 退出登录
- * @description 退出登录接口
- * @method GET
- * @url /business/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('/business/login');
- });
- // return res.send(onSuccess(null, '退出成功'));
- return res.redirect('/');
- });
- /**
- * showdoc
- * @catalog v1/商家/登陆相关
- * @title 个人信息
- * @description 个人信息接口
- * @method GET
- * @url /business/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 Business.findOne({
- where: { id: req.business.id },
- });
- res.send(onSuccess(data));
- });
- /**
- * showdoc
- * @catalog v1/商家/登陆相关
- * @title 修改该密码
- * @description 修改密码接口
- * @method PUT
- * @url /business/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 bItem = await Business.findOne({ where: { id: req.business.id, pwd: md5(pwd) } });
- if (!bItem) {
- res.send(onError('密码错误'));
- }
- req.body.pwd = md5(npwd);
- const data = await Business.update(_.pick(req.body, ['pwd']), {
- where: { id: req.business.id },
- limit: 1,
- });
- res.send(onSuccess(null, '修改成功'));
- });
- module.exports = router;
|