选课流程

数据模型

我的课程表Controller
@Api(value = "我的课程表接口", tags = "我的课程表接口")
@Slf4j
@RestController
public class MyCourseTablesController {@Autowiredprivate MyCourseTablesService myCourseTablesService;@ApiOperation("添加选课")@PostMapping("/choosecourse/{courseId}")public XcChooseCourseDto addChooseCourse(@PathVariable("courseId") Long courseId) {SecurityUtil.XcUser user = SecurityUtil.getUser();if (user == null) {XueChengPlusException.cast("请登录后继续选课");}String userId = user.getId();XcChooseCourseDto xcChooseCourseDto = myCourseTablesService.addChooseCourse(userId, courseId);return xcChooseCourseDto;}@ApiOperation("查询学习资格")@PostMapping("/choosecourse/learnstatus/{courseId}")public XcCourseTablesDto getLearnstatus(@PathVariable("courseId") Long courseId) {log.debug("查询学习资格,参数courseId:{}", courseId);SecurityUtil.XcUser user = SecurityUtil.getUser();if (user == null) {XueChengPlusException.cast("请登录后继续选课");}String userId = user.getId();return myCourseTablesService.getLearningStatus(userId, courseId);}@ApiOperation("我的课程表")@GetMapping("/mycoursetable")public PageResult<XcCourseTables> mycoursetable(MyCourseTableParams params) {SecurityUtil.XcUser user = SecurityUtil.getUser();if (user == null) {XueChengPlusException.cast("请登录后继续选课");}String userId = user.getId();params.setUserId(userId);return myCourseTablesService.mycoursetabls(params);}}
我的课程表服务
添加选课记录
@Override
public XcChooseCourseDto addChooseCourse(String userId, Long courseId) {CoursePublish coursepublish = contentServiceClient.getCoursepublish(courseId);if (coursepublish == null) {XueChengPlusException.cast("课程不存在");}String charge = coursepublish.getCharge();XcChooseCourse xcChooseCourse = null;if ("201000".equals(charge)) {xcChooseCourse = addFreeCourse(userId, coursepublish);XcCourseTables xcCourseTables = addCourseTables(xcChooseCourse);} else {xcChooseCourse = addChargeCourse(userId, coursepublish);}XcCourseTablesDto xcCourseTablesDto = getLearningStatus(userId, courseId);XcChooseCourseDto xcChooseCourseDto = new XcChooseCourseDto();BeanUtils.copyProperties(xcChooseCourse, xcChooseCourseDto);xcChooseCourseDto.setLearnStatus(xcCourseTablesDto.getLearnStatus());return xcChooseCourseDto;
}
添加免费课程,免费课程加入选课记录表、我的课程表
public XcChooseCourse addFreeCourse(String userId, CoursePublish coursepublish) {Long courseId = coursepublish.getId();LambdaQueryWrapper<XcChooseCourse> queryWrapper = new LambdaQueryWrapper<XcChooseCourse>().eq(XcChooseCourse::getUserId, userId).eq(XcChooseCourse::getCourseId, courseId).eq(XcChooseCourse::getOrderType, "700001") .eq(XcChooseCourse::getStatus, "701001"); List<XcChooseCourse> xcChooseCourses = chooseCourseMapper.selectList(queryWrapper);if (xcChooseCourses != null && !xcChooseCourses.isEmpty()) {return xcChooseCourses.get(0);}XcChooseCourse xcChooseCourse = new XcChooseCourse();xcChooseCourse.setCourseId(courseId);xcChooseCourse.setUserId(userId);xcChooseCourse.setCourseName(coursepublish.getName());xcChooseCourse.setCompanyId(coursepublish.getCompanyId());xcChooseCourse.setOrderType("700001");xcChooseCourse.setCreateDate(LocalDateTime.now());xcChooseCourse.setValidDays(365);xcChooseCourse.setCoursePrice(coursepublish.getPrice());xcChooseCourse.setStatus("701001");xcChooseCourse.setValidtimeStart(LocalDateTime.now());xcChooseCourse.setValidtimeEnd(LocalDateTime.now().plusDays(365));int insert = chooseCourseMapper.insert(xcChooseCourse);if (insert <= 0) {XueChengPlusException.cast("添加选课记录失败");}return xcChooseCourse;}
添加收费课程
public XcChooseCourse addChargeCourse(String userId, CoursePublish coursepublish) {Long courseId = coursepublish.getId();LambdaQueryWrapper<XcChooseCourse> queryWrapper = new LambdaQueryWrapper<XcChooseCourse>().eq(XcChooseCourse::getUserId, userId).eq(XcChooseCourse::getCourseId, courseId).eq(XcChooseCourse::getOrderType, "700002") .eq(XcChooseCourse::getStatus, "701002"); List<XcChooseCourse> xcChooseCourses = chooseCourseMapper.selectList(queryWrapper);if (xcChooseCourses != null && !xcChooseCourses.isEmpty()) {return xcChooseCourses.get(0);}XcChooseCourse xcChooseCourse = new XcChooseCourse();xcChooseCourse.setCourseId(courseId);xcChooseCourse.setUserId(userId);xcChooseCourse.setCourseName(coursepublish.getName());xcChooseCourse.setCompanyId(coursepublish.getCompanyId());xcChooseCourse.setOrderType("700002"); xcChooseCourse.setCreateDate(LocalDateTime.now());xcChooseCourse.setValidDays(365);xcChooseCourse.setCoursePrice(coursepublish.getPrice());xcChooseCourse.setStatus("701002"); xcChooseCourse.setValidtimeStart(LocalDateTime.now()); xcChooseCourse.setValidtimeEnd(LocalDateTime.now().plusDays(365)); int insert = chooseCourseMapper.insert(xcChooseCourse);if (insert <= 0) {XueChengPlusException.cast("添加选课记录失败");}return xcChooseCourse;
}
根据课程和用户查询我的课程表中某一门课程
public XcCourseTables getXcCourseTables(String userId, Long courseId) {XcCourseTables xcCourseTables = courseTablesMapper.selectOne(new LambdaQueryWrapper<XcCourseTables>().eq(XcCourseTables::getUserId, userId).eq(XcCourseTables::getCourseId, courseId));return xcCourseTables;}
添加到我的课程表
public XcCourseTables addCourseTables(XcChooseCourse xcChooseCourse) {String status = xcChooseCourse.getStatus();if (!"701001".equals(status)) {XueChengPlusException.cast("选课未成功,无法添加到我的课程表");}XcCourseTables xcCourseTables = getXcCourseTables(xcChooseCourse.getUserId(), xcChooseCourse.getCourseId());if (xcCourseTables != null) {return xcCourseTables;}xcCourseTables = new XcCourseTables();BeanUtils.copyProperties(xcChooseCourse, xcCourseTables);xcCourseTables.setChooseCourseId(xcChooseCourse.getId());xcCourseTables.setCourseType(xcChooseCourse.getOrderType()); xcCourseTables.setUpdateDate(LocalDateTime.now());int insert = courseTablesMapper.insert(xcCourseTables);if (insert <= 0) {XueChengPlusException.cast("添加到我的课程表失败");}return xcCourseTables;
}
获取用户的学习状态
@Override
public XcCourseTablesDto getLearningStatus(String userId, Long courseId) {XcCourseTablesDto xcCourseTablesDto = new XcCourseTablesDto();XcCourseTables xcCourseTables = getXcCourseTables(userId, courseId);if (xcCourseTables == null) {xcCourseTablesDto.setLearnStatus("702002");return xcCourseTablesDto;}boolean before = xcCourseTables.getValidtimeEnd().isBefore(LocalDateTime.now());BeanUtils.copyProperties(xcCourseTables, xcCourseTablesDto);if (before) {xcCourseTablesDto.setLearnStatus("702003");} else {xcCourseTablesDto.setLearnStatus("702001");}return xcCourseTablesDto;
}
我的课程表
@Override
public PageResult<XcCourseTables> mycoursestabls(MyCourseTableParams params) {String userId = params.getUserId();int pageNo = params.getPage();int size = params.getSize();Page<XcCourseTables> courseTablesPage = new Page<>(pageNo, size);LambdaQueryWrapper<XcCourseTables> lambdaQueryWrapper = new LambdaQueryWrapper<XcCourseTables>().eq(XcCourseTables::getUserId, userId);Page<XcCourseTables> result = courseTablesMapper.selectPage(courseTablesPage, lambdaQueryWrapper);List<XcCourseTables> records = result.getRecords();long total = result.getTotal();return new PageResult<>(records, total, pageNo, size);
}