package com.teaching.backend.controller.courses; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.model.dto.courses.CoursesDTO; import com.teaching.backend.model.dto.courses.PageDTO; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.service.courses.ICoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; /** *

* 前端控制器 *

* * @author zjh * @since 2024-05-30 */ @Api(tags = "课程管理接口") @RestController @RequestMapping("/api/coursesteacher") public class CoursesController { @Autowired ICoursesService coursesService; @ApiOperation("网站首页") @GetMapping("/index") public BaseResponse> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { List coursesVo = coursesService.getPagePageSize(page, pageSize); // System.out.println(coursesVo); long totalcount = coursesService.count(); long toatlPages = (int) Math.ceil((double)totalcount / pageSize); Map objectMap = new HashMap<>(); objectMap.put("content",coursesVo); objectMap.put("totalcount", totalcount); objectMap.put("totalPages", toatlPages); objectMap.put("currentPage", page); return ResultUtils.success(objectMap); } @ApiOperation("新增课程--同步新增课程的总体目标并同时添加所有的分项目标") @ValidateParams({"teacher","img", "category", "nature","name","code","credit","classhours","assessmenttype","assessmentway"}) // 需要校验的参数 @PostMapping("/addcourse") public BaseResponse saveCourse(@RequestBody CoursesDTO coursesDTO){ String data = coursesService.saveCourseWithObjective(coursesDTO); return ResultUtils.success(data); } @ApiOperation("查询课程列表") @ValidateParams({"username"}) @GetMapping("/page") // @PostMapping("/page") public BaseResponse> getCourses(CourseQuery courseQuery){ PageDTO coursesList = coursesService.queryCourses(courseQuery); return ResultUtils.success(coursesList); } @ApiOperation("根据id查询课程") @ValidateParams({"id"}) @GetMapping("/{id}") public BaseResponse getByIdCourse(@PathVariable String id){ if(id==null){ throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空"); } Courses course = coursesService.getById(id); CoursesDTO coursesDTO = new CoursesDTO(); BeanUtils.copyProperties(course,coursesDTO); return ResultUtils.success(coursesDTO); } @ApiOperation("根据id修改课程") @ValidateParams({"id","teacher","img", "category", "nature","name","code","credit","classhours","assessmenttype","assessmentway"}) @PutMapping public BaseResponse editCourse(@RequestBody CoursesDTO coursesDTO){ coursesService.updateCourse(coursesDTO); return ResultUtils.success("编辑成功"); } //TODO:删除功能暂未完善,数据缺失 // 暂时发现有个漏洞 就是目标关联的有知识点的时候还是可以直接删除 // (当有内容的时候本来就是得先删除内容--关联也有知识点 所以内容下面的不用校验 ) @ApiOperation("根据id删除课程") @ValidateParams({"id"}) @DeleteMapping("/{id}") public BaseResponse deleteCourses(@PathVariable String id){ coursesService.deleteBatchByIds(id); // coursesService.removeBatchByIds(ids); return ResultUtils.success("删除成功"); } /** * 导出word * @param response * @throws Exception */ @ApiOperation("导出word") @GetMapping(value = "/down") public void test( HttpServletResponse response) throws Exception{ //-------------------------查询课程通过课程id查 String id = "de3100cad98f76be3176dd39aa748a9e"; coursesService.down(response, id); } }