Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/xjw' into xjw

MengyangDuan 5 gadi atpakaļ
vecāks
revīzija
05a524d032

+ 6 - 0
pom.xml

@@ -148,6 +148,12 @@
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
 
+        <!--引入AOP依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
 
 
     </dependencies>

+ 3 - 3
src/main/java/edu/nju/controller/ReportController.java

@@ -188,11 +188,11 @@ public class ReportController {
 			PrintWriter out = response.getWriter();
 			List<BugMirror> result = gservice.PMFRecomend(report_id, case_take_id);
 			out.print(new JSONArray(result));
-			String remarks = "";
+			StringBuilder remarks = new StringBuilder();
 			for(BugMirror mirror: result) {
-				remarks += mirror.getId() + ",";
+				remarks.append(mirror.getId()).append(",");
 			}
-			dservice.saveRecord(report_id, case_take_id, "bugRec", remarks);
+			dservice.saveRecord(report_id, case_take_id, "bugRec", remarks.toString());
 			out.flush();
 			out.close();
 		} catch (Exception e) {

+ 1 - 0
src/main/java/edu/nju/controller/ReviewAnalyzeController.java

@@ -34,6 +34,7 @@ public class ReviewAnalyzeController {
         }
     }
 
+    //获取众审任务的结果excel
     @RequestMapping(value = "/getJobExcel")
     @ResponseBody
     public String getExcel (String jobId){

+ 17 - 5
src/main/java/edu/nju/service/ExtraService.java

@@ -154,10 +154,22 @@ public class ExtraService {
 
 	public Task saveTask(String id){
 		Task task=taskDao.findById(id);
-		if(task!=null)
-			return task;
+		if(task!=null) {
+			long oldTime=task.getEnd_time();
+			//考试时间已过
+			if(oldTime>System.currentTimeMillis()){
+				return getAndSaveTaskInfo(id);
+			}else {
+				return task;
+			}
+		}else{
+			return getAndSaveTaskInfo(id);
+		}
+	}
+
+	private Task getAndSaveTaskInfo(String id){
 		String result = HTTP.sendGet("http://www.mooctest.net/api/exam/" + id + "/info", "");
-		if (result != null && !result.equals("")) {
+		if (!result.equals("")) {
 			JSONObject json = new JSONObject(result);
 			long beginTime = json.getLong("beginTime");
 			long endTime = json.getLong("endTime");
@@ -166,9 +178,9 @@ public class ExtraService {
 			Task newTask = new Task(id, name,beginTime, endTime, totalMins, totalMins);
 			taskDao.save(newTask);
 			return newTask;
+		}else{
+			return null;
 		}
-		return null;
-//		return taskDao.findById(id);
 	}
 
 	public boolean updateTask(String id,double writeMins){

+ 3 - 3
src/main/java/edu/nju/service/ReviewService.java

@@ -215,9 +215,9 @@ public class ReviewService {
     }
 
 
-    //生成一次众审任务的数据统计报告
-    public void generateResultStatisticsReport(String jobId){
-    }
+//    //生成一次众审任务的数据统计报告
+//    public void generateResultStatisticsReport(String jobId){
+//    }
 
 
 

+ 138 - 0
src/main/java/edu/nju/util/BlockChainAspect.java

@@ -0,0 +1,138 @@
+package edu.nju.util;
+
+import edu.nju.dao.BugDao;
+import edu.nju.dao.ReportDao;
+import edu.nju.entities.Bug;
+import edu.nju.entities.Report;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * @Author JiaWei Xu
+ * @Date 2020-01-03 16:43
+ * @Email xjwhhh233@outlook.com
+ */
+
+@Aspect
+@Component
+public class BlockChainAspect {
+
+    @Autowired
+    BugDao bugDao;
+
+    @Autowired
+    ReportDao reportDao;
+
+
+    /**
+     * 定义切入点,切入点为com.example.demo.aop.AopController中的所有函数
+     *通过@Pointcut注解声明频繁使用的切点表达式
+     */
+    @Pointcut("execution(public * edu.nju.controller.UploadController.submit(..))")
+    public void bugSubmit(){
+
+    }
+
+    @Pointcut("execution(public * edu.nju.controller.AnalyzeController.saveGrade(..))")
+    public void saveBugGrade(){
+
+    }
+    /**
+     * @description  在连接点执行之前执行的通知
+     */
+    @Before("saveBugGrade()")
+    public void doBeforeGame(JoinPoint joinPoint){
+        Object[] obj = joinPoint.getArgs();
+        for (Object argItem : obj) {
+            System.out.println("---->now-->argItem:" + argItem);
+        }
+
+    }
+
+    /**
+     * @description  在连接点执行之后执行的通知(返回通知和异常通知的异常)
+     */
+    @After("saveBugGrade()")
+    public void doAfterGame(JoinPoint joinPoint){
+        Object[] obj = joinPoint.getArgs();
+        for (Object argItem : obj) {
+            System.out.println("---->now-->argItem:" + argItem);
+        }
+    }
+
+    /**
+     * @description  保存bug分数后传递给区块链
+     */
+    @AfterReturning(value="saveBugGrade()",returning = "keys")
+    public void doAfterReturningSaveBugGrade(JoinPoint joinPoint,Object keys){
+        Object[] obj = joinPoint.getArgs();
+        for (Object argItem : obj) {
+            System.out.println("---->now-->argItem:" + argItem);
+        }
+        //todo 将该信息传递给区块链服务
+        //任务ID、缺陷报告ID、分数、报告评审人ID
+
+        String bugId= (String) obj[0];
+        String grade=(String) obj[1];
+
+        Bug bug=bugDao.findByid(bugId);
+        Report report=reportDao.findById(bug.getReport_id());
+        String crowdTestId=report.getCase_take_id();
+
+        String bugReviewerId="default";
+    }
+
+    /**
+     * @description  上传bug后传递给区块链
+     */
+    @AfterReturning(value="bugSubmit()",returning = "keys")
+    public void doAfterReturningBugSubmit(JoinPoint joinPoint,Object keys){
+        Object[] obj = joinPoint.getArgs();
+        for (Object argItem : obj) {
+            System.out.println("---->now-->argItem:" + argItem);
+        }
+        //todo 将该信息传递给区块链服务 如何获得该bugID????
+        //任务ID、缺陷报告hash、缺陷报告 ID、众测工人ID
+
+
+        String bugId= (String) obj[0];
+        String grade=(String) obj[1];
+
+        Bug bug=bugDao.findByid(bugId);
+        Report report=reportDao.findById(bug.getReport_id());
+        String crowdTestId=report.getCase_take_id();
+
+        String bugReviewerId="default";
+    }
+//
+//    /**
+//     * @description  在连接点执行之后执行的通知(异常通知)
+//     */
+//    @AfterThrowing("BugSubmit()")
+//    public void doAfterThrowingGame(){
+//        System.out.println("异常通知:球迷要求退票!");
+//    }
+
+//    /**
+//     * @description  使用环绕通知
+//     */
+//    @Around("saveBugGrade()")
+//    public void doAroundGameData(ProceedingJoinPoint pjp) throws Throwable {
+//        try{
+//            System.out.println("球星上场前热身!");
+//            pjp.proceed();
+//
+//            System.out.println("球星本场得到" + point + "分" );
+//        }
+//        catch(Throwable e){
+//            System.out.println("异常通知:球迷要求退票!");
+//        }
+//    }
+
+
+}

+ 3 - 3
src/main/java/edu/nju/util/HTTP.java

@@ -22,7 +22,7 @@ public class HTTP {
      * @return URL 所代表远程资源的响应结果
      */
     public static String sendGet(String url, String param) {
-        String result = "";
+        StringBuilder result = new StringBuilder();
         BufferedReader in = null;
         try {
             String urlNameString = url + "?" + param;
@@ -47,7 +47,7 @@ public class HTTP {
                     connection.getInputStream()));
             String line;
             while ((line = in.readLine()) != null) {
-                result += line;
+                result.append(line);
             }
         } catch (Exception e) {
             System.out.println("发送GET请求出现异常!" + e);
@@ -63,7 +63,7 @@ public class HTTP {
                 e2.printStackTrace();
             }
         }
-        return result;
+        return result.toString();
     }
 
     /**

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -14,7 +14,7 @@ spring:
         watcher:
           enabled: true
 #    nacos:
-#      discovery:e.e
+#      discovery:
 #        # 指定nacos server的地址
 #        server-addr: 127.0.0.1:8848
 # actuator相关配置