SysProfileController.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using Infrastructure.Enums;
  4. using Infrastructure.Model;
  5. using Mapster;
  6. using Microsoft.AspNetCore.Hosting;
  7. using Microsoft.AspNetCore.Http;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.Extensions.Options;
  10. using System;
  11. using System.Threading.Tasks;
  12. using ZR.Admin.WebApi.Extensions;
  13. using ZR.Admin.WebApi.Filters;
  14. using ZR.Model.System;
  15. using ZR.Model.System.Dto;
  16. using ZR.Service.System.IService;
  17. namespace ZR.Admin.WebApi.Controllers.System
  18. {
  19. /// <summary>
  20. /// 个人中心
  21. /// </summary>
  22. [Verify]
  23. [Route("system/user/profile")]
  24. public class SysProfileController : BaseController
  25. {
  26. private readonly ISysUserService UserService;
  27. private readonly ISysRoleService RoleService;
  28. private readonly ISysUserPostService UserPostService;
  29. private readonly ISysDeptService DeptService;
  30. private readonly ISysFileService FileService;
  31. private IWebHostEnvironment hostEnvironment;
  32. public SysProfileController(
  33. ISysUserService userService,
  34. ISysRoleService roleService,
  35. ISysUserPostService postService,
  36. ISysDeptService deptService,
  37. ISysFileService sysFileService,
  38. IWebHostEnvironment hostEnvironment)
  39. {
  40. UserService = userService;
  41. RoleService = roleService;
  42. UserPostService = postService;
  43. DeptService = deptService;
  44. FileService = sysFileService;
  45. this.hostEnvironment = hostEnvironment;
  46. }
  47. /// <summary>
  48. /// 个人中心用户信息获取
  49. /// </summary>
  50. /// <returns></returns>
  51. [HttpGet]
  52. public IActionResult Profile()
  53. {
  54. long userId = HttpContext.GetUId();
  55. var user = UserService.SelectUserById(userId);
  56. var roles = RoleService.SelectUserRoleNames(userId);
  57. var postGroup = UserPostService.GetPostsStrByUserId(userId);
  58. var deptInfo = DeptService.GetFirst(f => f.DeptId == user.DeptId);
  59. user.DeptName = deptInfo?.DeptName ?? "-";
  60. return SUCCESS(new { user, roles, postGroup }, TIME_FORMAT_FULL);
  61. }
  62. /// <summary>
  63. /// 修改用户
  64. /// </summary>
  65. /// <returns></returns>
  66. [HttpPut]
  67. [ActionPermissionFilter(Permission = "common")]
  68. [Log(Title = "修改信息", BusinessType = BusinessType.UPDATE)]
  69. public IActionResult UpdateProfile([FromBody] SysUserDto userDto)
  70. {
  71. if (userDto == null)
  72. {
  73. throw new CustomException(ResultCode.PARAM_ERROR, "请求参数错误");
  74. }
  75. var user = userDto.Adapt<SysUser>().ToUpdate(HttpContext);
  76. int result = UserService.ChangeUser(user);
  77. return ToResponse(result);
  78. }
  79. /// <summary>
  80. /// 修改密码
  81. /// </summary>
  82. /// <returns></returns>
  83. [HttpPut("updatePwd")]
  84. [ActionPermissionFilter(Permission = "common")]
  85. [Log(Title = "修改密码", BusinessType = BusinessType.UPDATE)]
  86. public IActionResult UpdatePwd(string oldPassword, string newPassword)
  87. {
  88. LoginUser loginUser = Framework.JwtUtil.GetLoginUser(HttpContext);
  89. SysUser user = UserService.SelectUserById(loginUser.UserId);
  90. string oldMd5 = NETCore.Encrypt.EncryptProvider.Md5(oldPassword);
  91. string newMd5 = NETCore.Encrypt.EncryptProvider.Md5(newPassword);
  92. if (!user.Password.Equals(oldMd5, StringComparison.OrdinalIgnoreCase))
  93. {
  94. return ToResponse(ApiResult.Error("修改密码失败,旧密码错误"));
  95. }
  96. if (user.Password.Equals(newMd5, StringComparison.OrdinalIgnoreCase))
  97. {
  98. return ToResponse(ApiResult.Error("新密码不能和旧密码相同"));
  99. }
  100. if (UserService.ResetPwd(loginUser.UserId, newMd5.ToLower()) > 0)
  101. {
  102. //TODO 更新缓存
  103. return SUCCESS(1);
  104. }
  105. return ToResponse(ApiResult.Error("修改密码异常,请联系管理员"));
  106. }
  107. /// <summary>
  108. /// 修改头像
  109. /// </summary>
  110. /// <param name="formFile"></param>
  111. /// <returns></returns>
  112. [HttpPost("Avatar")]
  113. [ActionPermissionFilter(Permission = "common")]
  114. [Log(Title = "修改头像", BusinessType = BusinessType.UPDATE, IsSaveRequestData = false)]
  115. public async Task<IActionResult> Avatar([FromForm(Name = "picture")] IFormFile formFile)
  116. {
  117. LoginUser loginUser = Framework.JwtUtil.GetLoginUser(HttpContext);
  118. if (formFile == null) throw new CustomException("请选择文件");
  119. SysFile file = await FileService.SaveFileToLocal(hostEnvironment.WebRootPath, "", "avatar", HttpContext.GetName(), formFile);
  120. UserService.UpdatePhoto(new SysUser() { Avatar = file.AccessUrl, UserId = loginUser.UserId });
  121. return SUCCESS(new { imgUrl = file.AccessUrl });
  122. }
  123. }
  124. }