user_controller.js 10 KB

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