|
|
|
@ -25,84 +25,191 @@ import com.tamguo.util.TamguoConstant;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Controller - 试卷
|
|
|
|
|
* 该类作为Spring的控制器,主要用于处理与试卷相关的各种Web请求,例如展示试卷列表页面、试卷详情页面,以及根据地区查找试卷等功能,
|
|
|
|
|
* 通过调用相应的服务层接口获取数据,并将数据添加到ModelAndView对象中返回给视图进行展示,或者直接以JSON格式返回数据给前端(如通过@ResponseBody注解的方法)。
|
|
|
|
|
*
|
|
|
|
|
* @author candy.tam
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
@Controller
|
|
|
|
|
public class PaperController {
|
|
|
|
|
|
|
|
|
|
// 自动注入ICourseService,用于处理课程相关的业务逻辑,比如根据课程ID查找课程、按学科ID查找课程列表等操作,在获取试卷相关信息时可能会涉及课程信息的查询。
|
|
|
|
|
@Autowired
|
|
|
|
|
private ICourseService iCourseService;
|
|
|
|
|
|
|
|
|
|
// 自动注入IAreaService,用于处理地区相关的业务逻辑,例如查找根地区列表等操作,可能在按地区筛选试卷等功能中会用到地区相关信息的查询。
|
|
|
|
|
@Autowired
|
|
|
|
|
private IAreaService iAreaService;
|
|
|
|
|
|
|
|
|
|
// 自动注入IPaperService,用于处理试卷相关的业务逻辑,像查找试卷、获取试卷列表、根据各种条件筛选试卷、获取推荐试卷等操作都是通过该服务来完成。
|
|
|
|
|
@Autowired
|
|
|
|
|
private IPaperService iPaperService;
|
|
|
|
|
|
|
|
|
|
// 自动注入IQuestionService,用于处理试题相关的业务逻辑,例如查找试卷对应的试题列表等操作,在试卷详情页面展示试题信息时会调用该服务。
|
|
|
|
|
@Autowired
|
|
|
|
|
private IQuestionService iQuestionService;
|
|
|
|
|
|
|
|
|
|
// 自动注入ISubjectService,用于处理学科相关的业务逻辑,例如根据学科ID查找学科信息等操作,试卷通常与特定学科相关,查询试卷相关信息时可能需要获取学科相关内容。
|
|
|
|
|
@Autowired
|
|
|
|
|
private ISubjectService iSubjectService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理试卷列表页面的GET请求,根据传入的多个路径变量(学科ID、课程ID、试卷类型、年份、地区、页码),查询并获取与这些条件相关的试卷列表及其他相关信息(如课程、学科、地区列表等),
|
|
|
|
|
* 将这些信息添加到ModelAndView对象中,设置视图名称为"paperlist",最后返回该ModelAndView对象用于渲染相应的试卷列表页面视图给用户。
|
|
|
|
|
* 如果在查询过程中出现异常,则将视图名称设置为"404",返回相应的ModelAndView对象,表示出现错误情况(可能展示404页面给用户)。
|
|
|
|
|
*
|
|
|
|
|
* @param subjectId 学科的唯一标识符,用于筛选特定学科下的试卷列表。
|
|
|
|
|
* @param courseId 课程的唯一标识符,用于进一步筛选属于该课程的试卷。
|
|
|
|
|
* @param paperType 试卷的类型,用于按类型筛选试卷(具体类型值根据业务定义,可能是真题、模拟题等分类)。
|
|
|
|
|
* @param year 试卷对应的年份,用于按年份筛选试卷,方便用户查找特定年份的试卷。
|
|
|
|
|
* @param area 试卷所属的地区,用于按地区筛选试卷,满足不同地区用户查看对应地区试卷的需求。
|
|
|
|
|
* @param pageNum 当前页码,用于分页查询试卷列表,确定要展示的那一页试卷信息。
|
|
|
|
|
* @param model 用于传递数据到视图的ModelAndView对象,在这里将各种相关数据添加到该对象中。
|
|
|
|
|
* @return 返回包含视图名称和相关试卷及关联数据的ModelAndView对象,用于渲染相应的试卷列表页面视图。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = {"paperlist/{subjectId}-{courseId}-{paperType}-{year}-{area}-{pageNum}"}, method = RequestMethod.GET)
|
|
|
|
|
public ModelAndView indexAction(@PathVariable String subjectId , @PathVariable String courseId , @PathVariable String paperType,
|
|
|
|
|
@PathVariable String year , @PathVariable String area , @PathVariable Integer pageNum, ModelAndView model) {
|
|
|
|
|
try {
|
|
|
|
|
model.setViewName("paperlist");
|
|
|
|
|
|
|
|
|
|
CourseEntity course = iCourseService.find(courseId);
|
|
|
|
|
List<CourseEntity> courseList = iCourseService.findBySubjectId(subjectId);
|
|
|
|
|
SubjectEntity subject = iSubjectService.find(subjectId);
|
|
|
|
|
List<AreaEntity> areaList = iAreaService.findRootArea();
|
|
|
|
|
PageUtils page = PageUtils.getPage(iPaperService.findList(subjectId , courseId , paperType , year , area , pageNum));
|
|
|
|
|
if(course == null) {
|
|
|
|
|
course = courseList.get(0);
|
|
|
|
|
}
|
|
|
|
|
Long total = iPaperService.getPaperTotal();
|
|
|
|
|
model.addObject("courseList", courseList);
|
|
|
|
|
model.addObject("subject", subject);
|
|
|
|
|
model.addObject("course", course);
|
|
|
|
|
model.addObject("areaList", areaList);
|
|
|
|
|
model.addObject("paperPage" , page);
|
|
|
|
|
model.addObject("total" , total);
|
|
|
|
|
model.addObject("courseId", course.getUid());
|
|
|
|
|
model.addObject("paperType", paperType);
|
|
|
|
|
model.addObject("year", year);
|
|
|
|
|
model.addObject("area", area);
|
|
|
|
|
return model;
|
|
|
|
|
public ModelAndView indexAction(@PathVariable String subjectId, @PathVariable String courseId,
|
|
|
|
|
@PathVariable String paperType, @PathVariable String year, @PathVariable String area,
|
|
|
|
|
@PathVariable Integer pageNum, ModelAndView model) {
|
|
|
|
|
try {
|
|
|
|
|
// 设置视图名称为"paperlist",对应相应的试卷列表页面模板,后续会根据这个名称去查找并渲染对应的视图展示给用户。
|
|
|
|
|
model.setViewName("paperlist");
|
|
|
|
|
|
|
|
|
|
// 根据传入的课程ID,通过课程服务查询并获取对应的课程实体信息,用于在试卷列表页面展示试卷所属课程等相关信息。
|
|
|
|
|
CourseEntity course = iCourseService.find(courseId);
|
|
|
|
|
|
|
|
|
|
// 通过课程服务,查找与传入学科ID对应的所有课程列表,可能用于在试卷列表页面展示该学科下的所有课程,方便用户切换查看不同课程的试卷情况。
|
|
|
|
|
List<CourseEntity> courseList = iCourseService.findBySubjectId(subjectId);
|
|
|
|
|
|
|
|
|
|
// 根据传入的学科ID,通过学科服务查询并获取对应的学科实体信息,用于在试卷列表页面展示试卷所属学科等相关信息。
|
|
|
|
|
SubjectEntity subject = iSubjectService.find(subjectId);
|
|
|
|
|
|
|
|
|
|
// 通过地区服务查找根地区列表信息,可能用于在试卷列表页面提供地区筛选的下拉菜单等功能,展示所有可选的地区范围(具体根据业务需求而定)。
|
|
|
|
|
List<AreaEntity> areaList = iAreaService.findRootArea();
|
|
|
|
|
|
|
|
|
|
// 调用试卷服务的findList方法,根据传入的多个条件(学科ID、课程ID、试卷类型、年份、地区、页码)获取相应的试卷列表数据,并通过PageUtils工具类进行分页相关的处理,得到包含分页信息的PageUtils对象。
|
|
|
|
|
PageUtils page = PageUtils.getPage(iPaperService.findList(subjectId, courseId, paperType, year, area, pageNum));
|
|
|
|
|
|
|
|
|
|
// 如果通过课程ID未查询到对应的课程实体(可能课程ID不存在或者其他原因导致查询失败),则取课程列表中的第一个课程作为默认展示(具体根据业务逻辑需求调整)。
|
|
|
|
|
if (course == null) {
|
|
|
|
|
course = courseList.get(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 调用试卷服务的getPaperTotal方法获取试卷的总数量,可能用于在试卷列表页面展示总共有多少试卷等相关统计信息。
|
|
|
|
|
Long total = iPaperService.getPaperTotal();
|
|
|
|
|
|
|
|
|
|
// 将查询到的课程列表信息添加到ModelAndView对象中,以便在视图中展示该学科下的所有课程情况,方便用户切换查看不同课程的试卷。
|
|
|
|
|
model.addObject("courseList", courseList);
|
|
|
|
|
|
|
|
|
|
// 将查询到的学科实体信息添加到ModelAndView对象中,以便在视图中展示试卷所属学科等相关信息。
|
|
|
|
|
model.addObject("subject", subject);
|
|
|
|
|
|
|
|
|
|
// 将查询到的课程实体信息添加到ModelAndView对象中,以便在视图中展示试卷所属课程等相关信息。
|
|
|
|
|
model.addObject("course", course);
|
|
|
|
|
|
|
|
|
|
// 将查询到的地区列表信息添加到ModelAndView对象中,以便在视图中展示可筛选的地区范围,供用户按地区查找试卷。
|
|
|
|
|
model.addObject("areaList", areaList);
|
|
|
|
|
|
|
|
|
|
// 将包含分页信息的试卷列表数据(通过PageUtils包装)添加到ModelAndView对象中,以便在视图中展示具体的试卷列表内容。
|
|
|
|
|
model.addObject("paperPage", page);
|
|
|
|
|
|
|
|
|
|
// 将试卷的总数量添加到ModelAndView对象中,以便在视图中展示试卷的统计信息,如告知用户总共有多少试卷等。
|
|
|
|
|
model.addObject("total", total);
|
|
|
|
|
|
|
|
|
|
// 将当前试卷所属的课程ID添加到ModelAndView对象中,可能用于前端页面的一些交互逻辑或者链接生成等用途(具体根据前端需求确定)。
|
|
|
|
|
model.addObject("courseId", course.getUid());
|
|
|
|
|
|
|
|
|
|
// 将当前试卷的类型添加到ModelAndView对象中,可能用于在视图中对试卷进行分类展示或者筛选等相关操作(具体根据前端展示需求确定)。
|
|
|
|
|
model.addObject("paperType", paperType);
|
|
|
|
|
|
|
|
|
|
// 将当前试卷对应的年份添加到ModelAndView对象中,可能用于在视图中按年份对试卷进行筛选或者展示等相关操作(具体根据前端展示需求确定)。
|
|
|
|
|
model.addObject("year", year);
|
|
|
|
|
|
|
|
|
|
// 将当前试卷所属的地区添加到ModelAndView对象中,可能用于在视图中按地区对试卷进行筛选或者展示等相关操作(具体根据前端展示需求确定)。
|
|
|
|
|
model.addObject("area", area);
|
|
|
|
|
|
|
|
|
|
// 返回包含视图名称和各种相关数据的ModelAndView对象,以便进行视图渲染并展示给用户试卷列表页面内容。
|
|
|
|
|
return model;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 如果在查询相关数据过程中出现异常,将视图名称设置为"404",通常用于表示请求的资源不存在等错误情况。
|
|
|
|
|
model.setViewName("404");
|
|
|
|
|
// 返回包含错误视图名称的ModelAndView对象,可能会渲染出404页面展示给用户。
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理试卷详情页面的GET请求,根据传入的试卷ID,查询并获取与该试卷相关的各种信息(如试卷本身信息、所属学科、课程、试题列表以及各种推荐试卷列表等),
|
|
|
|
|
* 将这些信息添加到ModelAndView对象中,设置视图名称为"paper",最后返回该ModelAndView对象用于渲染相应的试卷详情页面视图给用户。
|
|
|
|
|
* 如果在查询过程中出现异常,则将视图名称设置为"404",返回相应的ModelAndView对象,表示出现错误情况(可能展示404页面给用户)。
|
|
|
|
|
*
|
|
|
|
|
* @param paperId 试卷的唯一标识符,用于定位要展示详情的具体试卷。
|
|
|
|
|
* @param model 用于传递数据到视图的ModelAndView对象,在这里将各种相关数据添加到该对象中。
|
|
|
|
|
* @return 返回包含视图名称和相关试卷及关联数据的ModelAndView对象,用于渲染相应的试卷详情页面视图。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = {"/paper/{paperId}.html"}, method = RequestMethod.GET)
|
|
|
|
|
public ModelAndView indexAction(@PathVariable String paperId , ModelAndView model){
|
|
|
|
|
public ModelAndView indexAction(@PathVariable String paperId, ModelAndView model) {
|
|
|
|
|
try {
|
|
|
|
|
// 设置视图名称为"paper",对应相应的试卷详情页面模板,后续会根据这个名称去查找并渲染对应的视图展示给用户。
|
|
|
|
|
model.setViewName("paper");
|
|
|
|
|
|
|
|
|
|
// 根据传入的试卷ID,通过试卷服务查询并获取对应的试卷实体信息,用于在试卷详情页面展示试卷的详细内容。
|
|
|
|
|
PaperEntity paper = iPaperService.find(paperId);
|
|
|
|
|
|
|
|
|
|
// 将查询到的试卷实体信息添加到ModelAndView对象中,以便在视图中展示试卷的详细内容,如试卷名称、考试时间等信息。
|
|
|
|
|
model.addObject("paper", paper);
|
|
|
|
|
model.addObject("subject", StringUtils.isEmpty(paper.getSubjectId()) ? null : iSubjectService.find(paper.getSubjectId()));
|
|
|
|
|
model.addObject("course", StringUtils.isEmpty(paper.getCourseId()) ? null : iCourseService.find(paper.getCourseId()));
|
|
|
|
|
|
|
|
|
|
// 判断试卷的学科ID是否为空,如果不为空则通过学科服务查询并获取对应的学科实体信息,然后添加到ModelAndView对象中,用于在试卷详情页面展示试卷所属学科等相关信息;
|
|
|
|
|
// 如果学科ID为空,则添加null,表示没有对应的学科信息(这种情况可能是数据异常等原因导致,具体根据业务逻辑处理)。
|
|
|
|
|
model.addObject("subject", StringUtils.isEmpty(paper.getSubjectId())? null : iSubjectService.find(paper.getSubjectId()));
|
|
|
|
|
|
|
|
|
|
// 判断试卷的课程ID是否为空,如果不为空则通过课程服务查询并获取对应的课程实体信息,然后添加到ModelAndView对象中,用于在试卷详情页面展示试卷所属课程等相关信息;
|
|
|
|
|
// 如果课程ID为空,则添加null,表示没有对应的课程信息(这种情况可能是数据异常等原因导致,具体根据业务逻辑处理)。
|
|
|
|
|
model.addObject("course", StringUtils.isEmpty(paper.getCourseId())? null : iCourseService.find(paper.getCourseId()));
|
|
|
|
|
|
|
|
|
|
// 通过试题服务,查找该试卷对应的试题列表信息,用于在试卷详情页面展示试卷包含的具体试题内容等情况。
|
|
|
|
|
model.addObject("questionList", iQuestionService.findPaperQuestion(paperId));
|
|
|
|
|
|
|
|
|
|
// 获取推荐试卷
|
|
|
|
|
// 获取真题推荐试卷列表,调用试卷服务的featuredPaper方法,传入特定的真题标识(TamguoConstant.ZHENGTI_PAPER_ID)和当前试卷的学科ID,获取相关的真题推荐试卷列表,
|
|
|
|
|
// 并添加到ModelAndView对象中,用于在试卷详情页面展示相关的推荐试卷内容,方便用户查看其他类似的真题试卷。
|
|
|
|
|
model.addObject("zhentiPaperList", iPaperService.featuredPaper(TamguoConstant.ZHENGTI_PAPER_ID, paper.getSubjectId()));
|
|
|
|
|
|
|
|
|
|
// 获取模拟题推荐试卷列表,调用试卷服务的featuredPaper方法,传入特定的模拟题标识(TamguoConstant.MONI_PAPER_ID)和当前试卷的学科ID,获取相关的模拟题推荐试卷列表,
|
|
|
|
|
// 并添加到ModelAndView对象中,用于在试卷详情页面展示相关的推荐试卷内容,方便用户查看其他类似的模拟题试卷。
|
|
|
|
|
model.addObject("moniPaperList", iPaperService.featuredPaper(TamguoConstant.MONI_PAPER_ID, paper.getSubjectId()));
|
|
|
|
|
|
|
|
|
|
// 获取押题推荐试卷列表,调用试卷服务的featuredPaper方法,传入特定的押题标识(TamguoConstant.YATI_PAPER_ID)和当前试卷的学科ID,获取相关的押题推荐试卷列表,
|
|
|
|
|
// 并添加到ModelAndView对象中,用于在试卷详情页面展示相关的推荐试卷内容,方便用户查看其他类似的押题试卷。
|
|
|
|
|
model.addObject("yatiPaperList", iPaperService.featuredPaper(TamguoConstant.YATI_PAPER_ID, paper.getSubjectId()));
|
|
|
|
|
|
|
|
|
|
// 获取热门试卷列表,调用试卷服务的findHotPaper方法,传入当前试卷的学科ID和课程ID,获取相关的热门试卷列表,
|
|
|
|
|
// 并添加到ModelAndView对象中,用于在试卷详情页面展示相关的推荐试卷内容,方便用户查看其他热门的试卷。
|
|
|
|
|
model.addObject("hotPaperList", iPaperService.findHotPaper(paper.getSubjectId(), paper.getCourseId()));
|
|
|
|
|
|
|
|
|
|
// 返回包含视图名称和各种相关数据的ModelAndView对象,以便进行视图渲染并展示给用户试卷详情页面内容。
|
|
|
|
|
return model;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 如果在查询相关数据过程中出现异常,将视图名称设置为"404",通常用于表示请求的资源不存在等错误情况。
|
|
|
|
|
model.setViewName("404");
|
|
|
|
|
// 返回包含错误视图名称的ModelAndView对象,可能会渲染出404页面展示给用户。
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理根据地区ID和试卷类型查找试卷的GET请求,直接调用试卷服务的相应方法,根据传入的地区ID和试卷类型查找对应的试卷列表信息,并将查找结果(试卷列表)以JSON格式返回给前端,
|
|
|
|
|
* 方便前端根据返回的试卷数据进行展示或者其他相关操作(例如动态加载某个地区下特定类型的试卷列表等功能)。
|
|
|
|
|
*
|
|
|
|
|
* @param areaId 地区的唯一标识符,用于定位要查找试卷所属的地区范围。
|
|
|
|
|
* @param type 试卷的类型,用于筛选出符合该类型的试卷,具体类型值根据业务定义,可能是真题、模拟题等分类。
|
|
|
|
|
* @return 返回包含指定地区下符合类型要求的所有试卷实体信息的List<PaperEntity>列表,若未找到则返回空列表,前端可根据返回结果进行相应展示或处理。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = {"/paper/area/{areaId}-{type}.html"}, method = RequestMethod.GET)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public List<PaperEntity> findPaperByAreaId(@PathVariable String areaId ,@PathVariable String type){
|
|
|
|
|
return iPaperService.findPaperByAreaId(areaId , type);
|
|
|
|
|
public List<PaperEntity> findPaperByAreaId(@PathVariable String areaId, @PathVariable String type) {
|
|
|
|
|
return iPaperService.findPaperByAreaId(areaId, type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|