Переглянути джерело

FEATURE: add total answer times

张双江 7 роки тому
батько
коміт
d99e36a238

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

@@ -17,4 +17,6 @@ public interface CaughtNodeService {
     List<CaughtNodeDTO> getCaughtNodeList(Long examId, Long caseId);
 
     CaughtNodeDTO updateCaughtNodeDTO(CaughtNodeDTO oldcnDTO);
+
+    Long getAllCaughtNodeNumbers();
 }

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/common/impl/MongoAPIServiceImpl.java

@@ -29,6 +29,7 @@ public class MongoAPIServiceImpl implements MongoAPIService {
     MongoDBConfiguration mongoDBConfig;
     @Override
     public List<MutationForMongoDTO> getMutationFromMongo(Long stuId, Long examId, Long caseId) throws IOException {
+
         HttpHeaders headers = MongoAPIUtils.createAuthHeaderForMongo();
         HttpEntity<String> entity = new HttpEntity<>(headers);
 

+ 23 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/CaughtNodeServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.site.service.impl;
 
 import cn.iselab.mooctest.site.configure.MongoDBConfiguration;
+import cn.iselab.mooctest.site.data.PageData;
 import cn.iselab.mooctest.site.service.CaughtNodeService;
 import cn.iselab.mooctest.site.web.data.forMongo.NodeCatch.CaughtNodeDTO;
 import cn.iselab.mooctest.site.web.util.mongodb.MongoAPIUtils;
@@ -85,6 +86,28 @@ public class CaughtNodeServiceImpl implements CaughtNodeService {
         return oldcnDTO;
     }
 
+    @Override
+    public Long getAllCaughtNodeNumbers() {
+        HttpHeaders headers = MongoAPIUtils.createAuthHeaderForMongo();
+        HttpEntity<String> entity = new HttpEntity<>(headers);
+
+        RestTemplate rt = new RestTemplate();
+
+        String url = MongoAPIUtils.generatePagingUrl(mongoDBConfig.getDb(),
+                mongoDBConfig.getCaughtNodeCollection());
+
+        String sortBy = "DESC";
+        ResponseEntity<JSONObject> dto = rt.exchange(url, HttpMethod.GET, entity, JSONObject.class,
+                activePage, pageSize, sortBy);
+
+        if (dto.getBody().getJSONObject("_embedded").isNullObject() || dto.getBody().getJSONObject("_embedded").isEmpty()){
+            return 0L;
+        }
+        PageData<CaughtNodeDTO> pageData = new PageData<>(dto.getBody(), activePage);
+        long totalElements = pageData.getTotalElements();
+        return totalElements;
+    }
+
     private CaughtNodeDTO extractCaughtNodeData(ResponseEntity<JSONObject> dto) {
         JSONArray resultArray = dto.getBody().getJSONArray("_embedded");
         if (resultArray.size() == 0) {

+ 10 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/MonitorController.java

@@ -2,6 +2,7 @@ package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.service.Case2BugService;
+import cn.iselab.mooctest.site.service.CaughtNodeService;
 import cn.iselab.mooctest.site.service.MonitorService;
 import cn.iselab.mooctest.site.web.SessionCounter;
 import cn.iselab.mooctest.site.web.data.Bug2CaseVO;
@@ -24,6 +25,9 @@ public class MonitorController {
     @Autowired
     private Case2BugService case2BugService;
 
+    @Autowired
+    private CaughtNodeService caughtNodeService;
+
     @RequestMapping(value = UrlConstants.API_COMMON + "totalMembers", method = RequestMethod.GET)
     public Integer getTotalUser() {
         return monitorService.getTotalUser();
@@ -103,4 +107,10 @@ public class MonitorController {
     public Integer getDailyIncrementUser() {
         return monitorService.getDailyIncrementUser();
     }
+
+    @RequestMapping(value = UrlConstants.API_COMMON + "totalAnswerTimes", method = RequestMethod.GET)
+    public Long getTotalAnswerTimes() {
+        return caughtNodeService.getAllCaughtNodeNumbers();
+    }
+
 }

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/util/mongodb/MongoAPIUtils.java

@@ -47,6 +47,10 @@ public class MongoAPIUtils {
         return generateFilterUrl(dbName, collectionName) + "&count&hal=f&np&page={activePage}&pagesize={pageSize}&sort={sortBy}";
     }
 
+    public static String generatePagingUrl(String dbName, String collectionName) {
+        return generateCommonUrl(dbName, collectionName) + "?&count&hal=f&np&page={activePage}&pagesize={pageSize}&sort={sortBy}";
+    }
+
     public static String generateAggrUrl(String dbName, String collectionName, String Aggr) {
         return generateCommonUrl(dbName, collectionName) + "/_aggrs/"+Aggr+"?avars={avars}";
     }