AdminController.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System.Security.Claims;
  2. using System.Threading.Tasks;
  3. using GxPress.Api.Tools;
  4. using GxPress.Auth;
  5. using GxPress.Common.Page;
  6. using GxPress.Entity;
  7. using GxPress.EnumConst;
  8. using GxPress.Repository.Interface;
  9. using GxPress.Request.Admin;
  10. using GxPress.Result.Admin;
  11. using GxPress.Service.Interface.Role;
  12. using Microsoft.AspNetCore.Authorization;
  13. using Microsoft.AspNetCore.Http;
  14. using Microsoft.AspNetCore.Mvc;
  15. using Microsoft.Extensions.Logging;
  16. using Microsoft.Extensions.Options;
  17. namespace GxPress.Api.AdminControllers
  18. {
  19. /// <summary>
  20. /// 管理员
  21. /// </summary>
  22. [Route("api/admin/admin")]
  23. [ApiController]
  24. [Authorize(Roles = Roles.Admin)]
  25. public class AdminController : ControllerBase
  26. {
  27. private readonly JwtOptions _jwtOptions;
  28. private readonly ILogger<AdminController> _logger;
  29. private readonly IAdminRepository _adminRepository;
  30. private readonly IRoleService roleService;
  31. private readonly IHttpContextAccessor httpContextAccessor;
  32. public AdminController(IOptions<JwtOptions> jwtOptions, ILogger<AdminController> logger, IAdminRepository adminRepository, IRoleService roleService, IHttpContextAccessor httpContextAccessor)
  33. {
  34. _jwtOptions = jwtOptions.Value;
  35. _logger = logger;
  36. _adminRepository = adminRepository;
  37. this.roleService = roleService;
  38. }
  39. /// <summary>
  40. /// 登录
  41. /// </summary>
  42. /// <param name="request"></param>
  43. /// <returns></returns>
  44. [HttpPost("signin")]
  45. [AllowAnonymous]
  46. public async Task<AdminSignInResult> SignIn(AdminSignInRequest request)
  47. {
  48. request.Ip = httpContextAccessor.HttpContext.Connection.LocalIpAddress.ToString();
  49. var result = await _adminRepository.SignInAsync(request);
  50. //获取菜单
  51. result.MenuInResult = await roleService.GetMenusAllAsync(result.RoleId);
  52. var claims = new[]
  53. {
  54. new Claim(ClaimTypes.NameIdentifier,result.AdminId.ToString()),
  55. new Claim(ClaimTypes.Role,AccountTypeConst.Admin.ToString()),
  56. new Claim(ClaimTypes.Actor,result.Name)
  57. };
  58. result.Token = TokenHelper.BuildToken(_jwtOptions, claims);
  59. _logger.LogInformation("admin token:{token}", result.Token);
  60. return result;
  61. }
  62. /// <summary>
  63. /// 注册
  64. /// </summary>
  65. /// <param name="request"></param>
  66. /// <returns></returns>
  67. [HttpPost("signup")]
  68. public async Task<int> SignUp([FromBody] AdminSignUpRequest request)
  69. {
  70. return await _adminRepository.SignUpAsync(request);
  71. }
  72. /// <summary>
  73. /// 删除
  74. /// </summary>
  75. /// <param name="id"></param>
  76. /// <returns></returns>
  77. [HttpDelete("{id}")]
  78. public async Task<bool> Delete(int id)
  79. {
  80. return await _adminRepository.DeleteAsync(id);
  81. }
  82. /// <summary>
  83. /// 详情
  84. /// </summary>
  85. /// <param name="id"></param>
  86. /// <returns></returns>
  87. [HttpGet("{id}")]
  88. public async Task<AdminDetailResult> Get(int id)
  89. {
  90. return await _adminRepository.GetDetailAsync(id);
  91. }
  92. /// <summary>
  93. /// 修改
  94. /// </summary>
  95. /// <param name="id"></param>
  96. /// <param name="request"></param>
  97. /// <returns></returns>
  98. [HttpPut("{id}")]
  99. public async Task<bool> Update(int id, [FromBody] Admin request)
  100. {
  101. return await _adminRepository.UpdateAsync(id, request);
  102. }
  103. /// <summary>
  104. /// 分页列表
  105. /// </summary>
  106. /// <param name="request"></param>
  107. /// <returns></returns>
  108. [HttpPost("page")]
  109. public async Task<PagedList<AdminPageResult>> GetPagedList([FromBody] AdminPageSearchRequest request)
  110. {
  111. var result = await _adminRepository.GetPagedList(request);
  112. foreach (var item in result.Items)
  113. {
  114. //获取菜单
  115. item.MenuInResult = await roleService.GetMenusAllAsync(item.RoleId);
  116. }
  117. return result;
  118. }
  119. /// <summary>
  120. /// 修改密码
  121. /// </summary>
  122. /// <param name="request"></param>
  123. /// <returns></returns>
  124. [HttpPut("updatepassword")]
  125. public async Task<bool> UpdatePassWord([FromBody] AdminUpdatePassWordRequest request)
  126. {
  127. return await _adminRepository.UpdatePassWord(request);
  128. }
  129. /// <summary>
  130. /// 修改密码
  131. /// </summary>
  132. /// <param name="request"></param>
  133. /// <returns></returns>
  134. [HttpPut("admin-update-password")]
  135. public async Task<bool> AdminUpdatePassWord([FromBody] AdminUpdatePassWordRequest request)
  136. {
  137. return await _adminRepository.AdminUpdatePassWord(request);
  138. }
  139. }
  140. }