diff --git a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminAccountController.java b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminAccountController.java index e77f6a6b..7788e656 100644 --- a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminAccountController.java +++ b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminAccountController.java @@ -60,7 +60,7 @@ public class AdminAccountController { .forEach(role -> rolesList.add(role.getRole())); - if (rolesList.contains("admin") || rolesList.contains("root")){ // 超级管理员或管理员 + if (rolesList.contains("admin") || rolesList.contains("root") || rolesList.contains("problem_admin")){ // 超级管理员或管理员、题目管理员 String jwt = jwtUtils.generateToken(userRoles.getUid()); response.setHeader("Authorization", jwt); //放到信息头部 response.setHeader("Access-Control-Expose-Headers", "Authorization"); diff --git a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminContestController.java b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminContestController.java index dd9602c8..ba82112f 100644 --- a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminContestController.java +++ b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/controller/admin/AdminContestController.java @@ -208,9 +208,13 @@ public class AdminContestController { IPage iPage = new Page<>(currentPage, limit); // 根据cid在ContestProblem表中查询到对应pid集合 QueryWrapper contestProblemQueryWrapper = new QueryWrapper<>(); - contestProblemQueryWrapper.select("pid").eq("cid", cid); + contestProblemQueryWrapper.eq("cid", cid); List pidList = new LinkedList<>(); - contestProblemService.list(contestProblemQueryWrapper).forEach(contestProblem -> { + + List contestProblemList = contestProblemService.list(contestProblemQueryWrapper); + HashMap contestProblemMap = new HashMap<>(); + contestProblemList.forEach(contestProblem -> { + contestProblemMap.put(contestProblem.getPid(), contestProblem); pidList.add(contestProblem.getPid()); }); @@ -241,11 +245,12 @@ public class AdminContestController { } IPage problemList = problemService.page(iPage, problemQueryWrapper); - if (problemList.getTotal() == 0) { // 未查询到一条数据 - return CommonResult.successResponse(problemList, "暂无数据"); - } else { - return CommonResult.successResponse(problemList, "获取成功"); - } + HashMap contestProblem = new HashMap<>(); + contestProblem.put("problemList", problemList); + contestProblem.put("contestProblemMap", contestProblemMap); + + return CommonResult.successResponse(contestProblem, "获取成功"); + } @GetMapping("/problem") @@ -407,7 +412,7 @@ public class AdminContestController { contestProblemQueryWrapper.eq("cid", cid) .and(QueryWrapper -> QueryWrapper.eq("pid", pid) .or() - .eq("display_id",displayId)); + .eq("display_id", displayId)); ContestProblem contestProblem = contestProblemService.getOne(contestProblemQueryWrapper, false); if (contestProblem != null) { return CommonResult.errorResponse("添加失败,该题目已添加或者题目的比赛展示ID已存在!", CommonResult.STATUS_FAIL); @@ -434,14 +439,14 @@ public class AdminContestController { @RequiresRoles(value = {"root", "admin", "problem_admin"}, logical = Logical.OR) @Transactional public CommonResult importContestRemoteOJProblem(@RequestParam("name") String name, - @RequestParam("problemId") String problemId, - @RequestParam("cid") Long cid, - @RequestParam("displayId") String displayId, - HttpServletRequest request) { + @RequestParam("problemId") String problemId, + @RequestParam("cid") Long cid, + @RequestParam("displayId") String displayId, + HttpServletRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("problem_id", name.toUpperCase() + "-" + problemId); - Problem problem = problemService.getOne(queryWrapper,false); + Problem problem = problemService.getOne(queryWrapper, false); // 如果该题目不存在,需要先导入 if (problem == null) { @@ -467,7 +472,7 @@ public class AdminContestController { contestProblemQueryWrapper.eq("cid", cid) .and(QueryWrapper -> queryWrapper.eq("pid", finalProblem.getId()) .or() - .eq("display_id",displayId)); + .eq("display_id", displayId)); ContestProblem contestProblem = contestProblemService.getOne(contestProblemQueryWrapper, false); if (contestProblem != null) { return CommonResult.errorResponse("添加失败,该题目已添加或者题目的比赛展示ID已存在!", CommonResult.STATUS_FAIL); diff --git a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/crawler/problem/CFProblemStrategy.java b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/crawler/problem/CFProblemStrategy.java index e6c5077b..04cc605f 100644 --- a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/crawler/problem/CFProblemStrategy.java +++ b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/crawler/problem/CFProblemStrategy.java @@ -44,8 +44,8 @@ public class CFProblemStrategy extends ProblemStrategy { info.setTitle(ReUtil.get("
\\s*" + problemNum + "\\. ([\\s\\S]*?)
", html, 1).trim()); - - info.setTimeLimit(1000 * Integer.parseInt(ReUtil.get("([\\d\\.]+) (seconds?|s)\\s*", html, 1))); + double timeLimit = 1000 * Double.parseDouble(ReUtil.get("([\\d\\.]+) (seconds?|s)\\s*", html, 1)); + info.setTimeLimit((int) timeLimit); info.setMemoryLimit(Integer.parseInt(ReUtil.get("(\\d+) (megabytes|MB)\\s*", html, 1))); @@ -71,9 +71,9 @@ public class CFProblemStrategy extends ProblemStrategy { for (int i = 0; i < inputExampleList.size() && i < outputExampleList.size(); i++) { sb.append(""); - sb.append(inputExampleList.get(i).replace("
", "")).append(""); + sb.append(inputExampleList.get(i).replace("
", "\n")).append(""); sb.append(""); - sb.append(outputExampleList.get(i).replace("
", "")).append("
"); + sb.append(outputExampleList.get(i).replace("
", "\n")).append(""); } info.setExamples(sb.toString()); diff --git a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/dao/xml/UserRoleMapper.xml b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/dao/xml/UserRoleMapper.xml index 6841d7aa..3910e248 100644 --- a/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/dao/xml/UserRoleMapper.xml +++ b/hoj-springboot/DataBackup/src/main/java/top/hcode/hoj/dao/xml/UserRoleMapper.xml @@ -95,7 +95,8 @@