From 276868828e85fb6042527b42609bcdeffdf97110 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Thu, 16 Jan 2025 18:54:58 +0800 Subject: [PATCH] 1 --- .../module/course/service/ProcessService.java | 12 +++++ .../service/impl/ProcessServiceImpl.java | 26 ++++++++- .../admin/ReservationCourseController.java | 15 ++++++ .../train/entity/ReservationCourse.java | 8 ++- .../yudao/module/train/entity/Train.java | 4 ++ .../service/ReservationCourseService.java | 11 ++++ .../impl/ReservationCourseServiceImpl.java | 54 +++++++++++++++++++ 7 files changed, 124 insertions(+), 6 deletions(-) diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java index b4b1d939..c3c9c4fd 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/ProcessService.java @@ -29,4 +29,16 @@ public interface ProcessService extends IService { * @param process 查询对象 **/ IPage getMyCourseStudentPage(Process process, Page page); + + /** + * 查某个学员在某个教练的某个课程、某个科目的学习进度(当前在练习中的) + * @author vinjor-M + * @date 18:39 2025/1/16 + * @param userId 学生id + * @param courseId 课程id + * @param subject 科目 + * @param coachId 教练id + * @return cn.iocoder.yudao.module.course.entity.Process + **/ + Process getByStudentAndCourse(Integer userId,String courseId,Integer subject,Long coachId); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java index 574baeca..00c1255f 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java @@ -65,9 +65,33 @@ public class ProcessServiceImpl extends ServiceImpl impl queryWrapper.like(Process::getUserName,process.getUserName()); } //状态等于1-训练中的 - queryWrapper.ne(Process::getStatus,"1") + queryWrapper.eq(Process::getStatus,"1") .groupBy(Process::getUserId) .orderByDesc(BaseDO::getCreateTime); return this.page(page,queryWrapper); } + + /** + * 查某个学员在某个教练的某个课程、某个科目的学习进度(当前在练习中的) + * + * @param userId 学生id + * @param courseId 课程id + * @param subject 科目 + * @param coachId 教练id + * @return cn.iocoder.yudao.module.course.entity.Process + * @author vinjor-M + * @date 18:39 2025/1/16 + **/ + @Override + public Process getByStudentAndCourse(Integer userId, String courseId, Integer subject, Long coachId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(Process::getUserId,userId) + .eq(Process::getCoachId,coachId) + .eq(Process::getCourseId,courseId) + .eq(Process::getSubject,subject) + .eq(Process::getStatus,"1") + .orderByDesc(BaseDO::getCreateTime); + List processList = this.list(queryWrapper); + return processList.isEmpty()?null:processList.get(0); + } } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java index 7edaa715..ebeaf37e 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/controller/admin/ReservationCourseController.java @@ -72,5 +72,20 @@ public class ReservationCourseController { return success(reservationCourseService.getById(id)); } + /** + * 根据学生userId查询学生信息及当天的预约记录 + * @author vinjor-M + * @date 17:25 2025/1/16 + * @param userId 学生userId + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult + **/ + @GetMapping("/getUserInfoAndReservation") + @Operation(summary = "根据学生userId查询学生信息及当天的预约记录") + @Parameter(name = "id", description = "学生userId", required = true, example = "1024") + public CommonResult getReservationCourse(@RequestParam("userId") Integer userId, + @RequestParam("courseId") String courseId, + @RequestParam("subject") Integer subject) { + return success(reservationCourseService.getUserInfoAndReservation(userId,courseId,subject)); + } } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/ReservationCourse.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/ReservationCourse.java index fb857656..754374df 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/ReservationCourse.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/ReservationCourse.java @@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; -import java.util.Date; - /** * 预约练车 DO * @@ -51,11 +49,11 @@ public class ReservationCourse extends TenantBaseDO { */ private String coachName; /** - * 预约日期 + * 预约日期 yyyy-MM-dd */ - private Date reservDay; + private String reservDay; /** - * 时间段(字典:school_reserv_time) + * 时间段(字典:school_reserv_time)09:00-10:00 */ private String reservTime; /** diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/Train.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/Train.java index 4c48dd89..8664e3b6 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/Train.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/entity/Train.java @@ -38,6 +38,10 @@ public class Train extends TenantBaseDO { * 课程名称 */ private String courseName; + /** + * 科目(1-科目一;2-科目二;3科目三;4科目四) + */ + private Integer subject; /** * 用户(学员)ID */ diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java index 7f49e12f..2f85189d 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/ReservationCourseService.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** * 预约练车 Service 接口 * @@ -23,4 +25,13 @@ public interface ReservationCourseService extends IService { **/ IPage queryListPage(ReservationCourseVO pageReqVO, Page page); + /** + * 根据学生userId查询学生信息及当天的预约记录 + * @author vinjor-M + * @date 17:27 2025/1/16 + * @param userId + * @return java.util.Map + **/ + Map getUserInfoAndReservation(Integer userId,String courseId,Integer subject); + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java index 747d3631..bcbf0401 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/ReservationCourseServiceImpl.java @@ -1,15 +1,27 @@ package cn.iocoder.yudao.module.train.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.course.entity.Process; +import cn.iocoder.yudao.module.course.service.ProcessService; import cn.iocoder.yudao.module.train.entity.ReservationCourse; import cn.iocoder.yudao.module.train.mapper.ReservationCourseMapper; import cn.iocoder.yudao.module.train.service.ReservationCourseService; import cn.iocoder.yudao.module.train.vo.ReservationCourseVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * 预约练车 Service 实现类 @@ -20,6 +32,8 @@ import org.springframework.stereotype.Service; public class ReservationCourseServiceImpl extends ServiceImpl implements ReservationCourseService { @Autowired private ReservationCourseMapper reservationCourseMapper; + @Autowired + private ProcessService processService; /** * 分页查询 @@ -35,4 +49,44 @@ public class ReservationCourseServiceImpl extends ServiceImpl rtnList = reservationCourseMapper.queryListPage(pageReqVO, page); return rtnList; } + + /** + * 根据学生userId查询学生信息及当天的预约记录 + * + * @param userId + * @return java.util.Map + * @author vinjor-M + * @date 17:27 2025/1/16 + **/ + @SneakyThrows + @Override + public Map getUserInfoAndReservation(Integer userId,String courseId,Integer subject) { + Map rtnMap = new HashMap<>(); + //当前教练ID + Long coachId = SecurityFrameworkUtils.getLoginUserId(); + String nowDayStr = DateUtil.format(new Date(), "yyyy-MM-dd"); + //查预约记录 + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper() + .eq(ReservationCourse::getUserId,userId) + .eq(ReservationCourse::getCoachId,coachId) + .eq(ReservationCourse::getCourseId,courseId) + .eq(ReservationCourse::getSubject,subject) + .eq(ReservationCourse::getIfCancel,false) + .eq(ReservationCourse::getReservDay,nowDayStr) + .eq(ReservationCourse::getStatus,1) + .orderByDesc(BaseDO::getCreateTime); + List list = this.list(queryWrapper); + if(!list.isEmpty()){ + rtnMap.put("reservation",list.get(0)); + } + //查该学员,该科目进度 + Process process = processService.getByStudentAndCourse(userId,courseId,subject,coachId); + if(null==process){ + throw new Exception("该学员未报名你的课程,请向管理员核实"); + } + rtnMap.put("process",process); + //TODO 学员表接口对接 + rtnMap.put("userInfo",null); + return rtnMap; + } } \ No newline at end of file