From ef525bd90958a42e65a610a26a7deb1a815aec92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=85=81=E6=9E=9E?= <3422692813@qq.com> Date: Wed, 2 Apr 2025 10:56:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ProcessController.java | 16 ++++++ .../admin/SchoolCourseOrderController.java | 12 +++++ .../course/entity/SchoolCourseOrder.java | 4 ++ .../module/course/service/ProcessService.java | 10 +++- .../service/SchoolCourseOrderService.java | 13 ++++- .../service/impl/ProcessServiceImpl.java | 38 ++++++++++++++ .../impl/SchoolCourseOrderServiceImpl.java | 51 +++++++++++++++++++ .../module/course/vo/SchoolCourseOrderVO.java | 1 + .../mapper/course/SchoolCourseOrderMapper.xml | 26 +++++++--- 9 files changed, 161 insertions(+), 10 deletions(-) diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java index 92f7979f..6fadda34 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/ProcessController.java @@ -120,8 +120,24 @@ public class ProcessController { @PostMapping("/saveProcess") @Operation(summary = "保存学员课程进度") public CommonResult saveProcess(@RequestBody ProcessAddVO request) { + // 订单id和科目集合不能为空 + if (request.getOrderId() == null || request.getProcessList() == null) { + throw new RuntimeException("订单和科目不能为空"); + } processService.saveProcess(request); return success(true); } + /** + * 通过学员id和课程id查询学员课程进度 + * + * @param userId 学员id + * @param courseId 课程id + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult> + */ + @GetMapping("/getAllByUserIdAndCourseId") + public CommonResult getAllByUserIdAndCourseId(Long userId, String courseId) { + return success(processService.getAllByUserIdAndCourseId(userId, courseId)); + } + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java index c073dfb3..52a7e550 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/admin/SchoolCourseOrderController.java @@ -95,4 +95,16 @@ public class SchoolCourseOrderController { return success(true); } + /** + * 快速创建订单 + * + * @param createReqVO 创建信息 + * @return 订单号 + */ + @PostMapping("/fastCreate") + @Operation(summary = "快速创建驾照报名订单") + public CommonResult fastCreateSchoolCourseOrder(@Valid @RequestBody SchoolCourseOrderVO createReqVO) { + return success(schoolCourseOrderService.fastCreateSchoolCourseOrder(createReqVO)); + } + } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java index db6430d1..87562f36 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/entity/SchoolCourseOrder.java @@ -108,6 +108,10 @@ public class SchoolCourseOrder extends TenantBaseDO { * 是否分配教练 0:否 1:是 */ private Integer ifAssignmentCoach; + /** + * 旧订单id + */ + private String oldOrderId; } \ No newline at end of file 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 6fe25d8b..42dc43ef 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 @@ -103,7 +103,15 @@ public interface ProcessService extends IService { /** * 保存学员课程进度 * - * @param processes {@link Process} + * @param request {@link Process} */ void saveProcess(ProcessAddVO request); + + /** + * 根据用户id和课程id查询所有进度 + * @param userId 用户id + * @param courseId 课程id + * @return java.util.List + */ + List getAllByUserIdAndCourseId(Long userId, String courseId); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java index d087b841..88750dbb 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/SchoolCourseOrderService.java @@ -63,9 +63,18 @@ public interface SchoolCourseOrderService extends IService { /** * 终止订单 - * @param orderNo 订单号 + * + * @param orderNo 订单号 * @param endReason 终止原因 - * @param endTime 终止时间 + * @param endTime 终止时间 */ void endOrder(String orderNo, String endReason, LocalDateTime endTime); + + /** + * 快速创建订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + String fastCreateSchoolCourseOrder(SchoolCourseOrderVO createReqVO); } \ No newline at end of file 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 b5a9482b..41677944 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 @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.course.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.security.core.LoginUser; @@ -280,8 +281,27 @@ public class ProcessServiceImpl extends ServiceImpl impl * @param request {@link ProcessAddVO} */ @Override + @Transactional(rollbackFor = Exception.class) public void saveProcess(ProcessAddVO request) { List processes = BeanUtil.copyToList(request.getProcessList(), Process.class); + // 获取学生id和课程id + String courseId = processes.get(0).getCourseId(); + Long userId = processes.get(0).getUserId(); + // 根据课程id和学生id查询进度 + List list = list(Wrappers.lambdaQuery(Process.class) + .eq(Process::getCourseId, courseId) + .eq(Process::getUserId, userId)); + + //判断传递进来的进度集合中的课程id和教练id和课程id是否与查询出来的一致,如果一致在processes集合中删除 + for (Process process : list) { + processes.removeIf(process1 -> process.getCourseId().equals(process1.getCourseId()) + && process.getCoachId().equals(process1.getCoachId()) + && process.getSubject().equals(process1.getSubject())); + } + + if (CollUtil.isEmpty(processes)) { + return; + } // 校验详细信息 verify(processes); // 保存信息 @@ -294,6 +314,24 @@ public class ProcessServiceImpl extends ServiceImpl impl } + /** + * 根据用户id和课程id查询所有进度 + * + * @param userId 用户id + * @param courseId 课程id + * @return java.util.List + */ + @Override + public List getAllByUserIdAndCourseId(Long userId, String courseId) { + if (null != userId && null != courseId) { + List processList = processMapper.selectList(Wrappers.lambdaQuery(Process.class) + .eq(Process::getUserId, userId) + .eq(Process::getCourseId, courseId)); + return BeanUtil.copyToList(processList, ProcessVO.class); + } + return null; + } + private static void verify(List processes) { for (Process process : processes) { // 校验状态 diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java index 0e53fff0..cc925792 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.course.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants; @@ -20,6 +21,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.time.LocalDateTime; +import java.util.UUID; /** * 驾照报名订单 Service 实现类 @@ -110,4 +112,53 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl SELECT - main.* + main.*, + CASE + WHEN EXISTS (SELECT 1 + FROM drive_school_course_order dsc + WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0) + THEN TRUE + ELSE FALSE + END AS isCreated FROM - drive_school_course_order main + drive_school_course_order main - main.deleted = 0 - and main.order_no = #{entity.orderNo} - and main.user_name like concat('%', #{entity.userName}, '%') - and main.user_id = #{entity.userId} - and main.payment_status = #{entity.paymentStatus} + main.deleted = 0 + and main.order_no = #{entity.orderNo} + and main.user_name like concat('%', + #{entity.userName}, '%') + + and main.user_id = #{entity.userId} + and main.payment_status = + #{entity.paymentStatus} + + order by main.create_time desc