user_controller.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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. import Config from "../../../config/config";
  11. import CompilationModel from "../models/compilation_model";
  12. let config = require("../../../config/config.js");
  13. let _ = require("lodash");
  14. let online_facade = require('../facade/online_facade')
  15. class UserController extends BaseController {
  16. /**
  17. * 最近注册列表(最近登录前台用户列表)
  18. *
  19. * @param {object} request
  20. * @param {object} response
  21. * @return {void}
  22. */
  23. async normalUsers(request, response) {//取普通用户
  24. let userModel = new UserModel();
  25. let total = 0;
  26. let pageData = {};
  27. let userList = [];
  28. let compilationList =[];
  29. let compilationString ='';
  30. let compilationMap = {};
  31. let filter = request.query;
  32. try {
  33. //获取编办列表
  34. let compilationModel = new CompilationModel();
  35. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  36. compilationString = JSON.stringify(compilationList);
  37. compilationMap = _.keyBy(compilationList,'_id');//4.17后的版本没有indexBy方法,改成了keyBy
  38. let condition = userModel.getFilterCondition(request);
  39. //设置搜索普通用户:
  40. condition.user_type = 'normal';
  41. //获取注册时间
  42. let regtime = request.query.regtime;
  43. if(regtime !== '' && regtime !== undefined){
  44. filter.regtimeMsg = userModel.getDayMsg(regtime);
  45. }
  46. //获取注册时间
  47. let loginTime = request.query.loginTime;
  48. if(loginTime !== '' && loginTime !== undefined){
  49. filter.loginMsg = userModel.getDayMsg(loginTime);
  50. }
  51. // 获取用户总数
  52. total = await userModel.count(condition);
  53. // 分页数据
  54. let page = request.query.page === undefined ? 1 : request.query.page;
  55. pageData = {
  56. current: page,
  57. total: Math.ceil(total / Config.pageSize),
  58. queryData: response.locals.urlQuery
  59. };
  60. // console.log("取用户信息=========================");
  61. // console.log(condition);
  62. // 获取用户列表
  63. userList = await userModel.getList(condition, page, Config.pageSize);
  64. await online_facade.setOnlineTimes(userList,condition);
  65. // console.log(userList)
  66. } catch (error) {
  67. console.log(error);
  68. }
  69. // 用户管理二级菜单独立出来
  70. let secondMenu = response.locals.secondMenu;
  71. let userMenu = [];
  72. for (let second in secondMenu) {
  73. userMenu.push(secondMenu[second]);
  74. }
  75. // 渲染数据
  76. let renderData = {
  77. compilationList:compilationList,
  78. compilationString:compilationString,
  79. compilationMap:compilationMap,
  80. adminName:request.session.managerData?request.session.managerData.real_name:'',
  81. userList: userList,
  82. pages: pageData,
  83. total: total,
  84. filter: filter,
  85. model: userModel,
  86. userMenu: userMenu,
  87. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  88. layout: 'users/views/layout/layout',
  89. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  90. };
  91. response.render('users/views/user/index', renderData);
  92. }
  93. async testUsers(request,response){
  94. let userModel = new UserModel();
  95. let total = 0;
  96. let pageData = {};
  97. let userList = [];
  98. let compilationList =[];
  99. let compilationString ='';
  100. let compilationMap = {};
  101. let filter = request.query;
  102. try {
  103. //获取编办列表
  104. let compilationModel = new CompilationModel();
  105. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  106. compilationString = JSON.stringify(compilationList);
  107. compilationMap = _.keyBy(compilationList,'_id');
  108. let condition = userModel.getFilterCondition(request);
  109. //设置搜索普通用户:
  110. condition.user_type = 'normal';
  111. //获取注册时间
  112. let regtime = request.query.regtime;
  113. if(regtime !== '' && regtime !== undefined){
  114. filter.regtimeMsg = userModel.getDayMsg(regtime);
  115. }
  116. //获取注册时间
  117. let loginTime = request.query.loginTime;
  118. if(loginTime !== '' && loginTime !== undefined){
  119. filter.loginMsg = userModel.getDayMsg(loginTime);
  120. }
  121. // 获取用户总数
  122. total = await userModel.count(condition);
  123. // 分页数据
  124. let page = request.query.page === undefined ? 1 : request.query.page;
  125. pageData = {
  126. current: page,
  127. total: Math.ceil(total / Config.pageSize),
  128. queryData: response.locals.urlQuery
  129. };
  130. // 获取用户列表
  131. userList = await userModel.getList(condition, page, Config.pageSize);
  132. } catch (error) {
  133. console.log(error);
  134. }
  135. // 用户管理二级菜单独立出来
  136. let secondMenu = response.locals.secondMenu;
  137. let userMenu = [];
  138. for (let second in secondMenu) {
  139. userMenu.push(secondMenu[second]);
  140. }
  141. // 渲染数据
  142. let renderData = {
  143. compilationList:compilationList,
  144. compilationString:compilationString,
  145. compilationMap:compilationMap,
  146. adminName:request.session.managerData?request.session.managerData.real_name:'',
  147. userList: userList,
  148. pages: pageData,
  149. total: total,
  150. filter: filter,
  151. model: userModel,
  152. userMenu: userMenu,
  153. title : config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:'养护云版',
  154. layout: 'users/views/layout/layout',
  155. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  156. };
  157. response.render('users/views/user/test_user', renderData);
  158. }
  159. /**
  160. * 获取搜索用户json
  161. *
  162. * @param {object} request
  163. * @param {object} response
  164. * @return {string}
  165. */
  166. async search(request, response) {
  167. let userModel = new UserModel();
  168. let responseData = {
  169. error: 0,
  170. msg: '',
  171. data: null
  172. };
  173. try{
  174. let keyword = request.query.keyword;
  175. if(keyword === undefined || keyword === '') {
  176. throw { code: 1, err: '参数有误或为空'};
  177. }
  178. let condition = userModel.getFilterCondition(request);
  179. let userList = await userModel.getList(condition);
  180. responseData.data = userList;
  181. } catch (error) {
  182. console.log(error);
  183. responseData.error = error.code;
  184. responseData.msg = error.err;
  185. }
  186. response.json(responseData);
  187. }
  188. async findByID(request, response) {
  189. let params = JSON.parse(request.body.data),
  190. userIds = params.ID;
  191. let userModel = new UserModel();
  192. let responseData = {
  193. error: 0,
  194. msg: '',
  195. data: null
  196. };
  197. try{
  198. if(userIds === undefined || userIds === '') {
  199. throw { code: 1, err: '参数有误或为空'};
  200. }
  201. let user = await userModel.getByID({ _id: userIds});
  202. responseData.data = user;
  203. } catch (error) {
  204. console.log(error);
  205. responseData.error = error.code;
  206. responseData.msg = error.err;
  207. }
  208. response.json(responseData);
  209. }
  210. async getOnlineInfo(request, response){
  211. let filter = JSON.parse(request.body.data);
  212. let responseData = {
  213. error: 0,
  214. msg: '',
  215. data: null
  216. };
  217. try{
  218. let info = await online_facade.getOnlineInfo(filter);
  219. responseData.data = info;
  220. } catch (error) {
  221. console.log(error);
  222. responseData.error = error.code;
  223. responseData.msg = error.err;
  224. }
  225. response.json(responseData);
  226. }
  227. async updateUser(request, response) {
  228. let data = JSON.parse(request.body.data);
  229. let userModel = new UserModel();
  230. let responseData = {
  231. error: 0,
  232. msg: '',
  233. data: null
  234. };
  235. try{
  236. if(data.ID === undefined || data.ID === '') {
  237. throw { code: 1, err: '参数有误或为空'};
  238. }
  239. let user = await userModel.updateById(data.ID,data.updateData);
  240. responseData.data = user;
  241. } catch (error) {
  242. console.log(error);
  243. responseData.error = error.code;
  244. responseData.msg = error.err;
  245. }
  246. response.json(responseData);
  247. }
  248. async deleteUser(request, response) {
  249. let data = JSON.parse(request.body.data);
  250. let userModel = new UserModel();
  251. let responseData = {
  252. error: 0,
  253. message: '',
  254. data: null
  255. };
  256. try{
  257. let manager = request.session.managerData;
  258. if(manager.superAdmin !=1 ){
  259. throw { code: 1, message: '没有删除用户权限'};
  260. }
  261. responseData.data = await userModel.deleteUser(data.userID,manager.userID);
  262. } catch (error) {
  263. console.log(error);
  264. responseData.error = error.code;
  265. responseData.message = error.message;
  266. }
  267. response.json(responseData);
  268. }
  269. /**
  270. * 根据用户id列表获取用户信息列表 json
  271. *
  272. * @param {object} request
  273. * @param {object} response
  274. * @return {string}
  275. */
  276. async getUserList(request, response) {
  277. let params = JSON.parse(request.body.params),
  278. userIds = params.userIds;
  279. let userModel = new UserModel();
  280. let responseData = {
  281. error: 0,
  282. msg: '',
  283. data: null
  284. };
  285. try{
  286. if(userIds === undefined || userIds === '') {
  287. throw { code: 1, err: '参数有误或为空'};
  288. }
  289. let condition = {
  290. _id: {$in:userIds}
  291. };
  292. let userList = await userModel.getList(condition);
  293. responseData.data = userList;
  294. } catch (error) {
  295. console.log(error);
  296. responseData.error = error.code;
  297. responseData.msg = error.err;
  298. }
  299. response.json(responseData);
  300. }
  301. }
  302. export default UserController;