Sfoglia il codice sorgente

Merge branch 'xjw' of http://git.mooctest.net/summer/crowdsource-backend into xjw

xujiawei 5 anni fa
parent
commit
2f6a5fed46

+ 60 - 7
src/main/java/edu/nju/controller/ReviewPaperController.java

@@ -3,15 +3,14 @@ package edu.nju.controller;
 import edu.nju.entities.ReviewPaper;
 import edu.nju.entities.ReviewPaperJson;
 import edu.nju.entities.ReviewReport;
+import edu.nju.model.CrowdReviewReportDTO;
+import edu.nju.model.CrowdReviewReportVO;
 import edu.nju.service.ReviewPaperService;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -26,16 +25,33 @@ public class ReviewPaperController {
     @Autowired
     ReviewPaperService reviewPaperService;
 
+    @RequestMapping(value = "/uploadReport", method = RequestMethod.POST)
+    @ResponseBody
+    public  CrowdReviewReportVO uploadReport(@RequestBody CrowdReviewReportDTO crowdReviewReportDTO, HttpServletResponse response){
+        CrowdReviewReportVO result=new CrowdReviewReportVO("fail","");
+        try {
+            PrintWriter out = response.getWriter();
+            result = reviewPaperService.uploadReport(crowdReviewReportDTO);
+//            out.print(result);
+//            out.flush();
+//            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return result;
+    }
+
     @RequestMapping(value = "/uploadPaper", method = RequestMethod.POST)
     @ResponseBody
-    public void uploadReviewPaper(String paperJson, HttpServletResponse response) {
+    public void uploadPaper(String paperJson, HttpServletResponse response){
         try {
             PrintWriter out = response.getWriter();
-            JSONObject result = reviewPaperService.savePaper(paperJson);
+            JSONObject result = reviewPaperService.uploadPaper(paperJson);
             out.print(result);
             out.flush();
             out.close();
-        } catch (IOException e) {
+        }catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
@@ -136,4 +152,41 @@ public class ReviewPaperController {
         }
     }
 
+    @RequestMapping(value = "/addWorker")
+    @ResponseBody
+    public void addWorker(String examId,String paper_id, List<String>workerList,HttpServletResponse response){
+        try {
+            JSONObject result = new JSONObject();
+            if(reviewPaperService.addWorker(examId,paper_id,workerList)){
+                result.put("status", "200");
+            } else {
+                result.put("status", "500");
+            }
+            PrintWriter out = response.getWriter();
+            out.print(result);
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+//    @RequestMapping(value = "/getPaperByWorker")
+//    @ResponseBody
+//    public void getPaperByWorker(String exam_id, String workerId, HttpServletResponse response){
+//        try {
+//            PrintWriter out = response.getWriter();
+//            JSONObject result = reviewPaperService.updatePaper(paper_id,paperJson);
+//            out.print(result);
+//            out.flush();
+//            out.close();
+//        }catch (IOException e) {
+//            // TODO Auto-generated catch block
+//            e.printStackTrace();
+//        }
+//    }
+
+
+
 }

+ 30 - 0
src/main/java/edu/nju/dao/ReviewWorkerDao.java

@@ -0,0 +1,30 @@
+package edu.nju.dao;
+
+import edu.nju.entities.ReviewWorker;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class ReviewWorkerDao {
+
+    @Autowired
+    private MongoOperations mongoOperations;
+
+    public String save(ReviewWorker worker) {
+        mongoOperations.save(worker);
+        return worker.getId();
+    }
+
+    public ReviewWorker getWorkerByOriginalId(String originalId,String examId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("original_id").is(originalId).and("exam_id").is(examId));
+        List<ReviewWorker> list = mongoOperations.find(query,ReviewWorker.class);
+        if(list.size() == 0 || list == null) {return null;}
+        return list.get(0);
+    }
+}

+ 25 - 1
src/main/java/edu/nju/entities/ReviewJob.java

@@ -1,6 +1,7 @@
 package edu.nju.entities;
 
 import org.springframework.data.annotation.Id;
+import org.springframework.data.annotation.PersistenceConstructor;
 
 public class ReviewJob implements java.io.Serializable{
 
@@ -9,6 +10,8 @@ public class ReviewJob implements java.io.Serializable{
     @Id
     private String id;
 
+    private String exam_id;
+
     private String description;
 
     private String name;
@@ -23,7 +26,9 @@ public class ReviewJob implements java.io.Serializable{
 
     private String group;
 
-    public ReviewJob(String description, String name, String create_time, String paper_id, String start_time, String end_time, String group) {
+    @PersistenceConstructor
+    public ReviewJob(String exam_id,String description, String name, String create_time, String paper_id, String start_time, String end_time, String group) {
+        this.exam_id=exam_id;
         this.description = description;
         this.name = name;
         this.paper_id = paper_id;
@@ -32,6 +37,17 @@ public class ReviewJob implements java.io.Serializable{
         this.end_time = end_time;
         this.group = group;
     }
+    @PersistenceConstructor
+    public ReviewJob(String exam_id, String paper_id) {
+        this.exam_id=exam_id;
+        this.description = "";
+        this.name = "";
+        this.paper_id = paper_id;
+        this.create_time = "";
+        this.start_time = "";
+        this.end_time = "";
+        this.group = "";
+    }
 
     public String getId() {
         return id;
@@ -41,6 +57,14 @@ public class ReviewJob implements java.io.Serializable{
         this.id = id;
     }
 
+    public String getExam_id() {
+        return exam_id;
+    }
+
+    public void setExam_id(String exam_id) {
+        this.exam_id = exam_id;
+    }
+
     public String getDescription() {
         return description;
     }

+ 11 - 1
src/main/java/edu/nju/entities/ReviewPaper.java

@@ -1,6 +1,6 @@
 package edu.nju.entities;
 
-import edu.nju.vo.ReviewPaperVO;
+import edu.nju.model.ReviewPaperVO;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.PersistenceConstructor;
 import org.springframework.data.mongodb.core.mapping.Document;
@@ -45,6 +45,16 @@ public class ReviewPaper implements java.io.Serializable{
         this.requirement_location = reviewPaperVO.getRequirement_location();
     }
 
+    @PersistenceConstructor
+    public ReviewPaper() {
+        this.description = "";
+        this.name = "";
+        this.create_time = "";
+        this.type = "";
+        this.application_location = "";
+        this.requirement_location = "";
+    }
+
     public String getId() {
         return id;
     }

+ 58 - 0
src/main/java/edu/nju/entities/ReviewWorker.java

@@ -0,0 +1,58 @@
+package edu.nju.entities;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document
+public class ReviewWorker implements java.io.Serializable{
+
+    private static final long serialVersionUID = 4184712547483073225L;
+
+    @Id
+    private String id;
+
+    private String original_id;
+
+    private String paper_id;
+
+    private String exam_id;
+
+    public ReviewWorker(String original_id, String paper_id, String exam_id) {
+        this.original_id = original_id;
+        this.paper_id = paper_id;
+    }
+
+    public String getOriginal_id() {
+        return original_id;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public void setOriginal_id(String original_id) {
+        this.original_id = original_id;
+    }
+
+    public String getPaper_id() {
+        return paper_id;
+    }
+
+    public void setPaper_id(String paper_id) {
+        this.paper_id = paper_id;
+    }
+
+    public String getExam_id() {
+        return exam_id;
+    }
+
+    public void setExam_id(String exam_id) {
+        this.exam_id = exam_id;
+    }
+}
+
+

+ 24 - 0
src/main/java/edu/nju/model/CrowdReviewReportDTO.java

@@ -0,0 +1,24 @@
+package edu.nju.model;
+
+import java.util.List;
+
+public class CrowdReviewReportDTO {
+
+
+    List<CrowdReviewReportItem>crowdReviewReportItems;
+
+    public CrowdReviewReportDTO(List<CrowdReviewReportItem> crowdReviewReportItems) {
+        this.crowdReviewReportItems = crowdReviewReportItems;
+    }
+
+    public CrowdReviewReportDTO() {
+    }
+
+    public List<CrowdReviewReportItem> getCrowdReviewReportItems() {
+        return crowdReviewReportItems;
+    }
+
+    public void setCrowdReviewReportItems(List<CrowdReviewReportItem> crowdReviewReportItems) {
+        this.crowdReviewReportItems = crowdReviewReportItems;
+    }
+}

+ 71 - 0
src/main/java/edu/nju/model/CrowdReviewReportItem.java

@@ -0,0 +1,71 @@
+package edu.nju.model;
+
+import java.util.List;
+
+public class CrowdReviewReportItem {
+    private int index;
+    private String name;
+    private String original_id;
+    private String description;
+    private List<String>img_url;
+    private List<String>file_url;
+
+    public CrowdReviewReportItem(int index, String name, String original_id, String description, List<String> img_url, List<String> file_url) {
+        this.index = index;
+        this.name = name;
+        this.original_id = original_id;
+        this.description = description;
+        this.img_url = img_url;
+        this.file_url = file_url;
+    }
+    public CrowdReviewReportItem() {
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getOriginal_id() {
+        return original_id;
+    }
+
+    public void setOrigin_id(String origin_id) {
+        this.original_id = origin_id;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public List<String> getImg_url() {
+        return img_url;
+    }
+
+    public void setImg_url(List<String> img_url) {
+        this.img_url = img_url;
+    }
+
+    public List<String> getFile_url() {
+        return file_url;
+    }
+
+    public void setFile_url(List<String> file_url) {
+        this.file_url = file_url;
+    }
+}

+ 31 - 0
src/main/java/edu/nju/model/CrowdReviewReportVO.java

@@ -0,0 +1,31 @@
+package edu.nju.model;
+
+public class CrowdReviewReportVO {
+
+    private String status;
+
+    private String message;
+
+    public CrowdReviewReportVO(String status, String message) {
+        this.status = status;
+        this.message = message;
+    }
+
+
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 1 - 3
src/main/java/edu/nju/vo/ReviewPaperVO.java → src/main/java/edu/nju/model/ReviewPaperVO.java

@@ -1,6 +1,4 @@
-package edu.nju.vo;
-
-import org.springframework.stereotype.Component;
+package edu.nju.model;
 
 
 public class ReviewPaperVO {

+ 94 - 21
src/main/java/edu/nju/service/ReviewPaperService.java

@@ -1,16 +1,14 @@
 package edu.nju.service;
 
 import edu.nju.dao.*;
-import edu.nju.entities.ReviewItem;
-import edu.nju.entities.ReviewPaper;
-import edu.nju.entities.ReviewPaperJson;
-import edu.nju.entities.ReviewReport;
-import edu.nju.vo.ReviewPaperVO;
+import edu.nju.entities.*;
+import edu.nju.model.CrowdReviewReportDTO;
+import edu.nju.model.CrowdReviewReportVO;
+import edu.nju.model.ReviewPaperVO;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.*;
 
 @Service
@@ -36,6 +34,12 @@ public class ReviewPaperService {
     @Autowired
     ReviewPaperDao reviewPaperDao;
 
+    @Autowired
+    ReviewJobDao reviewJobDao;
+
+    @Autowired
+    ReviewWorkerDao reviewWorkerDao;
+
     public ReviewPaperJson getReviewPaperJson(String paper_id) {
         return reviewPaperJsonDao.findJsonByPaper(paper_id);
     }
@@ -52,7 +56,47 @@ public class ReviewPaperService {
         return reviewPaperDao.findPapers();
     }
 
-    public JSONObject updatePaper(String paperId,String paperJson){
+    public CrowdReviewReportVO uploadReport(CrowdReviewReportDTO crowdReviewReportDTO){
+        JSONArray reportArray= new JSONObject(crowdReviewReportDTO).getJSONArray("crowdReviewReportItems");
+        try {
+            String paperId = reviewPaperDao.save(new ReviewPaper());
+            String paperJson=initPaperJson(reportArray);
+            reviewPaperJsonDao.save(new ReviewPaperJson(paperId,paperJson));
+            for (int i = 0; i < reportArray.length(); i++) {
+                JSONObject reportObject = reportArray.getJSONObject(i);
+                saveReport(reportObject, paperId);
+            }
+            String testUrl="http://47.99.140.117:9090/changeAuditTask?id=";
+            return new CrowdReviewReportVO("success",testUrl+paperId);
+//            object.put("status","success");
+//            object.put("paperId",paperId);
+//            object.put("url",testUrl+paperId);
+        } catch (Exception e) {
+            return new CrowdReviewReportVO("fail",e.getMessage());
+//            object.put("status","fail");
+//            object.put("message",e.getMessage());
+        }
+//        return object;
+    }
+
+    private String initPaperJson(JSONArray reportArray) throws Exception{
+        try {
+            JSONObject object=new JSONObject();
+            object.put("description","");
+            object.put("name","");
+            object.put("create_time","");
+            object.put("type","");
+            object.put("application_url","");
+            object.put("requirement_url","");
+            object.put("report_list",reportArray);
+            object.put("item_group_list",new JSONArray());
+            return object.toString();
+        }catch (Exception e){
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    public JSONObject uploadPaper(String paperJson){
         JSONObject object = new JSONObject();
         String result=checkPaper(paperJson);
         if(!result.equals("success")){
@@ -63,23 +107,20 @@ public class ReviewPaperService {
         try {
             JSONObject jsonObject = new JSONObject(paperJson);
             ReviewPaperVO reviewPaperVO = getReviewPaperVO(jsonObject);
-            ReviewPaper reviewPaper = reviewPaperDao.findPaper(paperId);
-            reviewPaper.setReviewPaper(reviewPaperVO);
-            reviewPaperDao.save(reviewPaper);  //实际是update
-            reviewPaperJsonDao.update(paperId, paperJson);
-            reviewReportDao.removeByPaper(paperId);
-            itemDao.removeByPaper(paperId);
+            ReviewPaper reviewPaper = new ReviewPaper(reviewPaperVO);
+            String paperId=reviewPaperDao.save(reviewPaper);
+            reviewPaperJsonDao.save(new ReviewPaperJson(paperId,paperJson));
             saveReportAndItem(paperId, jsonObject);
             object.put("status","success");
             object.put("paperId",paperId);
         }catch (Exception e){
             object.put("status","fail");
             object.put("message",e.getMessage());
-    }
+        }
         return object;
     }
 
-    public JSONObject savePaper(String paperJson){
+    public JSONObject updatePaper(String paperId,String paperJson){
         JSONObject object = new JSONObject();
         String result=checkPaper(paperJson);
         if(!result.equals("success")){
@@ -89,17 +130,20 @@ public class ReviewPaperService {
         }
         try {
             JSONObject jsonObject = new JSONObject(paperJson);
-            ReviewPaperVO reviewPaperVO=getReviewPaperVO(jsonObject);
-            String paperId = reviewPaperDao.save(new ReviewPaper(reviewPaperVO));
-            reviewPaperJsonDao.save(new ReviewPaperJson(paperId,paperJson));
-            saveReportAndItem(paperId,jsonObject);
+            ReviewPaperVO reviewPaperVO = getReviewPaperVO(jsonObject);
+            ReviewPaper reviewPaper = reviewPaperDao.findPaper(paperId);
+            reviewPaper.setReviewPaper(reviewPaperVO);
+            reviewPaperDao.save(reviewPaper);  //实际是update
+            reviewPaperJsonDao.update(paperId, paperJson);
+            reviewReportDao.removeByPaper(paperId);
+            itemDao.removeByPaper(paperId);
+            saveReportAndItem(paperId, jsonObject);
             object.put("status","success");
             object.put("paperId",paperId);
         }catch (Exception e){
             object.put("status","fail");
             object.put("message",e.getMessage());
-            //TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
+    }
         return object;
     }
 
@@ -314,5 +358,34 @@ public class ReviewPaperService {
             return false;
         }
     }
+
+    public boolean addWorker(String examId,String paperId, List<String>workerList){
+        try {
+            reviewJobDao.save(new ReviewJob(examId,paperId));
+            for(int i=0;i<workerList.size();i++){
+                String workerId=workerList.get(i);
+                reviewWorkerDao.save(new ReviewWorker(workerId,paperId,examId));
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+//    public ReviewPaper getPaperByWorker(String examId, String workerId){
+//        ReviewWorker actualWorkerId=reviewWorkerDao.getWorkerByOriginalId(workerId,examId);
+//        String paperId=actualWorkerId.getPaper_id();
+//
+//            reviewJobDao.save(new ReviewJob(examId,paperId));
+//            for(int i=0;i<workerList.size();i++){
+//                String workerId=workerList.get(i);
+//                reviewWorkerDao.save(new ReviewWorker(workerId,paperId,examId));
+//            }
+//            return true;
+//
+//    }
+
+
 }
 

+ 23 - 0
src/main/java/initpaperjson

@@ -0,0 +1,23 @@
+[{
+        "index":0,
+        "name":"name111",
+        "original_id":"id1",
+        "description":"des1",
+        "img_url":["url1","url2"],
+        "file_url":["url1","url2"],
+    },{
+        "index":1,
+        "name":"name2222",
+        "original_id":"id2",
+        "description":"des2",
+        "img_url":["url1","url2"],
+        "file_url":["url1","url2"],
+    },{
+        "index":2,
+        "name":"name3333",
+        "original_id":"id3",
+        "description":"des3",
+        "img_url":["url1","url2"],
+        "file_url":["url1","url2"],
+    }
+]