manager_controller.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  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. class ManagerController extends BaseController {
  16. /**
  17. * 账号管理(管理员列表)
  18. *
  19. * @param {object} request
  20. * @param {object} response
  21. * @return {void}
  22. */
  23. async index(request, response) {
  24. let pageData = {};
  25. let managerList = [];
  26. let permissionGroupList = [];
  27. let filter = request.query;
  28. try {
  29. // 查找管理员用户列表
  30. let managerModel = new ManagerModel();
  31. let total = await managerModel.count({super_admin: 0});
  32. // 分页数据
  33. let page = request.query.page === undefined ? 1 : request.query.page;
  34. pageData = {
  35. current: page,
  36. total: parseInt(total / Config.pageSize),
  37. queryData: response.locals.urlQuery
  38. };
  39. // 获取管理员列表
  40. let condition = managerModel.getFilterCondition(request);
  41. condition.super_admin = 0;
  42. managerList = JSON.parse(JSON.stringify(await managerModel.getList(condition, page)));
  43. let permissionGroupModel = new PermissionGroupModel();
  44. let permissionModel = new PermissionModel();
  45. // 添加特定数据到filter里
  46. if (request.query.office !== undefined && request.query.office !== '') {
  47. let officeInfo = await categoryList.find(function (item) {
  48. return item.id === parseInt(request.query.office);
  49. });
  50. filter.officeName = officeInfo.name
  51. }
  52. if (request.query.permission !== undefined && request.query.permission !== '0') {
  53. let permissionGroupInfo = await permissionGroupModel.findDataByCondition({_id: request.query.permission});
  54. filter.permissionGroupName = permissionGroupInfo.name;
  55. }
  56. // 获取权限组列表
  57. permissionGroupList = JSON.parse(JSON.stringify(await permissionGroupModel.getList()));
  58. if (permissionGroupList.length > 0) {
  59. for (let tmp in permissionGroupList) {
  60. let topPermissionList = [];
  61. if (permissionGroupList[tmp].permission !== undefined && permissionGroupList[tmp].permission !== '') {
  62. let groupPermissionList = JSON.parse(permissionGroupList[tmp].permission);
  63. for (let p in groupPermissionList) {
  64. if (p === 'top') {
  65. for (let t of groupPermissionList[p]) {
  66. let topInfo = await permissionModel.findDataByCondition({_id:t});
  67. topPermissionList.push(topInfo.name);
  68. }
  69. break;
  70. }
  71. }
  72. }
  73. permissionGroupList[tmp].top_name = topPermissionList.join(',');
  74. }
  75. }
  76. // 整理数据
  77. if (managerList.length > 0) {
  78. for (let tmp in managerList) {
  79. let cate = await categoryList.find(function (item) {
  80. return item.id === managerList[tmp].office;
  81. });
  82. managerList[tmp].officeName = cate !== undefined ? cate.name : '';
  83. let groupInfo = managerList[tmp].permission !== '' ? await permissionGroupModel.findDataByCondition({_id:managerList[tmp].permission}) : '';
  84. managerList[tmp].permissionName = groupInfo !== undefined && groupInfo !== '' ? groupInfo.name : '';
  85. }
  86. }
  87. } catch (error) {
  88. console.log(error);
  89. }
  90. let permissionGroupList2 = JSON.stringify(permissionGroupList);
  91. let renderData = {
  92. managerList: managerList,
  93. pages: pageData,
  94. categoryList: categoryList,
  95. permissionGroupList: permissionGroupList,
  96. permissionGroupList2: permissionGroupList2,
  97. layout: 'users/views/layout/layout',
  98. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  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. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  207. layout: 'users/views/layout/layout',
  208. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  209. };
  210. response.render('users/views/manager/save', renderData);
  211. }
  212. /**
  213. * 超级管理员修改提交
  214. *
  215. * @param {object} request
  216. * @param {object} response
  217. * @return
  218. */
  219. async adminSubmit(request, response) {
  220. let newPassword = request.body.newPassword.toString();
  221. let password = request.body.password.toString();
  222. let managerModel = new ManagerModel();
  223. let responseData = {
  224. err: 0,
  225. msg: ''
  226. };
  227. try {
  228. if (!newPassword || !password) {
  229. throw '内容有误';
  230. }
  231. // 更改密码操作
  232. managerModel.setScene('changPassword');
  233. let result = await managerModel.changePassword('admin', password, newPassword);
  234. if (!result) {
  235. throw '更新错误';
  236. }
  237. } catch (error) {
  238. console.log(error);
  239. responseData.err = 40002;
  240. responseData.msg = error;
  241. }
  242. response.json(responseData);
  243. }
  244. async create(request, response) {
  245. let managerModel = new ManagerModel();
  246. let result = managerModel.changePassword('admin', 'admin123', 'admin123');
  247. // let result = await managerModel.createManager();
  248. response.end('success');
  249. }
  250. /**
  251. * 权限组页面
  252. * @param request
  253. * @param response
  254. * @return {Promise.<void>}
  255. */
  256. async authority(request, response) {
  257. let pageData = {};
  258. let groupList = [];
  259. let topPermissionList = [];
  260. let permissionList = [];
  261. try {
  262. // 获取最高级权限列表
  263. let permissionModel = new PermissionModel();
  264. topPermissionList = await permissionModel.getList({pid:0});
  265. // 获取所有权限列表,按排序
  266. permissionList = topPermissionList;
  267. for (let index in permissionList) {
  268. let count = await permissionModel.count({pid:permissionList[index].ID});
  269. if (count > 0) {
  270. permissionList[index].secondPermissionList = await permissionModel.getList({pid: permissionList[index].ID});
  271. } else {
  272. permissionList[index].secondPermissionList = [];
  273. }
  274. permissionList[index].count = count;
  275. }
  276. // 获取权限组列表
  277. let permissionGroupModel = new PermissionGroupModel();
  278. let total = await permissionGroupModel.count();
  279. // 分页数据
  280. let page = request.query.page === undefined ? 1 : request.query.page;
  281. pageData = {
  282. current: page,
  283. total: parseInt(total / Config.pageSize),
  284. queryData: response.locals.urlQuery
  285. };
  286. // 获取管理员列表
  287. groupList = JSON.parse(JSON.stringify(await permissionGroupModel.getList(null, page)));
  288. // 整理数据
  289. if (groupList.length > 0) {
  290. let managerModel = new ManagerModel();
  291. for (let tmp in groupList) {
  292. let managerCount = await managerModel.count({permission: groupList[tmp]._id});
  293. groupList[tmp].manager_count = managerCount;
  294. let groupPermissionList = JSON.parse(groupList[tmp].permission);
  295. for (let p in groupPermissionList) {
  296. if (p === 'top') {
  297. let topPermissionList = [];
  298. for (let t of groupPermissionList[p]) {
  299. let topInfo = await permissionModel.findDataByCondition({_id:t});
  300. topPermissionList.push(topInfo.name);
  301. }
  302. groupList[tmp].top_name = topPermissionList.join(',');
  303. }
  304. }
  305. }
  306. }
  307. } catch (error) {
  308. }
  309. let renderData = {
  310. groupList: groupList,
  311. topPermissionList: topPermissionList,
  312. permissionList: permissionList,
  313. pages: pageData,
  314. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  315. layout: 'users/views/layout/layout',
  316. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  317. };
  318. response.render('users/views/manager/authority', renderData);
  319. }
  320. /**
  321. * 权限组添加
  322. * @param request
  323. * @param response
  324. * @return {Promise.<void>}
  325. */
  326. async authorityAdd(request, response) {
  327. let permissionGroupModel = new PermissionGroupModel();
  328. let result = await permissionGroupModel.createPermissionGroup(request.body);
  329. if (!result) {
  330. throw '添加失败';
  331. }
  332. response.redirect(request.headers.referer);
  333. }
  334. /**
  335. * 权限组修改保存
  336. * @param request
  337. * @param response
  338. * @return {Promise.<void>}
  339. */
  340. async authoritySave(request, response) {
  341. let permissionGroupModel = new PermissionGroupModel();
  342. let result = await permissionGroupModel.savePermissionGroup(request.body);
  343. if (!result) {
  344. throw '修改失败';
  345. }
  346. response.redirect(request.headers.referer);
  347. }
  348. /**
  349. * 权限组删除
  350. * @param request
  351. * @param response
  352. * @return {Promise.<void>}
  353. */
  354. async authorityDelete(request, response) {
  355. let id = request.body.id;
  356. try {
  357. let permissionGroupModel = new PermissionGroupModel();
  358. await permissionGroupModel.deleteById(id, true);
  359. // 并清空用户所在权限组
  360. let managerModel = new ManagerModel();
  361. await managerModel.updateByPermission(id);
  362. } catch(err) {
  363. throw err;
  364. }
  365. response.redirect(request.headers.referer);
  366. }
  367. /**
  368. * 权限添加接口
  369. * @param request
  370. * @param response
  371. * @return {Promise.<void>}
  372. */
  373. async permissionAdd(request, response) {
  374. let permissionModel = new PermissionModel();
  375. let responseData = {
  376. err: 0,
  377. msg: ''
  378. };
  379. try {
  380. permissionModel.setScene('insert');
  381. let result = await permissionModel.createPermission(request.body);
  382. if (!result) {
  383. throw '添加失败';
  384. }
  385. } catch (error) {
  386. console.log(error);
  387. responseData.err = 1;
  388. responseData.msg = error;
  389. }
  390. response.json(responseData);
  391. }
  392. }
  393. export default ManagerController;