Explorar o código

Merge branch 'DEV' into web-target

chenxz %!s(int64=8) %!d(string=hai) anos
pai
achega
211e9ac7cf

+ 1 - 1
mooctest-site-server/pom.xml

@@ -31,7 +31,7 @@
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>
             <artifactId>oauth2-dubbo-api</artifactId>
-            <version>1.0.15</version>
+            <version>1.0.17</version>
         </dependency>
 
         <!--dubbo-service-api-->

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/constant/Constants.java

@@ -24,6 +24,6 @@ public class Constants {
 
     public static final int DEFAULT_WORKER_LEVEL = 0;
 
-    public static final String OAUTH2APIVERSION = "1.0.15";
+    public static final String OAUTH2APIVERSION = "1.0.17";
 
 }

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/ContestMentorDao.java

@@ -11,5 +11,5 @@ import java.util.List;
  */
 @Transactional
 public interface ContestMentorDao  extends CrudRepository<ContestMentor, Long> {
-    List<ContestMentor> findByExamIdAndParticipantId(Long examId, Long userId);
+    List<ContestMentor> findByExamIdAndParticipantIdAndRole(Long examId, Long userId, Byte role);
 }

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/ContestMentor.java

@@ -11,6 +11,9 @@ import javax.persistence.*;
 @Entity
 @Table(name = "contest_mentor")
 public class ContestMentor {
+    public static final Byte ROLE_MENTOR = 0;
+    public static final Byte ROLE_MEMBER = 1;
+
     @Id
     @GeneratedValue
     private Long id;
@@ -26,4 +29,7 @@ public class ContestMentor {
 
     @Column(name = "teacher_email")
     private String teacherEmail;
+
+    @Column(name = "role")
+    private Byte role;
 }

+ 5 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/rpc/Oauth2/impl/ExamServiceImpl2.java

@@ -120,13 +120,17 @@ public class ExamServiceImpl2 implements ExamService {
         HashMap<Long, String> caseNameMap = taskResultDTO.getTask_case_list();
         Task task = null;
         long participantId;
+        boolean needCreatePaper = true;
+        if(assignedTaskService.getAssignedTasks(taskId).size() > 0) {
+            needCreatePaper = false;
+        }
         for(ScoreDetails scoreDetails: taskResultDTO.getScoreDetails()) {
             OpenId2UserId openId2UserId = openId2UserIdDao.findByOpenId(scoreDetails.getOpen_id());
             participantId = openId2UserId.getUserId();
             task = examService.getExamByIdAndParticipantIdIfPermited(taskId, openId2UserId.getUserId());
             this.saveAssignedTask(participantId, scoreDetails, task, caseNameMap);
         }
-        if(task != null) {
+        if(task != null && needCreatePaper) {
             Paper paper = this.savePaperAndPaper2Case(task.getName(), caseNameMap);
             this.saveExam2PaperAndExam2Case(paper, taskId, caseNameMap);
             this.updateTaskStatus(taskId);

+ 14 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/rpc/Oauth2/impl/Oauth2ServiceImpl.java

@@ -72,7 +72,6 @@ public class Oauth2ServiceImpl implements UserService{
             return null;
         }
         long l = openId2UserId.getUserId();
-        System.out.println("aaaaaaaa "+ l);
         UserDTO result = new UserDTO();
         UserVO userVO =  userLogic.findUserById(l);
         result.setUserId(userVO.getId());
@@ -83,4 +82,18 @@ public class Oauth2ServiceImpl implements UserService{
         result.setOpenId(openId2UserId.getOpenId());
         return result;
     }
+
+    @Override
+    public UserDTO loginInOauth(String s) {
+        UserDTO result = null;
+        UserVO userVO = userLogic.loginForOauth2(s);
+        if(userVO!=null) {
+            result.setMobile(userVO.getMobile());
+            result.setEmail(userVO.getEmail());
+            result.setOpenId(openId2UserIdDao.findByUserId(userVO.getId()).getOpenId());
+            result.setPassword(userVO.getPassword());
+            result.setName(userVO.getName());
+        }
+        return result;
+    }
 }

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ContestService.java

@@ -24,7 +24,7 @@ public interface ContestService {
 
     String sycnStudentArea();
 
-    List<ContestMentor> addContestMentor(Long examId, Long userId, List<ContestMentorVO> contestMentorVOS);
+    List<ContestMentor> addContestMentor(Long examId, Long userId, List<ContestMentorVO> contestMentorVOS, Byte role);
 
-    List<ContestMentor> getContestMnetor(Long contestId, Long userId);
+    List<ContestMentor> getContestMnetor(Long contestId, Long userId, Byte role);
 }

+ 5 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ContestServiceImpl.java

@@ -201,8 +201,8 @@ public class ContestServiceImpl implements ContestService {
     }
 
     @Override
-    public List<ContestMentor> addContestMentor(Long examId, Long userId, List<ContestMentorVO> contestMentorVOS) {
-        contestMentorDao.delete(contestMentorDao.findByExamIdAndParticipantId(examId,userId));
+    public List<ContestMentor> addContestMentor(Long examId, Long userId, List<ContestMentorVO> contestMentorVOS, Byte role) {
+        contestMentorDao.delete(contestMentorDao.findByExamIdAndParticipantIdAndRole(examId,userId,role));
         List<ContestMentor> contestMentors = new ArrayList<>();
         contestMentorVOS.stream().forEach(enterContestVO -> {
             ContestMentor contestMentor = new ContestMentor();
@@ -210,14 +210,15 @@ public class ContestServiceImpl implements ContestService {
             contestMentor.setParticipantId(userId);
             contestMentor.setTeacherName(enterContestVO.getTeacherName());
             contestMentor.setTeacherEmail(enterContestVO.getTeacherEmail());
+            contestMentor.setRole(role);
             contestMentors.add(contestMentor);
         });
         return IteratorUtils.toList(contestMentorDao.save(contestMentors).iterator());
     }
 
     @Override
-    public List<ContestMentor> getContestMnetor(Long contestId, Long userId) {
-        return contestMentorDao.findByExamIdAndParticipantId(contestId,userId);
+    public List<ContestMentor> getContestMnetor(Long contestId, Long userId, Byte role) {
+        return contestMentorDao.findByExamIdAndParticipantIdAndRole(contestId,userId,role);
     }
 
 }

+ 15 - 6
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ContestController.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
+import cn.iselab.mooctest.site.models.ContestMentor;
 import cn.iselab.mooctest.site.models.Task;
 import cn.iselab.mooctest.site.models.User;
 import cn.iselab.mooctest.site.service.UserService;
@@ -38,16 +39,24 @@ public class ContestController {
     private UserService userService;
 
     @RequestMapping(value = UrlConstants.API + "contest/enter/{contestId}", method = RequestMethod.POST)
-    public List<ContestMentorVO> enterContest(@PathVariable("contestId") Long contestId, @RequestBody List<ContestMentorVO> contestMentorVOS) {
+    public boolean enterContest(@PathVariable("contestId") Long contestId) {
         User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
-        return contestLogic.enterContest(contestId,user.getId(), contestMentorVOS);
+        return contestLogic.enterContest(contestId,user.getId());
+    }
+
+    @RequestMapping(value = UrlConstants.API + "contest/mentors/{contestId}/{role}", method = RequestMethod.POST)
+    public List<ContestMentorVO> addContestMentor(@PathVariable("contestId") Long contestId,
+                                                  @PathVariable("role") Byte role,
+                                                  @RequestBody List<ContestMentorVO> contestMentorVOS) {
+        User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
+        return contestLogic.addContestMentor(contestId,user.getId(), contestMentorVOS, role);
     }
 
     @RequestMapping(value = UrlConstants.API + "contest/mentors/{contestId}", method = RequestMethod.GET)
-    public List<ContestMentorVO> getContestMentor(@PathVariable("contestId") Long contestId) {
+    public List<ContestMentorVO> getContestMentor(@PathVariable("contestId") Long contestId, @RequestParam(name = "role") Byte role) {
         User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
         examLogic.getExamByIdAndParticipantIdIfPermited(contestId, user.getId());
-        return contestLogic.getContestMentor(contestId,user.getId());
+        return contestLogic.getContestMentor(contestId,user.getId(),role);
     }
 
     @RequestMapping(value = UrlConstants.API + "contest", method = RequestMethod.GET)
@@ -65,12 +74,12 @@ public class ContestController {
     }
 
     @RequestMapping(value = UrlConstants.API + "contest/enterWithoutLogin/{contestId}", method = RequestMethod.POST)
-    public List<ContestMentorVO> enterContestWithoutLogin(@PathVariable("contestId") Long contestId, @RequestBody EnterContestVO enterContestVO) {
+    public Boolean enterContestWithoutLogin(@PathVariable("contestId") Long contestId, @RequestBody EnterContestVO enterContestVO) {
         User user = userService.findByEmail(enterContestVO.getEmail());
         if(user.getPassword()!=enterContestVO.getPassword()){
             throw new UnauthorizedException("unauthorized");
         }
-        return contestLogic.enterContest(contestId,user.getId(), enterContestVO.getTeachers());
+        return contestLogic.enterContest(contestId,user.getId());
     }
 
     @RequestMapping(value = UrlConstants.API_COMMON + "contest/{year:\\d+}", method = RequestMethod.GET)

+ 3 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ContestLogic.java

@@ -18,8 +18,9 @@ public interface ContestLogic {
     List<ContestVO> findByYear(String year);
 
     boolean joinContest(long workerId, String contestIds);
-    List<ContestMentorVO> enterContest(Long contestId, Long userId, List<ContestMentorVO> contestMentorVOS);
-    List<ContestMentorVO> getContestMentor(Long contestId, Long userId);
+    Boolean enterContest(Long contestId, Long userId);
+    List<ContestMentorVO> addContestMentor(Long contestId, Long userId, List<ContestMentorVO> contestMentorVOS, Byte role);
+    List<ContestMentorVO> getContestMentor(Long contestId, Long userId, Byte role);
 
     List<ContestVO> findByWorkerId(long workerId);
 

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/UserLogic.java

@@ -33,6 +33,8 @@ public interface UserLogic {
 
     UserVO findUserById(long userId);
 
+    UserVO loginForOauth2(String userName);
+
     ManagerPropertyVO updateUserProperty(Long userId, ManagerPropertyVO managerPropertyVO);
 
     void authorizeManagerRole(UserVO userVO);

+ 9 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ContestLogicImpl.java

@@ -80,10 +80,15 @@ public class ContestLogicImpl implements ContestLogic {
     }
 
     @Override
-    public List<ContestMentorVO> enterContest(Long contestId, Long userId, List<ContestMentorVO> contestMentorVOS) {
+    public Boolean enterContest(Long contestId, Long userId) {
         List<Group> groups = groupService.getByExamId(contestId);
         groups.forEach(group -> groupService.joinGroup(userId, group));
-        List<ContestMentor> contestMentors = contestService.addContestMentor(contestId, userId, contestMentorVOS);
+        return true;
+    }
+
+    @Override
+    public List<ContestMentorVO> addContestMentor(Long contestId, Long userId, List<ContestMentorVO> contestMentorVOS, Byte role) {
+        List<ContestMentor> contestMentors = contestService.addContestMentor(contestId, userId, contestMentorVOS, role);
 
         List<ContestMentorVO> result = new ArrayList<>();
         contestMentors.stream().forEach(contestMentor ->{
@@ -93,8 +98,8 @@ public class ContestLogicImpl implements ContestLogic {
     }
 
     @Override
-    public List<ContestMentorVO> getContestMentor(Long contestId, Long userId) {
-        List<ContestMentor> contestMentors = contestService.getContestMnetor(contestId, userId);
+    public List<ContestMentorVO> getContestMentor(Long contestId, Long userId, Byte role) {
+        List<ContestMentor> contestMentors = contestService.getContestMnetor(contestId, userId, role);
         List<ContestMentorVO> result = new ArrayList<>();
         contestMentors.stream().forEach(contestMentor ->{
             result.add(Converter.convert(ContestMentorVO.class, contestMentor));

+ 9 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/UserLogicImpl.java

@@ -236,6 +236,15 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     }
 
     @Override
+    public UserVO loginForOauth2(String userName) {
+        User user = userService.findByUsername(userName);
+        if(user == null){
+            return null;
+        }
+        return userVOWrapper.wrap(user);
+    }
+
+    @Override
     public ManagerPropertyVO updateUserProperty(Long userId, ManagerPropertyVO managerPropertyVO) {
         List<Role> roles = roleService.getRolesOfUser(userId);
         if (!roles.contains(roleService.getRoleByRoleName("manager"))) {