123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- package edu.nju.util;
- import edu.nju.dao.BugDao;
- import edu.nju.dao.ReportDao;
- import edu.nju.dao.StuInfoDao;
- import edu.nju.dao.TaskDao;
- import edu.nju.entities.Bug;
- import edu.nju.entities.Report;
- import edu.nju.entities.StuInfo;
- import edu.nju.entities.Task;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.*;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import javax.servlet.http.HttpServletResponse;
- import java.util.List;
- /**
- * @Author JiaWei Xu
- * @Date 2020-01-03 16:43
- * @Email xjwhhh233@outlook.com
- */
- @Aspect
- @Component
- public class BlockChainAspect {
- @Autowired
- BugDao bugDao;
- @Autowired
- ReportDao reportDao;
- @Autowired
- TaskDao taskDao;
- @Autowired
- StuInfoDao stuInfoDao;
- private static final String blockChainHost="http://111.231.68.200:8082/";
- /**
- * 定义切入点,切入点为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 保存bug分数后传递给区块链
- */
- @AfterReturning(value="saveBugGrade()",returning = "keys")
- public void doAfterReturningSaveBugGrade(JoinPoint joinPoint,Object keys){
- System.out.println("传递给区块链");
- 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 defaultString="default";
- JSONObject bugReviewVO=new JSONObject();
- if(report==null){
- bugReviewVO.put("bugReportId",bugId);
- bugReviewVO.put("bugReportScore",Integer.parseInt(grade));
- bugReviewVO.put("reportViewer",defaultString);
- bugReviewVO.put("taskId",defaultString);
- bugReviewVO.put("taskName",defaultString);
- bugReviewVO.put("testReportId",defaultString);
- bugReviewVO.put("type",0);
- bugReviewVO.put("updateTime",System.currentTimeMillis());
- }else{
- bugReviewVO.put("bugReportId",bugId);
- bugReviewVO.put("bugReportScore",Integer.parseInt(grade));
- bugReviewVO.put("reportViewer",defaultString);
- bugReviewVO.put("taskId",report.getCase_take_id());
- Task task=taskDao.findById(report.getTask_id());
- if(task==null){
- task=getAndSaveTaskInfo(report.getTask_id());
- if(task==null){
- bugReviewVO.put("taskName",defaultString);
- }else{
- bugReviewVO.put("taskName",task.getName());
- }
- }else {
- bugReviewVO.put("taskName",task.getName());
- }
- bugReviewVO.put("testReportId",report.getId());
- bugReviewVO.put("type",0);
- bugReviewVO.put("updateTime",System.currentTimeMillis());
- }
- // System.out.println(bugReviewVO);
- String url=blockChainHost+"reportReview";
- try {
- String result = HTTP.postBody(url, bugReviewVO.toString());
- if (!result.equals("")) {
- JSONObject resultJson = new JSONObject(result);
- System.out.println(resultJson);
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- private Task getAndSaveTaskInfo(String id){
- String result = HTTP.sendGet("http://www.mooctest.net/api/exam/" + id + "/info", "");
- if (!"".equals(result)) {
- JSONObject json = new JSONObject(result);
- long beginTime = json.getLong("beginTime");
- long endTime = json.getLong("endTime");
- String name=json.getString("name");
- double totalMins = (endTime - beginTime) / 1000 / 60.0;
- Task newTask = new Task(id, name,beginTime, endTime, totalMins, totalMins);
- taskDao.save(newTask);
- return newTask;
- }else{
- return null;
- }
- }
- //将一场众测的所有报告上传至区块链
- public void uploadTestReportInfo(String case_take_id){
- String defaultString="defaultString";
- List<Report> reportList=reportDao.findByCaseTakeId(case_take_id);
- if(reportList!=null){
- for(Report report:reportList){
- JSONObject testReportVO=new JSONObject();
- testReportVO.put("reportHash",defaultString);
- testReportVO.put("taskId",report.getCase_take_id());
- Task task=taskDao.findById(report.getTask_id());
- if(task==null){
- task=getAndSaveTaskInfo(report.getTask_id());
- if(task==null){
- testReportVO.put("taskName",defaultString);
- }else{
- testReportVO.put("taskName",task.getName());
- }
- }else {
- testReportVO.put("taskName",task.getName());
- }
- testReportVO.put("testReportId",report.getId());
- testReportVO.put("testReportName",report.getName());
- testReportVO.put("type",0);
- testReportVO.put("updateTime",System.currentTimeMillis());
- testReportVO.put("workerId",report.getWorker_id());
- String workerName=stuInfoDao.findWorkerName(report.getId());
- if(!"null".equals(workerName)){
- testReportVO.put("workerName",workerName);
- }else{
- testReportVO.put("workerName",defaultString);
- }
- List<Bug> bugList=bugDao.findByReport(report.getId(),case_take_id);
- JSONArray bugReportList=new JSONArray();
- for(Bug bug:bugList){
- JSONObject bugInfo=new JSONObject();
- bugInfo.put("bugId",bug.getId());
- bugInfo.put("bugName",bug.getTitle());
- bugReportList.put(bugInfo);
- }
- testReportVO.put("bugReportList",bugReportList);
- // System.out.println(testReportVO);
- String url=blockChainHost+"testReport";
- try {
- String result = HTTP.postBody(url, testReportVO.toString());
- // if (!result.equals("")) {
- // JSONObject resultJson = new JSONObject(result);
- // System.out.println(resultJson);
- // }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
- }
- // public static void main(String[] args){
- // String url=blockChainHost+"testReport";
- //// String json="{\"workerId\":\"22383\",\"reportHash\":\"defaultString\",\"taskName\":\"12-1众包测试\",\"updateTime\":1585284050330,\"type\":0,\"workerName\":\"李陈龙\",\"testReportName\":\"宋少行\",\"taskId\":\"1281-2724\",\"testReportId\":\"5cbc1a9f825a8960cdc7bd4f\",\"bugReportList\":[{\"bugId\":\"5cbc1b5c825a8960cdc7bd53\",\"bugName\":\"我再测试测试这个单独分离的\"},{\"bugId\":\"5cbc1b37825a8960cdc7bd52\",\"bugName\":\"帮助出错了\"},{\"bugId\":\"5cbc38f9825a8960cdc7bd57\",\"bugName\":\"测试图片能不能上传\"},{\"bugId\":\"5cbc1d31825a8960cdc7bd54\",\"bugName\":\"无法打开最近账薄\"},{\"bugId\":\"5cbc3919825a8960cdc7bd58\",\"bugName\":\"测试图片\"},{\"bugId\":\"5cbc3ab3825a8960cdc7bd5a\",\"bugName\":\"测试fork\"},{\"bugId\":\"5cbc3a50825a8960cdc7bd59\",\"bugName\":\"测试图片上传\"},{\"bugId\":\"5cbc3e9b825a8960cdc7bd5b\",\"bugName\":\"测试一键fork\"},{\"bugId\":\"5cde9be7825a8948e757cac1\",\"bugName\":\"测试下不选择页面会咋样\"},{\"bugId\":\"5cdfa0cc825a8948e757cade\",\"bugName\":\"打开一下就闪退了\"},{\"bugId\":\"5d402ef3f00e7a801b85e472\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1ac33c5a507c1c1cda33\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1b003c5a507c1c1cda37\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1c363c5a507c60f0766d\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1d3a3c5a507c9120b76a\",\"bugName\":\"test\"},{\"bugId\":\"5d7e1e1b3c5a507c9120b76f\",\"bugName\":\"继续测试\"},{\"bugId\":\"5d7f4254f52b558caaaee01a\",\"bugName\":\"11\"},{\"bugId\":\"5d7f42e1f52b558cecef1ffd\",\"bugName\":\"222\"},{\"bugId\":\"5dd761e307bcfb195d0dfe56\",\"bugName\":\"test\"},{\"bugId\":\"5df8a2a2eea9d780220b1b24\",\"bugName\":\"mm\"},{\"bugId\":\"5df8af01eea9d78664436920\",\"bugName\":\"kkkkk\"},{\"bugId\":\"5df9e097336bd0ad48b598b2\",\"bugName\":\"cninvorm o\"},{\"bugId\":\"5e463a89709308afcfb15a2c\",\"bugName\":\"。。。。\"}]}";
- //// String json="{\"workerId\":\"22383\",\"reportHash\":\"defaultString\",\"taskName\":\"12-1众包测试\",\"updateTime\":1585284050330,\"type\":0,\"workerName\":\"李陈龙\",\"testReportName\":\"宋少行\",\"taskId\":\"1281-2724\",\"testReportId\":\"5cbc1a9f825a8960cdc7bd4f\",\"bugReportList\":[{\"bugId\":\"5cbc1b5c825a8960cdc7bd53\",\"bugName\":\"我再测试测试这个单独分离的\"},{\"bugId\":\"5cbc1b37825a8960cdc7bd52\",\"bugName\":\"帮助出错了\"},{\"bugId\":\"5cbc38f9825a8960cdc7bd57\",\"bugName\":\"测试图片能不能上传\"},{\"bugId\":\"5cbc1d31825a8960cdc7bd54\",\"bugName\":\"无法打开最近账薄\"},{\"bugId\":\"5cbc3919825a8960cdc7bd58\",\"bugName\":\"测试图片\"},{\"bugId\":\"5cbc3ab3825a8960cdc7bd5a\",\"bugName\":\"测试fork\"},{\"bugId\":\"5cbc3a50825a8960cdc7bd59\",\"bugName\":\"测试图片上传\"},{\"bugId\":\"5cbc3e9b825a8960cdc7bd5b\",\"bugName\":\"测试一键fork\"},{\"bugId\":\"5cde9be7825a8948e757cac1\",\"bugName\":\"测试下不选择页面会咋样\"},{\"bugId\":\"5cdfa0cc825a8948e757cade\",\"bugName\":\"打开一下就闪退了\"},{\"bugId\":\"5d402ef3f00e7a801b85e472\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1ac33c5a507c1c1cda33\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1b003c5a507c1c1cda37\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1c363c5a507c60f0766d\",\"bugName\":\"账薄有问题\"},{\"bugId\":\"5d7e1d3a3c5a507c9120b76a\",\"bugName\":\"test\"},{\"bugId\":\"5d7e1e1b3c5a507c9120b76f\",\"bugName\":\"继续测试\"},{\"bugId\":\"5d7f4254f52b558caaaee01a\",\"bugName\":\"11\"},{\"bugId\":\"5d7f42e1f52b558cecef1ffd\",\"bugName\":\"222\"},{\"bugId\":\"5dd761e307bcfb195d0dfe56\",\"bugName\":\"test\"},{\"bugId\":\"5df8a2a2eea9d780220b1b24\",\"bugName\":\"mm\"},{\"bugId\":\"5df8af01eea9d78664436920\",\"bugName\":\"kkkkk\"},{\"bugId\":\"5df9e097336bd0ad48b598b2\",\"bugName\":\"cninvorm o\"},{\"bugId\":\"5e463a89709308afcfb15a2c\",\"bugName\":\"。。。。\"}]}";
- // String json="{\n" +
- // " \"bugReportList\": [\n" +
- // " {\n" +
- // " \"bugId\": \"string\",\n" +
- // " \"bugName\": \"string\"\n" +
- // " },\n" +
- // " {\n" +
- // " \"bugId\": \"string\",\n" +
- // " \"bugName\": \"string\"\n" +
- // " }\n" +
- // "\n" +
- // " ],\n" +
- // " \"reportHash\": \"string\",\n" +
- // " \"taskId\": \"string\",\n" +
- // " \"taskName\": \"string\",\n" +
- // " \"testReportId\": \"string\",\n" +
- // " \"testReportName\": \"string\",\n" +
- // " \"type\": 0,\n" +
- // " \"updateTime\": 0,\n" +
- // " \"workerId\": \"string\",\n" +
- // " \"workerName\": \"string\"\n" +
- // "}";
- // try {
- // String result = HTTP.postBody(url, json);
- // if(!result.equals("")){
- // JSONObject resultJson = new JSONObject(result);
- // System.out.println(resultJson);
- // }
- // }catch (Exception e){
- // e.printStackTrace();
- // }
- //
- // }
- }
|