diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java index e3fd502d..70712a23 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java @@ -80,7 +80,7 @@ public class AiolQuestionController extends JeecgController pageList = aiolQuestionService.page(page, queryWrapper); return Result.OK(pageList); } - + /** * 添加 * @@ -93,16 +93,38 @@ public class AiolQuestionController extends JeecgController add(@RequestBody AiolQuestion aiolQuestion,@RequestParam String repoId) { + aiolQuestion.setStatus(1); aiolQuestionService.save(aiolQuestion); //题库题目添加 if(repoId!=null&& !repoId.isEmpty()){ AiolQuestionRepo aiolQuestionRepo = new AiolQuestionRepo(); aiolQuestionRepo.setRepoId(repoId); aiolQuestionRepo.setQuestionId(aiolQuestion.getId()); + aiolQuestionRepoController.add(aiolQuestionRepo); } return Result.OK(aiolQuestion.getId()); } + + @AutoLog(value = "题目-是否入库") + @Operation(summary="题目-是否入库") + @PostMapping(value = "/whetherPutStorage") + public Result whetherPutStorage(@RequestBody List ids){ + try { + // 参数校验 + if (ids == null || ids.isEmpty()) { + return Result.error("参数不能为空"); + } + + // 调用服务层更新状态 + aiolQuestionService.updateStatusByIds(ids); + + return Result.OK("操作成功"); + } catch (Exception e) { + log.error("更新题目状态失败", e); + return Result.error("操作失败:" + e.getMessage()); + } + } /** * 编辑 @@ -118,7 +140,7 @@ public class AiolQuestionController 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; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java index c8d0c8c0..bcfb5fcd 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java @@ -3,6 +3,8 @@ package org.jeecg.modules.aiol.service; import org.jeecg.modules.aiol.entity.AiolQuestion; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @Description: 题目 * @Author: jeecg-boot @@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IAiolQuestionService extends IService { + void updateStatusByIds(List ids); } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java index 782e18d8..2c63850e 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.aiol.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.jeecg.modules.aiol.entity.AiolQuestion; import org.jeecg.modules.aiol.mapper.AiolQuestionMapper; import org.jeecg.modules.aiol.service.IAiolQuestionService; @@ -7,6 +9,8 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; + /** * @Description: 题目 * @Author: jeecg-boot @@ -16,4 +20,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class AiolQuestionServiceImpl extends ServiceImpl implements IAiolQuestionService { + @Override + public void updateStatusByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + throw new IllegalArgumentException("题目ID列表不能为空"); + } + + // 批量更新 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(AiolQuestion::getId, ids) + .setSql("status = CASE WHEN status IS NULL OR status = 1 THEN 0 ELSE 1 END"); + this.update(updateWrapper); + } }