manager_controller.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. /**
  2. * 后台用户管理控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/2
  6. * @version
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import ManagerModel from "../models/manager_model";
  10. import PermissionModel from "../models/permission_model";
  11. import PermissionGroupModel from "../models/permission_group_model";
  12. import Config from "../../../config/config";
  13. let config = require("../../../config/config.js");
  14. import { default as category, List as categoryList } from "../../common/const/category_const.js";
  15. import CompilationModel from '../models/compilation_model';
  16. class ManagerController extends BaseController {
  17. /**
  18. * 账号管理(管理员列表)
  19. *
  20. * @param {object} request
  21. * @param {object} response
  22. * @return {void}
  23. */
  24. async index(request, response) {
  25. let pageData = {};
  26. let managerList = [];
  27. let permissionGroupList = [];
  28. let filter = request.query;
  29. try {
  30. // 查找管理员用户列表
  31. let managerModel = new ManagerModel();
  32. let total = await managerModel.count({ super_admin: 0 });
  33. // 分页数据
  34. let page = request.query.page === undefined ? 1 : request.query.page;
  35. pageData = {
  36. current: page,
  37. total: parseInt(total / Config.pageSize),
  38. queryData: response.locals.urlQuery
  39. };
  40. // 获取管理员列表
  41. let condition = managerModel.getFilterCondition(request);
  42. condition.super_admin = 0;
  43. managerList = JSON.parse(JSON.stringify(await managerModel.getList(condition, page)));
  44. let permissionGroupModel = new PermissionGroupModel();
  45. let permissionModel = new PermissionModel();
  46. // 添加特定数据到filter里
  47. if (request.query.office !== undefined && request.query.office !== '') {
  48. let officeInfo = await categoryList.find(function (item) {
  49. return item.id === parseInt(request.query.office);
  50. });
  51. filter.officeName = officeInfo.name
  52. }
  53. if (request.query.permission !== undefined && request.query.permission !== '0') {
  54. let permissionGroupInfo = await permissionGroupModel.findDataByCondition({ _id: request.query.permission });
  55. filter.permissionGroupName = permissionGroupInfo.name;
  56. }
  57. // 获取权限组列表
  58. permissionGroupList = JSON.parse(JSON.stringify(await permissionGroupModel.getList()));
  59. if (permissionGroupList.length > 0) {
  60. for (let tmp in permissionGroupList) {
  61. let topPermissionList = [];
  62. if (permissionGroupList[tmp].permission !== undefined && permissionGroupList[tmp].permission !== '') {
  63. let groupPermissionList = JSON.parse(permissionGroupList[tmp].permission);
  64. for (let p in groupPermissionList) {
  65. if (p === 'top') {
  66. for (let t of groupPermissionList[p]) {
  67. let topInfo = await permissionModel.findDataByCondition({ _id: t });
  68. topPermissionList.push(topInfo.name);
  69. }
  70. break;
  71. }
  72. }
  73. }
  74. permissionGroupList[tmp].top_name = topPermissionList.join(',');
  75. }
  76. }
  77. // 整理数据
  78. if (managerList.length > 0) {
  79. for (let tmp in managerList) {
  80. let cate = await categoryList.find(function (item) {
  81. return item.id === managerList[tmp].office;
  82. });
  83. managerList[tmp].officeName = cate !== undefined ? cate.name : '';
  84. let groupInfo = managerList[tmp].permission !== '' ? await permissionGroupModel.findDataByCondition({ _id: managerList[tmp].permission }) : '';
  85. managerList[tmp].permissionName = groupInfo !== undefined && groupInfo !== '' ? groupInfo.name : '';
  86. }
  87. }
  88. } catch (error) {
  89. console.log(error);
  90. }
  91. let permissionGroupList2 = JSON.stringify(permissionGroupList);
  92. let renderData = {
  93. managerList: managerList,
  94. pages: pageData,
  95. categoryList: categoryList,
  96. permissionGroupList: permissionGroupList,
  97. permissionGroupList2: permissionGroupList2,
  98. layout: 'users/views/layout/layout',
  99. filter: filter,
  100. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  101. };
  102. response.render('users/views/manager/index', renderData);
  103. }
  104. /**
  105. * 权限组分配(管理员页面)
  106. * @param request
  107. * @param response
  108. * @return {Promise.<void>}
  109. */
  110. async groupSave(request, response) {
  111. let id = request.body.manager_id;
  112. let permission = request.body.permission !== '0' ? request.body.permission : '';
  113. let managerModel = new ManagerModel();
  114. let result = await managerModel.updateById(id, { permission: permission });
  115. if (!result) {
  116. throw '修改失败';
  117. }
  118. response.redirect(request.headers.referer);
  119. }
  120. /**
  121. * 保存管理员
  122. *
  123. * @param {object} request
  124. * @param {object} response
  125. * @return {void}
  126. */
  127. // async modify(request, response) {
  128. // let permission = request.body.permission;
  129. // let canLogin = request.body.login;
  130. // let id = request.params.id;
  131. //
  132. // let responseData = {
  133. // err: 0,
  134. // msg: ""
  135. // };
  136. // try {
  137. // if (id === '' || id === undefined) {
  138. // throw 'id有误';
  139. // }
  140. // let managerModel = new ManagerModel();
  141. // let result = await managerModel.updateById(id, {permission: permission, can_login: canLogin});
  142. //
  143. // if (!result) {
  144. // throw '修改失败';
  145. // }
  146. //
  147. // } catch (error) {
  148. // responseData.err = 1;
  149. // responseData.msg = error;
  150. // }
  151. //
  152. // response.json(responseData);
  153. // }
  154. /**
  155. * 删除管理员
  156. *
  157. * @param {object} request
  158. * @param {object} response
  159. * @return {void}
  160. */
  161. async delete(request, response) {
  162. let id = request.params.id;
  163. let managerModel = new ManagerModel();
  164. let result = await managerModel.deleteById(id, true);
  165. // 删除成功
  166. if (result) {
  167. }
  168. response.redirect(request.headers.referer);
  169. }
  170. /**
  171. * 操作管理员(启用和停用)
  172. *
  173. * @param {object} request
  174. * @param {object} response
  175. * @return {void}
  176. */
  177. async modify(request, response) {
  178. let canLogin = request.params.login;
  179. let id = request.params.id;
  180. let managerModel = new ManagerModel();
  181. let result = await managerModel.updateById(id, { can_login: canLogin });
  182. // 修改成功
  183. if (!result) {
  184. throw '修改失败';
  185. }
  186. response.redirect(request.headers.referer);
  187. }
  188. /**
  189. * 超级管理员修改
  190. *
  191. * @param {object} request
  192. * @param {object} response
  193. * @return {void}
  194. */
  195. async admin(request, response) {
  196. let adminData = {};
  197. try {
  198. // 查找对应超级管理员数据
  199. let managerModel = new ManagerModel();
  200. adminData = await managerModel.findDataByCondition({ username: 'admin' });
  201. } catch (error) {
  202. console.log(error);
  203. }
  204. let renderData = {
  205. adminData: adminData,
  206. layout: 'users/views/layout/layout',
  207. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  208. };
  209. response.render('users/views/manager/save', renderData);
  210. }
  211. /**
  212. * 超级管理员修改提交
  213. *
  214. * @param {object} request
  215. * @param {object} response
  216. * @return
  217. */
  218. async adminSubmit(request, response) {
  219. let newPassword = request.body.newPassword.toString();
  220. let password = request.body.password.toString();
  221. let managerModel = new ManagerModel();
  222. let responseData = {
  223. err: 0,
  224. msg: ''
  225. };
  226. try {
  227. if (!newPassword || !password) {
  228. throw '内容有误';
  229. }
  230. // 更改密码操作
  231. managerModel.setScene('changPassword');
  232. let result = await managerModel.changePassword('admin', password, newPassword);
  233. if (!result) {
  234. throw '更新错误';
  235. }
  236. } catch (error) {
  237. console.log(error);
  238. responseData.err = 40002;
  239. responseData.msg = error;
  240. }
  241. response.json(responseData);
  242. }
  243. async create(request, response) {
  244. let managerModel = new ManagerModel();
  245. let result = managerModel.changePassword('admin', 'admin123', 'admin123');
  246. // let result = await managerModel.createManager();
  247. response.end('success');
  248. }
  249. /**
  250. * 权限组页面
  251. * @param request
  252. * @param response
  253. * @return {Promise.<void>}
  254. */
  255. async authority(request, response) {
  256. let pageData = {};
  257. let groupList = [];
  258. let topPermissionList = [];
  259. let permissionList = [];
  260. let compilationList = [];
  261. try {
  262. // 获取编办列表
  263. const compilationModel = new CompilationModel();
  264. compilationList = await compilationModel.getCompilationList({ _id: 1, name: 1 });
  265. // 获取最高级权限列表
  266. let permissionModel = new PermissionModel();
  267. topPermissionList = await permissionModel.getList({ pid: 0 });
  268. // 获取所有权限列表,按排序
  269. permissionList = topPermissionList;
  270. for (let index in permissionList) {
  271. let count = await permissionModel.count({ pid: permissionList[index].ID });
  272. if (count > 0) {
  273. permissionList[index].secondPermissionList = await permissionModel.getList({ pid: permissionList[index].ID });
  274. } else {
  275. permissionList[index].secondPermissionList = [];
  276. }
  277. permissionList[index].count = count;
  278. }
  279. // 获取权限组列表
  280. let permissionGroupModel = new PermissionGroupModel();
  281. let total = await permissionGroupModel.count();
  282. // 分页数据
  283. let page = request.query.page === undefined ? 1 : request.query.page;
  284. pageData = {
  285. current: page,
  286. total: parseInt(total / Config.pageSize),
  287. queryData: response.locals.urlQuery
  288. };
  289. // 获取管理员列表
  290. groupList = JSON.parse(JSON.stringify(await permissionGroupModel.getList(null, page)));
  291. // 整理数据
  292. if (groupList.length > 0) {
  293. let managerModel = new ManagerModel();
  294. for (let tmp in groupList) {
  295. let managerCount = await managerModel.count({ permission: groupList[tmp]._id });
  296. groupList[tmp].manager_count = managerCount;
  297. let groupPermissionList = JSON.parse(groupList[tmp].permission);
  298. for (let p in groupPermissionList) {
  299. if (p === 'top') {
  300. let topPermissionList = [];
  301. for (let t of groupPermissionList[p]) {
  302. let topInfo = await permissionModel.findDataByCondition({ _id: t });
  303. topPermissionList.push(topInfo.name);
  304. }
  305. groupList[tmp].top_name = topPermissionList.join(',');
  306. }
  307. }
  308. }
  309. }
  310. } catch (error) {
  311. }
  312. let renderData = {
  313. compilationList,
  314. groupList: groupList,
  315. groupListStr: JSON.stringify(groupList),
  316. topPermissionList: topPermissionList,
  317. topPermissionListStr: JSON.stringify(topPermissionList),
  318. permissionList: permissionList,
  319. permissionListStr: JSON.stringify(permissionList),
  320. pages: pageData,
  321. layout: 'users/views/layout/layout',
  322. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  323. };
  324. response.render('users/views/manager/authority', renderData);
  325. }
  326. /**
  327. * 权限组添加
  328. * @param request
  329. * @param response
  330. * @return {Promise.<void>}
  331. */
  332. async authorityAdd(request, response) {
  333. let permissionGroupModel = new PermissionGroupModel();
  334. let result = await permissionGroupModel.createPermissionGroup(request.body);
  335. if (!result) {
  336. throw '添加失败';
  337. }
  338. response.redirect(request.headers.referer);
  339. }
  340. /**
  341. * 权限组修改保存
  342. * @param request
  343. * @param response
  344. * @return {Promise.<void>}
  345. */
  346. async authoritySave(request, response) {
  347. let permissionGroupModel = new PermissionGroupModel();
  348. console.log(`request.body`)
  349. console.log(request.body)
  350. let result = await permissionGroupModel.savePermissionGroup(request.body);
  351. if (!result) {
  352. throw '修改失败';
  353. }
  354. response.redirect(request.headers.referer);
  355. }
  356. /**
  357. * 权限组删除
  358. * @param request
  359. * @param response
  360. * @return {Promise.<void>}
  361. */
  362. async authorityDelete(request, response) {
  363. let id = request.body.id;
  364. try {
  365. let permissionGroupModel = new PermissionGroupModel();
  366. await permissionGroupModel.deleteById(id, true);
  367. // 并清空用户所在权限组
  368. let managerModel = new ManagerModel();
  369. await managerModel.updateByPermission(id);
  370. } catch (err) {
  371. throw err;
  372. }
  373. response.redirect(request.headers.referer);
  374. }
  375. /**
  376. * 权限添加接口
  377. * @param request
  378. * @param response
  379. * @return {Promise.<void>}
  380. */
  381. async permissionAdd(request, response) {
  382. let permissionModel = new PermissionModel();
  383. let responseData = {
  384. err: 0,
  385. msg: ''
  386. };
  387. try {
  388. permissionModel.setScene('insert');
  389. let result = await permissionModel.createPermission(request.body);
  390. if (!result) {
  391. throw '添加失败';
  392. }
  393. } catch (error) {
  394. console.log(error);
  395. responseData.err = 1;
  396. responseData.msg = error;
  397. }
  398. response.json(responseData);
  399. }
  400. }
  401. export default ManagerController;