作者: | 来源:互联网 | 2023-09-04 11:34
4自动添加选课开发4.1学习服务添加选课4.1.1需求分析学习服务接收MQ发送添加选课消息,执行添加选课操作。添加选课成功向学生选课表插入记录、向历史任务表插入
4 自动添加选课开发
4.1 学习服务添加选课
4.1.1需求分析
学习服务接收MQ发送添加选课消息,执行添加 选 课操作。
添加选课成功向学生选课表插入记录、向历史任务表插入记录、并向MQ发送“完成选课”消息。
4.1.2 RabbitMQ配置
学习服务监听MQ的添加选课队列,并且声明完成选课队列,配置代码同订单服务中RabbitMQ配置
4.1.3 Dao
学生选课Dao:
public interface XcLearningCourseRepository extends JpaRepository<XcLearningCourse, String> {
//根据用户和课程查询选课记录&#xff0c;用于判断是否添加选课
XcLearningCourse findXcLearningCourseByUserIdAndCourseId(String userId, String courseId);
}
历史任务Dao&#xff1a;
public interface XcTaskHisRepository extends JpaRepository<XcTaskHis,String> {
}
4.1.4 Service
1、添加选课方法
向xc_learning_course添加记录&#xff0c;为保证不重复添加选课&#xff0c;先查询历史任务表&#xff0c;如果从历史任务表查询不到任务说
明此任务还没有处理&#xff0c;此时则添加选课并添加历史任务。
在学习服务中编码如下代码&#xff1a;
//完成选课
&#64;Transactional
public ResponseResult addcourse(String userId, String courseId,String valid,Date
startTime,Date endTime,XcTask xcTask){
if (StringUtils.isEmpty(courseId)) {
ExceptionCast.cast(LearningCode.LEARNING_GETMEDIA_ERROR);
}
if (StringUtils.isEmpty(userId)) {
ExceptionCast.cast(LearningCode.CHOOSECOURSE_USERISNULL);
}
if(xcTask &#61;&#61; null || StringUtils.isEmpty(xcTask.getId())){
ExceptionCast.cast(LearningCode.CHOOSECOURSE_TASKISNULL);
}
//查询历史任务
Optional<XcTaskHis> optional &#61; xcTaskHisRepository.findById(xcTask.getId());
if(optional.isPresent()){
return new ResponseResult(CommonCode.SUCCESS);
}
XcLearningCourse xcLearningCourse &#61;
xcLearningCourseRepository.findXcLearningCourseByUserIdAndCourseId(userId, courseId);
if (xcLearningCourse &#61;&#61; null) {//没有选课记录则添加
xcLearningCourse &#61; new XcLearningCourse();
xcLearningCourse.setUserId(userId);
xcLearningCourse.setCourseId(courseId);
xcLearningCourse.setValid(valid);
xcLearningCourse.setStartTime(startTime);
xcLearningCourse.setEndTime(endTime);
xcLearningCourse.setStatus("501001");
xcLearningCourseRepository.save(xcLearningCourse);
} else {//有选课记录则更新日期
xcLearningCourse.setValid(valid);
xcLearningCourse.setStartTime(startTime);
xcLearningCourse.setEndTime(endTime);
xcLearningCourse.setStatus("501001");
xcLearningCourseRepository.save(xcLearningCourse);
}
//向历史任务表播入记录
Optional<XcTaskHis> optional &#61; xcTaskHisRepository.findById(xcTask.getId());
if(!optional.isPresent()){
//添加历史任务
XcTaskHis xcTaskHis &#61; new XcTaskHis();
BeanUtils.copyProperties(xcTask,xcTaskHis);
xcTaskHisRepository.save(xcTaskHis);
}
return new ResponseResult(CommonCode.SUCCESS);
}