Преглед на файлове

Merge branch 'dev' into test

MengyangDuan преди 4 години
родител
ревизия
dba74b1d96

+ 73 - 0
src/main/java/edu/nju/controller/AnalyzeController.java

@@ -2,6 +2,7 @@ package edu.nju.controller;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.net.URLDecoder;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -9,6 +10,7 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import edu.nju.entities.ShortToken;
 import edu.nju.model.*;
 import edu.nju.util.AESUtil;
 import edu.nju.util.BlockChainAspect;
@@ -16,6 +18,7 @@ import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 
 import edu.nju.service.AnalyzeService;
@@ -527,6 +530,76 @@ public class AnalyzeController {
 		}
 	}
 
+	/**
+	 * 根据token获取众测任务具体信息
+	 * @param token
+	 * @param response
+	 */
+	@RequestMapping(value = "/tokenToDetail")
+	@ResponseBody
+	public void tokenToDetailUrl(String token ,HttpServletResponse response){
+		try {
+			JSONObject result = new JSONObject();
+			ShortToken shortToken=aservice.tokenToDetail(token);
+			if(shortToken==null){
+				result.put("result","fail");
+				result.put("cause","no such token");
+			}else {
+				result.put("result", "success");
+				result.put("examId",shortToken.getExamId());
+				result.put("caseId",shortToken.getCaseId());
+				result.put("userId",shortToken.getUserId());
+				result.put("beginTime",shortToken.getBeginTime());
+				result.put("endTime",shortToken.getEndTime());
+			}
+			PrintWriter out = response.getWriter();
+			out.print(result);
+			out.flush();
+			out.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * 根据众测信息获取对应token
+	 * @param examId
+	 * @param caseId
+	 * @param userId
+	 * @param beginTime
+	 * @param endTime
+	 * @return
+	 */
+	@RequestMapping(value = "/detailToToken")
+	@ResponseBody
+	public String detailToToken(String examId,String caseId,String userId,String beginTime,String endTime){
+		JSONObject result = new JSONObject();
+		try {
+			ShortToken shortToken=aservice.findTokenByDetail(examId,caseId,userId);
+			if(shortToken==null){
+//				String token=AESUtil.encrypt(examId+"/"+caseId+"/"+userId);
+				String token= DigestUtils.md5DigestAsHex((examId+"/"+caseId+"/"+userId).getBytes());
+				ShortToken newShortToken=new ShortToken(token,beginTime,endTime,caseId,examId,userId,true);
+				aservice.saveShortToken(newShortToken);
+				result.put("result","success");
+				result.put("token",token);
+			}else{
+				shortToken.setBeginTime(beginTime);
+				shortToken.setEndTime(endTime);
+				aservice.saveShortToken(shortToken);
+				result.put("result","success");
+				result.put("token",shortToken.getToken());
+			}
+			return result.toString();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		result.put("result","fail");
+		return result.toString();
+	}
+
+
+
 
 	private String [] url2decode(String str){
 		String [] res = new String[2];

+ 44 - 0
src/main/java/edu/nju/dao/ShortTokenDao.java

@@ -0,0 +1,44 @@
+package edu.nju.dao;
+
+import edu.nju.entities.ShortToken;
+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;
+
+/**
+ * @Author JiaWei Xu
+ * @Date 2020-12-03 16:35
+ * @Email xjwhhh233@outlook.com
+ */
+@Repository
+public class ShortTokenDao {
+    @Autowired
+    private MongoOperations mongoOperations;
+
+    public String save(ShortToken shortToken) {
+        mongoOperations.save(shortToken);
+        return shortToken.getId();
+    }
+
+    public ShortToken findByTokenString(String token){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("token").is(token));
+        List<ShortToken> list = mongoOperations.find(query,ShortToken.class);
+        if(list.size() == 0)  {return null;}
+        return list.get(0);
+    }
+
+    public ShortToken findByDetailInfo(String examId,String caseId,String userId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("examId").is(examId).and("caseId").is(caseId).and("userId").is(userId));
+        List<ShortToken> list = mongoOperations.find(query,ShortToken.class);
+        if(list.size() == 0)  {return null;}
+        return list.get(0);
+    }
+
+
+}

+ 110 - 0
src/main/java/edu/nju/entities/ShortToken.java

@@ -0,0 +1,110 @@
+package edu.nju.entities;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.annotation.PersistenceConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+
+/**
+ * @Author JiaWei Xu
+ * @Date 2020-12-03 15:11
+ * @Email xjwhhh233@outlook.com
+ */
+@Document
+public class ShortToken implements Serializable {
+
+    private static final long serialVersionUID = 8980368107739914394L;
+
+    @Id
+    private String id;
+
+    private String token;
+
+    private String beginTime;
+
+    private String endTime;
+
+    private String caseId;
+
+    private String examId;
+
+    private String userId;
+
+    private boolean disabled;
+
+    @PersistenceConstructor
+    public ShortToken(String token, String beginTime, String endTime, String caseId, String examId, String userId,boolean disabled) {
+        this.token = token;
+        this.beginTime = beginTime;
+        this.endTime = endTime;
+        this.caseId = caseId;
+        this.examId = examId;
+        this.userId = userId;
+        this.disabled=disabled;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getBeginTime() {
+        return beginTime;
+    }
+
+    public void setBeginTime(String beginTime) {
+        this.beginTime = beginTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getCaseId() {
+        return caseId;
+    }
+
+    public void setCaseId(String caseId) {
+        this.caseId = caseId;
+    }
+
+    public String getExamId() {
+        return examId;
+    }
+
+    public void setExamId(String examId) {
+        this.examId = examId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public boolean isDisabled() {
+        return disabled;
+    }
+
+    public void setDisabled(boolean disabled) {
+        this.disabled = disabled;
+    }
+}

+ 15 - 0
src/main/java/edu/nju/service/AnalyzeService.java

@@ -84,6 +84,9 @@ public class AnalyzeService {
 	ExtraService extraService;
 
 	@Autowired
+
+	ShortTokenDao shortTokenDao;
+
 	ExamDao examDao;
 
 	@Value("${server.host}")
@@ -1076,6 +1079,18 @@ public class AnalyzeService {
 		return res;
 	}
 
+	public ShortToken tokenToDetail(String token){
+		return shortTokenDao.findByTokenString(token);
+	}
+
+	public ShortToken findTokenByDetail(String examId,String caseID,String userId){
+		return shortTokenDao.findByDetailInfo(examId,caseID,userId);
+	}
+
+	public String saveShortToken(ShortToken shortToken){
+		return shortTokenDao.save(shortToken);
+	}
+