merge
This commit is contained in:
GoCo 2025-09-11 09:07:10 +08:00
commit 10218685cc
3 changed files with 135 additions and 8 deletions

View File

@ -89,7 +89,7 @@ public class AiolPaperController extends JeecgController<AiolPaper, IAiolPaperSe
public Result<String> add(@RequestBody AiolPaper aiolPaper) { public Result<String> add(@RequestBody AiolPaper aiolPaper) {
aiolPaperService.save(aiolPaper); aiolPaperService.save(aiolPaper);
return Result.OK("添加成功!"); return Result.OK(aiolPaper.getId());
} }
/** /**

View File

@ -101,7 +101,7 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
aiolQuestionRepo.setQuestionId(aiolQuestion.getId()); aiolQuestionRepo.setQuestionId(aiolQuestion.getId());
aiolQuestionRepoController.add(aiolQuestionRepo); aiolQuestionRepoController.add(aiolQuestionRepo);
} }
return Result.OK("添加成功!"); return Result.OK(aiolQuestion.getId());
} }
/** /**

View File

@ -16,12 +16,16 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.system.api.ISysBaseAPI;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum; import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.UUIDGenerator; import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.aiol.constant.EntityLinkConst; 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.QuestionAnswerDTO;
import org.jeecg.modules.aiol.dto.QuestionExcelDTO; import org.jeecg.modules.aiol.dto.QuestionExcelDTO;
import org.jeecg.modules.aiol.entity.*; import org.jeecg.modules.aiol.entity.*;
@ -33,6 +37,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@ -65,6 +71,10 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoService> { public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoService> {
@Autowired @Autowired
private IAiolRepoService aiolRepoService; private IAiolRepoService aiolRepoService;
@Autowired
private IAiolEntityPermissionService aiolEntityPermissionService;
@Autowired
private ISysBaseAPI sysBaseApi;
/** /**
* 分页列表查询 * 分页列表查询
@ -118,7 +128,7 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody AiolRepo aiolRepo) { public Result<String> edit(@RequestBody AiolRepo aiolRepo) {
aiolRepoService.updateById(aiolRepo); aiolRepoService.updateById(aiolRepo);
return Result.OK("编辑成功!"); return Result.OK(aiolRepo.getId());
} }
/** /**
@ -205,6 +215,8 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
private IAiolQuestionOptionService questionOptionService; private IAiolQuestionOptionService questionOptionService;
@Autowired @Autowired
private IAiolQuestionAnswerService questionAnswerService; private IAiolQuestionAnswerService questionAnswerService;
@Autowired
private ISysUserService sysUserService;
@PostMapping("course_add") @PostMapping("course_add")
@Operation(summary = "课程下新建题库") @Operation(summary = "课程下新建题库")
@ -224,18 +236,133 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
} }
@GetMapping("repoList") @GetMapping("repoList")
@Operation(summary = "获取所有题库") @Operation(summary = "获取有权限的所有题库")
public Result<List<AiolRepo>> repoList() { public Result<List<AiolRepo>> repoList(HttpServletRequest request) {
return Result.ok(aiolRepoService.list()); // 尝试获取token判断用户id
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
if (token != null && !token.trim().isEmpty()) {
try {
String username = JwtUtil.getUsername(token);
LoginUser sysUser = sysBaseApi.getUserByName(username);
if (sysUser != null) {
// 获取用户有权限的题库ID列表
List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>()
.eq("user_id", sysUser.getId())
.eq("entity_type", "repo")
);
if (list.isEmpty()) {
return Result.error("该用户没有权限访问任意题库");
}
List<String> repoIds = list.stream().map(AiolEntityPermission::getEntityId).collect(Collectors.toList());
// 根据ID列表查询题库
return Result.ok(repoMapper.selectBatchIds(repoIds));
}
} catch (Exception e) {
// token无效或解析失败忽略错误继续执行原有逻辑
log.debug("Token解析失败按未登录用户处理: {}", e.getMessage());
}
}
return Result.error("请检查登录状态");
} }
@PostMapping(value = "/courseAdd") @PostMapping(value = "/courseAdd")
@Operation(summary = "课程新建题库") @Operation(summary = "课程新建题库")
public Result<String> courseAdd(@RequestBody AiolRepo repo) { @Transactional
return aiolRepoService.save(repo) ? Result.OK("添加成功!") : Result.error("添加失败!"); public Result<String> courseAdd(@RequestBody AiolRepo repo,HttpServletRequest request) {
aiolRepoService.save(repo);
AiolEntityPermission aiolEntityPermission = new AiolEntityPermission();
aiolEntityPermission.setEntityId(repo.getId());
aiolEntityPermission.setEntityType("repo");
// 尝试获取token判断用户id
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
if (token != null && !token.trim().isEmpty()) {
try {
String username = JwtUtil.getUsername(token);
LoginUser sysUser = sysBaseApi.getUserByName(username);
if (sysUser != null) {
aiolEntityPermission.setUserId(sysUser.getId());
}
} catch (Exception e) {
// token无效或解析失败忽略错误继续执行原有逻辑
log.debug("Token解析失败按未登录用户处理: {}", e.getMessage());
}
}
aiolEntityPermissionService.save(aiolEntityPermission);
return Result.OK(repo.getId());
} }
@GetMapping("userList")
@Operation(summary = "获取用户")
public Result<List<SysUser>> userList(
@RequestParam(required = false) String username,
@RequestParam(required = false) String employeeNumber) {
// 创建查询条件
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
// 当用户名不为空时添加用户名查询条件模糊查询
if (StringUtils.isNotBlank(username)) {
queryWrapper.like(SysUser::getUsername, username);
}
// 当用户工号不为空时添加工号查询条件精确查询
if (StringUtils.isNotBlank(employeeNumber)) {
queryWrapper.eq(SysUser::getWorkNo, employeeNumber);
}
// 执行查询
List<SysUser> userList = sysUserService.list(queryWrapper);
// 返回结果
return Result.ok(userList);
}
@PostMapping("addPermission")
@Operation(summary = "添加权限")
@Transactional
public Result<String> addPermission(@RequestParam String userId, @RequestParam String repoId) {
AiolEntityPermission aiolEntityPermission = new AiolEntityPermission();
aiolEntityPermission.setEntityId(repoId);
aiolEntityPermission.setEntityType("repo");
aiolEntityPermission.setUserId(userId);
aiolEntityPermissionService.saveOrUpdate(aiolEntityPermission);
return Result.OK();
}
//获取有权限的用户
@GetMapping("userListByRepoId/{repoId}")
@Operation(summary = "获取题库有权限的用户列表")
public Result<List<SysUser>> 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("该题库下没有有权限用户或该题库不存在");
}
List<String> userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList());
// 根据ID列表查询用户
return Result.ok(sysUserService.listByIds(userIds));
}
@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();
}
@GetMapping("/questionList/{repoId}") @GetMapping("/questionList/{repoId}")
@Operation(summary = "查询题库下题目") @Operation(summary = "查询题库下题目")