Kaynağa Gözat

MOD: UserCatchDTO & CatchDTO structure

zhangxin 7 yıl önce
ebeveyn
işleme
b46f7f532a

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/forMongo/NodeCatch/CatchDTO.java

@@ -11,5 +11,7 @@ public class CatchDTO {
 
     private String nodeName;
 
+    private String category;
+
     private String uploadTime;
 }

+ 0 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/forMongo/NodeCatch/UserCatchDTO.java

@@ -24,8 +24,6 @@ public class UserCatchDTO {
 
     private Long caseId;
 
-    private String category;
-
     private List<CatchDTO> catchDTOs;
 
 }

+ 22 - 10
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CalculateScoreLogicImpl.java

@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by HenryLee on 2017/7/10.
@@ -270,6 +271,19 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
     @Override
     public List<CaughtNodeDTO> catchNode(Long examId, Long caseId, Long userId, String uploadTime,
                                          List<CaughtNodeDTO> caughtNodeDTOs) {
+        List<CatchDTO> catchDTOList = new ArrayList<>();
+
+        //CatchDTO
+        for (CaughtNodeDTO caughtNodeDTO : caughtNodeDTOs) {
+            CatchDTO catchDTO = new CatchDTO();
+
+            catchDTO.setNodeName(caughtNodeDTO.getNodeName());
+            catchDTO.setUploadTime(uploadTime);
+            catchDTO.setCategory(caughtNodeDTO.getCategory());
+            catchDTO = catchService.updateCatchDTO(catchDTO);
+            catchDTOList.add(catchDTO);
+        }
+
         List<CaughtNodeDTO> returnList = new ArrayList<>();
         List<CaughtNodeDTO> caughtNodeList = caughtNodeService.getCaughtNodeList(examId, caseId);
         CaughtNodeDTO cn = new CaughtNodeDTO();
@@ -298,30 +312,28 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
             }
         }
 
-        //CatchDTO
-        CatchDTO catchDTO = new CatchDTO();
-        catchDTO.setNodeName(cn.getNodeName());
-        catchDTO.setUploadTime(uploadTime);
-        catchDTO = catchService.updateCatchDTO(catchDTO);
-
         //userCatch
         List<UserCatchDTO> userCatchDTOs = userCatchService.getUserCatchDTOs(userId, examId, caseId);
 
         if (userCatchDTOs != null) {
             UserCatchDTO userCatchDTO = userCatchService.getUserCatchDTOs(userId, examId, caseId).get(0);
             List<CatchDTO> catchDTOs = userCatchDTO.getCatchDTOs();
-            catchDTOs.add(catchDTO);
+
+            List<String> nodeNames = catchDTOs.stream().map(catchDTO -> catchDTO.getNodeName()).collect(Collectors.toList());
+            for (CatchDTO newCatchDTO : catchDTOList) {
+                if (!nodeNames.contains(newCatchDTO.getNodeName())) {
+                    catchDTOs.add(newCatchDTO);
+                }
+            }
             userCatchDTO.setCatchDTOs(catchDTOs);
             userCatchService.updateUserCatch(userCatchDTO);
-
         } else {
             UserCatchDTO userCatchDTO = new UserCatchDTO();
             userCatchDTO.setCaseId(caseId);
             userCatchDTO.setExamId(examId);
             userCatchDTO.setUserId(userId);
-            userCatchDTO.setCategory(cn.getCategory());
             List<CatchDTO> catchDTOs = new ArrayList<>();
-            catchDTOs.add(catchDTO);
+            catchDTOs.addAll(catchDTOList);
             userCatchDTO.setCatchDTOs(catchDTOs);
             userCatchService.createUserCatch(userCatchDTO);
         }