admin.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. const express = require('express')
  2. const router = express.Router()
  3. const utils = require('../../utils/index.js')
  4. const { systemSettings } = require('../../utils/menuString')
  5. const pools = require('../../utils/pools.js')
  6. const svgCaptcha = require('svg-captcha')
  7. //获取图形二维码
  8. router.post('/getCaptcha', async (req, res) => {
  9. const captcha = svgCaptcha.create({
  10. inverse: false, // 翻转颜色
  11. fontSize: 48, // 字体大小
  12. width: 110, // 宽度
  13. height: 36, // 高度
  14. size: 4, // 验证码长度
  15. ignoreChars: '0oO1iIg', // 验证码字符中排除 0o1i
  16. color: true, // 验证码是否有彩色
  17. noise: 3, // 干扰线几条
  18. background: '#e2e2e2' // 验证码图片背景颜色
  19. })
  20. res.setHeader('Access-Control-Expose-Headers', 'captcha')
  21. let captchaToken = utils.setToken({
  22. captcha: captcha.text.toLowerCase(),
  23. name: 'captcha'
  24. })
  25. res.setHeader('captcha', captchaToken)
  26. res.send(utils.returnData({ data: captcha.data }))
  27. })
  28. //登录
  29. router.post('/login', async (req, res) => {
  30. let sql = 'SELECT id,admin,more_id FROM user WHERE name=? AND pwd=?',
  31. { name, pwd, captcha } = req.body
  32. let captchaRes = utils.verToken({
  33. token: req.headers.captcha,
  34. name: 'captcha'
  35. })
  36. if (!captchaRes || captchaRes.captcha !== captcha.toLowerCase())
  37. return res.send(
  38. utils.returnData({ code: -1, msg: '验证码错误!!!', req })
  39. )
  40. let { result } = await pools({ sql, val: [name, pwd], res, req })
  41. if (result.length === 0)
  42. return res.send(
  43. utils.returnData({ code: -1, msg: '请输入正确的用户名和密码!', req })
  44. )
  45. let uid = result[0].id,
  46. admin = result[0].admin
  47. let token = utils.setToken({ uid })
  48. res.send(utils.returnData({ data: { uid, name, token, admin } }))
  49. })
  50. //获取用户信息
  51. router.post('/getUserInfo', async (req, res) => {
  52. let user = await utils.getUserRole(req, res)
  53. let sql = `SELECT b.menu_bg AS menuBg,b.menu_sub_bg AS menuSubBg,b.menu_text AS menuText,b.menu_active_text AS menuActiveText,b.menu_sub_active_text AS menuSubActiveText,b.menu_hover_bg AS menuHoverBg FROM theme AS b WHERE user_id=?`
  54. let { result } = await pools({ sql, val: [user.user.id], res, req })
  55. res.send(utils.returnData({ data: { ...user, theme: result[0] } }))
  56. })
  57. function getRouter(req, res, sidebar = false) {
  58. return new Promise(async (resolve, reject) => {
  59. let sql =
  60. 'SELECT id,parent_id AS parentId,path,hidden,redirect,always_show AS alwaysShow,name,layout,parent_view AS parentView,meta,component,sort,alone,role_key AS roleKey,menu_type AS menuType,title,icon,no_cache AS noCache,update_time AS updateTime,create_time AS createTime FROM router_menu WHERE 1=1'
  61. sql += ' ORDER BY sort ASC, update_time DESC'
  62. let userRole = await utils.getUserRole(req, res)
  63. if (userRole == -1) return res.send(utils.returnData({ code: -1, req }))
  64. if (
  65. !userRole.userRole ||
  66. userRole.userRole == null ||
  67. userRole.userRole == 'null'
  68. )
  69. userRole.userRole = ''
  70. //角色权限
  71. let roles = userRole.userRole.split(',')
  72. let { result } = await pools({ sql, res, req })
  73. let list = [...result],
  74. routerArr = []
  75. let filterAsyncRoutes = (lists, parentId, pathView = '') => {
  76. let resArr = [],
  77. obj = {}
  78. lists.map((t) => {
  79. let objs = { ...t }
  80. try {
  81. objs.meta = JSON.parse(objs.meta)
  82. } catch (err) {
  83. objs.meta = {}
  84. }
  85. objs.meta.title = objs.title
  86. objs.meta.icon = objs.icon
  87. objs.meta.noCache = objs.noCache
  88. objs.pathView = t.path
  89. //按钮自动隐藏
  90. if (objs.menuType === 'F') objs.hidden = 1
  91. //递归
  92. if (objs.parentId == parentId) {
  93. objs.path = pathView + objs.path
  94. obj = {
  95. ...objs,
  96. children: filterAsyncRoutes(list, objs.id, objs.path)
  97. }
  98. //菜单下有子级,单独拿出来
  99. if (
  100. obj.menuType === 'C' &&
  101. obj.children &&
  102. obj.children.length != 0
  103. ) {
  104. routerArr.push(...obj.children)
  105. sidebar && delete obj.children
  106. }
  107. //如果是总管理
  108. if (userRole.user.admin == 1 || userRole.roleAdmin) {
  109. resArr.push(obj)
  110. } else {
  111. //只拿角色权限通过的
  112. if (roles.some((role) => obj.id == role)) resArr.push(obj)
  113. }
  114. }
  115. })
  116. return resArr
  117. }
  118. let routerMenu = filterAsyncRoutes(list, 0, '')
  119. //如果是独立的(一级)
  120. sidebar &&
  121. routerMenu.forEach((t) => {
  122. if (t.menuType === 'C' && (!t.children || t.children.length === 0)) {
  123. t.layout = 1
  124. t.children = [{ ...t, layout: 0, alone: 1, children: undefined }]
  125. t.path = '/' + Math.random()
  126. }
  127. })
  128. resolve({ routerMenu, routerArr })
  129. })
  130. }
  131. //获取路由 侧边栏
  132. router.post('/getRouter', async (req, res) => {
  133. let { routerMenu, routerArr } = await getRouter(req, res, true)
  134. function bianpinghua(list) {
  135. let arr = []
  136. list.map((t) => {
  137. if (t.children && t.children.length) arr.push(...bianpinghua(t.children))
  138. arr.push({
  139. ...t,
  140. layout: 1,
  141. path: '/' + Math.random(),
  142. children: [{ ...t, layout: 0, alone: 1, children: undefined }],
  143. hidden: 1
  144. })
  145. })
  146. return arr
  147. }
  148. routerArr = bianpinghua(routerArr)
  149. routerArr = routerArr.filter(
  150. (obj, index, self) => index === self.findIndex((t) => t.id === obj.id)
  151. )
  152. res.send(
  153. utils.returnData({ data: { routerMenu: routerMenu.concat(routerArr) } })
  154. )
  155. })
  156. //菜单管理获取
  157. router.post('/getRouterSystem', async (req, res) => {
  158. await utils.checkPermi({ req, res, role: [systemSettings.menus.menuQuery] })
  159. let { routerMenu } = await getRouter(req, res)
  160. res.send(utils.returnData({ data: { routerMenu } }))
  161. })
  162. //添加菜单
  163. router.post('/addMenu', async (req, res) => {
  164. await utils.checkPermi({ req, res, role: [systemSettings.menus.menuAdd] })
  165. let sql =
  166. 'INSERT INTO router_menu(parent_id,path,hidden,name,layout,parent_view,component,sort,alone,role_key,menu_type,title,icon,no_cache,meta) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
  167. obj = req.body
  168. await utils.existName({
  169. sql: 'SELECT id FROM router_menu WHERE role_key=?',
  170. name: obj.roleKey,
  171. res,
  172. msg: '权限字符已存在!',
  173. req
  174. })
  175. await utils.existName({
  176. sql: 'SELECT id FROM router_menu WHERE name=?',
  177. name: obj.name,
  178. res,
  179. msg: '页面名称已存在!!',
  180. req
  181. })
  182. let meta = {}
  183. // meta.title = obj.title;
  184. // meta.icon = obj.icon;
  185. // meta.noCache = obj.noCache;
  186. await pools({
  187. sql,
  188. val: [
  189. obj.parentId,
  190. obj.path,
  191. obj.hidden,
  192. obj.name,
  193. obj.parentId == 0 ? 1 : 0,
  194. obj.parentView,
  195. obj.component,
  196. obj.sort,
  197. obj.alone,
  198. obj.roleKey,
  199. obj.menuType,
  200. obj.title,
  201. obj.icon,
  202. obj.noCache,
  203. JSON.stringify(meta)
  204. ],
  205. run: false,
  206. res,
  207. req
  208. })
  209. })
  210. //修改菜单
  211. router.post('/changeMenu', async (req, res) => {
  212. await utils.checkPermi({ req, res, role: [systemSettings.menus.menuUp] })
  213. let sql =
  214. 'UPDATE router_menu SET parent_id=?,path=?,hidden=?,name=?,layout=?,parent_view=?,component=?,sort=?,alone=?,role_key=?,menu_type=?,title=?,icon=?,no_cache=?,meta=? WHERE id=?',
  215. obj = req.body
  216. let judgeUserNameRes = await utils.judgeUserName({
  217. sql: 'SELECT role_key FROM router_menu WHERE id=?',
  218. sqlName: 'role_key',
  219. name: obj.roleKey,
  220. id: obj.id,
  221. req,
  222. res
  223. })
  224. if (judgeUserNameRes === 1)
  225. await utils.existName({
  226. sql: 'SELECT id FROM router_menu WHERE role_key=?',
  227. name: obj.roleKey,
  228. res,
  229. msg: '权限字符已存在!',
  230. req
  231. })
  232. let judgeUserNameRes2 = await utils.judgeUserName({
  233. sql: 'SELECT name FROM router_menu WHERE id=?',
  234. sqlName: 'name',
  235. name: obj.name,
  236. id: obj.id,
  237. req,
  238. res
  239. })
  240. if (judgeUserNameRes2 === 1)
  241. await utils.existName({
  242. sql: 'SELECT id FROM router_menu WHERE name=?',
  243. name: obj.name,
  244. res,
  245. msg: '页面名称已存在!',
  246. req
  247. })
  248. let meta = {}
  249. // meta.title = obj.title;
  250. // meta.icon = obj.icon;
  251. // meta.noCache = obj.noCache;
  252. await pools({
  253. sql,
  254. val: [
  255. obj.parentId,
  256. obj.path,
  257. obj.hidden,
  258. obj.name,
  259. obj.parentId == 0 ? 1 : 0,
  260. obj.parentView,
  261. obj.component,
  262. obj.sort,
  263. obj.alone,
  264. obj.roleKey,
  265. obj.menuType,
  266. obj.title,
  267. obj.icon,
  268. obj.noCache,
  269. JSON.stringify(meta),
  270. obj.id
  271. ],
  272. run: false,
  273. res,
  274. req
  275. })
  276. })
  277. //删除菜单
  278. router.post('/delMenu', async (req, res) => {
  279. await utils.checkPermi({ req, res, role: [systemSettings.menus.menuDelte] })
  280. let sql = 'DELETE FROM router_menu WHERE id=?'
  281. let selectSql = 'SELECT id FROM router_menu WHERE parent_id=?'
  282. let obj = req.body
  283. let { result } = await pools({ sql: selectSql, val: [obj.id], res, req })
  284. if (result.length !== 0)
  285. return res.send(
  286. utils.returnData({ code: -1, msg: '删除失败,请先删除子级', req })
  287. )
  288. await pools({ sql, val: [obj.id], run: false, res, req })
  289. })
  290. //查询角色
  291. router.post('/getRoles', async (req, res) => {
  292. await utils.checkPermi({ req, res, role: [systemSettings.role.roleQuery] })
  293. let obj = req.body
  294. let sql = `SELECT id,name,roles,checked_roles AS checkedRoles,role_key AS roleKey,update_time AS updateTime,create_time AS createTime FROM roles WHERE 1=1`
  295. sql = utils.setLike(sql, 'name', obj.name)
  296. let { total } = await utils.getSum({ sql, name: 'roles', res, req })
  297. sql += ` ORDER BY id ASC`
  298. sql = utils.pageSize(sql, obj.page, obj.size)
  299. let { result } = await pools({ sql, res, req })
  300. res.send(utils.returnData({ data: result, total }))
  301. })
  302. //查询角色全部
  303. router.post('/getRolesAll', async (req, res) => {
  304. let sql = `SELECT id,name,roles,checked_roles AS checkedRoles,role_key AS roleKey FROM roles`
  305. await pools({ sql, res, req, run: false })
  306. })
  307. //添加角色
  308. router.post('/addRoles', async (req, res) => {
  309. await utils.checkPermi({ req, res, role: [systemSettings.role.roleAdd] })
  310. let sql = 'INSERT INTO roles(name,roles,role_key) VALUES (?,?,?)',
  311. obj = req.body
  312. await utils.existName({
  313. sql: 'SELECT id FROM roles WHERE role_key=?',
  314. name: obj.roleKey,
  315. res,
  316. msg: '权限字符已存在!',
  317. req
  318. })
  319. await pools({
  320. sql,
  321. val: [obj.name, obj.roles, obj.roleKey],
  322. res,
  323. req,
  324. run: false
  325. })
  326. })
  327. //修改角色
  328. router.post('/upRoles', async (req, res) => {
  329. await utils.checkPermi({ req, res, role: [systemSettings.role.roleUp] })
  330. let sql = 'UPDATE roles SET roles=?,name=?,role_key=? WHERE id=?',
  331. obj = req.body
  332. //总管理不能操作
  333. await utils.upAdminRole({ req, res, id: obj.id })
  334. let judgeUserNameRes = await utils.judgeUserName({
  335. sql: 'SELECT role_key FROM roles WHERE id=?',
  336. sqlName: 'role_key',
  337. name: obj.roleKey,
  338. id: obj.id,
  339. req,
  340. res
  341. })
  342. if (judgeUserNameRes === 1)
  343. await utils.existName({
  344. sql: 'SELECT id FROM roles WHERE role_key=?',
  345. name: obj.roleKey,
  346. res,
  347. msg: '权限字符已存在!',
  348. req
  349. })
  350. await pools({
  351. sql,
  352. val: [obj.roles, obj.name, obj.roleKey, obj.id],
  353. res,
  354. req,
  355. run: false
  356. })
  357. })
  358. //删除角色
  359. router.post('/delRoles', async (req, res) => {
  360. await utils.checkPermi({ req, res, role: [systemSettings.role.roleDelte] })
  361. let sql = 'DELETE FROM roles WHERE id=?',
  362. obj = req.body
  363. //总管理不能操作
  364. await utils.upAdminRole({ req, res, id: obj.id })
  365. await pools({ sql, val: [obj.id], res, req, run: false })
  366. })
  367. //添加用户
  368. router.post('/addUser', async (req, res) => {
  369. await utils.checkPermi({ req, res, role: [systemSettings.user.userAdd] })
  370. let sql =
  371. 'INSERT INTO user(name,status,roles_id,remark,pwd,more_id,url) VALUES (?,?,?,?,?,?,?)',
  372. obj = req.body
  373. await utils.existName({
  374. sql: 'SELECT id FROM user WHERE name=?',
  375. name: obj.name,
  376. res,
  377. msg: '用户名已被使用!',
  378. req
  379. })
  380. let { result } = await pools({
  381. sql,
  382. val: [
  383. obj.name,
  384. obj.status,
  385. obj.rolesId,
  386. obj.remark,
  387. obj.pwd,
  388. obj.moreId,
  389. obj.url || ''
  390. ],
  391. res,
  392. req
  393. })
  394. let themeSql =
  395. 'INSERT INTO theme(user_id,menu_bg,menu_sub_bg,menu_text,menu_active_text,menu_sub_active_text,menu_hover_bg) VALUES (?,?,?,?,?,?,?)'
  396. await pools({
  397. sql: themeSql,
  398. val: [
  399. result.insertId,
  400. '#304156',
  401. '#304156',
  402. '#bfcad5',
  403. '#409eff',
  404. '#fff',
  405. '#001528'
  406. ],
  407. res,
  408. req,
  409. run: false
  410. })
  411. })
  412. //查询用户
  413. router.post('/getUser', async (req, res) => {
  414. await utils.checkPermi({ req, res, role: [systemSettings.user.userQuery] })
  415. let obj = req.body
  416. let sql = `SELECT a.id AS id,name,status,roles_id AS rolesId,remark,admin,more_id AS moreId,url,a.update_time AS updateTime,a.create_time AS createTime,b.menu_bg AS menuBg,b.menu_sub_bg AS menuSubBg,b.menu_text AS menuText,b.menu_active_text AS menuActiveText,b.menu_sub_active_text AS menuSubActiveText,b.menu_hover_bg AS menuHoverBg FROM user AS a LEFT JOIN theme b ON a.id=b.user_id WHERE 1=1`
  417. sql = utils.setLike(sql, 'name', obj.name)
  418. let { total } = await utils.getSum({ sql, name: 'user', res, req })
  419. sql += ` ORDER BY id ASC`
  420. sql = utils.pageSize(sql, obj.page, obj.size)
  421. let { result } = await pools({ sql, res, req })
  422. res.send(utils.returnData({ data: result, total }))
  423. })
  424. //修改主题
  425. router.post('/upTheme', async (req, res) => {
  426. let sql =
  427. 'UPDATE theme SET menu_bg=?,menu_sub_bg=?,menu_text=?,menu_active_text=?,menu_sub_active_text=?,menu_hover_bg=? WHERE user_id=?',
  428. obj = req.body
  429. await pools({
  430. sql,
  431. val: [
  432. obj.menuBg,
  433. obj.menuSubBg,
  434. obj.menuText,
  435. obj.menuActiveText,
  436. obj.menuSubActiveText,
  437. obj.menuHoverBg,
  438. obj.id
  439. ],
  440. res,
  441. req,
  442. run: false
  443. })
  444. })
  445. //修改用户
  446. router.post('/upUser', async (req, res) => {
  447. await utils.checkPermi({ req, res, role: [systemSettings.user.userUp] })
  448. let sql =
  449. 'UPDATE user SET name=?,status=?,roles_id=?,remark=?,more_id=?,url=? WHERE id=?',
  450. obj = req.body
  451. //总管理不能操作
  452. await utils.upAdmin({ req, res, id: obj.id })
  453. let judgeUserNameRes = await utils.judgeUserName({
  454. sql: 'SELECT name FROM user WHERE id=?',
  455. name: obj.name,
  456. id: obj.id,
  457. req,
  458. res
  459. })
  460. if (judgeUserNameRes === 1)
  461. await utils.existName({
  462. sql: 'SELECT id FROM user WHERE name=?',
  463. name: obj.name,
  464. res,
  465. msg: '用户名已被使用!',
  466. req
  467. })
  468. await pools({
  469. sql,
  470. val: [
  471. obj.name,
  472. obj.status,
  473. obj.rolesId,
  474. obj.remark,
  475. obj.moreId,
  476. obj.url,
  477. obj.id
  478. ],
  479. res,
  480. req,
  481. run: false
  482. })
  483. })
  484. //修改我的信息
  485. router.post('/upUserInfo', async (req, res) => {
  486. // await utils.checkPermi({req,res,role:[systemSettings.user.userUp]});
  487. let user = await utils.getUserInfo({ req, res })
  488. let sql = 'UPDATE user SET name=?,url=? WHERE id=?',
  489. obj = req.body
  490. let judgeUserNameRes = await utils.judgeUserName({
  491. sql: 'SELECT name FROM user WHERE id=?',
  492. name: obj.name,
  493. id: user.id,
  494. req,
  495. res
  496. })
  497. if (judgeUserNameRes === 1)
  498. await utils.existName({
  499. sql: 'SELECT id FROM user WHERE name=?',
  500. name: obj.name,
  501. res,
  502. msg: '登陆账号已被使用!',
  503. req
  504. })
  505. await pools({ sql, val: [obj.name, obj.url, user.id], res, req, run: false })
  506. })
  507. //修改我的信息密码
  508. router.post('/upUserPwdInfo', async (req, res) => {
  509. // await utils.checkPermi({req,res,role:[systemSettings.user.userPwd]});
  510. let user = await utils.getUserInfo({ req, res })
  511. let sql = 'UPDATE user SET pwd=? WHERE id=?',
  512. obj = req.body
  513. await pools({ sql, val: [obj.pwd, user.id], res, req, run: false })
  514. })
  515. //修改用户密码
  516. router.post('/upUserPwd', async (req, res) => {
  517. await utils.checkPermi({ req, res, role: [systemSettings.user.userPwd] })
  518. let sql = 'UPDATE user SET pwd=? WHERE id=?',
  519. obj = req.body
  520. let getUserIdRes = await utils.getUserId({ id: obj.id, req, res })
  521. if (getUserIdRes.admin === 1) {
  522. let user = await utils.getUserInfo({ req, res })
  523. if (user.admin !== 1)
  524. return res.send(
  525. utils.returnData({
  526. code: -1,
  527. msg: '总管理密码只能总管理账号修改!',
  528. req
  529. })
  530. )
  531. }
  532. await pools({ sql, val: [obj.pwd, obj.id], res, req, run: false })
  533. })
  534. //删除用户
  535. router.post('/delUser', async (req, res) => {
  536. await utils.checkPermi({ req, res, role: [systemSettings.user.userDelte] })
  537. let obj = req.body
  538. //总管理不能操作
  539. await utils.upAdmin({ req, res, id: obj.id })
  540. let user = await utils.getUserInfo({ req, res })
  541. if (obj.id == user.id)
  542. return res.send(
  543. utils.returnData({ code: -1, msg: '无法删除正在使用中的用户~', req })
  544. )
  545. let sql = 'DELETE FROM user WHERE id=?'
  546. await pools({ sql, val: [obj.id], res, req, run: false })
  547. })
  548. //添加多账号
  549. router.post('/addMore', async (req, res) => {
  550. await utils.checkPermi({ req, res, role: [systemSettings.more.moreAdd] })
  551. let sql = 'INSERT INTO more(name,remark) VALUES (?,?)',
  552. obj = req.body
  553. await utils.existName({
  554. sql: 'SELECT id FROM more WHERE name=?',
  555. name: obj.name,
  556. res,
  557. msg: '账号名已存在!',
  558. req
  559. })
  560. await pools({ sql, val: [obj.name, obj.remark], res, req, run: false })
  561. })
  562. //查询多账号
  563. router.post('/getMore', async (req, res) => {
  564. await utils.checkPermi({ req, res, role: [systemSettings.more.moreQuery] })
  565. let obj = req.body
  566. let sql = `SELECT id,name,remark,update_time AS updateTime,create_time AS createTime FROM more WHERE 1=1`
  567. sql = utils.setLike(sql, 'name', obj.name)
  568. let { total } = await utils.getSum({ sql, name: 'more', res, req })
  569. sql += ` ORDER BY id DESC`
  570. sql = utils.pageSize(sql, obj.page, obj.size)
  571. let { result } = await pools({ sql, res, req })
  572. res.send(utils.returnData({ data: result, total }))
  573. })
  574. //查询多账号 全部
  575. router.post('/getMoreAll', async (req, res) => {
  576. let sql = 'SELECT id,name,remark FROM more'
  577. await pools({ sql, res, req, run: false })
  578. })
  579. //修改多账号
  580. router.post('/upMore', async (req, res) => {
  581. await utils.checkPermi({ req, res, role: [systemSettings.more.moreUp] })
  582. let sql = 'UPDATE more SET name=?,remark=? WHERE id=?',
  583. obj = req.body
  584. await pools({
  585. sql,
  586. val: [obj.name, obj.remark, obj.id],
  587. res,
  588. req,
  589. run: false
  590. })
  591. })
  592. //删除多账号
  593. router.post('/delMore', async (req, res) => {
  594. await utils.checkPermi({ req, res, role: [systemSettings.more.moreDelte] })
  595. let sql = 'DELETE FROM more WHERE id=?',
  596. obj = req.body
  597. await pools({ sql, val: [obj.id], res, req, run: false })
  598. })
  599. //添加字典
  600. router.post('/addDict', async (req, res) => {
  601. let sql = 'INSERT INTO dict(name,type,remark) VALUES (?,?,?)',
  602. obj = req.body
  603. await utils.existName({
  604. sql: 'SELECT id FROM dict WHERE type=?',
  605. name: obj.type,
  606. res,
  607. msg: '字典类型已存在!',
  608. req
  609. })
  610. await pools({
  611. sql,
  612. val: [obj.name, obj.type, obj.remark],
  613. res,
  614. req,
  615. run: false
  616. })
  617. })
  618. //查询字典
  619. router.post('/getDict', async (req, res) => {
  620. let obj = req.body
  621. let sql = `SELECT id,name,remark,type,update_time AS updateTime,create_time AS createTime FROM dict WHERE 1=1`
  622. sql = utils.setLike(sql, 'name', obj.name)
  623. let { total } = await utils.getSum({ sql, name: 'dict', res, req })
  624. sql += ` ORDER BY id DESC`
  625. sql = utils.pageSize(sql, obj.page, obj.size)
  626. let { result } = await pools({ sql, res, req })
  627. res.send(utils.returnData({ data: result, total }))
  628. })
  629. //查询字典(不分页)
  630. router.post('/getDictAll', async (req, res) => {
  631. let obj = req.body
  632. let sql = `SELECT id,name,create_time AS createTime,remark,type FROM dict WHERE 1=1`
  633. sql = utils.setLike(sql, 'name', obj.name)
  634. sql += ` ORDER BY id DESC`
  635. await pools({ sql, res, req, run: false })
  636. })
  637. //修改字典
  638. router.post('/upDict', async (req, res) => {
  639. let sql = 'UPDATE dict SET name=?,type=?,remark=? WHERE id=?',
  640. obj = req.body
  641. let judgeUserNameRes = await utils.judgeUserName({
  642. sql: 'SELECT type FROM dict WHERE id=?',
  643. name: obj.type,
  644. id: obj.id,
  645. sqlName: 'type',
  646. req,
  647. res
  648. })
  649. if (judgeUserNameRes === 1)
  650. await utils.existName({
  651. sql: 'SELECT id FROM dict WHERE type=?',
  652. name: obj.type,
  653. res,
  654. msg: '字典类型已存在!',
  655. req
  656. })
  657. await pools({
  658. sql,
  659. val: [obj.name, obj.type, obj.remark, obj.id],
  660. res,
  661. req,
  662. run: false
  663. })
  664. })
  665. //删除字典
  666. router.post('/delDict', async (req, res) => {
  667. let sql = 'DELETE FROM dict WHERE id=?',
  668. obj = req.body
  669. await pools({ sql, val: [obj.id], res, req, run: false })
  670. })
  671. //添加字典项目
  672. router.post('/addDictItem', async (req, res) => {
  673. let sql =
  674. 'INSERT INTO dict_item(dict_id,dict_label,dict_value,dict_sort,dict_class,status,remark) VALUES (?,?,?,?,?,?,?)',
  675. obj = req.body
  676. await pools({
  677. sql,
  678. val: [
  679. obj.dictId,
  680. obj.dictLabel,
  681. obj.dictValue,
  682. obj.dictSort,
  683. obj.dictClass,
  684. obj.status,
  685. obj.remark
  686. ],
  687. res,
  688. req,
  689. run: false
  690. })
  691. })
  692. //查询字典项目
  693. router.post('/getDictItem', async (req, res) => {
  694. let obj = req.body
  695. let sql = `SELECT a.id AS id,dict_id AS dictId,dict_label AS dictLabel,dict_value AS dictValue,dict_sort AS dictSort,dict_class AS dictClass,status,a.update_time AS updateTime,a.create_time AS createTime,a.remark AS remark,type FROM dict_item AS a LEFT JOIN dict b ON a.dict_id=b.id WHERE dict_id=? ORDER BY dict_sort ASC, a.update_time DESC`
  696. await pools({ sql, val: [obj.dictId], res, req, run: false })
  697. })
  698. //修改字典项目
  699. router.post('/upDictItem', async (req, res) => {
  700. let obj = req.body
  701. let sql = `UPDATE dict_item SET dict_label=?,dict_value=?,dict_sort=?,dict_class=?,status=?,remark=? WHERE id=?`
  702. await pools({
  703. sql,
  704. val: [
  705. obj.dictLabel,
  706. obj.dictValue,
  707. obj.dictSort,
  708. obj.dictClass,
  709. obj.status,
  710. obj.remark,
  711. obj.id
  712. ],
  713. res,
  714. req,
  715. run: false
  716. })
  717. })
  718. //删除字典项目
  719. router.post('/delDictItem', async (req, res) => {
  720. let sql = 'DELETE FROM dict_item WHERE id=?',
  721. obj = req.body
  722. await pools({ sql, val: [obj.id], res, req, run: false })
  723. })
  724. //根据类型查询字典项目
  725. router.post('/getDictType', async (req, res) => {
  726. let obj = req.body
  727. let sql = `SELECT a.id AS id,dict_label AS dictLabel,dict_value AS dictValue,dict_sort AS dictSort,dict_class AS dictClass,a.remark AS remark,type FROM dict_item AS a LEFT JOIN dict b ON a.dict_id=b.id WHERE b.type=? AND a.status=1 ORDER BY dict_sort ASC, a.update_time DESC`
  728. await pools({ sql, val: [obj.type], res, req, run: false })
  729. })
  730. module.exports = router