zhangxin 7 lat temu
rodzic
commit
2787259f00

+ 8 - 10
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CatchServiceImpl.java

@@ -13,9 +13,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author sean
@@ -51,13 +49,7 @@ public class CatchServiceImpl implements CatchService {
 
         RestTemplate rt = new RestTemplate();
 
-        Map queryParams = new HashMap<>();
-        queryParams.put("$oid", id);
-        String oidFilter = MongoAPIUtils.generateFilterStr(queryParams);
-
-        Map query = new HashMap<>();
-        query.put("_id", oidFilter);
-        String filter = MongoAPIUtils.generateFilterStr(query);
+        String filter = "{\"_id\":{\"$oid\":\"" + id + "\"}}";
         String url = MongoAPIUtils.generateFilterUrl(mongoDBConfig.getDb(),
                 mongoDBConfig.getCatchCollection());
         ResponseEntity<JSONObject> dto = rt.exchange(url, HttpMethod.GET, entity, JSONObject.class, filter);
@@ -65,7 +57,13 @@ public class CatchServiceImpl implements CatchService {
     }
 
     private List<CatchDTO> extractCatchData(ResponseEntity<JSONObject> dto) {
-        JSONArray array = JSONArray.fromObject(dto.getBody());
+
+        Object object = dto.getBody().get("_embedded");
+        JSONArray jsonArray = JSONArray.fromObject(object);
+
+        JSONObject jsonObject = JSONObject.fromObject(jsonArray.get(0));
+        JSONArray array =JSONArray.fromObject(jsonObject.get("list"));
+
         List<CatchDTO> catchDTOs = new ArrayList<>();
         if (array.size() == 0) {
             return null;

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

@@ -513,7 +513,7 @@ public class CalculateScoreLogicImpl extends BaseLogic implements CalculateSocre
             }
         }
 
-        String id = catchService.pushCatchDTOs(catchDTOList);
+        String id =  catchService.pushCatchDTOs(catchDTOList);
         List<UserCatchDTO> userCatchDTOs = userCatchService.getUserCatchDTOs(userId, examId, caseId);
 
         if (userCatchDTOs != null) {

+ 2 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/GeneralCalculateScoreComponent.java

@@ -106,7 +106,8 @@ public class GeneralCalculateScoreComponent {
                 Map<String, Double> typeScoreMap = new HashMap<>();
                 for (Node node : basicNode.getNodes()) {
                     String id = userCatchDTO.getLatestId();
-                    for (CatchDTO catchDTO : catchService.findById(id)) {
+                    List<CatchDTO> catchDTOs = catchService.findById(id);
+                    for (CatchDTO catchDTO : catchDTOs) {
                         if (node.getName().equals(catchDTO.getNodeName())) {//用户命中了该node
                             double scoreGot = 0;
                             String key = node.getCategory();