AnalyzeController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. package edu.nju.controller;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.net.URLDecoder;
  5. import java.util.*;
  6. import javax.servlet.http.HttpServletResponse;
  7. import edu.nju.dao.TaskDao;
  8. import edu.nju.entities.Task;
  9. import edu.nju.entities.ShortToken;
  10. import edu.nju.model.*;
  11. import edu.nju.util.AESUtil;
  12. import org.json.JSONArray;
  13. import org.json.JSONObject;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.util.DigestUtils;
  19. import org.springframework.web.bind.annotation.*;
  20. import edu.nju.service.AnalyzeService;
  21. import edu.nju.service.ReportService;
  22. /**
  23. * 分析接口 /analyze
  24. */
  25. @Controller
  26. @RequestMapping(value = "/analyze")
  27. @CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true")
  28. public class AnalyzeController {
  29. @Autowired
  30. AnalyzeService aservice;
  31. @Autowired
  32. ReportService rservice;
  33. // @Autowired
  34. // BlockChainAspect blockChainAspect;
  35. @Autowired
  36. TaskDao taskDao;
  37. Logger log= LoggerFactory.getLogger(AnalyzeController.class);
  38. //根据用例获取所有有效bug
  39. @RequestMapping(value = "/valid")
  40. @ResponseBody
  41. public void getValid(String case_take_id, HttpServletResponse response) {
  42. try {
  43. PrintWriter out = response.getWriter();
  44. JSONObject result = new JSONObject();
  45. List<String> list = aservice.getValid(case_take_id);
  46. result.put("Count", list.size());
  47. result.put("Detail", new JSONArray(list));
  48. out.print(result);
  49. out.flush();
  50. out.close();
  51. } catch (Exception e) {
  52. // TODO Auto-generated catch block
  53. e.printStackTrace();
  54. }
  55. }
  56. //根据用例获取所有有效bug
  57. @RequestMapping(value = "/validByBugId")
  58. @ResponseBody
  59. public void getValidByBugId(String id, HttpServletResponse response) {
  60. try {
  61. PrintWriter out = response.getWriter();
  62. JSONObject result = new JSONObject();
  63. List<String> list = aservice.getValidByBugId(id);
  64. result.put("Count", list.size());
  65. result.put("Detail", new JSONArray(list));
  66. out.print(result);
  67. out.flush();
  68. out.close();
  69. } catch (Exception e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. }
  73. }
  74. //根据用例获取所有有效bug
  75. @RequestMapping(value = "/bugData")
  76. @ResponseBody
  77. public List<BugDataVO> getBugDataVO(String case_take_id) {
  78. return aservice.getBugDataVO(case_take_id);
  79. }
  80. //获取所有有点赞记录的bug
  81. @RequestMapping(value = "/thums")
  82. @ResponseBody
  83. public void getThums(String case_take_id, HttpServletResponse response) {
  84. try {
  85. JSONObject result = new JSONObject();
  86. PrintWriter out = response.getWriter();
  87. Map<String, String> map = aservice.getThums(case_take_id);
  88. result.put("Count", map.size());
  89. result.put("Detail", new JSONObject(map));
  90. out.print(result);
  91. out.flush();
  92. out.close();
  93. } catch (Exception e) {
  94. // TODO Auto-generated catch block
  95. e.printStackTrace();
  96. }
  97. }
  98. /**
  99. * 47.99.140.117:9001/Bug/api/analyze/scores
  100. *
  101. * @param case_take_id
  102. * caseId - taskId,示例1632-2927
  103. * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}]
  104. */
  105. @RequestMapping(value = "/scores")
  106. @ResponseBody
  107. public void getScores(String case_take_id, HttpServletResponse response) {
  108. try {
  109. PrintWriter out = response.getWriter();
  110. out.print(aservice.getScores(case_take_id));
  111. out.flush();
  112. out.close();
  113. } catch (Exception e) {
  114. // TODO Auto-generated catch block
  115. e.printStackTrace();
  116. }
  117. }
  118. /**
  119. * 47.99.140.117:9001/Bug/api/analyze/newScores
  120. *
  121. * @param case_take_id
  122. * caseId - taskId,示例1632-2927
  123. * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}]
  124. */
  125. @RequestMapping(value = "/newScores")
  126. @ResponseBody
  127. public void getNewScores(String case_take_id, HttpServletResponse response) {
  128. try {
  129. PrintWriter out = response.getWriter();
  130. out.print(aservice.getNewScores(aservice.getScores(case_take_id)));
  131. out.flush();
  132. out.close();
  133. } catch (Exception e) {
  134. // TODO Auto-generated catch block
  135. e.printStackTrace();
  136. }
  137. }
  138. //获取所有的参与用户,这个方法之前写的,ms有点问题啊
  139. @RequestMapping(value = "/users")
  140. @ResponseBody
  141. public void getUsers(String case_take_id, HttpServletResponse response) {
  142. try {
  143. PrintWriter out = response.getWriter();
  144. out.print(new JSONArray(aservice.getReports(case_take_id)));
  145. out.flush();
  146. out.close();
  147. } catch (Exception e) {
  148. // TODO Auto-generated catch block
  149. e.printStackTrace();
  150. }
  151. }
  152. //真正获取所有的参与用户
  153. @RequestMapping(value = "/workers")
  154. @ResponseBody
  155. public List<Long> getUserss(Long examId) {
  156. return aservice.getUsers(String.valueOf(examId));
  157. }
  158. //获取指定bug的打分等级
  159. @RequestMapping(value = "/grade")
  160. @ResponseBody
  161. public void getGrade(String id, HttpServletResponse response) {
  162. try {
  163. JSONObject result = new JSONObject();
  164. result.put("grade", aservice.getGrade(id));
  165. PrintWriter out = response.getWriter();
  166. out.print(result);
  167. out.flush();
  168. out.close();
  169. } catch (Exception e) {
  170. // TODO Auto-generated catch block
  171. e.printStackTrace();
  172. }
  173. }
  174. //存储单个bug的打分等级
  175. @RequestMapping(value = "/save")
  176. @ResponseBody
  177. public void saveGrade(String id, String grade, HttpServletResponse response) {
  178. try {
  179. JSONObject result = new JSONObject();
  180. if(aservice.saveGrade(id, Integer.parseInt(grade))) {result.put("status", "200");}
  181. else {result.put("status", "500");}
  182. PrintWriter out = response.getWriter();
  183. out.print(result);
  184. out.flush();
  185. out.close();
  186. } catch (Exception e) {
  187. // TODO Auto-generated catch block
  188. e.printStackTrace();
  189. }
  190. }
  191. @RequestMapping(value = "/saveSimiliar")
  192. @ResponseBody
  193. public void saveSimiliarGrade(String id, String grade,String similiarBug, HttpServletResponse response) {
  194. try {
  195. JSONObject result = new JSONObject();
  196. if(aservice.saveSimiliarGrade(id, Integer.parseInt(grade),similiarBug)) {result.put("status", "200");}
  197. else {result.put("status", "500");}
  198. PrintWriter out = response.getWriter();
  199. out.print(result);
  200. out.flush();
  201. out.close();
  202. } catch (Exception e) {
  203. // TODO Auto-generated catch block
  204. e.printStackTrace();
  205. }
  206. }
  207. @RequestMapping(value = "/saveByWorker")
  208. @ResponseBody
  209. public void saveGradeByWorker(String id,String worker_id, String grade, HttpServletResponse response) {
  210. try {
  211. JSONObject result = new JSONObject();
  212. if(aservice.saveGradeByWorker(id, worker_id,Integer.parseInt(grade))) {result.put("status", "200");}
  213. else {result.put("status", "500");}
  214. PrintWriter out = response.getWriter();
  215. out.print(result);
  216. out.flush();
  217. out.close();
  218. } catch (Exception e) {
  219. // TODO Auto-generated catch block
  220. e.printStackTrace();
  221. }
  222. }
  223. //获取页面和种类的分布情况
  224. @RequestMapping(value = "/bugDetail")
  225. @ResponseBody
  226. public void getDetail(String case_take_id, HttpServletResponse response) {
  227. try {
  228. PrintWriter out = response.getWriter();
  229. out.print(aservice.getCaseDetail(case_take_id));
  230. out.flush();
  231. out.close();
  232. } catch (Exception e) {
  233. // TODO Auto-generated catch block
  234. e.printStackTrace();
  235. }
  236. }
  237. //获取所有打分等级
  238. @RequestMapping(value = "/allGrades")
  239. @ResponseBody
  240. public void getAllGrades(String case_take_id, HttpServletResponse response) {
  241. try {
  242. JSONObject result = new JSONObject();
  243. Map<String, Integer> map = aservice.getAllGrades(case_take_id);
  244. result.put("Count", map.size());
  245. result.put("Detail", new JSONObject(map));
  246. PrintWriter out = response.getWriter();
  247. out.print(result);
  248. out.flush();
  249. out.close();
  250. } catch (Exception e) {
  251. // TODO Auto-generated catch block
  252. e.printStackTrace();
  253. }
  254. }
  255. //判断哪些还没有打分,split后面是用例表中不存在的bug
  256. @RequestMapping(value = "/diff")
  257. @ResponseBody
  258. public void getDiff(String case_take_id, HttpServletResponse response) {
  259. try {
  260. PrintWriter out = response.getWriter();
  261. JSONObject result = new JSONObject();
  262. List<String> list = aservice.getDiff(case_take_id);
  263. result.put("Count", list.size());
  264. result.put("Detail", new JSONArray(list));
  265. out.print(result);
  266. out.flush();
  267. out.close();
  268. } catch (Exception e) {
  269. // TODO Auto-generated catch block
  270. e.printStackTrace();
  271. }
  272. }
  273. /**
  274. * 获取路径信息 /path 返回整个导图,以及已点亮的导图页面
  275. * @param case_take_id 案例-任务id
  276. * @param report_id 报告id
  277. * @param response
  278. */
  279. @RequestMapping(value = "/path")
  280. @ResponseBody
  281. public void getUserPath(String case_take_id, String report_id, HttpServletResponse response) {
  282. try {
  283. PrintWriter out = response.getWriter();
  284. JSONObject result = new JSONObject();
  285. result.put("all", filter(aservice.getBugDetail(case_take_id)));
  286. result.put("self", filter(rservice.getUserPath(report_id, case_take_id)));
  287. out.print(result);
  288. out.flush();
  289. out.close();
  290. } catch (Exception e) {
  291. // TODO Auto-generated catch block
  292. e.printStackTrace();
  293. }
  294. }
  295. private Map<String, Integer> filter(Map<String, Integer> maps) {
  296. Map<String, Integer> result = new HashMap<String, Integer>();
  297. for(Map.Entry<String, Integer> entry : maps.entrySet()) {
  298. String[] pages = entry.getKey().split("-");
  299. if(pages.length > 0) {
  300. String key = pages[pages.length - 1];
  301. result.put(key, result.getOrDefault(key, 0) + entry.getValue());
  302. }
  303. }
  304. return result;
  305. }
  306. @RequestMapping(value = "/afterSimilarBug")
  307. @ResponseBody
  308. public void getAfterSimilarBug(String bug_id, HttpServletResponse response){
  309. try {
  310. PrintWriter out = response.getWriter();
  311. JSONObject result = new JSONObject();
  312. result.put("bugList",aservice.getAfterSimilarBug(bug_id));
  313. out.print(result);
  314. out.flush();
  315. out.close();
  316. } catch (Exception e) {
  317. e.printStackTrace();
  318. }
  319. }
  320. @RequestMapping(value = "/analyseExam")
  321. @ResponseBody
  322. public void analyseExam(String caseId, String taskId, HttpServletResponse response){
  323. try {
  324. PrintWriter out = response.getWriter();
  325. AnalyseVO analyseVO=aservice.getReviewAnalyseVO(caseId, taskId);
  326. out.print(new JSONObject(analyseVO));
  327. out.flush();
  328. out.close();
  329. } catch (Exception e) {
  330. e.printStackTrace();
  331. }
  332. }
  333. /**
  334. * todo 引进 guvva 来做缓存
  335. * @param caseId
  336. * @param taskId
  337. * @param workId
  338. * @param response
  339. */
  340. @RequestMapping(value = "/analysePeople")
  341. @ResponseBody
  342. public void analysePeople(String caseId, String taskId, String workId , HttpServletResponse response){
  343. try {
  344. response.setCharacterEncoding("utf-8");
  345. response.setContentType("text/html;charset=utf-8");
  346. PrintWriter out = response.getWriter();
  347. AnalysePeopleVO analyseVO=aservice.getReviewAnalysePeopleVO(caseId, taskId,workId);
  348. out.print(new JSONObject(analyseVO));
  349. out.flush();
  350. out.close();
  351. } catch (Exception e) {
  352. e.printStackTrace();
  353. }
  354. }
  355. @RequestMapping(value = "/analyse/getTaskToken")
  356. @ResponseBody
  357. public String getAnalyseTaskToken(String caseId,String taskId,HttpServletResponse response ){
  358. return AESUtil.encrypt("taskId="+taskId+"&caseId="+caseId);
  359. }
  360. /**
  361. *
  362. * @param token
  363. * @param response
  364. */
  365. @RequestMapping(value = "/analyse/task")
  366. public void analyseTask(String token, HttpServletResponse response ){
  367. String realUrl = AESUtil.decrypt(token);
  368. System.out.println("realUrl " + realUrl);
  369. String [] decoder = url2decode(realUrl);
  370. analyseExam2(decoder[1],decoder[0],response);
  371. // return "redirect:/analyze/analyseExam2?"+realUrl;
  372. }
  373. /**
  374. * todo 引进 guvva 来做缓存
  375. * @param workId
  376. * @param response
  377. */
  378. @RequestMapping(value = "/analyse/people")
  379. public void analyseSinglePeople(String token, String workId , HttpServletResponse response){
  380. String realUrl = AESUtil.decrypt(token);
  381. String [] decoder = url2decode(realUrl);
  382. analysePeople(decoder[1],decoder[0],workId,response);
  383. // return "redirect:/analyze/analysePeople?"+realUrl+"&workId="+workId;
  384. }
  385. @RequestMapping(value = "/historicalData")
  386. @ResponseBody
  387. public HistoricalDataVO getHistoricalData(Long workerId,int caseTypeId){
  388. return aservice.getHistoricalData(workerId, caseTypeId);
  389. }
  390. // @RequestMapping(value = "/uploadTestReportToBlockChain")
  391. // @ResponseBody
  392. // public void uploadTestReport(String bug_id,HttpServletResponse response){
  393. // try {
  394. // PrintWriter out = response.getWriter();
  395. // JSONObject result = new JSONObject();
  396. // if (blockChainAspect.uploadTestReportInfoToBlockChain(bug_id)) {
  397. // result.put("status","200");
  398. // }else{
  399. // result.put("status","500");
  400. // }
  401. // out.print(result);
  402. // out.flush();
  403. // out.close();
  404. // }catch (IOException e){
  405. // e.printStackTrace();
  406. // }
  407. // }
  408. @RequestMapping(value = "/analyseExam2", method = RequestMethod.GET)
  409. @ResponseBody
  410. public void analyseExam2(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  411. try {
  412. response.setCharacterEncoding("utf-8");
  413. response.setContentType("text/html;charset=utf-8");
  414. PrintWriter out = response.getWriter();
  415. AnalyseVO2 analyseVO=aservice.getReviewAnalyseVO2(caseId, taskId);
  416. out.print(new JSONObject(analyseVO));
  417. out.flush();
  418. out.close();
  419. } catch (Exception e) {
  420. e.printStackTrace();
  421. }
  422. }
  423. @RequestMapping(value = "/analysePageCover", method = RequestMethod.GET)
  424. @ResponseBody
  425. public void analysePageCover(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  426. try {
  427. response.setCharacterEncoding("utf-8");
  428. response.setContentType("text/html;charset=utf-8");
  429. PrintWriter out = response.getWriter();
  430. Map<String,Integer>map=aservice.getPageCover(taskId, caseId);
  431. out.print(new JSONObject(map));
  432. out.flush();
  433. out.close();
  434. } catch (Exception e) {
  435. e.printStackTrace();
  436. }
  437. }
  438. @RequestMapping(value = "/analyseBugInfo", method = RequestMethod.GET)
  439. @ResponseBody
  440. public void analyseBugInfo(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId, HttpServletResponse response){
  441. try {
  442. response.setCharacterEncoding("utf-8");
  443. response.setContentType("text/html;charset=utf-8");
  444. PrintWriter out = response.getWriter();
  445. int[][]bugInfo=aservice.getBugInfo(taskId, caseId);
  446. JSONArray res = new JSONArray();
  447. for(int i =0;i<bugInfo.length;i++){
  448. for(int j =0;j<bugInfo[0].length;j++){
  449. if(bugInfo[i][j]!=0){
  450. JSONArray temp = new JSONArray();
  451. temp.put(BugSeverity.getValue(i));
  452. temp.put(BugRecurrent.getValue(j));
  453. temp.put(bugInfo[i][j]);
  454. temp.put(bugInfo[i][j]+"个");
  455. temp.put("报告数量 ");
  456. res.put(temp);
  457. }
  458. }
  459. }
  460. out.print(res);
  461. out.flush();
  462. out.close();
  463. } catch (Exception e) {
  464. e.printStackTrace();
  465. }
  466. }
  467. @RequestMapping(value = "/analyse/BugInfo", method = RequestMethod.GET)
  468. public void analyseBugInfoByToken(@RequestParam("token") String token, HttpServletResponse response){
  469. try {
  470. String realUrl = AESUtil.decrypt(token);
  471. String [] decoder = url2decode(realUrl);
  472. analyseBugInfo(decoder[1],decoder[0],response);
  473. } catch (Exception e) {
  474. e.printStackTrace();
  475. }
  476. }
  477. @RequestMapping(value = "/analyseBugSubmitInfo", method = RequestMethod.GET)
  478. public void analyseBugSubmitInfo(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId,@RequestParam("piece") int piece, HttpServletResponse response){
  479. PrintWriter out = null;
  480. try {
  481. response.setCharacterEncoding("utf-8");
  482. response.setContentType("text/html;charset=utf-8");
  483. out = response.getWriter();
  484. Map<String,Integer>map=aservice.getBugSubmitInfo(taskId,caseId,piece);
  485. JSONObject res = new JSONObject();
  486. JSONArray label = new JSONArray(map.keySet());
  487. JSONArray data = new JSONArray(map.values());
  488. res.put("label",label);
  489. res.put("data",data);
  490. out.print(res);
  491. out.flush();
  492. out.close();
  493. } catch (Exception e) {
  494. e.printStackTrace();
  495. JSONObject res = new JSONObject();
  496. res.put("label",new JSONArray());
  497. res.put("data",new JSONArray());
  498. out.print(res);
  499. out.flush();
  500. out.close();
  501. }
  502. }
  503. @RequestMapping(value = "/analyse/BugSubmitInfo", method = RequestMethod.GET)
  504. @ResponseBody
  505. public void analyseBugSubmitInfoByToken(@RequestParam("token") String token ,@RequestParam("piece") int piece, HttpServletResponse response){
  506. try {
  507. String realUrl = AESUtil.decrypt(token);
  508. String [] decoder = url2decode(realUrl);
  509. analyseBugSubmitInfo(decoder[1],decoder[0],piece,response);
  510. } catch (Exception e) {
  511. e.printStackTrace();
  512. }
  513. }
  514. /**
  515. * 根据token获取众测任务具体信息
  516. * @param token
  517. * @param response
  518. */
  519. @GetMapping(value = "/tokenToDetail")
  520. @ResponseBody
  521. public void tokenToDetailUrl(String token ,HttpServletResponse response){
  522. try {
  523. JSONObject result = new JSONObject();
  524. ShortToken shortToken=aservice.tokenToDetail(token);
  525. if(shortToken==null){
  526. result.put("result","fail");
  527. result.put("cause","身份验证失败,请重新点击按钮进入答题页面");
  528. }else {
  529. //有效
  530. if(shortToken.isDisabled()){
  531. shortToken.setDisabled(false);
  532. // aservice.saveShortToken(shortToken);
  533. aservice.deleteShortToken(shortToken);
  534. result.put("result", "success");
  535. result.put("examId",shortToken.getExamId());
  536. result.put("caseId",shortToken.getCaseId());
  537. result.put("userId",shortToken.getUserId());
  538. result.put("roleId",shortToken.getRoleId());
  539. result.put("beginTime",shortToken.getBeginTime());
  540. result.put("endTime",shortToken.getEndTime());
  541. }
  542. //无效
  543. else{
  544. result.put("result","fail");
  545. result.put("cause","身份验证失败,请重新点击按钮进入答题页面");
  546. }
  547. }
  548. PrintWriter out = response.getWriter();
  549. out.print(result);
  550. out.flush();
  551. out.close();
  552. } catch (Exception e) {
  553. e.printStackTrace();
  554. }
  555. }
  556. /**
  557. * 根据众测信息获取对应token
  558. * @param examId
  559. * @param caseId
  560. * @param userId
  561. * @param beginTime
  562. * @param endTime
  563. * @param roleId 0-学生 1-教师
  564. * @return
  565. */
  566. @GetMapping(value = "/detailToToken")
  567. @ResponseBody
  568. public String detailToToken(String examId,String caseId,String userId, int roleId, String beginTime,String endTime){
  569. JSONObject result = new JSONObject();
  570. try {
  571. String token= DigestUtils.md5DigestAsHex((UUID.randomUUID().toString()).getBytes());
  572. ShortToken newShortToken=new ShortToken(token,beginTime,endTime,caseId,examId,userId,roleId,true);
  573. aservice.saveShortToken(newShortToken);
  574. result.put("result","success");
  575. result.put("token",newShortToken.getToken());
  576. return result.toString();
  577. } catch (Exception e) {
  578. e.printStackTrace();
  579. }
  580. result.put("result","fail");
  581. return result.toString();
  582. }
  583. // // 修改前版本
  584. // /**
  585. // * 根据token获取众测任务具体信息
  586. // * @param token
  587. // * @param response
  588. // */
  589. // @RequestMapping(value = "/tokenToDetail")
  590. // @ResponseBody
  591. // public void tokenToDetailUrl(String token ,HttpServletResponse response){
  592. // try {
  593. // JSONObject result = new JSONObject();
  594. // ShortToken shortToken=aservice.tokenToDetail(token);
  595. // if(shortToken==null){
  596. // result.put("result","fail");
  597. // result.put("cause","no such token");
  598. // }else {
  599. // result.put("result", "success");
  600. // result.put("examId",shortToken.getExamId());
  601. // result.put("caseId",shortToken.getCaseId());
  602. // result.put("userId",shortToken.getUserId());
  603. // result.put("beginTime",shortToken.getBeginTime());
  604. // result.put("endTime",shortToken.getEndTime());
  605. // }
  606. // PrintWriter out = response.getWriter();
  607. // out.print(result);
  608. // out.flush();
  609. // out.close();
  610. // } catch (Exception e) {
  611. // e.printStackTrace();
  612. // }
  613. // }
  614. //
  615. // /**
  616. // * 根据众测信息获取对应token
  617. // * @param examId
  618. // * @param caseId
  619. // * @param userId
  620. // * @param beginTime
  621. // * @param endTime
  622. // * @return
  623. // */
  624. // @RequestMapping(value = "/detailToToken")
  625. // @ResponseBody
  626. // public String detailToToken(String examId,String caseId,String userId,String beginTime,String endTime){
  627. // JSONObject result = new JSONObject();
  628. // try {
  629. // ShortToken shortToken=aservice.findTokenByDetail(examId,caseId,userId);
  630. // if(shortToken==null){
  631. //// String token=AESUtil.encrypt(examId+"/"+caseId+"/"+userId);
  632. // String token= DigestUtils.md5DigestAsHex((examId+"/"+caseId+"/"+userId).getBytes());
  633. // ShortToken newShortToken=new ShortToken(token,beginTime,endTime,caseId,examId,userId,true);
  634. // aservice.saveShortToken(newShortToken);
  635. // result.put("result","success");
  636. // result.put("token",token);
  637. // }else{
  638. // shortToken.setBeginTime(beginTime);
  639. // shortToken.setEndTime(endTime);
  640. // aservice.saveShortToken(shortToken);
  641. // result.put("result","success");
  642. // result.put("token",shortToken.getToken());
  643. // }
  644. // return result.toString();
  645. // } catch (Exception e) {
  646. // e.printStackTrace();
  647. // }
  648. // result.put("result","fail");
  649. // return result.toString();
  650. // }
  651. @RequestMapping(value = "/progress", method = RequestMethod.GET)
  652. @ResponseBody
  653. public Double crowdTestProgress(String token){
  654. // return 50.0;
  655. String realUrl = AESUtil.decrypt(token);
  656. String [] decoder = url2decode(realUrl);
  657. String taskId=decoder[0];
  658. String caseId=decoder[1];
  659. System.out.println("taskId " + taskId);
  660. try {
  661. Task task=taskDao.findById(taskId);
  662. if(task.getEnd_time()>System.currentTimeMillis()){
  663. return aservice.crowdTestProgressFromDB(caseId,taskId);
  664. }else{
  665. return aservice.crowdTestProgress(caseId,taskId);
  666. }
  667. }catch (Exception e){
  668. System.out.println("taskId not found");
  669. return 0.0;
  670. }
  671. }
  672. private String [] url2decode(String str){
  673. log.info("#AnalyseController url2decode(): "+str);
  674. String [] res = new String[2];
  675. String [] temp = str.split("&");
  676. if(temp[0].startsWith("taskId=")){
  677. res[0] = temp[0].substring(7);
  678. }
  679. if(temp[1].startsWith("caseId=")){
  680. res[1] = temp[1].substring(7);
  681. }
  682. return res;
  683. }
  684. }