SysUserController.cs 8.3 KB

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