user_controller.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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. layout: 'users/views/layout/layout',
  88. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  89. };
  90. response.render('users/views/user/index', renderData);
  91. }
  92. async testUsers(request,response){
  93. let userModel = new UserModel();
  94. let total = 0;
  95. let pageData = {};
  96. let userList = [];
  97. let compilationList =[];
  98. let compilationString ='';
  99. let compilationMap = {};
  100. let filter = request.query;
  101. try {
  102. //获取编办列表
  103. let compilationModel = new CompilationModel();
  104. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  105. compilationString = JSON.stringify(compilationList);
  106. compilationMap = _.keyBy(compilationList,'_id');
  107. let condition = userModel.getFilterCondition(request);
  108. //设置搜索普通用户:
  109. condition.user_type = 'normal';
  110. //获取注册时间
  111. let regtime = request.query.regtime;
  112. if(regtime !== '' && regtime !== undefined){
  113. filter.regtimeMsg = userModel.getDayMsg(regtime);
  114. }
  115. //获取注册时间
  116. let loginTime = request.query.loginTime;
  117. if(loginTime !== '' && loginTime !== undefined){
  118. filter.loginMsg = userModel.getDayMsg(loginTime);
  119. }
  120. // 获取用户总数
  121. total = await userModel.count(condition);
  122. // 分页数据
  123. let page = request.query.page === undefined ? 1 : request.query.page;
  124. pageData = {
  125. current: page,
  126. total: Math.ceil(total / Config.pageSize),
  127. queryData: response.locals.urlQuery
  128. };
  129. // 获取用户列表
  130. userList = await userModel.getList(condition, page, Config.pageSize);
  131. } catch (error) {
  132. console.log(error);
  133. }
  134. // 用户管理二级菜单独立出来
  135. let secondMenu = response.locals.secondMenu;
  136. let userMenu = [];
  137. for (let second in secondMenu) {
  138. userMenu.push(secondMenu[second]);
  139. }
  140. // 渲染数据
  141. let renderData = {
  142. compilationList:compilationList,
  143. compilationString:compilationString,
  144. compilationMap:compilationMap,
  145. adminName:request.session.managerData?request.session.managerData.real_name:'',
  146. userList: userList,
  147. pages: pageData,
  148. total: total,
  149. filter: filter,
  150. model: userModel,
  151. userMenu: userMenu,
  152. layout: 'users/views/layout/layout',
  153. LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
  154. };
  155. response.render('users/views/user/test_user', renderData);
  156. }
  157. /**
  158. * 获取搜索用户json
  159. *
  160. * @param {object} request
  161. * @param {object} response
  162. * @return {string}
  163. */
  164. async search(request, response) {
  165. let userModel = new UserModel();
  166. let responseData = {
  167. error: 0,
  168. msg: '',
  169. data: null
  170. };
  171. try{
  172. let keyword = request.query.keyword;
  173. if(keyword === undefined || keyword === '') {
  174. throw { code: 1, err: '参数有误或为空'};
  175. }
  176. let condition = userModel.getFilterCondition(request);
  177. let userList = await userModel.getList(condition);
  178. responseData.data = userList;
  179. } catch (error) {
  180. console.log(error);
  181. responseData.error = error.code;
  182. responseData.msg = error.err;
  183. }
  184. response.json(responseData);
  185. }
  186. async findByID(request, response) {
  187. let params = JSON.parse(request.body.data),
  188. userIds = params.ID;
  189. let userModel = new UserModel();
  190. let responseData = {
  191. error: 0,
  192. msg: '',
  193. data: null
  194. };
  195. try{
  196. if(userIds === undefined || userIds === '') {
  197. throw { code: 1, err: '参数有误或为空'};
  198. }
  199. let user = await userModel.getByID({ _id: userIds});
  200. responseData.data = user;
  201. } catch (error) {
  202. console.log(error);
  203. responseData.error = error.code;
  204. responseData.msg = error.err;
  205. }
  206. response.json(responseData);
  207. }
  208. async getOnlineInfo(request, response){
  209. let filter = JSON.parse(request.body.data);
  210. let responseData = {
  211. error: 0,
  212. msg: '',
  213. data: null
  214. };
  215. try{
  216. let info = await online_facade.getOnlineInfo(filter);
  217. responseData.data = info;
  218. } catch (error) {
  219. console.log(error);
  220. responseData.error = error.code;
  221. responseData.msg = error.err;
  222. }
  223. response.json(responseData);
  224. }
  225. async updateUser(request, response) {
  226. let data = JSON.parse(request.body.data);
  227. let userModel = new UserModel();
  228. let responseData = {
  229. error: 0,
  230. msg: '',
  231. data: null
  232. };
  233. try{
  234. if(data.ID === undefined || data.ID === '') {
  235. throw { code: 1, err: '参数有误或为空'};
  236. }
  237. let user = await userModel.updateById(data.ID,data.updateData);
  238. responseData.data = user;
  239. } catch (error) {
  240. console.log(error);
  241. responseData.error = error.code;
  242. responseData.msg = error.err;
  243. }
  244. response.json(responseData);
  245. }
  246. async deleteUser(request, response) {
  247. let data = JSON.parse(request.body.data);
  248. let userModel = new UserModel();
  249. let responseData = {
  250. error: 0,
  251. message: '',
  252. data: null
  253. };
  254. try{
  255. let manager = request.session.managerData;
  256. if(manager.superAdmin !=1 ){
  257. throw { code: 1, message: '没有删除用户权限'};
  258. }
  259. responseData.data = await userModel.deleteUser(data.userID,manager.userID);
  260. } catch (error) {
  261. console.log(error);
  262. responseData.error = error.code;
  263. responseData.message = error.message;
  264. }
  265. response.json(responseData);
  266. }
  267. /**
  268. * 根据用户id列表获取用户信息列表 json
  269. *
  270. * @param {object} request
  271. * @param {object} response
  272. * @return {string}
  273. */
  274. async getUserList(request, response) {
  275. let params = JSON.parse(request.body.params),
  276. userIds = params.userIds;
  277. let userModel = new UserModel();
  278. let responseData = {
  279. error: 0,
  280. msg: '',
  281. data: null
  282. };
  283. try{
  284. if(userIds === undefined || userIds === '') {
  285. throw { code: 1, err: '参数有误或为空'};
  286. }
  287. let condition = {
  288. _id: {$in:userIds}
  289. };
  290. let userList = await userModel.getList(condition);
  291. responseData.data = userList;
  292. } catch (error) {
  293. console.log(error);
  294. responseData.error = error.code;
  295. responseData.msg = error.err;
  296. }
  297. response.json(responseData);
  298. }
  299. }
  300. export default UserController;