const express = require('express'); const router = express.Router(); const db = require('../link/link.js'); const path = require('path'); const multer = require('multer'); const tw = (res, code, msg) => { res.send({ 'code': code, 'msg': msg }) } function isEmptyStr(s) { if (s == null || s === '') { return false } return true } //获取需要勾魂的数据 router.get('/getEnchantData', (req, res) => { let { page, limit, name } = req.query; page = page || 1; limit = limit || 10; let and = '' if (isEmptyStr(name)) and = `and name like '%${name}%'` // 获取deathday在今天到今天加30天之内的数据 let sql = `select * from lifebook where deathday between curdate() and date_add(curdate(),interval 30 day) and isnull(reaperid) ${and} limit ${(page - 1) * limit},${limit}`; let sql2 = `select count(*) as count from lifebook where deathday between curdate() and date_add(curdate(),interval 30 day) and isnull(reaperid) ${and}`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '获取数据失败'); return; } db.query(sql2, (err, data2) => { if (err) { console.log(err); tw(res, 400, '获取数据失败'); return; } res.send({ 'code': 200, 'msg': '获取数据成功', 'count': data2[0].count, 'data': data, }) }) }) }) // uuid生成函数 function getUuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') let uuid = [] let i radix = radix || chars.length if (len) { for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] } else { let r uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' uuid[14] = '4' for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16 uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r] } } } return uuid.join('') } const uploadFun = (req, res, next) => { let storage = multer.diskStorage({ //指定保存位置 destination: (req, file, cb) => { cb(null, path.join(__dirname, '../public/enchant')) }, //指定保存文件名 filename: (req, file, cb) => { //处理保存文件名 let extname = path.extname(file.originalname); filename = file.fieldname + "-" + Date.now() + extname; cb(null, filename); } }) let limits = { //设置上传数量,大小 files: 1, fileSize: 1024 * 1024 * 3 // 3MB } const upload = multer({ storage: storage, //限制文件大小 limits: limits, fileFilter: function (req, file, cb) { // 限制文件上传类型,仅可上传png格式图片 if (file.mimetype == 'image/png' || file.mimetype == 'image/jpeg') { cb(null, true) } else { cb(null, false) let err = new Error(); err.code = 'LIMIT_FILE_TYPES'; cb(err) } } }).single('enchant'); upload(req, res, (err) => { if (err) { console.log(err); if (err.code == 'LIMIT_FILE_SIZE') { res.send({ code: '500', msg: '上传失败,文件过大', }) } else if (err.code == 'LIMIT_FILE_TYPES') { res.send({ code: '500', msg: '文件类型不合法', }) } else if (err.code == 'ENOENT') { res.send({ code: '500', msg: '权限不足', }) } else { res.send({ code: '500', msg: '其他错误', Error: err }) } } else { //将文件名单独拿出来 req.filename = req.file.filename next() } }) } // 添加勾魂使者 router.post('/addEnchanter', uploadFun, (req, res) => { let photo = '/public/enchant/' + req.filename; let uuid = getUuid(16, 16) let { name, gender, description } = req.body; if (!isEmptyStr(name)) return tw(res, 400, '姓名不能为空'); let status = 0; description = description || '暂无介绍'; gender = gender || 0; let role = 2 let sql = `insert into lawyer (name,uuid,gender,photo,description,create_time,role,status) values ('${name}','${uuid}',${gender},'${photo}', '${description}',now(),2,${status})`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '添加失败'); return; } tw(res, 200, '添加成功'); }) }) //律师列表 router.get('/getEnchanterList', (req, res) => { let { page, limit, id, name } = req.query; page = page || 1; limit = limit || 10; let sql = `select * from lawyer where 1=1`; let sql2 = `select count(*) as count from lawyer where 1=1`; if (isEmptyStr(id)) { sql += ` and id=${id}`; sql2 += ` and id=${id}`; } else { if (isEmptyStr(name)) { sql += ` and name like '%${name}%'`; sql2 += ` and name like '%${name}%'`; } } sql += ` limit ${(page - 1) * limit},${limit}`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '获取数据失败'); return; } db.query(sql2, (err, data2) => { if (err) { console.log(err); tw(res, 400, '获取数据失败'); return; } res.send({ 'code': 200, 'msg': '获取数据成功', 'count': data2[0].count, 'data': data, }) }) }) }) // 勾魂使者信息修改 router.put('/updateEnchanter', (req, res) => { let { set, name, gender, description, status, id } = req.body; if (!isEmptyStr(id)) return tw(res, 400, 'id不能为空'); if (set == '1') { if (!isEmptyStr(status)) return tw(res, 400, '状态不能为空'); //判断status是否为0或1或2 if (status != 0 && status != 1 && status != 2) return tw(res, 400, '状态不合法'); let sql = `update lawyer set status=${status} where id=${req.body.id}`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '修改失败'); return; } tw(res, 200, '修改成功'); }) } else { if (!isEmptyStr(name) && !isEmptyStr(gender) && !isEmptyStr(description)) return tw(res, 400, '参数不能为空'); let sql = `select * from lawyer where id=${id}`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '信息异常'); return; } name = isEmptyStr(name) ? name : data[0].name; gender = isEmptyStr(gender) ? gender : data[0].gender description = isEmptyStr(description) ? description : data[0].description // 判断gender是否为0或1 if (gender != '0' && gender != '1') return tw(res, 400, '性别不合法'); //修改数据库中的数据 let sql = `update lawyer set name='${name}',gender=${gender},description='${description}' where id=${req.body.id}` db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '修改失败'); return; } tw(res, 200, '修改成功'); }) }) } }) //勾魂使者删除 router.delete('/deleteEnchanter', (req, res) => { let uuid = req.query.uuid; if (!isEmptyStr(uuid)) return tw(res, 400, 'uuid不能为空'); let querySql = `select * from lawyer where uuid='${uuid}'`; db.query(querySql, (err, data) => { if (err) return tw(res, 400, '读取失败'); if (data[0].role == 4) { //此勾魂使者是管理员的情况,修改管理员为4的普通管理员 let sql = `update user set role=4 where username = '${uuid}'`; db.query(sql, (err, data) => { if (err) return tw(res, 400, '初始化失败'); }) } }) let sql = `delete from lawyer where uuid='${uuid}'`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '删除失败'); return; } tw(res, 200, '删除成功'); }) }) //勾魂处理 router.put('/handleEnchanter', (req, res) => { let { id, set } = req.body; if (!isEmptyStr(id)) return tw(res, 400, 'id不能为空'); let repid = req.auth.id //检查是否有该勾魂使者 // let sql = `select * from lawyer where id=${req.username}`; // db.query(sql, (err, data) => { // if (err) { // console.log(err); // tw(res, 400, '无权操作'); // return; // } //将lifebook表中的status改为2 let time = formatDate(new Date()); let sql; sql = `update lifebook set status=2,reaperid=${repid} where id=${id}`; if (set == '1') sql = `update lifebook set status=2,deathday='${time}',reaperid=${repid} where id=${id}`; db.query(sql, (err, data) => { if (err) { console.log(err); tw(res, 400, '操作失败'); return; } tw(res, 200, '操作成功'); }) // }) //格式化时间,将时间戳转换为yyyy-mm-dd hh:mm:ss格式 function formatDate(time) { let date = new Date(time); let year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate(), hour = date.getHours(), minute = date.getMinutes(), second = date.getSeconds(); return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; } }) module.exports = router;