Przeglądaj źródła

上传catchNode至主站计算分数

xujiawei 5 lat temu
rodzic
commit
6b286ddcbd

+ 16 - 0
src/main/java/edu/nju/controller/NodeController.java

@@ -85,6 +85,22 @@ public class NodeController {
         }
     }
 
+    @RequestMapping(value = "/uploadSingleCatchNode")
+    @ResponseBody
+    public void uploadSingleCatchNode(String jobId,String workerId,HttpServletResponse response){
+        JSONObject result;
+        try {
+            PrintWriter out = response.getWriter();
+            result=nodeService.uploadSingleCatchNodeToMoocTest(jobId,workerId);
+            out.print(result);
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
 
 
 

+ 56 - 5
src/main/java/edu/nju/service/NodeService.java

@@ -4,6 +4,8 @@ import edu.nju.dao.*;
 import edu.nju.entities.*;
 import org.json.JSONArray;
 import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import edu.nju.util.HTTP;
@@ -49,6 +51,9 @@ public class NodeService {
     ReviewWorkerDao reviewWorkerDao;
 
 
+    Logger logger= LoggerFactory.getLogger(RecommendService.class);
+
+
     public BasicNode generateBasicNode(String jobId,String teacherId){
         ReviewJob reviewJob=reviewJobDao.findJob(jobId);
         ReviewPaper reviewPaper=reviewPaperDao.findPaper(reviewJob.getPaper_id());
@@ -354,6 +359,44 @@ public class NodeService {
         return answerNodeDao.findByJobWorker(jobId,workerId);
     }
 
+    public JSONObject uploadSingleCatchNodeToMoocTest(String jobId,String workerId){
+        ReviewJob reviewJob=reviewJobDao.findJob(jobId);
+        ReviewWorker reviewWorker=reviewWorkerDao.find(workerId);
+        AnswerNode answerNode=generateCatchNode(jobId,workerId);
+        JSONObject result=new JSONObject();
+        String uploadId=getCatchNodeUploadId(reviewJob.getExam_id(),answerNode,reviewWorker.getOriginal_id());
+        logger.info(String.valueOf(uploadId));
+        logger.info("caseid"+reviewJob.getCase_id());
+        if(uploadId!=null){
+            //上传catchNode至主站
+            String uploadResult=uploadCatchNode(reviewJob.getCase_id(),uploadId,answerNode);
+            logger.info(String.valueOf(uploadResult));
+            if(uploadResult==null){
+                logger.info("uploadResult不对");
+                result.put("status","500");
+                result.put("cause","上传catchNode失败");
+            }else{
+                JSONObject uploadResultJson=new JSONObject(uploadResult);
+                if(String.valueOf(uploadResultJson.get("code")).equals("20000")){
+//                    logger.info((String) uploadResultJson.get("code"));
+//                    logger.info("code对");
+                    result.put("status","200");
+                }else{
+//                    logger.info((String) uploadResultJson.get("code"));
+//                    logger.info("code不对");
+                    result.put("status","500");
+                    result.put("cause","上传catchNode失败");
+                }
+            }
+        }else{
+            result.put("status","500");
+            result.put("cause","获取uploadId失败");
+        }
+//        test();
+        logger.info(result.toString());
+        return result;
+    }
+
     public JSONObject uploadCatchNodeToMoocTest(String jobId){
         //todo 异步调用
          ReviewJob reviewJob=reviewJobDao.findJob(jobId);
@@ -370,7 +413,7 @@ public class NodeService {
                      result.put("status","500");
                      result.put("cause","上传catchNode失败");
                  }else{
-                     JSONObject uploadResultJson=new JSONObject(result);
+                     JSONObject uploadResultJson=new JSONObject(uploadResult);
                      if(uploadResultJson.get("code").equals("20000")){
                          result.put("status","200");
                      }else{
@@ -405,10 +448,14 @@ public class NodeService {
 
     //向慕测主站上传catchNode
     private String uploadCatchNode(String caseId,String uploadId,AnswerNode answerNode){
-        String result = "";
+        logger.info("开始上传至主站");
+        logger.info(String.valueOf(uploadId));
+        logger.info(caseId);
+        logger.info(answerNode.getCatchNodeJson());
+        StringBuilder result = new StringBuilder();
         String uploadTime=String.valueOf(System.currentTimeMillis());
         String source="CrowdReview";
-        String url="http://test.mooctest.net/api/common/generalUploadCaughtNode/"+caseId+"/"+uploadTime+"/"+uploadId+"/"+source;
+        String url="http://www.mooctest.net/api/common/generalUploadCaughtNode/"+caseId+"/"+uploadTime+"/"+uploadId+"/"+source;
         try{
             URL realUrl = new URL(url);
             // 打开和URL之间的连接
@@ -426,6 +473,7 @@ public class NodeService {
             connection.connect();
             //写入body数据,catchNode
             OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
+
             out.append(answerNode.getCatchNodeJson());
             out.flush();
             out.close();
@@ -434,11 +482,14 @@ public class NodeService {
                     connection.getInputStream()));
             String line;
             while ((line = in.readLine()) != null) {
-                result += line;
+                logger.info(line);
+                result.append(line);
             }
-            return result;
+            return result.toString();
 
         } catch (IOException e) {
+            logger.info(e.getMessage());
+            logger.info(e.toString());
             e.printStackTrace();
         }
         return null;