user_controller.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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. class UserController extends BaseController {
  16. /**
  17. * 用户信息页面
  18. *
  19. * @param {object} request
  20. * @param {object} response
  21. * @return {void}
  22. */
  23. async info(request, response) {
  24. // 获取当前用户数据
  25. let sessionUser = request.session.sessionUser;
  26. let userModel = new UserModel();
  27. let userData = await userModel.findDataByName(sessionUser.username);
  28. userData = Object.keys(userData).length <= 0 ? [] : userData;
  29. let renderData = {
  30. userData: userData,
  31. provinceList: userModel.province,
  32. companyTypeList: userModel.companyType,
  33. companyScaleList: userModel.companyScale
  34. };
  35. response.render('users/html/user-info', renderData);
  36. }
  37. /**
  38. * 保存个人数据
  39. *
  40. * @param {object} request
  41. * @param {object} response
  42. * @return
  43. */
  44. async saveData(request, response) {
  45. try {
  46. let updateData = {
  47. real_name: request.body.real_name,
  48. province: request.body.province,
  49. company: request.body.company,
  50. company_type: request.body.company_type,
  51. company_scale: request.body.company_scale,
  52. version: request.body.version
  53. };
  54. let sessionUser = request.session.sessionUser;
  55. // 切换验证场景
  56. let userModel = new UserModel();
  57. let condition = {ssoId: sessionUser.ssoId};
  58. userModel.setScene('saveInfo');
  59. let result = await userModel.updateUser(condition, updateData);
  60. //更新session
  61. for(let attr in sessionUser){
  62. sessionUser[attr] = updateData[attr] ? updateData[attr] : sessionUser[attr];
  63. }
  64. if (result.ok !== 1) {
  65. throw '用户数据保存失败';
  66. }
  67. } catch (error) {
  68. return response.redirect(request.headers.referer);
  69. }
  70. response.redirect('/pm');
  71. }
  72. /**
  73. * 账号安全页面
  74. *
  75. * @param {object} request
  76. * @param {object} response
  77. * @return {void}
  78. */
  79. async safe(request, response) {
  80. let userData = [];
  81. let logList = [];
  82. let pageData = {};
  83. try {
  84. // 获取当前用户信息
  85. let sessionUser = request.session.sessionUser;
  86. let userModel = new UserModel();
  87. userData = await userModel.findDataByName(sessionUser.username);
  88. let page = request.query.page === undefined ? 1 : request.query.page;
  89. // 获取登录信息
  90. let logModel = new LogModel();
  91. let logCount = await logModel.count();
  92. let pageSize = 3;
  93. logList = await logModel.getLog(sessionUser.id, LogType.LOGIN_LOG, page, pageSize);
  94. // 分页数据
  95. pageData = {
  96. current: page,
  97. total: parseInt(logCount / pageSize),
  98. queryData: response.locals.urlQuery
  99. };
  100. } catch (error) {
  101. console.log(error);
  102. }
  103. let renderData = {
  104. userData: userData,
  105. logList: logList,
  106. pages: pageData
  107. };
  108. response.render('users/html/user-safe', renderData);
  109. }
  110. /**
  111. * 偏好设置页面
  112. *
  113. * @param {object} request
  114. * @param {object} response
  115. * @return {void}
  116. */
  117. async preferences(request, response) {
  118. let sessionUserData = request.session.sessionUser;
  119. let preferenceSetting = {};
  120. let compilationList = [];
  121. try {
  122. // 获取配置信息
  123. let settingModel = new SettingModel();
  124. preferenceSetting = await settingModel.getPreferenceSetting(sessionUserData.id);
  125. // 获取编办信息
  126. let compilationModel = new CompilationModel();
  127. compilationList = await compilationModel.getList();
  128. } catch(error) {
  129. console.log(error);
  130. }
  131. let renderData = {
  132. preferenceSetting: preferenceSetting,
  133. compilationList: compilationList
  134. };
  135. response.render('users/html/user-set', renderData);
  136. }
  137. /**
  138. * 保存偏好设置
  139. *
  140. * @param {object} request
  141. * @param {object} response
  142. * @return {void}
  143. */
  144. async savePreferences(request, response) {
  145. let loginAsk = request.body.login_ask;
  146. loginAsk = parseInt(loginAsk);
  147. let selectVersion = request.body.select_version;
  148. let sessionUserData = request.session.sessionUser;
  149. try {
  150. let data = {
  151. login_ask: loginAsk,
  152. select_version: loginAsk === 0 ? selectVersion : ''
  153. };
  154. let settingModel = new SettingModel();
  155. let result = await settingModel.save(sessionUserData.id, SettingType.PREFERENCE, data);
  156. if (!result) {
  157. throw '保存失败';
  158. }
  159. // 保存编办信息到session
  160. if (data.login_ask === 1) {
  161. // 查找对应编办
  162. let compilationModel = new CompilationModel();
  163. let compilationData = await compilationModel.getCompilationById(selectVersion);
  164. request.session.sessionCompilation = compilationData;
  165. }
  166. } catch (error) {
  167. console.log(error);
  168. }
  169. response.redirect(request.headers.referer);
  170. }
  171. }
  172. export default UserController;