user_controller.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. /**
  2. * 用户管理控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/7
  6. * @version
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import UserModel from "../models/user_model";
  10. const CLDModel = require("../models/cld_model");
  11. import Config from "../../../config/config";
  12. import CompilationModel from "../models/compilation_model";
  13. let config = require("../../../config/config.js");
  14. let _ = require("lodash");
  15. let online_facade = require('../facade/online_facade')
  16. class UserController extends BaseController {
  17. /**
  18. * 最近注册列表(最近登录前台用户列表)
  19. *
  20. * @param {object} request
  21. * @param {object} response
  22. * @return {void}
  23. */
  24. async normalUsers(request, response) {//取普通用户
  25. let userModel = new UserModel();
  26. let total = 0;
  27. let pageData = {};
  28. let userList = [];
  29. let compilationList =[];
  30. let compilationString ='';
  31. let compilationMap = {};
  32. let filter = request.query;
  33. try {
  34. //获取编办列表
  35. let compilationModel = new CompilationModel();
  36. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  37. compilationString = JSON.stringify(compilationList);
  38. compilationMap = _.keyBy(compilationList,'_id');//4.17后的版本没有indexBy方法,改成了keyBy
  39. let condition = userModel.getFilterCondition(request);
  40. //设置搜索普通用户:
  41. condition.user_type = 'normal';
  42. //获取注册时间
  43. let regtime = request.query.regtime;
  44. if(regtime !== '' && regtime !== undefined){
  45. filter.regtimeMsg = userModel.getDayMsg(regtime);
  46. }
  47. //获取注册时间
  48. let loginTime = request.query.loginTime;
  49. if(loginTime !== '' && loginTime !== undefined){
  50. filter.loginMsg = userModel.getDayMsg(loginTime);
  51. }
  52. // 获取用户总数
  53. total = await userModel.count(condition);
  54. // 分页数据
  55. let page = request.query.page === undefined ? 1 : request.query.page;
  56. pageData = {
  57. current: page,
  58. total: Math.ceil(total / Config.pageSize),
  59. queryData: response.locals.urlQuery
  60. };
  61. // console.log("取用户信息=========================");
  62. // console.log(condition);
  63. // 获取用户列表
  64. userList = await userModel.getList(condition, page, Config.pageSize);
  65. await online_facade.setOnlineTimes(userList,condition);
  66. // console.log(userList)
  67. } catch (error) {
  68. console.log(error);
  69. }
  70. // 用户管理二级菜单独立出来
  71. let secondMenu = response.locals.secondMenu;
  72. let userMenu = [];
  73. for (let second in secondMenu) {
  74. userMenu.push(secondMenu[second]);
  75. }
  76. // 渲染数据
  77. let renderData = {
  78. compilationList:compilationList,
  79. compilationString:compilationString,
  80. compilationMap:compilationMap,
  81. adminName:request.session.managerData?request.session.managerData.real_name:'',
  82. userList: userList,
  83. pages: pageData,
  84. total: total,
  85. filter: filter,
  86. model: userModel,
  87. userMenu: userMenu,
  88. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  89. layout: 'users/views/layout/layout',
  90. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  91. };
  92. response.render('users/views/user/index', renderData);
  93. }
  94. async testUsers(request,response){
  95. let userModel = new UserModel();
  96. let total = 0;
  97. let pageData = {};
  98. let userList = [];
  99. let compilationList =[];
  100. let compilationString ='';
  101. let compilationMap = {};
  102. let filter = request.query;
  103. try {
  104. //获取编办列表
  105. let compilationModel = new CompilationModel();
  106. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  107. compilationString = JSON.stringify(compilationList);
  108. compilationMap = _.keyBy(compilationList,'_id');
  109. let condition = userModel.getFilterCondition(request);
  110. //设置搜索普通用户:
  111. condition.user_type = 'normal';
  112. //获取注册时间
  113. let regtime = request.query.regtime;
  114. if(regtime !== '' && regtime !== undefined){
  115. filter.regtimeMsg = userModel.getDayMsg(regtime);
  116. }
  117. //获取注册时间
  118. let loginTime = request.query.loginTime;
  119. if(loginTime !== '' && loginTime !== undefined){
  120. filter.loginMsg = userModel.getDayMsg(loginTime);
  121. }
  122. // 获取用户总数
  123. total = await userModel.count(condition);
  124. // 分页数据
  125. let page = request.query.page === undefined ? 1 : request.query.page;
  126. pageData = {
  127. current: page,
  128. total: Math.ceil(total / Config.pageSize),
  129. queryData: response.locals.urlQuery
  130. };
  131. // 获取用户列表
  132. userList = await userModel.getList(condition, page, Config.pageSize);
  133. } catch (error) {
  134. console.log(error);
  135. }
  136. // 用户管理二级菜单独立出来
  137. let secondMenu = response.locals.secondMenu;
  138. let userMenu = [];
  139. for (let second in secondMenu) {
  140. userMenu.push(secondMenu[second]);
  141. }
  142. // 渲染数据
  143. let renderData = {
  144. compilationList:compilationList,
  145. compilationString:compilationString,
  146. compilationMap:compilationMap,
  147. adminName:request.session.managerData?request.session.managerData.real_name:'',
  148. userList: userList,
  149. pages: pageData,
  150. total: total,
  151. filter: filter,
  152. model: userModel,
  153. userMenu: userMenu,
  154. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  155. layout: 'users/views/layout/layout',
  156. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  157. };
  158. response.render('users/views/user/test_user', renderData);
  159. }
  160. /**
  161. * cld剔除用户列表
  162. *
  163. * @param {object} request
  164. * @param {object} response
  165. * @return {void}
  166. */
  167. async cldUsers(request, response) {
  168. let userModel = new UserModel();
  169. let total = 0;
  170. let pageData = {};
  171. let userList = [];
  172. let compilationList =[];
  173. let compilationString ='';
  174. let compilationMap = {};
  175. let filter = request.query;
  176. try {
  177. //获取编办列表
  178. let compilationModel = new CompilationModel();
  179. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  180. compilationString = JSON.stringify(compilationList);
  181. compilationMap = _.keyBy(compilationList,'_id');//4.17后的版本没有indexBy方法,改成了keyBy
  182. let condition = userModel.getFilterCondition(request);
  183. //设置搜索普通用户:
  184. condition.user_type = 'normal';
  185. condition.is_cld = {$exists:true, $ne: 0};
  186. //获取注册时间
  187. let regtime = request.query.regtime;
  188. if(regtime !== '' && regtime !== undefined){
  189. filter.regtimeMsg = userModel.getDayMsg(regtime);
  190. }
  191. //获取注册时间
  192. let loginTime = request.query.loginTime;
  193. if(loginTime !== '' && loginTime !== undefined){
  194. filter.loginMsg = userModel.getDayMsg(loginTime);
  195. }
  196. // 获取用户总数
  197. total = await userModel.count(condition);
  198. // 分页数据
  199. let page = request.query.page === undefined ? 1 : request.query.page;
  200. pageData = {
  201. current: page,
  202. total: Math.ceil(total / Config.pageSize),
  203. queryData: response.locals.urlQuery
  204. };
  205. // console.log("取用户信息=========================");
  206. // console.log(condition);
  207. // 获取用户列表
  208. userList = await userModel.getList(condition, page, Config.pageSize, {is_cld:-1});
  209. // await online_facade.setOnlineTimes(userList,condition);
  210. // console.log(userList)
  211. } catch (error) {
  212. console.log(error);
  213. }
  214. // 用户管理二级菜单独立出来
  215. let secondMenu = response.locals.secondMenu;
  216. let userMenu = [];
  217. for (let second in secondMenu) {
  218. userMenu.push(secondMenu[second]);
  219. }
  220. // 渲染数据
  221. let renderData = {
  222. compilationList:compilationList,
  223. compilationString:compilationString,
  224. compilationMap:compilationMap,
  225. adminName:request.session.managerData?request.session.managerData.real_name:'',
  226. userList: userList,
  227. pages: pageData,
  228. total: total,
  229. filter: filter,
  230. model: userModel,
  231. userMenu: userMenu,
  232. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  233. layout: 'users/views/layout/layout',
  234. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  235. };
  236. response.render('users/views/user/cld', renderData);
  237. }
  238. /**
  239. * 获取搜索用户json
  240. *
  241. * @param {object} request
  242. * @param {object} response
  243. * @return {string}
  244. */
  245. async search(request, response) {
  246. let userModel = new UserModel();
  247. let responseData = {
  248. error: 0,
  249. msg: '',
  250. data: null
  251. };
  252. try{
  253. let keyword = request.query.keyword;
  254. if(keyword === undefined || keyword === '') {
  255. throw { code: 1, err: '参数有误或为空'};
  256. }
  257. let condition = userModel.getFilterCondition(request);
  258. let userList = await userModel.getList(condition);
  259. responseData.data = userList;
  260. } catch (error) {
  261. console.log(error);
  262. responseData.error = error.code;
  263. responseData.msg = error.err;
  264. }
  265. response.json(responseData);
  266. }
  267. async findByID(request, response) {
  268. let params = JSON.parse(request.body.data),
  269. userIds = params.ID;
  270. let userModel = new UserModel();
  271. let responseData = {
  272. error: 0,
  273. msg: '',
  274. data: null
  275. };
  276. try{
  277. if(userIds === undefined || userIds === '') {
  278. throw { code: 1, err: '参数有误或为空'};
  279. }
  280. let user = await userModel.getByID({ _id: userIds});
  281. responseData.data = user;
  282. } catch (error) {
  283. console.log(error);
  284. responseData.error = error.code;
  285. responseData.msg = error.err;
  286. }
  287. response.json(responseData);
  288. }
  289. async getOnlineInfo(request, response){
  290. let filter = JSON.parse(request.body.data);
  291. let responseData = {
  292. error: 0,
  293. msg: '',
  294. data: null
  295. };
  296. try{
  297. let info = await online_facade.getOnlineInfo(filter);
  298. responseData.data = info;
  299. } catch (error) {
  300. console.log(error);
  301. responseData.error = error.code;
  302. responseData.msg = error.err;
  303. }
  304. response.json(responseData);
  305. }
  306. async updateUser(request, response) {
  307. let data = JSON.parse(request.body.data);
  308. let userModel = new UserModel();
  309. let responseData = {
  310. error: 0,
  311. msg: '',
  312. data: null
  313. };
  314. try{
  315. if(data.ID === undefined || data.ID === '') {
  316. throw { code: 1, err: '参数有误或为空'};
  317. }
  318. let user = await userModel.updateById(data.ID,data.updateData);
  319. responseData.data = user;
  320. } catch (error) {
  321. console.log(error);
  322. responseData.error = error.code;
  323. responseData.msg = error.err;
  324. }
  325. response.json(responseData);
  326. }
  327. async deleteUser(request, response) {
  328. let data = JSON.parse(request.body.data);
  329. let userModel = new UserModel();
  330. let responseData = {
  331. error: 0,
  332. message: '',
  333. data: null
  334. };
  335. try{
  336. let manager = request.session.managerData;
  337. if(manager.superAdmin !=1 ){
  338. throw { code: 1, message: '没有删除用户权限'};
  339. }
  340. responseData.data = await userModel.deleteUser(data.userID,manager.userID);
  341. } catch (error) {
  342. console.log(error);
  343. responseData.error = error.code;
  344. responseData.message = error.message;
  345. }
  346. response.json(responseData);
  347. }
  348. async updateCldUser(request, response) {
  349. let userModel = new UserModel();
  350. let responseData = {
  351. error: 0,
  352. msg: '',
  353. data: null
  354. };
  355. try{
  356. let cldModel = new CLDModel();
  357. let cldUserList = await cldModel.getAllStaff();
  358. cldUserList = JSON.parse(cldUserList);
  359. await userModel.updateAllStaff(cldUserList);
  360. responseData.data = true;
  361. } catch (error) {
  362. console.log(error);
  363. responseData.error = error.code;
  364. responseData.msg = error.err;
  365. }
  366. response.json(responseData);
  367. }
  368. /**
  369. * 根据用户id列表获取用户信息列表 json
  370. *
  371. * @param {object} request
  372. * @param {object} response
  373. * @return {string}
  374. */
  375. async getUserList(request, response) {
  376. let params = JSON.parse(request.body.params),
  377. userIds = params.userIds;
  378. let userModel = new UserModel();
  379. let responseData = {
  380. error: 0,
  381. msg: '',
  382. data: null
  383. };
  384. try{
  385. if(userIds === undefined || userIds === '') {
  386. throw { code: 1, err: '参数有误或为空'};
  387. }
  388. let condition = {
  389. _id: {$in:userIds}
  390. };
  391. let userList = await userModel.getList(condition);
  392. responseData.data = userList;
  393. } catch (error) {
  394. console.log(error);
  395. responseData.error = error.code;
  396. responseData.msg = error.err;
  397. }
  398. response.json(responseData);
  399. }
  400. }
  401. export default UserController;