欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 高效选课系统:一键管理你的课程表

高效选课系统:一键管理你的课程表

2025/5/24 7:16:25 来源:https://blog.csdn.net/QQ2861104332/article/details/148085253  浏览:    关键词:高效选课系统:一键管理你的课程表

选课流程

image-20250516172902613

数据模型

image-20250516174503865

我的课程表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("请登录后继续选课");}// 用户idString 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);}}

我的课程表服务

添加选课记录

/*** 添加选课记录** @param userId   学生ID* @param courseId 课程ID* @return 返回选课记录Dto对象* @throws XueChengPlusException 当课程不存在时抛出异常*/
@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查询对象LambdaQueryWrapper<XcChooseCourse> queryWrapper = new LambdaQueryWrapper<XcChooseCourse>()// 查询用户ID为userId的记录.eq(XcChooseCourse::getUserId, userId)// 查询课程ID为courseId的记录.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 xcChooseCourse = new XcChooseCourse();// 设置课程IDxcChooseCourse.setCourseId(courseId);// 设置用户IDxcChooseCourse.setUserId(userId);// 设置课程名称xcChooseCourse.setCourseName(coursepublish.getName());// 设置公司IDxcChooseCourse.setCompanyId(coursepublish.getCompanyId());// 设置订单类型为免费课程xcChooseCourse.setOrderType("700001");// 设置创建时间为当前时间xcChooseCourse.setCreateDate(LocalDateTime.now());// 设置有效天数为365天xcChooseCourse.setValidDays(365);// 设置课程价格为coursepublish的价格xcChooseCourse.setCoursePrice(coursepublish.getPrice());// 设置选课状态为成功xcChooseCourse.setStatus("701001");// 设置有效期开始时间为当前时间xcChooseCourse.setValidtimeStart(LocalDateTime.now());// 设置有效期结束时间为当前时间加365天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查询对象LambdaQueryWrapper<XcChooseCourse> queryWrapper = new LambdaQueryWrapper<XcChooseCourse>()// 查询用户ID为userId的记录.eq(XcChooseCourse::getUserId, userId)// 查询课程ID为courseId的记录.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 xcChooseCourse = new XcChooseCourse();// 设置课程IDxcChooseCourse.setCourseId(courseId);// 设置用户IDxcChooseCourse.setUserId(userId);// 设置课程名称xcChooseCourse.setCourseName(coursepublish.getName());// 设置公司IDxcChooseCourse.setCompanyId(coursepublish.getCompanyId());// 设置订单类型为免费课程xcChooseCourse.setOrderType("700002"); // 收费课程// 设置创建时间为当前时间xcChooseCourse.setCreateDate(LocalDateTime.now());// 设置有效天数为365天xcChooseCourse.setValidDays(365);// 设置课程价格为coursepublish的价格xcChooseCourse.setCoursePrice(coursepublish.getPrice());// 设置选课状态为成功xcChooseCourse.setStatus("701002"); // 待支付// 设置有效期开始时间为当前时间xcChooseCourse.setValidtimeStart(LocalDateTime.now()); // 有效期开始时间// 设置有效期结束时间为当前时间加365天xcChooseCourse.setValidtimeEnd(LocalDateTime.now().plusDays(365)); // 有效期结束时间// 执行插入操作,返回插入结果int insert = chooseCourseMapper.insert(xcChooseCourse);// 如果插入失败,则抛出异常if (insert <= 0) {XueChengPlusException.cast("添加选课记录失败");}// 返回插入成功的选课记录return xcChooseCourse;
}

根据课程和用户查询我的课程表中某一门课程

/*** @param userId* @param courseId* @return com.xuecheng.learning.model.po.XcCourseTables* @description 根据课程和用户查询我的课程表中某一门课程* @author Mr.M* @date 2022/10/2 17:07*/
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;
}

获取用户的学习状态

/*** 获取用户的学习状态** @param userId 用户ID* @param courseId 课程ID* @return XcCourseTablesDto对象,包含用户的学习状态*/
@Override
public XcCourseTablesDto getLearningStatus(String userId, Long courseId) {XcCourseTablesDto xcCourseTablesDto = new XcCourseTablesDto();// 查询我的课程表,如果查询不到说明没有选课XcCourseTables xcCourseTables = getXcCourseTables(userId, courseId);if (xcCourseTables == null) {// 如果没有选课记录,返回学习资格为空// "code":"702002","desc":"没有选课或选课后没有支付"xcCourseTablesDto.setLearnStatus("702002");return xcCourseTablesDto;}// 如果查到了,判断是否过期,如果过期不能继续学习,没有过期可以继续学习boolean before = xcCourseTables.getValidtimeEnd().isBefore(LocalDateTime.now());BeanUtils.copyProperties(xcCourseTables, xcCourseTablesDto);if (before) {// "code":"702003","desc":"己过期周要中请续期或重新支付"xcCourseTablesDto.setLearnStatus("702003");} else {//"code":"702001","desc":"正常学习”xcCourseTablesDto.setLearnStatus("702001");}return xcCourseTablesDto;
}

我的课程表

/*** 我的课程表* @param params 查询条件* @return*/
@Override
public PageResult<XcCourseTables> mycoursestabls(MyCourseTableParams params) {// 用户idString 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);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词