SysProfileController.cs 4.8 KB

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