2 Revize 9f6c6d807c ... 233a1c5544

Autor SHA1 Zpráva Datum
  westt 233a1c5544 修改判断编程语言 před 2 roky
  westt 1ab9a1d5ad 修改bug před 2 roky

+ 1 - 1
src/main/java/com/example/onlinejudge/config/SaTokenConfigure.java

@@ -22,7 +22,7 @@ public class SaTokenConfigure implements WebMvcConfigurer {
                 // 指定一条 match 规则
                 SaRouter
                         .match("/**")
-                        .notMatch("/api/login/**")
+                        .notMatch("/api/user/login/**")
                         .check(r -> StpUtil.checkLogin());
         })).addPathPatterns("/**");
     }

+ 1 - 1
src/main/java/com/example/onlinejudge/controller/JudgeController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
 
 @Api(tags = "提交判题")
 @RestController
-@RequestMapping("/judge")
+@RequestMapping("/api/judge")
 @Slf4j
 public class JudgeController {
     @Autowired

+ 5 - 7
src/main/java/com/example/onlinejudge/controller/UserController.java

@@ -6,15 +6,13 @@ import com.example.onlinejudge.model.entity.result.Result;
 import com.example.onlinejudge.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 用户Controller层
  */
 @Controller
+@RequestMapping("/api/user")
 public class UserController {
     @Autowired
     private UserService userService;
@@ -26,7 +24,7 @@ public class UserController {
      * @param password 用户密码
      * @return 用户bean
      */
-    @GetMapping("/api/login/{username}/{password}")
+    @PostMapping("/login/{username}/{password}")
     @ResponseBody
     public Result login(@PathVariable("username") String username,
                         @PathVariable("password") String password) {
@@ -38,7 +36,7 @@ public class UserController {
      *
      * @return 字符串
      */
-    @RequestMapping("/api/isLogin")
+    @GetMapping("/isLogin")
     @ResponseBody
     public String isLogin() {
         return "当前会话登录了";
@@ -48,7 +46,7 @@ public class UserController {
      * 测试注销
      * @return LinkedHashMap
      */
-    @RequestMapping("/api/logout")
+    @GetMapping("/logout")
     @ResponseBody
     public Result logout() {
         StpUtil.logout();

+ 7 - 7
src/main/java/com/example/onlinejudge/service/impl/QuestionServiceImpl.java

@@ -25,18 +25,18 @@ public class QuestionServiceImpl implements QuestionService {
         Long userID = StpUtil.getLoginIdAsLong();
         if (questionID == null)
             return Result.error(ResultCode.PARAM_IS_INVALID);
-        if (!checkIsSubmitValid(userID, questionID))
-            return Result.error(ResultCode.SYSTEM_ERROR.getCode(), "频繁提交,请稍后再试");
         String chooseLanguage;
-        if ("java".equals(language) || "Java".equals(language) || "JAVA".equals(language)) {
+        if (QuestionSubmitLanguageEnum.JAVA.getValue().equals(language)) {
             chooseLanguage = QuestionSubmitLanguageEnum.JAVA.getValue();
-        } else if ("c".equals(language) || "C".equals(language)) {
+        } else if (QuestionSubmitLanguageEnum.C.getValue().equals(language)) {
             chooseLanguage = QuestionSubmitLanguageEnum.C.getValue();
-        } else if ("CPP".equals(language) || "Cpp".equals(language) || "cpp".equals(language) || "c++".equals(language) || "C++".equals(language)) {
+        } else if (QuestionSubmitLanguageEnum.CPP.getValue().equals(language)) {
             chooseLanguage = QuestionSubmitLanguageEnum.CPP.getValue();
         } else {
-            chooseLanguage = QuestionSubmitLanguageEnum.JAVA.getValue();
+            return Result.error(ResultCode.PARAM_IS_INVALID.getCode(), "空或未知的编程语言");
         }
+        if (!checkIsSubmitValid(userID, questionID))
+            return Result.error(ResultCode.SYSTEM_ERROR.getCode(), "频繁提交,请稍后再试");
         QuestionSubmit questionSubmit;
         if (judgeMode == 0) {
             questionSubmit = new QuestionSubmit(
@@ -74,7 +74,7 @@ public class QuestionServiceImpl implements QuestionService {
     @Override
     public boolean checkIsSubmitValid(Long userId, Long questionID) {
         QueryWrapper<QuestionSubmit> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("user_id", userId).orderByDesc("create_time").last("limit 1");
+        queryWrapper.eq("user_id", userId).eq("question_id", questionID).orderByDesc("create_time").last("limit 1");
         QuestionSubmit record = questionSubmitMapper.selectOne(queryWrapper);
         System.out.println(record);
         if (record == null) {

+ 4 - 10
src/main/java/com/example/onlinejudge/service/impl/UserServiceImpl.java

@@ -3,6 +3,7 @@ package com.example.onlinejudge.service.impl;
 import cn.dev33.satoken.stp.SaTokenInfo;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.dev33.satoken.util.SaResult;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.example.onlinejudge.model.entity.User;
 import com.example.onlinejudge.mapper.UserMapper;
@@ -11,6 +12,7 @@ import com.example.onlinejudge.model.entity.result.ResultCode;
 import com.example.onlinejudge.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import sun.security.krb5.internal.PAData;
 
 import java.util.LinkedHashMap;
 
@@ -31,16 +33,8 @@ public class UserServiceImpl implements UserService {
      */
     @Override
     public Result login(String username, String password) {
-        if (username == null || password == null) {
-            return Result.error(ResultCode.PARAM_IS_BLANK);
-        }
-        username = username.trim();
-        if (username.length() == 0) {
-            return Result.error(ResultCode.PARAM_IS_BLANK.getCode(), "用户名长度不能为0");
-        }
-        if (password.length() == 0) {
-            return Result.error(ResultCode.PARAM_IS_BLANK.getCode(), "密码长度不能为0");
-        }
+        if (StrUtil.isBlank(username) || StrUtil.isBlank(password))
+            return Result.error(ResultCode.PARAM_IS_BLANK.getCode(), "用户名或密码不能为空");
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("username", username).eq("password", password);
         User user = userMapper.selectOne(queryWrapper);