manager_controller.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  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. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  100. filter: filter,
  101. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  102. };
  103. response.render('users/views/manager/index', renderData);
  104. }
  105. /**
  106. * 权限组分配(管理员页面)
  107. * @param request
  108. * @param response
  109. * @return {Promise.<void>}
  110. */
  111. async groupSave(request, response) {
  112. let id = request.body.manager_id;
  113. let permission = request.body.permission !== '0' ? request.body.permission : '';
  114. let managerModel = new ManagerModel();
  115. let result = await managerModel.updateById(id, { permission: permission });
  116. if (!result) {
  117. throw '修改失败';
  118. }
  119. response.redirect(request.headers.referer);
  120. }
  121. /**
  122. * 保存管理员
  123. *
  124. * @param {object} request
  125. * @param {object} response
  126. * @return {void}
  127. */
  128. // async modify(request, response) {
  129. // let permission = request.body.permission;
  130. // let canLogin = request.body.login;
  131. // let id = request.params.id;
  132. //
  133. // let responseData = {
  134. // err: 0,
  135. // msg: ""
  136. // };
  137. // try {
  138. // if (id === '' || id === undefined) {
  139. // throw 'id有误';
  140. // }
  141. // let managerModel = new ManagerModel();
  142. // let result = await managerModel.updateById(id, {permission: permission, can_login: canLogin});
  143. //
  144. // if (!result) {
  145. // throw '修改失败';
  146. // }
  147. //
  148. // } catch (error) {
  149. // responseData.err = 1;
  150. // responseData.msg = error;
  151. // }
  152. //
  153. // response.json(responseData);
  154. // }
  155. /**
  156. * 删除管理员
  157. *
  158. * @param {object} request
  159. * @param {object} response
  160. * @return {void}
  161. */
  162. async delete(request, response) {
  163. let id = request.params.id;
  164. let managerModel = new ManagerModel();
  165. let result = await managerModel.deleteById(id, true);
  166. // 删除成功
  167. if (result) {
  168. }
  169. response.redirect(request.headers.referer);
  170. }
  171. /**
  172. * 操作管理员(启用和停用)
  173. *
  174. * @param {object} request
  175. * @param {object} response
  176. * @return {void}
  177. */
  178. async modify(request, response) {
  179. let canLogin = request.params.login;
  180. let id = request.params.id;
  181. let managerModel = new ManagerModel();
  182. let result = await managerModel.updateById(id, { can_login: canLogin });
  183. // 修改成功
  184. if (!result) {
  185. throw '修改失败';
  186. }
  187. response.redirect(request.headers.referer);
  188. }
  189. /**
  190. * 超级管理员修改
  191. *
  192. * @param {object} request
  193. * @param {object} response
  194. * @return {void}
  195. */
  196. async admin(request, response) {
  197. let adminData = {};
  198. try {
  199. // 查找对应超级管理员数据
  200. let managerModel = new ManagerModel();
  201. adminData = await managerModel.findDataByCondition({ username: 'admin' });
  202. } catch (error) {
  203. console.log(error);
  204. }
  205. let renderData = {
  206. adminData: adminData,
  207. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  208. layout: 'users/views/layout/layout',
  209. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  210. };
  211. response.render('users/views/manager/save', renderData);
  212. }
  213. /**
  214. * 超级管理员修改提交
  215. *
  216. * @param {object} request
  217. * @param {object} response
  218. * @return
  219. */
  220. async adminSubmit(request, response) {
  221. let newPassword = request.body.newPassword.toString();
  222. let password = request.body.password.toString();
  223. let managerModel = new ManagerModel();
  224. let responseData = {
  225. err: 0,
  226. msg: ''
  227. };
  228. try {
  229. if (!newPassword || !password) {
  230. throw '内容有误';
  231. }
  232. // 更改密码操作
  233. managerModel.setScene('changPassword');
  234. let result = await managerModel.changePassword('admin', password, newPassword);
  235. if (!result) {
  236. throw '更新错误';
  237. }
  238. } catch (error) {
  239. console.log(error);
  240. responseData.err = 40002;
  241. responseData.msg = error;
  242. }
  243. response.json(responseData);
  244. }
  245. async create(request, response) {
  246. let managerModel = new ManagerModel();
  247. let result = managerModel.changePassword('admin', 'admin123', 'admin123');
  248. // let result = await managerModel.createManager();
  249. response.end('success');
  250. }
  251. /**
  252. * 权限组页面
  253. * @param request
  254. * @param response
  255. * @return {Promise.<void>}
  256. */
  257. async authority(request, response) {
  258. let pageData = {};
  259. let groupList = [];
  260. let topPermissionList = [];
  261. let permissionList = [];
  262. let compilationList = [];
  263. try {
  264. // 获取编办列表
  265. const compilationModel = new CompilationModel();
  266. compilationList = await compilationModel.getCompilationList({ _id: 1, name: 1 });
  267. console.log('enrerererrer');
  268. // 获取最高级权限列表
  269. let permissionModel = new PermissionModel();
  270. topPermissionList = await permissionModel.getList({ pid: 0 });
  271. console.log('enrerererrer');
  272. // 获取所有权限列表,按排序
  273. permissionList = topPermissionList;
  274. for (let index in permissionList) {
  275. let count = await permissionModel.count({ pid: permissionList[index].ID });
  276. if (count > 0) {
  277. permissionList[index].secondPermissionList = await permissionModel.getList({ pid: permissionList[index].ID });
  278. } else {
  279. permissionList[index].secondPermissionList = [];
  280. }
  281. permissionList[index].count = count;
  282. }
  283. // 获取权限组列表
  284. let permissionGroupModel = new PermissionGroupModel();
  285. let total = await permissionGroupModel.count();
  286. console.log(`total`);
  287. console.log(total);
  288. // 分页数据
  289. let page = request.query.page === undefined ? 1 : request.query.page;
  290. pageData = {
  291. current: page,
  292. total: parseInt(total / Config.pageSize),
  293. queryData: response.locals.urlQuery
  294. };
  295. // 获取管理员列表
  296. groupList = JSON.parse(JSON.stringify(await permissionGroupModel.getList(null, page)));
  297. // 整理数据
  298. if (groupList.length > 0) {
  299. let managerModel = new ManagerModel();
  300. for (let tmp in groupList) {
  301. let managerCount = await managerModel.count({ permission: groupList[tmp]._id });
  302. groupList[tmp].manager_count = managerCount;
  303. let groupPermissionList = JSON.parse(groupList[tmp].permission);
  304. for (let p in groupPermissionList) {
  305. if (p === 'top') {
  306. let topPermissionList = [];
  307. for (let t of groupPermissionList[p]) {
  308. let topInfo = await permissionModel.findDataByCondition({ _id: t });
  309. topPermissionList.push(topInfo.name);
  310. }
  311. groupList[tmp].top_name = topPermissionList.join(',');
  312. }
  313. }
  314. }
  315. }
  316. } catch (error) {
  317. }
  318. console.log(`groupList`);
  319. console.log(groupList);
  320. let renderData = {
  321. compilationList,
  322. groupList: groupList,
  323. topPermissionList: topPermissionList,
  324. permissionList: permissionList,
  325. pages: pageData,
  326. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  327. layout: 'users/views/layout/layout',
  328. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  329. };
  330. response.render('users/views/manager/authority', renderData);
  331. }
  332. /**
  333. * 权限组添加
  334. * @param request
  335. * @param response
  336. * @return {Promise.<void>}
  337. */
  338. async authorityAdd(request, response) {
  339. let permissionGroupModel = new PermissionGroupModel();
  340. let result = await permissionGroupModel.createPermissionGroup(request.body);
  341. if (!result) {
  342. throw '添加失败';
  343. }
  344. response.redirect(request.headers.referer);
  345. }
  346. /**
  347. * 权限组修改保存
  348. * @param request
  349. * @param response
  350. * @return {Promise.<void>}
  351. */
  352. async authoritySave(request, response) {
  353. let permissionGroupModel = new PermissionGroupModel();
  354. let result = await permissionGroupModel.savePermissionGroup(request.body);
  355. if (!result) {
  356. throw '修改失败';
  357. }
  358. response.redirect(request.headers.referer);
  359. }
  360. /**
  361. * 权限组删除
  362. * @param request
  363. * @param response
  364. * @return {Promise.<void>}
  365. */
  366. async authorityDelete(request, response) {
  367. let id = request.body.id;
  368. try {
  369. let permissionGroupModel = new PermissionGroupModel();
  370. await permissionGroupModel.deleteById(id, true);
  371. // 并清空用户所在权限组
  372. let managerModel = new ManagerModel();
  373. await managerModel.updateByPermission(id);
  374. } catch (err) {
  375. throw err;
  376. }
  377. response.redirect(request.headers.referer);
  378. }
  379. /**
  380. * 权限添加接口
  381. * @param request
  382. * @param response
  383. * @return {Promise.<void>}
  384. */
  385. async permissionAdd(request, response) {
  386. let permissionModel = new PermissionModel();
  387. let responseData = {
  388. err: 0,
  389. msg: ''
  390. };
  391. try {
  392. permissionModel.setScene('insert');
  393. let result = await permissionModel.createPermission(request.body);
  394. if (!result) {
  395. throw '添加失败';
  396. }
  397. } catch (error) {
  398. console.log(error);
  399. responseData.err = 1;
  400. responseData.msg = error;
  401. }
  402. response.json(responseData);
  403. }
  404. }
  405. export default ManagerController;