diff --git a/backend/src/main/java/com/designhub/controller/UserController.java b/backend/src/main/java/com/designhub/controller/UserController.java index e4909c4..cbaae20 100644 --- a/backend/src/main/java/com/designhub/controller/UserController.java +++ b/backend/src/main/java/com/designhub/controller/UserController.java @@ -134,5 +134,16 @@ public class UserController { log.info("获取设计师列表及工作量: deptId={}", deptId); return Result.success(userService.getDesignersWithWorkload(deptId)); } + + @Operation(summary = "设置/取消管理员", description = "设置或取消用户的管理员身份") + @PutMapping("/{id}/admin") + public Result setAdmin( + @PathVariable Long id, + @RequestBody Map params + ) { + Integer isAdmin = params.get("isAdmin"); + log.info("设置用户管理员身份: userId={}, isAdmin={}", id, isAdmin); + return Result.success(userService.setAdmin(id, isAdmin)); + } } diff --git a/backend/src/main/java/com/designhub/entity/User.java b/backend/src/main/java/com/designhub/entity/User.java index 8bc35e6..39a8781 100644 --- a/backend/src/main/java/com/designhub/entity/User.java +++ b/backend/src/main/java/com/designhub/entity/User.java @@ -75,6 +75,11 @@ public class User implements Serializable { */ private Integer status; + /** + * 是否管理员:0-否 1-是 + */ + private Integer isAdmin; + /** * 用户积分 */ diff --git a/backend/src/main/java/com/designhub/service/UserService.java b/backend/src/main/java/com/designhub/service/UserService.java index 33e2eda..549f75b 100644 --- a/backend/src/main/java/com/designhub/service/UserService.java +++ b/backend/src/main/java/com/designhub/service/UserService.java @@ -1262,4 +1262,27 @@ public class UserService { log.info("查询到{}个设计师", result.size()); return result; } + + /** + * 设置/取消管理员 + */ + @Transactional(rollbackFor = Exception.class) + public boolean setAdmin(Long userId, Integer isAdmin) { + log.info("设置用户管理员身份: userId={}, isAdmin={}", userId, isAdmin); + + User user = getUserById(userId); + if (user == null) { + throw new BusinessException("用户不存在"); + } + + // 更新管理员标识 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(User::getId, userId); + updateWrapper.set(User::getIsAdmin, isAdmin != null ? isAdmin : 0); + + boolean result = userMapper.update(null, updateWrapper) > 0; + log.info("设置管理员身份结果: userId={}, isAdmin={}, result={}", userId, isAdmin, result); + + return result; + } } diff --git a/database/add_is_admin_field.sql b/database/add_is_admin_field.sql new file mode 100644 index 0000000..92a36ca --- /dev/null +++ b/database/add_is_admin_field.sql @@ -0,0 +1,11 @@ +-- 为 sys_user 表添加 is_admin 字段 +-- 作者:系统 +-- 日期:2026-01-03 +-- 说明:添加管理员标识字段,用于标识用户是否具有管理员权限 + +ALTER TABLE `sys_user` +ADD COLUMN `is_admin` TINYINT DEFAULT 0 COMMENT '是否管理员:0-否 1-是' AFTER `status`; + +-- 更新索引以提高查询性能 +CREATE INDEX `idx_is_admin` ON `sys_user` (`is_admin`); + diff --git a/frontend/src/api/user.ts b/frontend/src/api/user.ts index 1e63c06..0fd4334 100644 --- a/frontend/src/api/user.ts +++ b/frontend/src/api/user.ts @@ -10,6 +10,7 @@ export interface User { deptId?: number; deptName?: string; status?: number; + isAdmin?: number; // 是否管理员:0-否 1-是 avatar?: string; createTime?: string; updateTime?: string; @@ -161,3 +162,11 @@ export const getDesignersWithWorkload = async (deptId?: number): Promise => { + const response = await request.put(`/users/${id}/admin`, { isAdmin }); + return response.data; +}; + diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index ac9fae8..7c7256b 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -348,6 +348,14 @@ 未分配 + +