Browse Source

添加用户提交代码功能

westt 2 years ago
parent
commit
02bb8dfe25

+ 5 - 5
pom.xml

@@ -82,11 +82,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-jdbc</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.1.4</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.mybatis.spring.boot</groupId>-->
+<!--            <artifactId>mybatis-spring-boot-starter</artifactId>-->
+<!--            <version>2.1.4</version>-->
+<!--        </dependency>-->
         <dependency>
             <groupId>com.mysql</groupId>
             <artifactId>mysql-connector-j</artifactId>

+ 2 - 0
src/main/java/com/example/onlinejudge/OnlineJudgeApplication.java

@@ -1,10 +1,12 @@
 package com.example.onlinejudge;
 
 import cn.dev33.satoken.SaManager;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
+@MapperScan("com.example.onlinejudge.mapper")
 public class OnlineJudgeApplication {
 
     public static void main(String[] args) {

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

@@ -2,19 +2,21 @@ package com.example.onlinejudge.controller;
 
 import com.example.onlinejudge.model.entity.result.Result;
 import com.example.onlinejudge.model.entity.result.ResultCode;
+import com.example.onlinejudge.model.enums.QuestionSubmitLanguageEnum;
+import com.example.onlinejudge.service.QuestionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 @Api(tags = "提交判题")
 @RestController
 @RequestMapping("/judge")
 @Slf4j
 public class JudgeController {
+    @Autowired
+    private QuestionService questionService;
 
     @ApiOperation(value = "上传代码进行判题")
     @PostMapping("/insertDataset")
@@ -22,4 +24,10 @@ public class JudgeController {
 
         return Result.success();
     }
+    @RequestMapping("/submitCode")
+    public Result submitCode(@RequestParam("code") String code,
+                             @RequestParam("questionId") String questionID,
+                             @RequestParam("language")String language) {
+        return questionService.receiveCode(Long.parseLong(questionID), code, language);
+    }
 }

+ 9 - 0
src/main/java/com/example/onlinejudge/mapper/QuestionMapper.java

@@ -0,0 +1,9 @@
+package com.example.onlinejudge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.onlinejudge.model.entity.QuestionSubmit;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface QuestionMapper extends BaseMapper<QuestionSubmit> {
+}

+ 2 - 1
src/main/java/com/example/onlinejudge/mapper/UserMapper.java

@@ -1,10 +1,11 @@
 package com.example.onlinejudge.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.onlinejudge.model.entity.User;
 import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
-public interface UserMapper {
+public interface UserMapper extends BaseMapper<User> {
     User selectUserById(Integer id);
     User selectUserByUsernameAndPassword(String username, String password);
     boolean insertUser(String username, String password);

+ 4 - 0
src/main/java/com/example/onlinejudge/model/entity/QuestionSubmit.java

@@ -1,7 +1,9 @@
 package com.example.onlinejudge.model.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.Date;
 
@@ -10,6 +12,8 @@ import java.util.Date;
  */
 @TableName(value ="question_submit")
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class QuestionSubmit {
     /**
      * id

+ 7 - 2
src/main/java/com/example/onlinejudge/model/entity/User.java

@@ -1,5 +1,9 @@
 package com.example.onlinejudge.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -10,12 +14,13 @@ import java.util.List;
 /**
  * 用户bean
  */
+@TableName("user")
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 public class User {
-    private Integer id;
+    @TableId(type = IdType.AUTO)
+    private Long id;
     private String username;
     private String password;
-    private Timestamp registerTime;
 }

+ 3 - 0
src/main/java/com/example/onlinejudge/service/QuestionService.java

@@ -1,4 +1,7 @@
 package com.example.onlinejudge.service;
 
+import com.example.onlinejudge.model.entity.result.Result;
+
 public interface QuestionService {
+    Result receiveCode(Long questionID, String code, String language);
 }

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

@@ -1,4 +1,28 @@
 package com.example.onlinejudge.service.impl;
 
-public class QuestionServiceImpl {
+import cn.dev33.satoken.stp.StpUtil;
+import com.example.onlinejudge.mapper.QuestionMapper;
+import com.example.onlinejudge.model.entity.QuestionSubmit;
+import com.example.onlinejudge.model.entity.result.Result;
+import com.example.onlinejudge.service.QuestionService;
+import com.sun.xml.internal.bind.v2.TODO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+
+@Service
+public class QuestionServiceImpl implements QuestionService {
+    @Autowired
+    private QuestionMapper questionMapper;
+    @Override
+    public Result receiveCode(Long questionID, String code, String language) {
+        Long userID = StpUtil.getLoginIdAsLong();
+        QuestionSubmit questionSubmit = new QuestionSubmit(null, language, code, null, 0, questionID, userID, new Date(), new Date(), 0);
+        questionMapper.insert(questionSubmit);
+       // TODO: 1.提交代码到判题系统 2.更改数据库刷新状态
+
+        return Result.success();
+    }
 }

+ 4 - 1
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.example.onlinejudge.model.entity.User;
 import com.example.onlinejudge.mapper.UserMapper;
 import com.example.onlinejudge.model.entity.result.Result;
@@ -40,7 +41,9 @@ public class UserServiceImpl implements UserService {
         if (password.length() == 0) {
             return Result.error(ResultCode.PARAM_IS_BLANK.getCode(), "密码长度不能为0");
         }
-        User user = userMapper.selectUserByUsernameAndPassword(username, password);
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("username", username).eq("password", password);
+        User user = userMapper.selectOne(queryWrapper);
         if (user != null) {
             StpUtil.login(user.getId());
             return Result.success();

+ 6 - 6
src/main/resources/application.yml

@@ -6,18 +6,18 @@ spring:
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://localhost:3306/testjdbc?useSSL=false&allowPublicKeyRetrieval=true&serverTimeZone=UTC
+      url: jdbc:mysql://localhost:3306/oj?useSSL=false&allowPublicKeyRetrieval=true&serverTimeZone=UTC
       username: root
       password: colin123
       max-wait: 3000
       initial-size: 10
       max-active: 200
 
-mybatis:
-  mapper-locations: classpath:mapper/*.xml
-  configuration:
-#    开启驼峰映射
-    map-underscore-to-camel-case: true
+#mybatis:
+#  mapper-locations: classpath:mapper/*.xml
+#  configuration:
+##    开启驼峰映射
+#    map-underscore-to-camel-case: true
 
 sa-token:
   # token 名称(同时也是 cookie 名称)