选课流程

数据模型

我的课程表Controller
@Api(value = "我的课程表接口", tags = "我的课程表接口")
@Slf4j
@RestController
public class MyCourseTablesController {
@Autowired
private 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);
}