From a793020c5ee7f17d69437ad46f4274697414093a Mon Sep 17 00:00:00 2001 From: Lqc Date: Tue, 16 Sep 2025 15:07:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiol/controller/AiolRepoController.java | 84 ++++++++++++++----- .../modules/aiol/dto/UserPermission.java | 18 ++++ 2 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserPermission.java diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolRepoController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolRepoController.java index ef66bf37..9f884b5c 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolRepoController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolRepoController.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.jeecg.qywx.api.user.vo.User; import org.apache.poi.ss.usermodel.Workbook; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; @@ -28,6 +29,7 @@ import org.jeecg.modules.aiol.constant.EntityLinkConst; import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo; import org.jeecg.modules.aiol.dto.QuestionAnswerDTO; import org.jeecg.modules.aiol.dto.QuestionExcelDTO; +import org.jeecg.modules.aiol.dto.UserPermission; import org.jeecg.modules.aiol.entity.*; import org.jeecg.modules.aiol.mapper.AiolRepoMapper; import org.jeecg.modules.aiol.service.*; @@ -296,9 +298,10 @@ public class AiolRepoController extends JeecgController> userList( + public Result> userList( @RequestParam(required = false) String username, - @RequestParam(required = false) String employeeNumber) { + @RequestParam(required = false) String employeeNumber, + @RequestParam String repoId) { // 创建查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -316,51 +319,92 @@ public class AiolRepoController extends JeecgController userList = sysUserService.list(queryWrapper); + // 获取有权限的用户列表 + Result> result = userListByRepoId(repoId); + List userListByRepo = result != null ? result.getResult() : null; + + // 创建ID到UserPermission的映射 + Map userPermissionMap; + if (userListByRepo == null || userListByRepo.isEmpty()) { + userPermissionMap = new HashMap<>(); + } else { + userPermissionMap = userListByRepo.stream() + .collect(Collectors.toMap( + UserPermission::getUserId, + user -> user, + (existing, replacement) -> existing + )); + } + List userPermissionList = new ArrayList<>(); + userList.forEach(user -> { + // 如果当前用户在用户列表中 + if (userPermissionMap.containsKey(user.getId())) { + userPermissionList.add(userPermissionMap.get(user.getId())); + }else { + UserPermission userPermission = new UserPermission(); + userPermission.setUserId(user.getId()); // 用户ID + userPermission.setUserName(user.getUsername()); // 用户名 + userPermission.setRealName(user.getRealname()); // 用户真实姓名 + userPermission.setUserAvatar(user.getAvatar()); // 用户头像 + userPermission.setPermission(false); + userPermissionList.add(userPermission); + } + }); // 返回结果 - return Result.ok(userList); + return Result.ok(userPermissionList); } - @PostMapping("addPermission") + @PostMapping("addOrDeletePermission") @Operation(summary = "添加权限") @Transactional - public Result addPermission(@RequestParam String userId, @RequestParam String repoId) { + public Result addOrDeletePermission(@RequestParam String userId, @RequestParam String repoId,@RequestParam String type) { AiolEntityPermission aiolEntityPermission = new AiolEntityPermission(); aiolEntityPermission.setEntityId(repoId); aiolEntityPermission.setEntityType("repo"); aiolEntityPermission.setUserId(userId); - aiolEntityPermissionService.saveOrUpdate(aiolEntityPermission); + if(type.equals("add")){ + aiolEntityPermissionService.saveOrUpdate(aiolEntityPermission); + return Result.OK("添加成功"); + } + else if(type.equals("delete")){ + aiolEntityPermissionService.remove(new QueryWrapper<>(aiolEntityPermission)); + return Result.OK("删除成功"); + } return Result.OK(); } //获取有权限的用户 @GetMapping("userListByRepoId/{repoId}") @Operation(summary = "获取题库有权限的用户列表") - public Result> userListByRepoId(@PathVariable String repoId) { + public Result> userListByRepoId(@PathVariable String repoId) { // 获取用户有权限的题库ID列表 List list = aiolEntityPermissionService.list(new QueryWrapper() .eq("entity_id", repoId) .eq("entity_type", "repo") ); if (list.isEmpty()) { - return Result.error("该题库下没有有权限用户或该题库不存在"); + return Result.ok(); } List userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList()); + List sysUsers = sysUserService.listByIds(userIds); + List userPermissionList = new ArrayList<>(); + sysUsers.forEach(user -> { + if (user != null) { + UserPermission userPermission = new UserPermission(); + userPermission.setUserId(user.getId()); // 用户ID + userPermission.setUserName(user.getUsername()); // 用户名 + userPermission.setRealName(user.getRealname()); // 用户真实姓名 + userPermission.setUserAvatar(user.getAvatar()); // 用户头像 + userPermission.setPermission(true); + userPermissionList.add(userPermission); + } + }); // 根据ID列表查询用户 - return Result.ok(sysUserService.listByIds(userIds)); + return Result.ok(userPermissionList); } - @DeleteMapping("deletePermission") - @Operation(summary = "删除权限") - @Transactional - public Result deletePermission(@RequestParam String userId, @RequestParam String repoId) { - AiolEntityPermission aiolEntityPermission = new AiolEntityPermission(); - aiolEntityPermission.setEntityId(repoId); - aiolEntityPermission.setEntityType("repo"); - aiolEntityPermission.setUserId(userId); - aiolEntityPermissionService.remove(new QueryWrapper<>(aiolEntityPermission)); - return Result.OK(); - } + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserPermission.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserPermission.java new file mode 100644 index 00000000..6043b822 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserPermission.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class UserPermission { + @Schema(description = "用户ID") + private String userId; + @Schema(description = "用户名") + private String userName; + @Schema(description = "用户真实姓名") + private String realName; + @Schema(description = "用户头像") + private String userAvatar; + @Schema(description = "用户是否有权限") + private boolean permission; +}