TaskDao.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package edu.nju.dao;
  2. import edu.nju.entities.Task;
  3. import edu.nju.util.HTTP;
  4. import org.json.JSONObject;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.data.mongodb.core.MongoOperations;
  8. import org.springframework.data.mongodb.core.query.Criteria;
  9. import org.springframework.data.mongodb.core.query.Query;
  10. import org.springframework.stereotype.Repository;
  11. import java.util.List;
  12. @Repository
  13. public class TaskDao {
  14. @Autowired
  15. private MongoOperations mongoOperations;
  16. @Value("${main.site}")
  17. private String mainSiteUrl;
  18. public Task save(Task task) {
  19. mongoOperations.save(task);
  20. return task;
  21. }
  22. public Task findById(String id) {
  23. Query query = new Query();
  24. query.addCriteria(Criteria.where("_id").is(id));
  25. List<Task> tasks = mongoOperations.find(query, Task.class);
  26. if(tasks.size() == 0) {
  27. System.out.println("tasks.size() == 0");
  28. return getAndSaveTaskInfo(id);
  29. }
  30. else { return tasks.get(0); }
  31. }
  32. private Task getAndSaveTaskInfo(String id){
  33. System.out.println("调用主站(信创)获取考试信息-1 " + mainSiteUrl + "/api/exam/" + id + "/info");
  34. String result = HTTP.sendGet(mainSiteUrl + "/api/exam/" + id + "/info", "");
  35. if (!"".equals(result)) {
  36. System.out.println("result1 " + result);
  37. JSONObject json = new JSONObject(result);
  38. long beginTime = json.getLong("beginTime");
  39. long endTime = json.getLong("endTime");
  40. String name=json.getString("name");
  41. double totalMins = (endTime - beginTime) / 1000 / 60.0;
  42. Task newTask = new Task(id, name,beginTime, endTime, totalMins, totalMins);
  43. save(newTask);
  44. return newTask;
  45. }else{
  46. return null;
  47. }
  48. }
  49. }