user_controller.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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 VersionModel from "../models/version_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 = {email: sessionUser.email};
  58. userModel.setScene('saveInfo');
  59. let result = await userModel.updateUser(condition, updateData);
  60. if (result.ok !== 1) {
  61. throw '用户数据保存失败';
  62. }
  63. } catch (error) {
  64. return response.redirect(request.headers.referer);
  65. }
  66. response.redirect('/pm');
  67. }
  68. /**
  69. * 账号安全页面
  70. *
  71. * @param {object} request
  72. * @param {object} response
  73. * @return {void}
  74. */
  75. async safe(request, response) {
  76. let userData = [];
  77. let logList = [];
  78. let pageData = {};
  79. try {
  80. // 获取当前用户信息
  81. let sessionUser = request.session.sessionUser;
  82. let userModel = new UserModel();
  83. userData = await userModel.findDataByName(sessionUser.username);
  84. userData = userData.length <= 0 ? [] : userData[0];
  85. let page = request.query.page === undefined ? 1 : request.query.page;
  86. // 获取登录信息
  87. let logModel = new LogModel();
  88. let logCount = await logModel.count();
  89. let pageSize = 3;
  90. logList = await logModel.getLog(sessionUser.id, LogType.LOGIN_LOG, page, pageSize);
  91. // 分页数据
  92. pageData = {
  93. current: page,
  94. total: parseInt(logCount / pageSize),
  95. queryData: response.locals.urlQuery
  96. };
  97. } catch (error) {
  98. console.log(error);
  99. }
  100. let renderData = {
  101. userData: userData,
  102. logList: logList,
  103. pages: pageData
  104. };
  105. response.render('users/html/user-safe', renderData);
  106. }
  107. /**
  108. * 偏好设置页面
  109. *
  110. * @param {object} request
  111. * @param {object} response
  112. * @return {void}
  113. */
  114. async preferences(request, response) {
  115. let sessionUserData = request.session.sessionUser;
  116. let preferenceSetting = {};
  117. let versionList = [];
  118. try {
  119. // 获取配置信息
  120. let settingModel = new SettingModel();
  121. preferenceSetting = await settingModel.getPreferenceSetting(sessionUserData.id);
  122. // 获取版本信息
  123. let versionModel = new VersionModel();
  124. versionList = await versionModel.getVersionData();
  125. } catch(error) {
  126. console.log(error);
  127. }
  128. let renderData = {
  129. preferenceSetting: preferenceSetting,
  130. versionList: versionList
  131. };
  132. response.render('users/html/user-set', renderData);
  133. }
  134. /**
  135. * 保存偏好设置
  136. *
  137. * @param {object} request
  138. * @param {object} response
  139. * @return {void}
  140. */
  141. async savePreferences(request, response) {
  142. let loginAsk = request.body.login_ask;
  143. loginAsk = parseInt(loginAsk);
  144. let selectVersion = request.body.select_version;
  145. let sessionUserData = request.session.sessionUser;
  146. try {
  147. let data = {
  148. login_ask: loginAsk,
  149. select_version: loginAsk === 0 ? selectVersion : ''
  150. };
  151. let settingModel = new SettingModel();
  152. let result = await settingModel.save(sessionUserData.id, SettingType.PREFERENCE, data);
  153. if (!result) {
  154. throw '保存失败';
  155. }
  156. } catch (error) {
  157. console.log(error);
  158. }
  159. response.redirect(request.headers.referer);
  160. }
  161. }
  162. export default UserController;