This commit is contained in:
Lqc 2025-09-16 15:07:46 +08:00
parent 16bac95dee
commit a793020c5e
2 changed files with 82 additions and 20 deletions

View File

@ -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.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jeecg.qywx.api.user.vo.User;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant; 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.CourseWithTeacherInfo;
import org.jeecg.modules.aiol.dto.QuestionAnswerDTO; import org.jeecg.modules.aiol.dto.QuestionAnswerDTO;
import org.jeecg.modules.aiol.dto.QuestionExcelDTO; 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.entity.*;
import org.jeecg.modules.aiol.mapper.AiolRepoMapper; import org.jeecg.modules.aiol.mapper.AiolRepoMapper;
import org.jeecg.modules.aiol.service.*; import org.jeecg.modules.aiol.service.*;
@ -296,9 +298,10 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
@GetMapping("userList") @GetMapping("userList")
@Operation(summary = "获取用户") @Operation(summary = "获取用户")
public Result<List<SysUser>> userList( public Result<List<UserPermission>> userList(
@RequestParam(required = false) String username, @RequestParam(required = false) String username,
@RequestParam(required = false) String employeeNumber) { @RequestParam(required = false) String employeeNumber,
@RequestParam String repoId) {
// 创建查询条件 // 创建查询条件
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
@ -316,51 +319,92 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
// 执行查询 // 执行查询
List<SysUser> userList = sysUserService.list(queryWrapper); List<SysUser> userList = sysUserService.list(queryWrapper);
// 获取有权限的用户列表
Result<List<UserPermission>> result = userListByRepoId(repoId);
List<UserPermission> userListByRepo = result != null ? result.getResult() : null;
// 创建ID到UserPermission的映射
Map<String, UserPermission> userPermissionMap;
if (userListByRepo == null || userListByRepo.isEmpty()) {
userPermissionMap = new HashMap<>();
} else {
userPermissionMap = userListByRepo.stream()
.collect(Collectors.toMap(
UserPermission::getUserId,
user -> user,
(existing, replacement) -> existing
));
}
List<UserPermission> 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 = "添加权限") @Operation(summary = "添加权限")
@Transactional @Transactional
public Result<String> addPermission(@RequestParam String userId, @RequestParam String repoId) { public Result<String> addOrDeletePermission(@RequestParam String userId, @RequestParam String repoId,@RequestParam String type) {
AiolEntityPermission aiolEntityPermission = new AiolEntityPermission(); AiolEntityPermission aiolEntityPermission = new AiolEntityPermission();
aiolEntityPermission.setEntityId(repoId); aiolEntityPermission.setEntityId(repoId);
aiolEntityPermission.setEntityType("repo"); aiolEntityPermission.setEntityType("repo");
aiolEntityPermission.setUserId(userId); 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(); return Result.OK();
} }
//获取有权限的用户 //获取有权限的用户
@GetMapping("userListByRepoId/{repoId}") @GetMapping("userListByRepoId/{repoId}")
@Operation(summary = "获取题库有权限的用户列表") @Operation(summary = "获取题库有权限的用户列表")
public Result<List<SysUser>> userListByRepoId(@PathVariable String repoId) { public Result<List<UserPermission>> userListByRepoId(@PathVariable String repoId) {
// 获取用户有权限的题库ID列表 // 获取用户有权限的题库ID列表
List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>() List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>()
.eq("entity_id", repoId) .eq("entity_id", repoId)
.eq("entity_type", "repo") .eq("entity_type", "repo")
); );
if (list.isEmpty()) { if (list.isEmpty()) {
return Result.error("该题库下没有有权限用户或该题库不存在"); return Result.ok();
} }
List<String> userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList()); List<String> userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(userIds);
List<UserPermission> 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列表查询用户 // 根据ID列表查询用户
return Result.ok(sysUserService.listByIds(userIds)); return Result.ok(userPermissionList);
} }
@DeleteMapping("deletePermission")
@Operation(summary = "删除权限")
@Transactional
public Result<String> 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();
}

View File

@ -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;
}