profile_controller.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. /**
  3. * 账号相关控制器
  4. *
  5. * @author CaiAoLin
  6. * @date 2018/1/26
  7. * @version
  8. */
  9. module.exports = app => {
  10. class ProfileController extends app.BaseController {
  11. /**
  12. * 账号资料页面
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @return {void}
  16. */
  17. async info(ctx) {
  18. // 获取当前用户数据
  19. const sessionUser = ctx.session.sessionUser;
  20. // 获取账号数据
  21. const accountData = await ctx.service.projectAccount.getDataByCondition({ id: sessionUser.accountId });
  22. // 获取基础数据的字段规则
  23. let baseRule = ctx.service.projectAccount.rule('profileBase');
  24. baseRule = ctx.helper.validateConvert(baseRule);
  25. const renderData = {
  26. accountData,
  27. baseRule: JSON.stringify(baseRule),
  28. };
  29. await this.layout('profile/info.ejs', renderData);
  30. }
  31. /**
  32. * 保存基本信息
  33. *
  34. * @param {Object} ctx - egg全局变量
  35. * @return {void}
  36. */
  37. async saveBase(ctx) {
  38. try {
  39. // 获取当前用户数据
  40. const sessionUser = ctx.session.sessionUser;
  41. // 获取基础数据的字段规则
  42. const baseRule = ctx.service.projectAccount.rule('profileBase');
  43. ctx.helper.validate(baseRule);
  44. const result = await ctx.service.projectAccount.save(ctx.request.body, sessionUser.accountId);
  45. if (!result) {
  46. throw '保存信息失败';
  47. }
  48. this.setMessage('修改成功', this.messageType.SUCCESS);
  49. } catch (error) {
  50. console.log(error);
  51. this.setMessage(error.toString(), this.messageType.ERROR);
  52. }
  53. ctx.redirect(ctx.request.headers.referer);
  54. }
  55. }
  56. return ProfileController;
  57. };