package com.aijiuyi.admin.controller; import com.aijiuyi.admin.common.annotation.Log; import com.aijiuyi.admin.common.entity.Result; import com.aijiuyi.admin.common.enums.OperationType; import com.aijiuyi.admin.controller.dto.AdminQueryDTO; import com.aijiuyi.admin.entity.AdminUser; import com.aijiuyi.admin.service.AdminService; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 管理员管理 Controller * 提供管理员账号的增删改查、状态管理及页面权限配置接口 */ @RestController @RequestMapping("/admin") public class AdminController { @Autowired private AdminService adminService; /** * 分页查询管理员列表 * * @param queryDTO 查询参数(用户名/姓名模糊、角色、状态) * @return 分页管理员列表 */ @GetMapping("/page") @Log(value = "查询管理员列表", module = "管理员管理", operationType = OperationType.QUERY) public Result> page(AdminQueryDTO queryDTO) { return Result.success(adminService.pageList(queryDTO)); } /** * 查询管理员详情 * * @param id 管理员ID * @return 管理员信息 */ @GetMapping("/{id}") @Log(value = "查询管理员详情", module = "管理员管理", operationType = OperationType.QUERY) public Result getById(@PathVariable Long id) { return Result.success(adminService.getById(id)); } /** * 新增管理员 * * @param admin 管理员信息(username/password/nickname/adminRole/status 必填,phone 选填) * @return 操作结果 */ @PostMapping @Log(value = "新增管理员", module = "管理员管理", operationType = OperationType.INSERT) public Result add(@RequestBody AdminUser admin) { adminService.addAdmin(admin); return Result.success(); } /** * 修改管理员信息 * * @param admin 管理员信息(需携带 id;密码为空则不修改) * @return 操作结果 */ @PutMapping @Log(value = "修改管理员信息", module = "管理员管理", operationType = OperationType.UPDATE) public Result update(@RequestBody AdminUser admin) { adminService.updateAdmin(admin); return Result.success(); } /** * 删除管理员(逻辑删除,超级管理员不可删除) * * @param id 管理员ID * @return 操作结果 */ @DeleteMapping("/{id}") @Log(value = "删除管理员", module = "管理员管理", operationType = OperationType.DELETE) public Result delete(@PathVariable Long id) { adminService.deleteAdmin(id); return Result.success(); } /** * 批量删除管理员 * * @param ids 管理员ID列表 * @return 操作结果 */ @DeleteMapping("/batch") @Log(value = "批量删除管理员", module = "管理员管理", operationType = OperationType.DELETE) public Result batchDelete(@RequestBody List ids) { adminService.batchDeleteAdmin(ids); return Result.success(); } /** * 修改管理员状态(禁用/启用) * * @param id 管理员ID * @param status 目标状态:1=启用,0=禁用 * @return 操作结果 */ @PutMapping("/{id}/status") @Log(value = "修改管理员状态", module = "管理员管理", operationType = OperationType.UPDATE) public Result updateStatus(@PathVariable Long id, @RequestParam Integer status) { adminService.updateStatus(id, status); return Result.success(); } /** * 查询管理员权限路由列表 * 超级管理员返回 null,前端视为全部权限 * * @param id 管理员ID * @return 路由路径 JSON 数组字符串 */ @GetMapping("/{id}/permission") @Log(value = "查询管理员权限", module = "管理员管理", operationType = OperationType.QUERY) public Result> getPermission(@PathVariable Long id) { String routePaths = adminService.getPermissions(id); Map result = new HashMap<>(2); result.put("routePaths", routePaths); return Result.success(result); } /** * 更新管理员权限路由列表 * * @param id 管理员ID * @param payload 请求体,包含 routePaths(JSON数组字符串) * @return 操作结果 */ @PutMapping("/{id}/permission") @Log(value = "更新管理员权限", module = "管理员管理", operationType = OperationType.UPDATE) public Result updatePermission(@PathVariable Long id, @RequestBody Map payload) { adminService.updatePermissions(id, payload.get("routePaths")); return Result.success(); } }