user_controller.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. /**
  2. * 用户相关控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/13
  6. * @version
  7. */
  8. import UserModel from "../models/user_model";
  9. import BaseController from "../../common/base/base_controller";
  10. import LogType from "../../common/const/log_type_const";
  11. import LogModel from "../models/log_model";
  12. import SettingModel from "../models/setting_model";
  13. import SettingType from "../../common/const/setting_type_const";
  14. import CompilationModel from "../models/compilation_model";
  15. import mongoose from "mongoose";
  16. import moment from "moment";
  17. class UserController extends BaseController {
  18. /**
  19. * 用户信息页面
  20. *
  21. * @param {object} request
  22. * @param {object} response
  23. * @return {void}
  24. */
  25. async info(request, response) {
  26. // 获取当前用户数据
  27. let sessionUser = request.session.sessionUser;
  28. let userModel = new UserModel();
  29. let userData = await userModel.findDataByName(sessionUser.username);
  30. userData = Object.keys(userData).length <= 0 ? [] : userData;
  31. let renderData = {
  32. userData: userData,
  33. provinceList: userModel.province,
  34. companyTypeList: userModel.companyType,
  35. companyScaleList: userModel.companyScale
  36. };
  37. response.render('users/html/user-info', renderData);
  38. }
  39. /**
  40. * 保存个人数据
  41. *
  42. * @param {object} request
  43. * @param {object} response
  44. * @return
  45. */
  46. async saveData(request, response) {
  47. try {
  48. let updateData = {
  49. real_name: request.body.real_name,
  50. province: request.body.province,
  51. company: request.body.company,
  52. company_type: request.body.company_type,
  53. company_scale: request.body.company_scale,
  54. version: request.body.version
  55. };
  56. let sessionUser = request.session.sessionUser;
  57. // 切换验证场景
  58. let userModel = new UserModel();
  59. let condition = {ssoId: sessionUser.ssoId};
  60. userModel.setScene('saveInfo');
  61. let result = await userModel.updateUser(condition, updateData);
  62. //更新session
  63. for(let attr in sessionUser){
  64. sessionUser[attr] = updateData[attr] ? updateData[attr] : sessionUser[attr];
  65. }
  66. if (result.ok !== 1) {
  67. throw '用户数据保存失败';
  68. }
  69. } catch (error) {
  70. return response.redirect(request.headers.referer);
  71. }
  72. response.redirect('/pm');
  73. }
  74. /**
  75. * 账号安全页面
  76. *
  77. * @param {object} request
  78. * @param {object} response
  79. * @return {void}
  80. */
  81. async safe(request, response) {
  82. let userData = [];
  83. let logList = [];
  84. let pageData = {};
  85. try {
  86. // 获取当前用户信息
  87. let sessionUser = request.session.sessionUser;
  88. let userModel = new UserModel();
  89. userData = await userModel.findDataByName(sessionUser.username);
  90. let page = request.query.page === undefined ? 1 : request.query.page;
  91. // 获取登录信息
  92. let logModel = new LogModel();
  93. let logCount = await logModel.count();
  94. let pageSize = 3;
  95. logList = await logModel.getLog(sessionUser.id, LogType.LOGIN_LOG, page, pageSize);
  96. // 分页数据
  97. pageData = {
  98. current: page,
  99. total: parseInt(logCount / pageSize),
  100. queryData: response.locals.urlQuery
  101. };
  102. } catch (error) {
  103. console.log(error);
  104. }
  105. let renderData = {
  106. userData: userData,
  107. logList: logList,
  108. pages: pageData
  109. };
  110. response.render('users/html/user-safe', renderData);
  111. }
  112. /**
  113. * 偏好设置页面
  114. *
  115. * @param {object} request
  116. * @param {object} response
  117. * @return {void}
  118. */
  119. async preferences(request, response) {
  120. let sessionUserData = request.session.sessionUser;
  121. let preferenceSetting = {};
  122. let compilationList = [];
  123. try {
  124. // 获取配置信息
  125. let settingModel = new SettingModel();
  126. preferenceSetting = await settingModel.getPreferenceSetting(sessionUserData.id);
  127. // 获取编办信息
  128. let compilationModel = new CompilationModel();
  129. compilationList = await compilationModel.getList();
  130. } catch(error) {
  131. console.log(error);
  132. }
  133. let renderData = {
  134. preferenceSetting: preferenceSetting,
  135. compilationList: compilationList
  136. };
  137. response.render('users/html/user-set', renderData);
  138. }
  139. /**
  140. * 保存偏好设置
  141. *
  142. * @param {object} request
  143. * @param {object} response
  144. * @return {void}
  145. */
  146. async savePreferences(request, response) {
  147. let loginAsk = request.body.login_ask;
  148. loginAsk = parseInt(loginAsk);
  149. let selectVersion = request.body.select_version;
  150. let sessionUserData = request.session.sessionUser;
  151. try {
  152. let data = {
  153. login_ask: loginAsk,
  154. select_version: loginAsk === 0 ? selectVersion : ''
  155. };
  156. let settingModel = new SettingModel();
  157. let result = await settingModel.save(sessionUserData.id, SettingType.PREFERENCE, data);
  158. if (!result) {
  159. throw '保存失败';
  160. }
  161. // 保存编办信息到session
  162. if (data.login_ask === 1) {
  163. // 查找对应编办
  164. let compilationModel = new CompilationModel();
  165. let compilationData = await compilationModel.getCompilationById(selectVersion);
  166. request.session.sessionCompilation = compilationData;
  167. }
  168. } catch (error) {
  169. console.log(error);
  170. }
  171. response.redirect(request.headers.referer);
  172. }
  173. /*
  174. * 版本激活
  175. * */
  176. async activateVersion(request, response){
  177. try{
  178. let userModel = new UserModel();
  179. let sessionUser = request.session.sessionUser;
  180. let data = JSON.parse(request.body.data);
  181. let activateCode = data.activateCode,
  182. activateCompilation = data.activateCompilation;
  183. let isActivated = true;//调激活接口
  184. if(!isActivated){
  185. throw '激活失败';
  186. }
  187. //激活成功,更新入库
  188. let userObjId = mongoose.Types.ObjectId(sessionUser.id);
  189. let versionInfo = {};
  190. versionInfo.compilationId = activateCompilation;
  191. versionInfo.activatedDate = moment(Date.now()).format('YYYY-MM-DD HH:mm:ss');
  192. await userModel.addVersion({_id: userObjId}, versionInfo);
  193. response.json({error: 0, msg: 'success'});
  194. }
  195. catch (error){
  196. response.json({error: 1, msg: error})
  197. }
  198. }
  199. /*
  200. * 更新版本状态
  201. * */
  202. async updateVersionState(request, response){
  203. try{
  204. let userModel = new UserModel();
  205. let activated = request.body.activated,
  206. userId = request.body.userId,
  207. compilationId = request.body.compilationId;
  208. if(activated){
  209. let versionInfo = {};
  210. versionInfo.compilationId = compilationId;
  211. versionInfo.activatedDate = moment(Date.now()).format('YYYY-MM-DD HH:mm:ss');
  212. await userModel.addVersion({_id: mongoose.Types.ObjectId(userId)}, versionInfo);
  213. }
  214. else{
  215. await userModel.removeVersion(userId, compilationId);
  216. }
  217. response.json({error: 0, msg: 'success'});
  218. }
  219. catch (error){
  220. response.json({error: 1, msg: error});
  221. }
  222. }
  223. /*
  224. * 获取用户版本信息
  225. * */
  226. async getVersionInfo(request, response){
  227. try{
  228. let userModel = new UserModel();
  229. let userId = request.session.sessionUser.id;
  230. let userData = await userModel.findDataById(userId);
  231. let versionInfo = userData ? userData.versionInfo ? userData.versionInfo : [] : [];
  232. response.json({error: 0, msg: 'success', data: versionInfo});
  233. }
  234. catch(error){
  235. response.json({error: 1, msg: error, data: null});
  236. }
  237. }
  238. }
  239. export default UserController;