AdminController.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.aijiuyi.admin.controller;
  2. import com.aijiuyi.admin.common.annotation.Log;
  3. import com.aijiuyi.admin.common.entity.Result;
  4. import com.aijiuyi.admin.common.enums.OperationType;
  5. import com.aijiuyi.admin.controller.dto.AdminQueryDTO;
  6. import com.aijiuyi.admin.entity.AdminUser;
  7. import com.aijiuyi.admin.service.AdminService;
  8. import com.baomidou.mybatisplus.core.metadata.IPage;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.web.bind.annotation.*;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. /**
  15. * 管理员管理 Controller
  16. * 提供管理员账号的增删改查、状态管理及页面权限配置接口
  17. */
  18. @RestController
  19. @RequestMapping("/admin")
  20. public class AdminController {
  21. @Autowired
  22. private AdminService adminService;
  23. /**
  24. * 分页查询管理员列表
  25. *
  26. * @param queryDTO 查询参数(用户名/姓名模糊、角色、状态)
  27. * @return 分页管理员列表
  28. */
  29. @GetMapping("/page")
  30. @Log(value = "查询管理员列表", module = "管理员管理", operationType = OperationType.QUERY)
  31. public Result<IPage<AdminUser>> page(AdminQueryDTO queryDTO) {
  32. return Result.success(adminService.pageList(queryDTO));
  33. }
  34. /**
  35. * 查询管理员详情
  36. *
  37. * @param id 管理员ID
  38. * @return 管理员信息
  39. */
  40. @GetMapping("/{id}")
  41. @Log(value = "查询管理员详情", module = "管理员管理", operationType = OperationType.QUERY)
  42. public Result<AdminUser> getById(@PathVariable Long id) {
  43. return Result.success(adminService.getById(id));
  44. }
  45. /**
  46. * 新增管理员
  47. *
  48. * @param admin 管理员信息(username/password/nickname/adminRole/status 必填,phone 选填)
  49. * @return 操作结果
  50. */
  51. @PostMapping
  52. @Log(value = "新增管理员", module = "管理员管理", operationType = OperationType.INSERT)
  53. public Result<Void> add(@RequestBody AdminUser admin) {
  54. adminService.addAdmin(admin);
  55. return Result.success();
  56. }
  57. /**
  58. * 修改管理员信息
  59. *
  60. * @param admin 管理员信息(需携带 id;密码为空则不修改)
  61. * @return 操作结果
  62. */
  63. @PutMapping
  64. @Log(value = "修改管理员信息", module = "管理员管理", operationType = OperationType.UPDATE)
  65. public Result<Void> update(@RequestBody AdminUser admin) {
  66. adminService.updateAdmin(admin);
  67. return Result.success();
  68. }
  69. /**
  70. * 删除管理员(逻辑删除,超级管理员不可删除)
  71. *
  72. * @param id 管理员ID
  73. * @return 操作结果
  74. */
  75. @DeleteMapping("/{id}")
  76. @Log(value = "删除管理员", module = "管理员管理", operationType = OperationType.DELETE)
  77. public Result<Void> delete(@PathVariable Long id) {
  78. adminService.deleteAdmin(id);
  79. return Result.success();
  80. }
  81. /**
  82. * 批量删除管理员
  83. *
  84. * @param ids 管理员ID列表
  85. * @return 操作结果
  86. */
  87. @DeleteMapping("/batch")
  88. @Log(value = "批量删除管理员", module = "管理员管理", operationType = OperationType.DELETE)
  89. public Result<Void> batchDelete(@RequestBody List<Long> ids) {
  90. adminService.batchDeleteAdmin(ids);
  91. return Result.success();
  92. }
  93. /**
  94. * 修改管理员状态(禁用/启用)
  95. *
  96. * @param id 管理员ID
  97. * @param status 目标状态:1=启用,0=禁用
  98. * @return 操作结果
  99. */
  100. @PutMapping("/{id}/status")
  101. @Log(value = "修改管理员状态", module = "管理员管理", operationType = OperationType.UPDATE)
  102. public Result<Void> updateStatus(@PathVariable Long id, @RequestParam Integer status) {
  103. adminService.updateStatus(id, status);
  104. return Result.success();
  105. }
  106. /**
  107. * 查询管理员权限路由列表
  108. * 超级管理员返回 null,前端视为全部权限
  109. *
  110. * @param id 管理员ID
  111. * @return 路由路径 JSON 数组字符串
  112. */
  113. @GetMapping("/{id}/permission")
  114. @Log(value = "查询管理员权限", module = "管理员管理", operationType = OperationType.QUERY)
  115. public Result<Map<String, Object>> getPermission(@PathVariable Long id) {
  116. String routePaths = adminService.getPermissions(id);
  117. Map<String, Object> result = new HashMap<>(2);
  118. result.put("routePaths", routePaths);
  119. return Result.success(result);
  120. }
  121. /**
  122. * 更新管理员权限路由列表
  123. *
  124. * @param id 管理员ID
  125. * @param payload 请求体,包含 routePaths(JSON数组字符串)
  126. * @return 操作结果
  127. */
  128. @PutMapping("/{id}/permission")
  129. @Log(value = "更新管理员权限", module = "管理员管理", operationType = OperationType.UPDATE)
  130. public Result<Void> updatePermission(@PathVariable Long id, @RequestBody Map<String, String> payload) {
  131. adminService.updatePermissions(id, payload.get("routePaths"));
  132. return Result.success();
  133. }
  134. }