SysUserController.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. using Attribute;
  2. using Common;
  3. using Dto;
  4. using Enums;
  5. using Filters;
  6. using Infrastructure;
  7. using Infrastructure.Model;
  8. using Mapster;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. using Middleware;
  12. using MiniExcelLibs;
  13. using Model;
  14. using Model.Base;
  15. using Services;
  16. namespace Controllers
  17. {
  18. /// <summary>
  19. /// 用户管理
  20. /// </summary>
  21. [Verify]
  22. [Route("system/user")]
  23. [ApiExplorerSettings(GroupName = "sys")]
  24. public class SysUserController : BaseController
  25. {
  26. private readonly ISysUserService UserService;
  27. private readonly ISysRoleService RoleService;
  28. private readonly ISysPostService PostService;
  29. private readonly ISysUserPostService UserPostService;
  30. public SysUserController(
  31. ISysUserService userService,
  32. ISysRoleService roleService,
  33. ISysPostService postService,
  34. ISysUserPostService userPostService)
  35. {
  36. UserService = userService;
  37. RoleService = roleService;
  38. PostService = postService;
  39. UserPostService = userPostService;
  40. }
  41. /// <summary>
  42. /// 用户管理 -> 获取用户
  43. /// /system/user/list
  44. /// </summary>
  45. /// <returns></returns>
  46. [ActionPermissionFilter(Permission = "system:user:list")]
  47. [HttpGet("list")]
  48. public IActionResult List([FromQuery] SysUserQueryDto user, PagerInfo pager)
  49. {
  50. var list = UserService.SelectUserList(user, pager);
  51. return SUCCESS(list);
  52. }
  53. /// <summary>
  54. /// 用户管理 -> 编辑、添加用户获取用户,信息查询
  55. /// </summary>
  56. /// <param name="userId"></param>
  57. /// <returns></returns>
  58. [HttpGet("")]
  59. [HttpGet("{userId:int=0}")]
  60. [ActionPermissionFilter(Permission = "system:user:query")]
  61. public IActionResult GetInfo(int userId)
  62. {
  63. Dictionary<string, object> dic = new();
  64. var roles = RoleService.SelectRoleAll();
  65. dic.Add("roles", roles);
  66. //dic.Add("roles", SysUser.IsAdmin(userId) ? roles : roles.FindAll(f => !f.IsAdmin()));
  67. dic.Add("posts", PostService.GetAll());
  68. //编辑
  69. if (userId > 0)
  70. {
  71. SysUser sysUser = UserService.SelectUserById(userId);
  72. dic.Add("user", sysUser);
  73. dic.Add("postIds", UserPostService.GetUserPostsByUserId(userId));
  74. dic.Add("roleIds", sysUser.RoleIds);
  75. }
  76. return SUCCESS(dic);
  77. }
  78. /// <summary>
  79. /// 添加用户
  80. /// </summary>
  81. /// <param name="parm"></param>
  82. /// <returns></returns>
  83. [HttpPost("add")]
  84. [Log(Title = "用户管理", BusinessType = BusinessType.INSERT)]
  85. [ActionPermissionFilter(Permission = "system:user:add")]
  86. public IActionResult AddUser([FromBody] SysUserDto parm)
  87. {
  88. var user = parm.Adapt<SysUser>().ToCreate(HttpContext);
  89. if (user == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
  90. if (UserConstants.NOT_UNIQUE.Equals(UserService.CheckUserNameUnique(user.Username)))
  91. {
  92. return ToResponse(ApiResult.Error($"新增用户 '{user.Username}'失败,登录账号已存在"));
  93. }
  94. user.Password = Function.MD532(user.Password);
  95. return SUCCESS(UserService.InsertUser(user));
  96. }
  97. /// <summary>
  98. /// 修改用户
  99. /// </summary>
  100. /// <param name="parm"></param>
  101. /// <returns></returns>
  102. [HttpPut("edit")]
  103. [Log(Title = "用户管理", BusinessType = BusinessType.UPDATE)]
  104. [ActionPermissionFilter(Permission = "system:user:edit")]
  105. public IActionResult UpdateUser([FromBody] SysUserDto parm)
  106. {
  107. var user = parm.Adapt<SysUser>().ToUpdate(HttpContext);
  108. if (user == null || user.UserId <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
  109. int upResult = UserService.UpdateUser(user);
  110. return ToResponse(upResult);
  111. }
  112. /// <summary>
  113. /// 改变用户状态
  114. /// </summary>
  115. /// <param name="user"></param>
  116. /// <returns></returns>
  117. [HttpPut("changeStatus")]
  118. [Log(Title = "修改用户状态", BusinessType = BusinessType.UPDATE)]
  119. [ActionPermissionFilter(Permission = "system:user:update")]
  120. public IActionResult ChangeStatus([FromBody] SysUser user)
  121. {
  122. if (user == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
  123. int result = UserService.ChangeUserStatus(user);
  124. return ToResponse(result);
  125. }
  126. /// <summary>
  127. /// 删除用户
  128. /// </summary>
  129. /// <param name="userid"></param>
  130. /// <returns></returns>
  131. [HttpDelete("{userId}")]
  132. [Log(Title = "用户管理", BusinessType = BusinessType.DELETE)]
  133. [ActionPermissionFilter(Permission = "system:user:remove")]
  134. public IActionResult Remove(int userid = 0)
  135. {
  136. if (userid <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
  137. if (userid == 1) return ToResponse(ResultCode.FAIL, "不能删除管理员账号");
  138. int result = UserService.DeleteUser(userid);
  139. return ToResponse(result);
  140. }
  141. /// <summary>
  142. /// 重置密码
  143. /// </summary>
  144. /// <returns></returns>
  145. [HttpPut("resetPwd")]
  146. [Log(Title = "重置密码", BusinessType = BusinessType.UPDATE)]
  147. [ActionPermissionFilter(Permission = "system:user:resetPwd")]
  148. public IActionResult ResetPwd([FromBody] SysUserDto sysUser)
  149. {
  150. //密码md5
  151. sysUser.Password = Function.MD532(sysUser.Password);
  152. int result = UserService.ResetPwd(sysUser.UserId, sysUser.Password);
  153. return ToResponse(result);
  154. }
  155. /// <summary>
  156. /// 导入
  157. /// </summary>
  158. /// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
  159. /// <returns></returns>
  160. [HttpPost("importData")]
  161. [Log(Title = "用户导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)]
  162. [ActionPermissionFilter(Permission = "system:user:import")]
  163. public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
  164. {
  165. List<SysUser> users = new();
  166. using (var stream = formFile.OpenReadStream())
  167. {
  168. users = stream.Query<SysUser>(startCell: "A2").ToList();
  169. }
  170. return SUCCESS(UserService.ImportUsers(users));
  171. }
  172. /// <summary>
  173. /// 用户导入模板下载
  174. /// </summary>
  175. /// <returns></returns>
  176. [HttpGet("importTemplate")]
  177. [Log(Title = "用户模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)]
  178. [AllowAnonymous]
  179. public IActionResult ImportTemplateExcel()
  180. {
  181. (string, string) result = DownloadImportTemplate("user");
  182. return ExportExcel(result.Item2, result.Item1);
  183. }
  184. /// <summary>
  185. /// 用户导出
  186. /// </summary>
  187. /// <param name="user"></param>
  188. /// <returns></returns>
  189. [HttpGet("export")]
  190. [Log(Title = "用户导出", BusinessType = BusinessType.EXPORT)]
  191. [ActionPermissionFilter(Permission = "system:user:export")]
  192. public IActionResult UserExport([FromQuery] SysUserQueryDto user)
  193. {
  194. var list = UserService.SelectUserList(user, new PagerInfo(1, 10000));
  195. var result = ExportExcelMini(list.Result, "user", "用户列表");
  196. return ExportExcel(result.Item2, result.Item1);
  197. }
  198. }
  199. }