archieve-projects/后事管理系统/api/admin/enchant.js

320 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;