Browse Source

feat:训练营代码生成、营期主页面接口、优化生成海报接口

caoliqin 1 month ago
parent
commit
844b489d99

+ 20 - 8
fs-user-app/src/main/java/com/fs/app/controller/FsUserCoursePeriodController.java → fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -1,6 +1,9 @@
-package com.fs.app.controller;
+package com.fs.course.controller;
 
 import java.util.List;
+
+import com.fs.course.vo.FsUserCoursePeriodVO;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -27,7 +30,7 @@ import com.fs.common.core.page.TableDataInfo;
  * @date 2025-04-11
  */
 @RestController
-@RequestMapping("/course/userCoursePeriod")
+@RequestMapping("/course/period")
 public class FsUserCoursePeriodController extends BaseController
 {
     @Autowired
@@ -36,7 +39,7 @@ public class FsUserCoursePeriodController extends BaseController
     /**
      * 查询会员营期列表
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:list')")
+//    @PreAuthorize("@ss.hasPermi('course:period:list')")
     @GetMapping("/list")
     public TableDataInfo list(FsUserCoursePeriod fsUserCoursePeriod)
     {
@@ -45,10 +48,19 @@ public class FsUserCoursePeriodController extends BaseController
         return getDataTable(list);
     }
 
+    @PostMapping("/page")
+    @ApiOperation("自定义查询主列表分页")
+    public TableDataInfo pageList(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
+    {
+        startPage();
+        List<FsUserCoursePeriodVO> list = fsUserCoursePeriodService.selectFsUserCoursePeriodPage(fsUserCoursePeriod);
+        return getDataTable(list);
+    }
+
     /**
      * 导出会员营期列表
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:export')")
+//    @PreAuthorize("@ss.hasPermi('course:period:export')")
     @Log(title = "会员营期", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult export(FsUserCoursePeriod fsUserCoursePeriod)
@@ -61,7 +73,7 @@ public class FsUserCoursePeriodController extends BaseController
     /**
      * 获取会员营期详细信息
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:query')")
+    @PreAuthorize("@ss.hasPermi('course:period:query')")
     @GetMapping(value = "/{periodId}")
     public AjaxResult getInfo(@PathVariable("periodId") Long periodId)
     {
@@ -71,7 +83,7 @@ public class FsUserCoursePeriodController extends BaseController
     /**
      * 新增会员营期
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:add')")
+    @PreAuthorize("@ss.hasPermi('course:period:add')")
     @Log(title = "会员营期", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
@@ -82,7 +94,7 @@ public class FsUserCoursePeriodController extends BaseController
     /**
      * 修改会员营期
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:edit')")
+    @PreAuthorize("@ss.hasPermi('course:period:edit')")
     @Log(title = "会员营期", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
@@ -93,7 +105,7 @@ public class FsUserCoursePeriodController extends BaseController
     /**
      * 删除会员营期
      */
-    @PreAuthorize("@ss.hasPermi('course:userCoursePeriod:remove')")
+    @PreAuthorize("@ss.hasPermi('course:period:remove')")
     @Log(title = "会员营期", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{periodIds}")
     public AjaxResult remove(@PathVariable Long[] periodIds)

+ 18 - 0
fs-company-app/src/main/java/com/fs/app/config/ImageStorageConfig.java

@@ -0,0 +1,18 @@
+package com.fs.app.config;
+
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Getter
+@Configuration
+public class ImageStorageConfig {
+
+    // 直接返回配置的路径
+    @Value("${image.storage.local-path}")
+    private String localPath;
+
+    @Value("${image.storage.server-path}")
+    private String serverPath;
+
+}

+ 9 - 4
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -1,6 +1,7 @@
 package com.fs.app.controller;
 
 import com.fs.app.annotation.Login;
+import com.fs.app.config.ImageStorageConfig;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
 import com.fs.common.utils.StringUtils;
@@ -46,6 +47,9 @@ public class FsUserCourseVideoController extends AppBaseController {
     @Autowired
     private IFsCourseLinkService courseLinkService;
 
+    @Autowired
+    private ImageStorageConfig imageConfig;
+
     @Login
     @GetMapping("/pageList")
     @ApiOperation("课程分页列表")
@@ -132,9 +136,11 @@ public class FsUserCourseVideoController extends AppBaseController {
         R r = courseLinkService.getRealLink(link);
         String realLink = r.get("realLink").toString();
         try {
-            File file = new File("D:\\logo.jpg");
-            if(StringUtils.isEmpty(param.getImgUrl())){
-                return R.error(400,"课程封面不能为空!");
+            String path = imageConfig.getServerPath();
+            log.info("获取的logo图片路径,fileUrl:{}", path);
+            File file = new File(path);
+            if (StringUtils.isEmpty(param.getImgUrl())) {
+                return R.error(400, "课程封面不能为空!");
             }
             String base64Image = fsUserCourseService.createCourseImageQR(realLink, param.getImgUrl(), file, "png", param.getTitle(), param.getDuration());
             // 返回Base64编码的图片字符串
@@ -148,7 +154,6 @@ public class FsUserCourseVideoController extends AppBaseController {
     }
 
 
-
 //    @Login
 //    @PostMapping("/sortLink/courseMember")
 //    @ApiOperation("生成分享成为会员短链")

+ 5 - 0
fs-company-app/src/main/resources/application.yml

@@ -133,3 +133,8 @@ xss:
   excludes: /system/notice/*,/system/config/*
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
+
+image:
+  storage:
+    local-path: C:\logoFile\logo.jpg
+    server-path: C:\logoFile\logo.jpg

+ 135 - 11
fs-service-system/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java

@@ -1,9 +1,10 @@
 package com.fs.course.domain;
 
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
-import com.fs.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -11,9 +12,9 @@ import org.apache.commons.lang3.builder.ToStringStyle;
  * 会员营期对象 fs_user_course_period
  *
  * @author fs
- * @date 2025-04-11
+ * @date 2025-04-15
  */
-public class FsUserCoursePeriod extends BaseEntity
+public class FsUserCoursePeriod
 {
     private static final long serialVersionUID = 1L;
 
@@ -28,6 +29,10 @@ public class FsUserCoursePeriod extends BaseEntity
     @Excel(name = "公司id")
     private Long companyId;
 
+    /** 公司id */
+    @Excel(name = "公司id,多个用逗号隔开")
+    private List<Long> companyIdList;
+
     /** 课程id */
     @Excel(name = "课程id")
     private Long courseId;
@@ -36,10 +41,45 @@ public class FsUserCoursePeriod extends BaseEntity
     @Excel(name = "视频id")
     private Long videoId;
 
-    /** 开课时间 */
+    /** 训练营id */
+    @Excel(name = "训练营id")
+    private Long trainingCampId;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间")
+    private Date createTime;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "更新时间")
+    private Date updateTime;
+
+    /** 课程风格url */
+    @Excel(name = "课程风格url")
+    private String courseStyle;
+
+    /** 直播间风格url */
+    @Excel(name = "直播间风格url")
+    private String liveRoomStyle;
+
+    /** 红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个 */
+    @Excel(name = "红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个")
+    private Long redPacketGrantMethod;
+
+    /** 营期类型,1-多课程营期;2-单课程营期 */
+    @Excel(name = "营期类型,1-多课程营期;2-单课程营期")
+    private Long periodType;
+
+    /** 开营日期-开始时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "开课时间", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date startingTime;
+    @Excel(name = "开营日期-开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date periodStartingTime;
+
+    /** 开营日期-结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开营日期-结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date periodEndTime;
 
     public void setPeriodId(Long periodId)
     {
@@ -73,6 +113,14 @@ public class FsUserCoursePeriod extends BaseEntity
         this.courseId = courseId;
     }
 
+    public List<Long> getCompanyIdList() {
+        return companyIdList;
+    }
+
+    public void setCompanyIdList(List<Long> companyIdList) {
+        this.companyIdList = companyIdList;
+    }
+
     public Long getCourseId()
     {
         return courseId;
@@ -86,14 +134,84 @@ public class FsUserCoursePeriod extends BaseEntity
     {
         return videoId;
     }
-    public void setStartingTime(Date startingTime)
+    public void setTrainingCampId(Long trainingCampId)
+    {
+        this.trainingCampId = trainingCampId;
+    }
+
+    public Long getTrainingCampId()
+    {
+        return trainingCampId;
+    }
+    public void setCourseStyle(String courseStyle)
+    {
+        this.courseStyle = courseStyle;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getCourseStyle()
+    {
+        return courseStyle;
+    }
+    public void setLiveRoomStyle(String liveRoomStyle)
+    {
+        this.liveRoomStyle = liveRoomStyle;
+    }
+
+    public String getLiveRoomStyle()
+    {
+        return liveRoomStyle;
+    }
+    public void setRedPacketGrantMethod(Long redPacketGrantMethod)
+    {
+        this.redPacketGrantMethod = redPacketGrantMethod;
+    }
+
+    public Long getRedPacketGrantMethod()
+    {
+        return redPacketGrantMethod;
+    }
+    public void setPeriodType(Long periodType)
+    {
+        this.periodType = periodType;
+    }
+
+    public Long getPeriodType()
+    {
+        return periodType;
+    }
+    public void setPeriodStartingTime(Date periodStartingTime)
+    {
+        this.periodStartingTime = periodStartingTime;
+    }
+
+    public Date getPeriodStartingTime()
+    {
+        return periodStartingTime;
+    }
+    public void setPeriodEndTime(Date periodEndTime)
     {
-        this.startingTime = startingTime;
+        this.periodEndTime = periodEndTime;
     }
 
-    public Date getStartingTime()
+    public Date getPeriodEndTime()
     {
-        return startingTime;
+        return periodEndTime;
     }
 
     @Override
@@ -104,9 +222,15 @@ public class FsUserCoursePeriod extends BaseEntity
             .append("companyId", getCompanyId())
             .append("courseId", getCourseId())
             .append("videoId", getVideoId())
-            .append("startingTime", getStartingTime())
+            .append("trainingCampId", getTrainingCampId())
             .append("createTime", getCreateTime())
             .append("updateTime", getUpdateTime())
+            .append("courseStyle", getCourseStyle())
+            .append("liveRoomStyle", getLiveRoomStyle())
+            .append("redPacketGrantMethod", getRedPacketGrantMethod())
+            .append("periodType", getPeriodType())
+            .append("periodStartingTime", getPeriodStartingTime())
+            .append("periodEndTime", getPeriodEndTime())
             .toString();
     }
 }

+ 81 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseTrainingCamp.java

@@ -0,0 +1,81 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 会员训练营对象 fs_user_course_training_camp
+ *
+ * @author fs
+ * @date 2025-04-15
+ */
+public class FsUserCourseTrainingCamp
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long trainingCampId;
+
+    /** 训练营名称 */
+    @Excel(name = "训练营名称")
+    private String trainingCampName;
+
+    /** 序号 */
+    @Excel(name = "序号")
+    private Long orderNumber;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间")
+    private Date createTime;
+
+    public void setTrainingCampId(Long trainingCampId)
+    {
+        this.trainingCampId = trainingCampId;
+    }
+
+    public Long getTrainingCampId()
+    {
+        return trainingCampId;
+    }
+    public void setTrainingCampName(String trainingCampName)
+    {
+        this.trainingCampName = trainingCampName;
+    }
+
+    public String getTrainingCampName()
+    {
+        return trainingCampName;
+    }
+    public void setOrderNumber(Long orderNumber)
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public Long getOrderNumber()
+    {
+        return orderNumber;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("training campId", getTrainingCampId())
+            .append("training campName", getTrainingCampName())
+            .append("orderNumber", getOrderNumber())
+            .append("createTime", getCreateTime())
+            .toString();
+    }
+}

+ 16 - 9
fs-service-system/src/main/java/com/fs/course/mapper/FsUserCoursePeriodMapper.java

@@ -2,18 +2,19 @@ package com.fs.course.mapper;
 
 import java.util.List;
 import com.fs.course.domain.FsUserCoursePeriod;
+import com.fs.course.vo.FsUserCoursePeriodVO;
 
 /**
  * 会员营期Mapper接口
- * 
+ *
  * @author fs
- * @date 2025-04-11
+ * @date 2025-04-15
  */
-public interface FsUserCoursePeriodMapper 
+public interface FsUserCoursePeriodMapper
 {
     /**
      * 查询会员营期
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 会员营期
      */
@@ -21,7 +22,7 @@ public interface FsUserCoursePeriodMapper
 
     /**
      * 查询会员营期列表
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 会员营期集合
      */
@@ -29,7 +30,7 @@ public interface FsUserCoursePeriodMapper
 
     /**
      * 新增会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -37,7 +38,7 @@ public interface FsUserCoursePeriodMapper
 
     /**
      * 修改会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -45,7 +46,7 @@ public interface FsUserCoursePeriodMapper
 
     /**
      * 删除会员营期
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 结果
      */
@@ -53,9 +54,15 @@ public interface FsUserCoursePeriodMapper
 
     /**
      * 批量删除会员营期
-     * 
+     *
      * @param periodIds 需要删除的数据ID
      * @return 结果
      */
     public int deleteFsUserCoursePeriodByIds(Long[] periodIds);
+
+    /**
+     * 查询主页分页列表
+     * @return
+     */
+    List<FsUserCoursePeriodVO> selectFsUserCoursePeriodPage(FsUserCoursePeriod fsUserCoursePeriod);
 }

+ 61 - 0
fs-service-system/src/main/java/com/fs/course/mapper/FsUserCourseTrainingCampMapper.java

@@ -0,0 +1,61 @@
+package com.fs.course.mapper;
+
+import java.util.List;
+import com.fs.course.domain.FsUserCourseTrainingCamp;
+
+/**
+ * 会员训练营Mapper接口
+ *
+ * @author fs
+ * @date 2025-04-15
+ */
+public interface FsUserCourseTrainingCampMapper
+{
+    /**
+     * 查询会员训练营
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 会员训练营
+     */
+    public FsUserCourseTrainingCamp selectFsUserCourseTrainingCampById(Long trainingCampId);
+
+    /**
+     * 查询会员训练营列表
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 会员训练营集合
+     */
+    public List<FsUserCourseTrainingCamp> selectFsUserCourseTrainingCampList(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 新增会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    public int insertFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 修改会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    public int updateFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 删除会员训练营
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 结果
+     */
+    public int deleteFsUserCourseTrainingCampById(Long trainingCampId);
+
+    /**
+     * 批量删除会员训练营
+     *
+     * @param trainingCampIds 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteFsUserCourseTrainingCampByIds(Long[] trainingCampIds);
+}

+ 17 - 9
fs-service-system/src/main/java/com/fs/course/service/IFsUserCoursePeriodService.java

@@ -2,18 +2,19 @@ package com.fs.course.service;
 
 import java.util.List;
 import com.fs.course.domain.FsUserCoursePeriod;
+import com.fs.course.vo.FsUserCoursePeriodVO;
 
 /**
  * 会员营期Service接口
- * 
+ *
  * @author fs
- * @date 2025-04-11
+ * @date 2025-04-15
  */
-public interface IFsUserCoursePeriodService 
+public interface IFsUserCoursePeriodService
 {
     /**
      * 查询会员营期
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 会员营期
      */
@@ -21,7 +22,7 @@ public interface IFsUserCoursePeriodService
 
     /**
      * 查询会员营期列表
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 会员营期集合
      */
@@ -29,7 +30,7 @@ public interface IFsUserCoursePeriodService
 
     /**
      * 新增会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -37,7 +38,7 @@ public interface IFsUserCoursePeriodService
 
     /**
      * 修改会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -45,7 +46,7 @@ public interface IFsUserCoursePeriodService
 
     /**
      * 批量删除会员营期
-     * 
+     *
      * @param periodIds 需要删除的会员营期ID
      * @return 结果
      */
@@ -53,9 +54,16 @@ public interface IFsUserCoursePeriodService
 
     /**
      * 删除会员营期信息
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 结果
      */
     public int deleteFsUserCoursePeriodById(Long periodId);
+
+    /**
+     * 获取主列表
+     * @param fsUserCoursePeriod 入参
+     * @return vo
+     */
+    List<FsUserCoursePeriodVO> selectFsUserCoursePeriodPage(FsUserCoursePeriod fsUserCoursePeriod);
 }

+ 61 - 0
fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseTrainingCampService.java

@@ -0,0 +1,61 @@
+package com.fs.course.service;
+
+import java.util.List;
+import com.fs.course.domain.FsUserCourseTrainingCamp;
+
+/**
+ * 会员训练营Service接口
+ *
+ * @author fs
+ * @date 2025-04-15
+ */
+public interface IFsUserCourseTrainingCampService
+{
+    /**
+     * 查询会员训练营
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 会员训练营
+     */
+    public FsUserCourseTrainingCamp selectFsUserCourseTrainingCampById(Long trainingCampId);
+
+    /**
+     * 查询会员训练营列表
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 会员训练营集合
+     */
+    public List<FsUserCourseTrainingCamp> selectFsUserCourseTrainingCampList(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 新增会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    public int insertFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 修改会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    public int updateFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp);
+
+    /**
+     * 批量删除会员训练营
+     *
+     * @param trainingCampIds 需要删除的会员训练营ID
+     * @return 结果
+     */
+    public int deleteFsUserCourseTrainingCampByIds(Long[] trainingCampIds);
+
+    /**
+     * 删除会员训练营信息
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 结果
+     */
+    public int deleteFsUserCourseTrainingCampById(Long trainingCampId);
+}

+ 15 - 9
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -2,6 +2,7 @@ package com.fs.course.service.impl;
 
 import java.util.List;
 import com.fs.common.utils.DateUtils;
+import com.fs.course.vo.FsUserCoursePeriodVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.course.mapper.FsUserCoursePeriodMapper;
@@ -10,19 +11,19 @@ import com.fs.course.service.IFsUserCoursePeriodService;
 
 /**
  * 会员营期Service业务层处理
- * 
+ *
  * @author fs
- * @date 2025-04-11
+ * @date 2025-04-15
  */
 @Service
-public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService 
+public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 {
     @Autowired
     private FsUserCoursePeriodMapper fsUserCoursePeriodMapper;
 
     /**
      * 查询会员营期
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 会员营期
      */
@@ -34,7 +35,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 
     /**
      * 查询会员营期列表
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 会员营期
      */
@@ -46,7 +47,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 
     /**
      * 新增会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -59,7 +60,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 
     /**
      * 修改会员营期
-     * 
+     *
      * @param fsUserCoursePeriod 会员营期
      * @return 结果
      */
@@ -72,7 +73,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 
     /**
      * 批量删除会员营期
-     * 
+     *
      * @param periodIds 需要删除的会员营期ID
      * @return 结果
      */
@@ -84,7 +85,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
 
     /**
      * 删除会员营期信息
-     * 
+     *
      * @param periodId 会员营期ID
      * @return 结果
      */
@@ -93,4 +94,9 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
     {
         return fsUserCoursePeriodMapper.deleteFsUserCoursePeriodById(periodId);
     }
+
+    @Override
+    public List<FsUserCoursePeriodVO> selectFsUserCoursePeriodPage(FsUserCoursePeriod fsUserCoursePeriod) {
+        return fsUserCoursePeriodMapper.selectFsUserCoursePeriodPage(fsUserCoursePeriod);
+    }
 }

+ 95 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseTrainingCampServiceImpl.java

@@ -0,0 +1,95 @@
+package com.fs.course.service.impl;
+
+import java.util.List;
+import com.fs.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.course.mapper.FsUserCourseTrainingCampMapper;
+import com.fs.course.domain.FsUserCourseTrainingCamp;
+import com.fs.course.service.IFsUserCourseTrainingCampService;
+
+/**
+ * 会员训练营Service业务层处理
+ *
+ * @author fs
+ * @date 2025-04-15
+ */
+@Service
+public class FsUserCourseTrainingCampServiceImpl implements IFsUserCourseTrainingCampService
+{
+    @Autowired
+    private FsUserCourseTrainingCampMapper fsUserCourseTrainingCampMapper;
+
+    /**
+     * 查询会员训练营
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 会员训练营
+     */
+    @Override
+    public FsUserCourseTrainingCamp selectFsUserCourseTrainingCampById(Long trainingCampId)
+    {
+        return fsUserCourseTrainingCampMapper.selectFsUserCourseTrainingCampById(trainingCampId);
+    }
+
+    /**
+     * 查询会员训练营列表
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 会员训练营
+     */
+    @Override
+    public List<FsUserCourseTrainingCamp> selectFsUserCourseTrainingCampList(FsUserCourseTrainingCamp fsUserCourseTrainingCamp)
+    {
+        return fsUserCourseTrainingCampMapper.selectFsUserCourseTrainingCampList(fsUserCourseTrainingCamp);
+    }
+
+    /**
+     * 新增会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    @Override
+    public int insertFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp)
+    {
+        fsUserCourseTrainingCamp.setCreateTime(DateUtils.getNowDate());
+        return fsUserCourseTrainingCampMapper.insertFsUserCourseTrainingCamp(fsUserCourseTrainingCamp);
+    }
+
+    /**
+     * 修改会员训练营
+     *
+     * @param fsUserCourseTrainingCamp 会员训练营
+     * @return 结果
+     */
+    @Override
+    public int updateFsUserCourseTrainingCamp(FsUserCourseTrainingCamp fsUserCourseTrainingCamp)
+    {
+        return fsUserCourseTrainingCampMapper.updateFsUserCourseTrainingCamp(fsUserCourseTrainingCamp);
+    }
+
+    /**
+     * 批量删除会员训练营
+     *
+     * @param trainingCampIds 需要删除的会员训练营ID
+     * @return 结果
+     */
+    @Override
+    public int deleteFsUserCourseTrainingCampByIds(Long[] trainingCampIds)
+    {
+        return fsUserCourseTrainingCampMapper.deleteFsUserCourseTrainingCampByIds(trainingCampIds);
+    }
+
+    /**
+     * 删除会员训练营信息
+     *
+     * @param trainingCampId 会员训练营ID
+     * @return 结果
+     */
+    @Override
+    public int deleteFsUserCourseTrainingCampById(Long trainingCampId)
+    {
+        return fsUserCourseTrainingCampMapper.deleteFsUserCourseTrainingCampById(trainingCampId);
+    }
+}

+ 84 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsUserCoursePeriodVO.java

@@ -0,0 +1,84 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 会员营期分页列表 vo
+ * @date 2025-04-15
+ */
+@Data
+public class FsUserCoursePeriodVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 营期id */
+    private Long periodId;
+
+    /** 营期名称 */
+    @Excel(name = "营期名称")
+    private String periodName;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    @Excel(name = "公司名称")
+    private Long companyName;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+    /** 训练营id */
+    @Excel(name = "训练营id")
+    private Long trainingCampId;
+
+    /** 训练营id */
+    @Excel(name = "所属训练营")
+    private Long trainingCampName;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间")
+    private Date createTime;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "更新时间")
+    private Date updateTime;
+
+    /** 课程风格url */
+    @Excel(name = "课程风格url")
+    private String courseStyle;
+
+    /** 直播间风格url */
+    @Excel(name = "直播间风格url")
+    private String liveRoomStyle;
+
+    /** 红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个 */
+    @Excel(name = "红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个")
+    private Long redPacketGrantMethod;
+
+    /** 营期类型,1-多课程营期;2-单课程营期 */
+    @Excel(name = "营期类型,1-多课程营期;2-单课程营期")
+    private Long periodType;
+
+    /** 开营日期-开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开营日期-开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date periodStartingTime;
+
+    /** 开营日期-结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开营日期-结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date periodEndTime;
+
+}

+ 76 - 13
fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

@@ -3,38 +3,83 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.course.mapper.FsUserCoursePeriodMapper">
-    
+
     <resultMap type="FsUserCoursePeriod" id="FsUserCoursePeriodResult">
         <result property="periodId"    column="period_id"    />
         <result property="periodName"    column="period_name"    />
         <result property="companyId"    column="company_id"    />
         <result property="courseId"    column="course_id"    />
         <result property="videoId"    column="video_id"    />
-        <result property="startingTime"    column="starting_time"    />
+        <result property="trainingCampId"    column="training_camp_id"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="courseStyle"    column="course_style"    />
+        <result property="liveRoomStyle"    column="live_room_style"    />
+        <result property="redPacketGrantMethod"    column="red_packet_grant_method"    />
+        <result property="periodType"    column="period_type"    />
+        <result property="periodStartingTime"    column="period_starting_time"    />
+        <result property="periodEndTime"    column="period_end_time"    />
     </resultMap>
 
     <sql id="selectFsUserCoursePeriodVo">
-        select period_id, period_name, company_id, course_id, video_id, starting_time, create_time, update_time from fs_user_course_period
+        select period_id, period_name, company_id, course_id, video_id, training_camp_id, create_time, update_time, course_style, live_room_style, red_packet_grant_method, period_type, period_starting_time, period_end_time from fs_user_course_period
     </sql>
 
     <select id="selectFsUserCoursePeriodList" parameterType="FsUserCoursePeriod" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
-        <where>  
+        <where>
             <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
             <if test="companyId != null "> and company_id = #{companyId}</if>
             <if test="courseId != null "> and course_id = #{courseId}</if>
             <if test="videoId != null "> and video_id = #{videoId}</if>
-            <if test="startingTime != null "> and starting_time = #{startingTime}</if>
+            <if test="trainingCampId != null "> and training_camp_id = #{trainingCampId}</if>
+            <if test="courseStyle != null  and courseStyle != ''"> and course_style = #{courseStyle}</if>
+            <if test="liveRoomStyle != null  and liveRoomStyle != ''"> and live_room_style = #{liveRoomStyle}</if>
+            <if test="redPacketGrantMethod != null "> and red_packet_grant_method = #{redPacketGrantMethod}</if>
+            <if test="periodType != null "> and period_type = #{periodType}</if>
+            <if test="periodStartingTime != null "> and period_starting_time = #{periodStartingTime}</if>
+            <if test="periodEndTime != null "> and period_end_time = #{periodEndTime}</if>
+        </where>
+    </select>
+
+    <select id="selectFsUserCoursePeriodPage" parameterType="FsUserCoursePeriod" resultType="FsUserCoursePeriodVO">
+        SELECT
+        period_id,
+        period_name,
+        fs_user_course_period.company_id,
+        course_id,
+        video_id,
+        training_camp_id,
+        fs_user_course_period.create_time,
+        fs_user_course_period.update_time,
+        course_style,
+        live_room_style,
+        red_packet_grant_method,
+        period_type,
+        period_starting_time,
+        GROUP_CONCAT( company.company_name ) AS companyName
+        FROM
+        fs_user_course_period
+        LEFT JOIN company ON fs_user_course_period.company_id = company.company_id
+        <where>
+            <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
+            <if test="companyIdList != null and companyIdList.size() > 0 ">
+                and fs_user_course_period.company_id in
+                <foreach item="companyId" index="index" collection="companyIdList"
+                         open="(" separator="," close=")">
+                    #{companyId}
+                </foreach>
+            </if>
+            <if test="periodStartingTime != null "> and period_starting_time = #{periodStartingTime}</if>
+            <if test="periodEndTime != null "> and period_end_time = #{periodEndTime}</if>
         </where>
     </select>
-    
+
     <select id="selectFsUserCoursePeriodById" parameterType="Long" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
         where period_id = #{periodId}
     </select>
-        
+
     <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod">
         insert into fs_user_course_period
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -43,9 +88,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">company_id,</if>
             <if test="courseId != null">course_id,</if>
             <if test="videoId != null">video_id,</if>
-            <if test="startingTime != null">starting_time,</if>
+            <if test="trainingCampId != null">training_camp_id,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateTime != null">update_time,</if>
+            <if test="courseStyle != null">course_style,</if>
+            <if test="liveRoomStyle != null">live_room_style,</if>
+            <if test="redPacketGrantMethod != null">red_packet_grant_method,</if>
+            <if test="periodType != null">period_type,</if>
+            <if test="periodStartingTime != null">period_starting_time,</if>
+            <if test="periodEndTime != null">period_end_time,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="periodId != null">#{periodId},</if>
@@ -53,9 +104,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">#{companyId},</if>
             <if test="courseId != null">#{courseId},</if>
             <if test="videoId != null">#{videoId},</if>
-            <if test="startingTime != null">#{startingTime},</if>
+            <if test="trainingCampId != null">#{trainingCampId},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateTime != null">#{updateTime},</if>
+            <if test="courseStyle != null">#{courseStyle},</if>
+            <if test="liveRoomStyle != null">#{liveRoomStyle},</if>
+            <if test="redPacketGrantMethod != null">#{redPacketGrantMethod},</if>
+            <if test="periodType != null">#{periodType},</if>
+            <if test="periodStartingTime != null">#{periodStartingTime},</if>
+            <if test="periodEndTime != null">#{periodEndTime},</if>
          </trim>
     </insert>
 
@@ -66,9 +123,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">company_id = #{companyId},</if>
             <if test="courseId != null">course_id = #{courseId},</if>
             <if test="videoId != null">video_id = #{videoId},</if>
-            <if test="startingTime != null">starting_time = #{startingTime},</if>
+            <if test="trainingCampId != null">training_camp_id = #{trainingCampId},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="courseStyle != null">course_style = #{courseStyle},</if>
+            <if test="liveRoomStyle != null">live_room_style = #{liveRoomStyle},</if>
+            <if test="redPacketGrantMethod != null">red_packet_grant_method = #{redPacketGrantMethod},</if>
+            <if test="periodType != null">period_type = #{periodType},</if>
+            <if test="periodStartingTime != null">period_starting_time = #{periodStartingTime},</if>
+            <if test="periodEndTime != null">period_end_time = #{periodEndTime},</if>
         </trim>
         where period_id = #{periodId}
     </update>
@@ -78,10 +141,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteFsUserCoursePeriodByIds" parameterType="String">
-        delete from fs_user_course_period where period_id in 
+        delete from fs_user_course_period where period_id in
         <foreach item="periodId" collection="array" open="(" separator="," close=")">
             #{periodId}
         </foreach>
     </delete>
-    
-</mapper>
+
+</mapper>

+ 68 - 0
fs-service-system/src/main/resources/mapper/course/FsUserCourseTrainingCampMapper.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.course.mapper.FsUserCourseTrainingCampMapper">
+
+    <resultMap type="FsUserCourseTrainingCamp" id="FsUserCourseTrainingCampResult">
+        <result property="trainingCampId"    column="training_camp_id"    />
+        <result property="trainingCampName"    column="training_camp_name"    />
+        <result property="orderNumber"    column="order_number"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectFsUserCourseTrainingCampVo">
+        select training_camp_id, training_camp_name, order_number, create_time from fs_user_course_training_camp
+    </sql>
+
+    <select id="selectFsUserCourseTrainingCampList" parameterType="FsUserCourseTrainingCamp" resultMap="FsUserCourseTrainingCampResult">
+        <include refid="selectFsUserCourseTrainingCampVo"/>
+        <where>
+            <if test="training campName != null  and trainingCampName != ''"> and training_camp_name like concat('%', #{trainingCampName}, '%')</if>
+            <if test="orderNumber != null "> and order_number = #{orderNumber}</if>
+        </where>
+    </select>
+
+    <select id="selectFsUserCourseTrainingCampById" parameterType="Long" resultMap="FsUserCourseTrainingCampResult">
+        <include refid="selectFsUserCourseTrainingCampVo"/>
+        where training_camp_id = #{trainingCampId}
+    </select>
+
+    <insert id="insertFsUserCourseTrainingCamp" parameterType="FsUserCourseTrainingCamp">
+        insert into fs_user_course_training_camp
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="trainingCampId != null">training_camp_id,</if>
+            <if test="trainingCampName != null">training_camp_name,</if>
+            <if test="orderNumber != null">order_number,</if>
+            <if test="createTime != null">create_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="trainingCampId != null">#{trainingCampId},</if>
+            <if test="trainingCampName != null">#{trainingCampName},</if>
+            <if test="orderNumber != null">#{orderNumber},</if>
+            <if test="createTime != null">#{createTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFsUserCourseTrainingCamp" parameterType="FsUserCourseTrainingCamp">
+        update fs_user_course_training_camp
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="trainingCampName != null">training_camp_name = #{trainingCampName},</if>
+            <if test="orderNumber != null">order_number = #{orderNumber},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where training_camp_id = #{trainingCampId}
+    </update>
+
+    <delete id="deleteFsUserCourseTrainingCampById" parameterType="Long">
+        delete from fs_user_course_training_camp where training_camp_id = #{trainingCampId}
+    </delete>
+
+    <delete id="deleteFsUserCourseTrainingCampByIds" parameterType="String">
+        delete from fs_user_course_training_camp where training_camp_id in
+        <foreach item="trainingCampId" collection="array" open="(" separator="," close=")">
+            #{trainingCampId}
+        </foreach>
+    </delete>
+
+</mapper>