merge
This commit is contained in:
GoCo 2025-09-16 17:28:10 +08:00
commit 7fca0228fd
5 changed files with 127 additions and 24 deletions

View File

@ -93,17 +93,39 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
@PostMapping(value = "/add")
@Transactional
public Result<String> 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<String> whetherPutStorage(@RequestBody List<String> 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());
}
}
/**
* 编辑
*

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.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<AiolRepo, IAiolRepoServi
@GetMapping("userList")
@Operation(summary = "获取用户")
public Result<List<SysUser>> userList(
public Result<List<UserPermission>> userList(
@RequestParam(required = false) String username,
@RequestParam(required = false) String employeeNumber) {
@RequestParam(required = false) String employeeNumber,
@RequestParam String repoId) {
// 创建查询条件
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
@ -316,51 +319,92 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
// 执行查询
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 = "添加权限")
@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.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<List<SysUser>> userListByRepoId(@PathVariable String repoId) {
public Result<List<UserPermission>> userListByRepoId(@PathVariable String repoId) {
// 获取用户有权限的题库ID列表
List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>()
.eq("entity_id", repoId)
.eq("entity_type", "repo")
);
if (list.isEmpty()) {
return Result.error("该题库下没有有权限用户或该题库不存在");
return Result.ok();
}
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列表查询用户
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;
}

View File

@ -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<AiolQuestion> {
void updateStatusByIds(List<String> ids);
}

View File

@ -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<AiolQuestionMapper, AiolQuestion> implements IAiolQuestionService {
@Override
public void updateStatusByIds(List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
throw new IllegalArgumentException("题目ID列表不能为空");
}
// 批量更新
LambdaUpdateWrapper<AiolQuestion> 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);
}
}