manager_controller.js 14 KB

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