From a713c8f862e383f68d2295cfd8dd03dfcefe1dfb Mon Sep 17 00:00:00 2001
From: PQZ <pangqingzhou@gmail.com>
Date: Fri, 7 Feb 2025 18:12:10 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=AF=BE=E7=A8=8B=E6=95=99?=
 =?UTF-8?q?=E7=BB=83=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../base/entity/DlDriveSchoolCoachCourse.java |  4 +
 .../DlDriveSchoolCoachCourseMapper.java       | 16 ++++
 .../DlDriveSchoolCoachCourseService.java      | 36 +++++++++
 .../DlDriveSchoolCoachCourseServiceImpl.java  | 74 +++++++++++++++++++
 .../impl/DlDriveSchoolCourseServiceImpl.java  |  7 +-
 .../module/base/vo/DlDriveSchoolCoachVO.java  | 17 +++++
 .../module/base/vo/DlDriveSchoolCourseVO.java |  3 +
 7 files changed, 156 insertions(+), 1 deletion(-)
 create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolCoachCourseMapper.java
 create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java
 create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java
 create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCoachVO.java

diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DlDriveSchoolCoachCourse.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DlDriveSchoolCoachCourse.java
index b0959dd6..011df7e1 100644
--- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DlDriveSchoolCoachCourse.java
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/DlDriveSchoolCoachCourse.java
@@ -33,6 +33,10 @@ public class DlDriveSchoolCoachCourse extends TenantBaseDO {
      * 教练名称
      */
     private String coachName;
+    /**
+     * 教练联系方式
+     */
+    private String coachPhone;
     /**
      * 课程id
      */
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolCoachCourseMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolCoachCourseMapper.java
new file mode 100644
index 00000000..9dffa491
--- /dev/null
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/DlDriveSchoolCoachCourseMapper.java
@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.base.mapper;
+
+import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 驾校教练 Mapper
+ *
+ * @author pqz
+ */
+@Mapper
+public interface DlDriveSchoolCoachCourseMapper extends BaseMapper<DlDriveSchoolCoachCourse> {
+
+
+}
\ No newline at end of file
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java
new file mode 100644
index 00000000..50b090fb
--- /dev/null
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/DlDriveSchoolCoachCourseService.java
@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.base.service;
+
+import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoach;
+import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse;
+import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 驾校教练 Service 接口
+ *
+ * @author pqz
+ */
+public interface DlDriveSchoolCoachCourseService extends IService<DlDriveSchoolCoachCourse> {
+
+    /**
+     * 保存课程与教练关联关系
+     *
+     * @param courseId   课程id
+     * @param courseName 课程名称
+     * @param courseType 教练类型
+     * @param coachList  教练集合
+     * @author PQZ
+     * @date 17:14 2025/2/7
+     **/
+    void saveCoachCourse(String courseId, String courseName, String courseType, List<DlDriveSchoolCoachVO> coachList);
+
+    /**
+     * 通过课程id删除课程与教练关联关系
+     * @author PQZ
+     * @date 17:35 2025/2/7
+     * @param courseId 课程id
+    **/
+    void removeByCourseId(String courseId);
+}
\ No newline at end of file
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java
new file mode 100644
index 00000000..bdb951be
--- /dev/null
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCoachCourseServiceImpl.java
@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.base.service.impl;
+
+import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoach;
+import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoachCourse;
+import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolCoachCourseMapper;
+import cn.iocoder.yudao.module.base.service.DlDriveSchoolCoachCourseService;
+import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachVO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 驾校教练 Service 实现类
+ *
+ * @author pqz
+ */
+@Service
+@Validated
+public class DlDriveSchoolCoachCourseServiceImpl extends ServiceImpl<DlDriveSchoolCoachCourseMapper, DlDriveSchoolCoachCourse> implements DlDriveSchoolCoachCourseService {
+
+    /**
+     * 保存课程与教练关联关系
+     *
+     * @param courseId   课程id
+     * @param courseName 课程名称
+     * @param courseType 教练类型
+     * @param coachList  教练集合
+     * @author PQZ
+     * @date 17:14 2025/2/7
+     **/
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveCoachCourse(String courseId, String courseName, String courseType, List<DlDriveSchoolCoachVO> coachList) {
+        List<DlDriveSchoolCoachCourse> saveList = new ArrayList<>();
+        //删除与课程关联的教练
+        removeByCourseId(courseId);
+        //初始化教练与课程关联数据
+        if (!coachList.isEmpty()){
+            coachList.forEach(item -> {
+                DlDriveSchoolCoachCourse coachCourse = new DlDriveSchoolCoachCourse();
+                coachCourse.setCoachId(item.getCoachId());
+                coachCourse.setCoachName(item.getCoachName());
+                coachCourse.setCoachPhone(item.getCoachPhone());
+                //教练在本课程中的任教科目
+                coachCourse.setSubject(item.getSubject());
+                coachCourse.setCourseId(courseId);
+                coachCourse.setCourseName(courseName);
+                coachCourse.setCourseType(courseType);
+                saveList.add(coachCourse);
+            });
+        }
+        //批量保存
+        saveBatch(saveList);
+    }
+
+    /**
+     * 通过课程id删除课程与教练关联关系
+     *
+     * @param courseId 课程id
+     * @author PQZ
+     * @date 17:35 2025/2/7
+     **/
+    @Override
+    public void removeByCourseId(String courseId) {
+        LambdaQueryWrapper<DlDriveSchoolCoachCourse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(DlDriveSchoolCoachCourse::getCourseId,courseId);
+        remove(lambdaQueryWrapper);
+    }
+}
\ No newline at end of file
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java
index 2a540d52..13a220ee 100644
--- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/impl/DlDriveSchoolCourseServiceImpl.java
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import cn.iocoder.yudao.module.base.entity.DlDriveSchoolCourse;
 import cn.iocoder.yudao.module.base.mapper.DlDriveSchoolCourseMapper;
+import cn.iocoder.yudao.module.base.service.DlDriveSchoolCoachCourseService;
 import cn.iocoder.yudao.module.base.service.DlDriveSchoolCourseService;
 import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCourseVO;
 import cn.iocoder.yudao.module.jx.utils.StringUtils;
@@ -28,6 +29,8 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl<DlDriveSchoolCou
 
     @Resource
     private DlDriveSchoolCourseMapper courseMapper;
+    @Resource
+    private DlDriveSchoolCoachCourseService coachCourseService;
 
     /**
      * 分页查询驾校课程
@@ -70,7 +73,9 @@ public class DlDriveSchoolCourseServiceImpl extends ServiceImpl<DlDriveSchoolCou
      **/
     @Override
     public void saveDriveSchoolCourse(DlDriveSchoolCourseVO courseVO) {
-        saveOrUpdate(courseVO);
+        DlDriveSchoolCourse course = BeanUtils.toBean(courseVO,DlDriveSchoolCourse.class);
+        saveOrUpdate(course);
+        coachCourseService.saveCoachCourse(course.getId(),courseVO.getName(),courseVO.getType(),courseVO.getCoachList());
     }
 
     /**
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCoachVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCoachVO.java
new file mode 100644
index 00000000..9507a9a4
--- /dev/null
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCoachVO.java
@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.base.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 驾校教练新增/修改 Request VO")
+@Data
+public class DlDriveSchoolCoachVO {
+    /**教练id*/
+    private String coachId;
+    /**教练姓名*/
+    private String coachName;
+    /**联系方式*/
+    private String coachPhone;
+    /**任教科目*/
+    private String subject;
+}
\ No newline at end of file
diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java
index 40464e4e..ab0d26bf 100644
--- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java
+++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/DlDriveSchoolCourseVO.java
@@ -9,9 +9,12 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Schema(description = "驾校课程管理VO")
 @Data
 public class DlDriveSchoolCourseVO extends DlDriveSchoolCourse {
 
+    List<DlDriveSchoolCoachVO> coachList;
+
 }