|
|
|
@ -19,38 +19,93 @@ import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum;
|
|
|
|
|
import com.tamguo.modules.tiku.service.ICourseService;
|
|
|
|
|
import com.tamguo.modules.tiku.service.ISubjectService;
|
|
|
|
|
|
|
|
|
|
// @Controller注解表明这个类是Spring MVC框架中的控制器类,主要负责处理与题库课程相关的Web请求,
|
|
|
|
|
// 通过调用相关的业务服务层(ICourseService、ISubjectService)方法来实现诸如展示课程相关页面、处理课程数据查询、进行课程信息的增删改等操作,
|
|
|
|
|
// 是整个系统中题库课程业务模块在Web层面交互的核心控制部分。
|
|
|
|
|
@Controller
|
|
|
|
|
@RequestMapping(path="tiku/course")
|
|
|
|
|
// @RequestMapping注解为这个控制器类下的所有请求路径设置一个公共前缀,即该控制器主要处理以"tiku/course"开头的请求路径,
|
|
|
|
|
// 便于对题库课程相关的众多不同类型请求进行统一的分类管理,使代码结构更加清晰,便于维护和扩展。
|
|
|
|
|
@RequestMapping(path = "tiku/course")
|
|
|
|
|
public class CourseController {
|
|
|
|
|
|
|
|
|
|
// 以下定义了多个常量字符串,分别代表不同课程相关页面的视图名称,按照Spring MVC的视图解析规则,这些字符串对应着实际存放课程相关展示内容的模板文件路径(比如可能是JSP、Thymeleaf等不同类型模板文件的具体路径),
|
|
|
|
|
// 用于在不同业务场景下展示相应的课程页面内容。
|
|
|
|
|
|
|
|
|
|
/** 科目*/
|
|
|
|
|
private final String COURSE_INDEX_PAGE = "modules/tiku/course/list";
|
|
|
|
|
private final String COURSE_ADD_PAGE = "modules/tiku/course/add";
|
|
|
|
|
private final String COURSE_UPDATE_PAGE = "modules/tiku/course/update";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 通过@Autowired注解自动注入ICourseService接口的实现类实例,ICourseService接口中定义了一系列与题库课程核心业务相关的方法,
|
|
|
|
|
// 比如查询课程详细信息、保存新的课程数据、更新课程已有记录等操作,借助这个注入的实例,本控制器类能够方便地调用这些业务逻辑方法,实现与业务逻辑层的交互,从而完成系统课程相关业务的具体处理。
|
|
|
|
|
@Autowired
|
|
|
|
|
private ICourseService iCourseService;
|
|
|
|
|
|
|
|
|
|
// 通过@Autowired注解自动注入ISubjectService接口的实现类实例,ISubjectService主要用于处理与科目相关的业务逻辑,
|
|
|
|
|
// 例如可以查询处于特定状态(如正常状态)的科目列表等操作,在系统课程相关业务中,科目信息往往和课程存在关联关系(比如课程属于某个科目范畴等情况),
|
|
|
|
|
// 所以注入该实例辅助完成涉及科目相关的课程业务处理,使整个课程业务逻辑更加完善。
|
|
|
|
|
@Autowired
|
|
|
|
|
private ISubjectService iSubjectService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/list"的请求的方法,其主要功能是准备并返回课程列表页面相关的数据和视图信息。
|
|
|
|
|
* 当客户端发起该请求时,此方法会被调用,首先通过调用model.setViewName(COURSE_INDEX_PAGE)将返回的视图名称设置为课程列表页面对应的视图名称(COURSE_INDEX_PAGE),
|
|
|
|
|
* 接着利用注入的ISubjectService实例,通过其selectList方法结合MyBatis Plus的条件构造器(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue()))查询状态为正常的科目列表,
|
|
|
|
|
* 并将查询得到的科目列表数据添加到ModelAndView对象中,ModelAndView对象在Spring MVC中用于承载视图名称以及要传递给视图的数据,
|
|
|
|
|
* 最后将这个包含了视图名称和科目列表数据的ModelAndView对象返回,Spring MVC框架会依据这些信息去正确地渲染展示课程列表页面,
|
|
|
|
|
* 使得用户在访问该页面时,不仅能看到课程信息列表,还能看到相关的科目信息,方便进行一些关联查看等操作。
|
|
|
|
|
* 此处使用了@SuppressWarnings("unchecked")注解来抑制编译器可能产生的unchecked类型警告,
|
|
|
|
|
* 因为在将科目列表数据添加到ModelAndView对象时,编译器可能无法准确判断添加的数据类型是否完全符合预期(但在实际业务逻辑中确保了类型的正确性),使用该注解可以避免不必要的警告提示。
|
|
|
|
|
*
|
|
|
|
|
* @param model ModelAndView对象,用于在方法内部设置视图名称以及添加要传递给视图的数据(在这里就是科目列表数据),
|
|
|
|
|
* 通过它实现了数据与视图的整合,确保视图层能够获取到正确的数据进行页面展示,满足课程列表页面展示科目相关信息的业务需求。
|
|
|
|
|
* @return 返回包含了设置好的视图名称(COURSE_INDEX_PAGE)以及添加了科目列表数据的ModelAndView对象,供Spring MVC框架进行视图渲染展示,从而向客户端呈现课程列表页面。
|
|
|
|
|
*/
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(path="list")
|
|
|
|
|
@RequestMapping(path = "list")
|
|
|
|
|
public ModelAndView index(ModelAndView model) {
|
|
|
|
|
model.setViewName(COURSE_INDEX_PAGE);
|
|
|
|
|
model.addObject("subjectList", iSubjectService.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())));
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/add"的请求的方法,作用是准备并返回新增课程页面相关的数据和视图。
|
|
|
|
|
* 当客户端发起对应请求时,该方法会被执行,首先将返回的视图名称设置为新增课程页面的视图名称(COURSE_ADD_PAGE),
|
|
|
|
|
* 然后同样借助ISubjectService的selectList方法与条件构造器查询状态为正常的科目列表,并把该科目列表数据添加到ModelAndView对象中,
|
|
|
|
|
* 最后返回包含了视图名称和科目列表数据的ModelAndView对象,Spring MVC依据这些信息进行视图渲染展示,向客户端呈现新增课程页面,方便用户在页面上填写新课程的各项信息,
|
|
|
|
|
* 同时参考科目列表来确定课程所属的科目等相关操作。
|
|
|
|
|
* 同样使用了@SuppressWarnings("unchecked")注解来抑制类型未检查的警告,原因与上述index方法类似,即避免编译器对添加科目列表数据时可能出现的类型警告提示。
|
|
|
|
|
*
|
|
|
|
|
* @param model ModelAndView对象,用于设置视图名称以及添加要传递给视图的数据(在这里就是科目列表数据),实现数据与视图的整合,
|
|
|
|
|
* 确保视图层能获取到完整信息用于新增课程页面的展示和操作,方便用户进行新课程信息的录入。
|
|
|
|
|
* @return 返回包含了设置好的视图名称(COURSE_ADD_PAGE)以及添加了科目列表数据的ModelAndView对象,供Spring MVC进行视图渲染展示,展示新增课程页面给客户端。
|
|
|
|
|
*/
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(path="add")
|
|
|
|
|
@RequestMapping(path = "add")
|
|
|
|
|
public ModelAndView add(ModelAndView model) {
|
|
|
|
|
model.setViewName(COURSE_ADD_PAGE);
|
|
|
|
|
model.addObject("subjectList", iSubjectService.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())));
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/update"的请求的方法,负责准备并返回修改课程信息页面相关的数据和视图。
|
|
|
|
|
* 当客户端发起此请求时,方法首先设置要返回的视图名称为修改课程信息页面的视图名称(COURSE_UPDATE_PAGE),
|
|
|
|
|
* 接着借助ISubjectService的selectList方法与条件构造器查询状态为正常的科目列表,并将科目列表数据添加到ModelAndView对象中,
|
|
|
|
|
* 然后通过调用iCourseService.selectById(id)方法,依据传入的id参数(该参数用于指定要查询并修改的课程的唯一标识,比如课程编号等,具体由业务中课程实体类的设计决定)查询对应的课程信息,
|
|
|
|
|
* 并把查询到的课程对象添加到ModelAndView对象中,最后返回包含了视图名称、科目列表数据以及课程对象数据的ModelAndView对象,
|
|
|
|
|
* Spring MVC会根据这些信息正确地渲染展示修改课程信息页面,方便用户查看并编辑课程的各项信息以及参考相关科目信息。
|
|
|
|
|
* 同样使用了@SuppressWarnings("unchecked")注解来抑制类型未检查的警告,原因与前面类似,即避免编译器对添加数据时可能出现的类型警告提示。
|
|
|
|
|
*
|
|
|
|
|
* @param id 从请求中传递过来的字符串参数,用于明确要查询并修改的课程的唯一标识,通过这个标识去数据库获取课程的现有信息以及相关的科目列表信息,
|
|
|
|
|
* 以便在修改页面完整地展示相关内容,供用户进行课程信息的修改操作。
|
|
|
|
|
* @param model ModelAndView对象,用于设置视图名称以及添加要传递给视图的科目列表数据和课程对象数据,实现数据与视图的整合,
|
|
|
|
|
* 确保视图层能获取到完整信息用于修改课程信息页面的展示和操作,使得页面能够准确呈现课程及科目相关情况,便于课程信息修改操作的进行。
|
|
|
|
|
* @return 返回包含了设置好的视图名称(COURSE_UPDATE_PAGE)以及添加了科目列表数据和课程对象数据的ModelAndView对象,供Spring MVC进行视图渲染展示,呈现修改课程信息页面给客户端。
|
|
|
|
|
*/
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(path="update")
|
|
|
|
|
@RequestMapping(path = "update")
|
|
|
|
|
public ModelAndView update(String id, ModelAndView model) {
|
|
|
|
|
model.setViewName(COURSE_UPDATE_PAGE);
|
|
|
|
|
model.addObject("subjectList", iSubjectService.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())));
|
|
|
|
@ -58,72 +113,150 @@ public class CourseController {
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="listData",method=RequestMethod.POST)
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/listData"(且请求方法为POST的请求)的请求方法,用于查询并返回符合条件的课程列表数据,
|
|
|
|
|
* 返回结果会以适合前端表格组件(如jqGrid等)使用的格式包装在Map中,并以JSON格式响应给客户端,方便前端进行数据展示和分页等操作。
|
|
|
|
|
*
|
|
|
|
|
* @param condition CourseCondition对象,用于封装查询课程列表的各种条件,比如查询关键字、分页信息、课程所属科目筛选等条件,根据这些条件去数据库等存储介质中查询课程列表,
|
|
|
|
|
* 满足不同业务场景下对课程数据查询的需求,其具体的条件设置和使用方式由业务逻辑层(iCourseService)的实现来决定。
|
|
|
|
|
* @return 返回一个Map<String, Object>类型的对象,该对象通过调用Result.jqGridResult方法,将从分页查询结果(Page<CourseEntity>对象中获取的课程记录数据、总记录数、每页记录数、当前页码、总页数等信息)进行整合包装,
|
|
|
|
|
* 形成符合前端表格组件期望格式的数据,方便前端能够方便地解析并展示课程列表数据以及进行分页等相关操作。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "listData", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Map<String, Object> listData(CourseCondition condition) {
|
|
|
|
|
Page<CourseEntity> page = iCourseService.listData(condition);
|
|
|
|
|
return Result.jqGridResult(page.getRecords(), page.getTotal(), page.getSize(), page.getCurrent(), page.getPages());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="save",method=RequestMethod.POST)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/save"(且请求方法为POST的请求)的请求方法,用于保存新的课程信息,将客户端提交的课程相关数据保存到数据库等存储介质中,
|
|
|
|
|
* 并返回保存操作的结果给客户端,结果以JSON格式响应,告知客户端保存是否成功以及相关提示信息等内容。
|
|
|
|
|
*
|
|
|
|
|
* @param course CourseEntity对象,包含了新的课程相关信息,比如课程名称、所属科目、课程描述等属性信息,这些信息从客户端提交的数据中获取,
|
|
|
|
|
* 通过调用iCourseService的save方法,将该课程对象的信息持久化存储到数据库中,完成新的课程信息保存操作。
|
|
|
|
|
* @return 返回一个Result对象,若保存操作成功,通过Result类的result方法构建一个包含成功状态码(0表示成功)、提示信息(表明保存科目【课程名称】成功,方便客户端展示友好的提示告知用户操作结果,其中课程名称通过course.getName()获取)以及空的数据部分(因为保存成功后通常不需要返回额外的数据)的Result对象返回给客户端;
|
|
|
|
|
* 若保存过程中出现异常,调用ExceptionSupport的resolverResult方法处理异常,并将处理后的结果(同样包装在Result对象中)返回给客户端,客户端可以根据返回的Result对象判断保存操作是否成功以及获取相应的提示信息等。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "save", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result save(CourseEntity course) {
|
|
|
|
|
try {
|
|
|
|
|
iCourseService.save(course);
|
|
|
|
|
return Result.result(0, null, "保存科目【"+course.getName()+"】成功");
|
|
|
|
|
return Result.result(0, null, "保存科目【" + course.getName() + "】成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return ExceptionSupport.resolverResult("保存科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="update",method=RequestMethod.POST)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为"tiku/course/update"(且请求方法为POST的请求)的请求方法,用于更新已存在的课程信息,将客户端提交的修改后的课程数据更新到数据库等存储介质中,
|
|
|
|
|
* 并返回更新操作的结果给客户端,结果以JSON格式响应,告知客户端更新是否成功以及相应提示信息等内容。
|
|
|
|
|
*
|
|
|
|
|
* @param course CourseEntity对象,包含了修改后的课程相关信息,例如课程名称、所属科目、课程描述等属性信息的更新后内容,这些信息从客户端提交的数据中获取,
|
|
|
|
|
* 通过调用iCourseService的update方法,将该课程对象中修改后的信息更新到数据库中对应的课程记录上,完成课程信息的修改操作。
|
|
|
|
|
* @return 返回一个Result对象,若更新操作成功,通过Result类的result方法构建一个包含成功状态码(0表示成功)、提示信息(表明修改科目【课程名称】成功,便于客户端展示友好的提示告知用户操作结果,其中课程名称通过course.getName()获取)以及空的数据部分(因为更新成功后通常不需要返回额外的数据)的Result对象返回给客户端;
|
|
|
|
|
* 若更新过程中出现异常,调用ExceptionSupport的resolverResult方法处理异常,并将处理后的结果(同样包装在Result对象中)返回给客户端,客户端可以根据返回的Result对象判断更新操作是否成功以及获取相应的提示信息等。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "update", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result update(CourseEntity course) {
|
|
|
|
|
try {
|
|
|
|
|
iCourseService.update(course);
|
|
|
|
|
return Result.result(0, null, "修改科目【"+course.getName()+"】成功");
|
|
|
|
|
return Result.result(0, null, "修改科目【" + course.getName() + "】成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return ExceptionSupport.resolverResult("修改科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="delete",method=RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result delete(String id) {
|
|
|
|
|
try {
|
|
|
|
|
iCourseService.delete(id);
|
|
|
|
|
return Result.result(0, null, "删除科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return ExceptionSupport.resolverResult("删除科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为 "tiku/course/delete"(且请求方法限定为 POST)的请求方法,用于删除指定的课程信息,根据传入的课程唯一标识(id)从数据库等存储介质中删除对应的课程记录,
|
|
|
|
|
* 并返回删除操作的结果给客户端,结果以 JSON 格式响应,告知客户端删除是否成功以及相应提示信息。
|
|
|
|
|
*
|
|
|
|
|
* @param id 从请求中传递过来的字符串参数,用于唯一标识要删除的课程(例如课程编号等,具体取决于业务中课程实体类的设计),通过这个标识定位到数据库中对应的课程记录进行删除操作。
|
|
|
|
|
* @return 返回一个 Result 对象,若删除操作成功,通过 Result 类的 result 方法构建一个包含成功状态码(0 表示成功)、提示信息(表明删除科目成功,用于客户端展示简单明了的提示告知用户操作结果)以及空的数据部分(因为删除成功后通常不需要返回额外的数据)的 Result 对象返回给客户端;
|
|
|
|
|
* 若删除过程中出现异常,调用 ExceptionSupport 的 resolverResult 方法处理异常,并将处理后的结果(同样包装在 Result 对象中)返回给客户端,客户端可以根据返回的 Result 对象判断删除操作是否成功以及获取相应的提示信息等。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "delete", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result delete(String id) {
|
|
|
|
|
try {
|
|
|
|
|
// 调用 iCourseService 的 delete 方法,传入表示要删除课程的唯一标识(id),
|
|
|
|
|
// 由业务逻辑层去执行具体的删除课程的逻辑,例如从数据库中删除该课程的相关记录等操作,以完成删除课程的业务需求。
|
|
|
|
|
iCourseService.delete(id);
|
|
|
|
|
return Result.result(0, null, "删除科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 如果在删除课程操作过程中出现异常,调用 ExceptionSupport 的 resolverResult 方法来处理异常情况。
|
|
|
|
|
// 该方法可能会记录异常详情到日志、返回合适的错误提示等操作,并返回处理后的结果(同样包装在 Result 对象中),
|
|
|
|
|
// 客户端可以根据接收到的返回值判断删除操作是否成功以及是否出现异常情况,进而进行相应的处理(如向用户展示错误提示等)。
|
|
|
|
|
return ExceptionSupport.resolverResult("删除科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="enable",method=RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result enable(String id) {
|
|
|
|
|
try {
|
|
|
|
|
iCourseService.enable(id);
|
|
|
|
|
return Result.result(0, null, "激活科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return ExceptionSupport.resolverResult("激活科目", this.getClass(), e);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为 "tiku/course/enable"(且请求方法限定为 POST)的请求方法,用于激活指定的课程,依据传入的课程编号(id)找到对应的课程,
|
|
|
|
|
* 通过调用业务逻辑层相应方法来执行激活操作,并根据操作结果返回对应信息给客户端,告知激活操作是否成功。
|
|
|
|
|
* 结果以 JSON 格式返回给客户端,便于客户端解析和后续的展示提示信息等处理,告知用户激活课程的操作结果。
|
|
|
|
|
*
|
|
|
|
|
* @param id 从请求中传递过来的字符串参数,用于唯一标识要激活的课程(例如课程编号等,具体取决于业务中课程实体类的设计),
|
|
|
|
|
* 通过这个标识去数据库等存储介质中定位到对应的课程记录,以便执行激活操作,将课程的状态修改为激活状态(具体的状态修改逻辑由业务逻辑层 iCourseService 的 enable 方法实现)。
|
|
|
|
|
* @return 返回一个 Result 对象,若激活操作成功,通过 Result 类的 result 方法构建一个包含成功状态码(0 表示成功)、提示信息(表明激活科目成功,便于客户端向用户展示清晰的操作成功提示)以及空的数据部分(通常激活成功后不需要额外返回其他数据)的 Result 对象返回给客户端;
|
|
|
|
|
* 若激活过程中出现异常,调用 ExceptionSupport 的 resolverResult 方法来处理异常情况,该方法会进行记录异常信息、返回合适的错误提示等操作,然后返回处理后的结果(返回的也是包装在 Result 对象中),
|
|
|
|
|
* 客户端可根据接收到的返回值判断激活操作是否成功以及是否有异常发生,进而进行后续处理(例如向用户展示错误提示等)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "enable", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result enable(String id) {
|
|
|
|
|
try {
|
|
|
|
|
// 调用 iCourseService 的 enable 方法,传入代表要激活课程的唯一标识(id),
|
|
|
|
|
// 由业务逻辑层去执行具体的激活课程的逻辑,比如在数据库中将课程的状态修改为激活状态等操作,以此实现激活课程的业务要求。
|
|
|
|
|
iCourseService.enable(id);
|
|
|
|
|
return Result.result(0, null, "激活科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 当激活课程操作出现异常时,调用 ExceptionSupport 的 resolverResult 方法来处理异常情况。
|
|
|
|
|
// 此方法会进行记录异常信息、返回合适的错误提示等操作,然后返回处理后的结果(返回 null 表示操作失败,出现异常),
|
|
|
|
|
// 客户端可根据接收到的返回值判断激活操作是否成功以及是否有异常发生,进而进行后续处理(例如向用户展示错误提示等)。
|
|
|
|
|
return ExceptionSupport.resolverResult("激活科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="disabled",method=RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result disabled(String id) {
|
|
|
|
|
try {
|
|
|
|
|
iCourseService.disabled(id);
|
|
|
|
|
return Result.result(0, null, "停用科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return ExceptionSupport.resolverResult("停用科目", this.getClass(), e);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为 "tiku/course/disabled"(且请求方法限定为 POST)的请求方法,用于停用指定的课程,按照传入的课程编号(id)来定位要停用的课程,
|
|
|
|
|
* 通过调用业务逻辑层相关方法执行停用操作,并依据操作结果返回相应信息给客户端,告知停用操作是否成功。
|
|
|
|
|
* 结果以 JSON 格式返回给客户端,方便客户端解析并展示相应的提示信息,告知用户停用课程的操作结果。
|
|
|
|
|
*
|
|
|
|
|
* @param id 从请求中传递过来的字符串参数,用于唯一标识要停用的课程(例如课程编号等,具体取决于业务中课程实体类的设计),
|
|
|
|
|
* 通过这个标识去数据库等存储介质中找到对应的课程记录,以便执行停用操作,将课程的状态修改为停用状态(具体的状态修改逻辑由业务逻辑层 iCourseService 的 disabled 方法实现)。
|
|
|
|
|
* @return 返回一个 Result 对象,若停用操作成功,通过 Result 类的 result 方法构建一个包含成功状态码(0 表示成功)、提示信息(表明停用科目成功,方便客户端向用户展示清晰的操作成功提示)以及空的数据部分(通常停用成功后不需要额外返回其他数据)的 Result 对象返回给客户端;
|
|
|
|
|
* 若停用过程中出现异常,调用 ExceptionSupport 的 resolverResult 方法来处理异常情况,该方法会进行记录异常信息、返回合适的错误提示等操作,然后返回处理后的结果(返回的也是包装在 Result 对象中),
|
|
|
|
|
* 客户端可根据接收到的返回值判断停用操作是否成功以及是否有异常发生,进而进行后续处理(例如向用户展示错误提示等)。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "disabled", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result disabled(String id) {
|
|
|
|
|
try {
|
|
|
|
|
// 调用 iCourseService 的 disabled 方法,传入用于标识要停用课程的课程编号(id),
|
|
|
|
|
// 由业务逻辑层去执行具体的停用课程的逻辑,例如在数据库中将课程的状态标记为停用状态等操作,以实现停用课程的业务需求。
|
|
|
|
|
iCourseService.disabled(id);
|
|
|
|
|
return Result.result(0, null, "停用科目成功");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 若在停用课程操作过程中出现异常,调用 ExceptionSupport 的 resolverResult 方法来处理异常情况。
|
|
|
|
|
// 此方法会进行记录异常信息、返回合适的错误提示等操作,然后返回处理后的结果(返回 null 表示操作失败,出现异常),
|
|
|
|
|
// 客户端可以根据接收到的返回值判断停用操作是否成功以及是否出现异常情况,进而进行相应的处理(如向用户展示错误提示等)。
|
|
|
|
|
return ExceptionSupport.resolverResult("停用科目", this.getClass(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(path="treeData",method=RequestMethod.GET)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JSONArray treeData() {
|
|
|
|
|
return iCourseService.treeData();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理路径为 "tiku/course/treeData"(且请求方法限定为 GET)的请求方法,用于查询并返回以树形结构表示的课程数据,方便在前端以树形展示课程的层级关系等情况,返回的数据格式为 JSONArray(通常用于方便地转换为 JSON 格式并传递给前端)。
|
|
|
|
|
* 此方法无参数传入,由业务逻辑层(iCourseService)内部根据既定的业务规则和数据关联关系来构建课程的树形结构数据,例如可能根据课程的分类、所属科目等层级关系构建树形结构。
|
|
|
|
|
*
|
|
|
|
|
* @return 返回一个 JSONArray 类型的数据,其中包含了以树形结构组织的课程数据(具体的数据结构形式应该是符合前端树形组件能够解析和展示的格式,由业务逻辑层 iCourseService 的 treeData 方法构建生成),
|
|
|
|
|
* 供前端接收并展示课程的树形结构,方便用户直观地查看课程的层级和包含关系等信息。
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(path = "treeData", method = RequestMethod.GET)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JSONArray treeData() {
|
|
|
|
|
return iCourseService.treeData();
|
|
|
|
|
}
|