package edu.nju.dao; import edu.nju.entities.Task; import edu.nju.util.HTTP; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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; @Repository public class TaskDao { @Autowired private MongoOperations mongoOperations; @Value("${main.site}") private String mainSiteUrl; public Task save(Task task) { mongoOperations.save(task); return task; } public Task findById(String id) { Query query = new Query(); query.addCriteria(Criteria.where("_id").is(id)); List tasks = mongoOperations.find(query, Task.class); if(tasks.size() == 0) { System.out.println("tasks.size() == 0"); return getAndSaveTaskInfo(id); } else { return tasks.get(0); } } private Task getAndSaveTaskInfo(String id){ System.out.println("调用主站(信创)获取考试信息-1 " + mainSiteUrl + "/api/exam/" + id + "/info"); String result = HTTP.sendGet(mainSiteUrl + "/api/exam/" + id + "/info", ""); if (!"".equals(result)) { System.out.println("result1 " + 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); save(newTask); return newTask; }else{ return null; } } }