From bf4302d64f253039f395b88bf5e50f8f495b921e Mon Sep 17 00:00:00 2001
From: 康鲁杰 <60095866+KangLujie@users.noreply.github.com>
Date: 星期五, 18 四月 2025 09:18:05 +0800
Subject: [PATCH] 片头片尾管理

---
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerPageReqVO.java |   19 +++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerRespVO.java    |   22 +++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/TitlesTrailerController.java   |   62 ++++++++++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/titlestrailer/TitlesTrailerDO.java             |   30 +++++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/titlestrailer/TitlesTrailerMapper.java              |   28 ++++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerSaveReqVO.java |   34 +++++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerService.java               |   54 +++++++++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerServiceImpl.java           |   70 +++++++++++
 8 files changed, 319 insertions(+), 0 deletions(-)

diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/TitlesTrailerController.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/TitlesTrailerController.java
new file mode 100644
index 0000000..02a6f07
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/TitlesTrailerController.java
@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerPageReqVO;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerRespVO;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerSaveReqVO;
+import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.titlestrailer.TitlesTrailerDO;
+import cn.iocoder.yudao.module.digitalcourse.service.titlestrailer.TitlesTrailerService;
+import io.swagger.v3.oas.annotations.Parameter;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author kanglujie
+ * @date 2025-04-17 17:19:29
+ */
+@RestController
+@RequestMapping("/digitalcourse/titles-trailer")
+@Validated
+public class TitlesTrailerController {
+
+    @Resource
+    private TitlesTrailerService titlesTrailerService;
+    @PostMapping("/create")
+    public CommonResult<Long> createTitlesTrailer(@Valid @RequestBody TitlesTrailerSaveReqVO createReqVO) {
+        return success(titlesTrailerService.createTitlesTrailer(createReqVO));
+    }
+
+    @PutMapping("/update")
+    public CommonResult<Boolean> updateTitlesTrailer(@Valid @RequestBody TitlesTrailerSaveReqVO updateReqVO) {
+        titlesTrailerService.updateTitlesTrailer(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Parameter(name = "id", description = "缂栧彿", required = true)
+    public CommonResult<Boolean> deleteTitlesTrailer(@RequestParam("id") Long id) {
+        titlesTrailerService.deleteTitlesTrailer(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
+    public CommonResult<TitlesTrailerRespVO> getTitlesTrailer(@RequestParam("id") Long id) {
+        TitlesTrailerDO template = titlesTrailerService.getTitlesTrailer(id);
+        return success(BeanUtils.toBean(template, TitlesTrailerRespVO.class));
+    }
+
+    @GetMapping("/page")
+    public CommonResult<PageResult<TitlesTrailerRespVO>> getTitlesTrailerPage(@Valid TitlesTrailerPageReqVO pageReqVO) {
+        PageResult<TitlesTrailerDO> pageResult = titlesTrailerService.getTitlesTrailerPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, TitlesTrailerRespVO.class));
+    }
+
+
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerPageReqVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerPageReqVO.java
new file mode 100644
index 0000000..223e287
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerPageReqVO.java
@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class TitlesTrailerPageReqVO extends PageParam {
+
+    private String type;
+
+    private String name;
+
+    private String url;
+
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerRespVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerRespVO.java
new file mode 100644
index 0000000..e31a3a0
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerRespVO.java
@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ExcelIgnoreUnannotated
+public class TitlesTrailerRespVO {
+
+    private Long id;
+
+    private String name;
+
+    private String url;
+
+    private String type;
+
+    private LocalDateTime createTime;
+
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerSaveReqVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerSaveReqVO.java
new file mode 100644
index 0000000..8e1dbb9
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/titlestrailer/vo/TitlesTrailerSaveReqVO.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+/**
+ * @author kanglujie
+ * @date 2025-04-17 17:24:45
+ */
+@Data
+public class TitlesTrailerSaveReqVO {
+
+    private Long id;
+
+    @NotNull(message = "鍚嶅瓧涓嶈兘涓虹┖")
+    private String name;
+
+    @NotNull(message = "鍦板潃涓嶈兘涓虹┖")
+    private String url;
+
+    @NotNull(message = "绫诲瀷涓嶈兘涓虹┖")
+    private String type;
+
+    @Schema(description = "鍒涘缓鏃堕棿")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/titlestrailer/TitlesTrailerDO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/titlestrailer/TitlesTrailerDO.java
new file mode 100644
index 0000000..2c06323
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/titlestrailer/TitlesTrailerDO.java
@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.digitalcourse.dal.dataobject.titlestrailer;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.math.BigDecimal;
+
+/**
+ * @author kanglujie
+ * @date 2025-04-17 17:14:50
+ */
+@TableName("digitalcourse_titles_trailer")
+@KeySequence("digitalcourse_titles_trailer_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TitlesTrailerDO extends BaseDO {
+    @TableId
+    private Long id;
+    private String name;
+    private String url;
+    //1鐗囧ご 2鐗囧熬
+    private String type;
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/titlestrailer/TitlesTrailerMapper.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/titlestrailer/TitlesTrailerMapper.java
new file mode 100644
index 0000000..1a40f77
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/titlestrailer/TitlesTrailerMapper.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.digitalcourse.dal.mysql.titlestrailer;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerPageReqVO;
+import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.titlestrailer.TitlesTrailerDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鐗囧ご鐗囧熬 Mapper
+ *
+ * @author 绠$悊鍛�
+ */
+@Mapper
+public interface TitlesTrailerMapper extends BaseMapperX<TitlesTrailerDO> {
+
+    default PageResult<TitlesTrailerDO> selectPage(TitlesTrailerPageReqVO reqVO) {
+        Long loginUserId = WebFrameworkUtils.getLoginUserId();
+        return selectPage(reqVO, new LambdaQueryWrapperX<TitlesTrailerDO>()
+                .eqIfPresent(TitlesTrailerDO::getName, reqVO.getName())
+                .eqIfPresent(TitlesTrailerDO::getType, reqVO.getType())
+                .eqIfPresent(TitlesTrailerDO::getUrl, reqVO.getUrl())
+                .apply(loginUserId != 1, "creator = {0} ", loginUserId)
+                .orderByAsc(TitlesTrailerDO::getId));
+    }
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerService.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerService.java
new file mode 100644
index 0000000..126b47c
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerService.java
@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.digitalcourse.service.titlestrailer;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerPageReqVO;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerSaveReqVO;
+import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.titlestrailer.TitlesTrailerDO;
+import jakarta.validation.Valid;
+
+/**
+ * 妯℃澘 Service 鎺ュ彛
+ *
+ * @author 绠$悊鍛�
+ */
+public interface TitlesTrailerService {
+
+    /**
+     * 鍒涘缓妯℃澘
+     *
+     * @param createReqVO 鍒涘缓淇℃伅
+     * @return 缂栧彿
+     */
+    Long createTitlesTrailer(@Valid TitlesTrailerSaveReqVO createReqVO);
+
+    /**
+     * 鏇存柊妯℃澘
+     *
+     * @param updateReqVO 鏇存柊淇℃伅
+     */
+    void updateTitlesTrailer(@Valid TitlesTrailerSaveReqVO updateReqVO);
+
+    /**
+     * 鍒犻櫎妯℃澘
+     *
+     * @param id 缂栧彿
+     */
+    void deleteTitlesTrailer(Long id);
+
+    /**
+     * 鑾峰緱妯℃澘
+     *
+     * @param id 缂栧彿
+     * @return 妯℃澘
+     */
+    TitlesTrailerDO getTitlesTrailer(Long id);
+
+    /**
+     * 鑾峰緱妯℃澘鍒嗛〉
+     *
+     * @param pageReqVO 鍒嗛〉鏌ヨ
+     * @return 妯℃澘鍒嗛〉
+     */
+    PageResult<TitlesTrailerDO> getTitlesTrailerPage(TitlesTrailerPageReqVO pageReqVO);
+
+}
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerServiceImpl.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerServiceImpl.java
new file mode 100644
index 0000000..c067095
--- /dev/null
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/titlestrailer/TitlesTrailerServiceImpl.java
@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.digitalcourse.service.titlestrailer;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerPageReqVO;
+import cn.iocoder.yudao.module.digitalcourse.controller.admin.titlestrailer.vo.TitlesTrailerSaveReqVO;
+import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.titlestrailer.TitlesTrailerDO;
+import cn.iocoder.yudao.module.digitalcourse.dal.mysql.titlestrailer.TitlesTrailerMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.digitalcourse.enums.ErrorCodeConstants.TEMPLATE_NOT_EXISTS;
+
+/**
+ * 妯℃澘 Service 瀹炵幇绫�
+ *
+ * @author 绠$悊鍛�
+ */
+@Service
+@Validated
+public class TitlesTrailerServiceImpl implements TitlesTrailerService {
+
+    @Resource
+    private TitlesTrailerMapper titlesTrailerMapper;
+
+    @Override
+    public Long createTitlesTrailer(TitlesTrailerSaveReqVO createReqVO) {
+        // 鎻掑叆
+        TitlesTrailerDO template = BeanUtils.toBean(createReqVO, TitlesTrailerDO.class);
+        titlesTrailerMapper.insert(template);
+        // 杩斿洖
+        return template.getId();
+    }
+
+    @Override
+    public void updateTitlesTrailer(TitlesTrailerSaveReqVO updateReqVO) {
+        // 鏍¢獙瀛樺湪
+        validateTemplateExists(updateReqVO.getId());
+        // 鏇存柊
+        TitlesTrailerDO updateObj = BeanUtils.toBean(updateReqVO, TitlesTrailerDO.class);
+        titlesTrailerMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteTitlesTrailer(Long id) {
+        // 鏍¢獙瀛樺湪
+        validateTemplateExists(id);
+        // 鍒犻櫎
+        titlesTrailerMapper.deleteById(id);
+    }
+
+    private void validateTemplateExists(Long id) {
+        if (titlesTrailerMapper.selectById(id) == null) {
+            throw exception(TEMPLATE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public TitlesTrailerDO getTitlesTrailer(Long id) {
+        return titlesTrailerMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<TitlesTrailerDO> getTitlesTrailerPage(TitlesTrailerPageReqVO pageReqVO) {
+        return titlesTrailerMapper.selectPage(pageReqVO);
+    }
+
+}

--
Gitblit v1.9.3