فهرست منبع

1.结束的营期可以删除
2.营期详情上移下移时间不会变动

yfh 5 روز پیش
والد
کامیت
ed681954d7

+ 5 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java

@@ -104,4 +104,9 @@ public class FsUserCoursePeriod
     @Excel(name = "开启评论或者弹幕,1-开启评论;2-开启弹幕;3-都关闭")
     @Excel(name = "开启评论或者弹幕,1-开启评论;2-开启弹幕;3-都关闭")
     private String courseLogo;
     private String courseLogo;
 
 
+    /**
+     * 删除状态0、正常,1、已删除
+     */
+    private Integer delFlag;
+
 }
 }

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

@@ -36,4 +36,9 @@ public class FsUserCourseTrainingCamp
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "创建时间")
     @Excel(name = "创建时间")
     private LocalDateTime createTime;
     private LocalDateTime createTime;
+
+    /**
+     * 删除状态0、正常,1、已删除
+     */
+    private Integer delFlag;
 }
 }

+ 10 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodMapper.java

@@ -136,4 +136,14 @@ public interface FsUserCoursePeriodMapper
 
 
     List<FsUserCoursePeriod> selectPeriodListByTrainingCampIds(@Param("trainingCampIds") Long[] trainingCampIds);
     List<FsUserCoursePeriod> selectPeriodListByTrainingCampIds(@Param("trainingCampIds") Long[] trainingCampIds);
 
 
+    @Update("<script>" +
+            "UPDATE fs_user_course_period SET del_flag = #{delFlag} WHERE period_id IN " +
+            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>" +
+            "#{id}" +
+            "</foreach>" +
+            "</script>")
+    int updateBatchDelFlag(@Param("ids") Long [] ids, @Param("delFlag") Integer delFlag);
+
+
+
 }
 }

+ 26 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -16,8 +16,11 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 会员营期Service业务层处理
  * 会员营期Service业务层处理
@@ -100,7 +103,29 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
     @Override
     @Override
     public int deleteFsUserCoursePeriodByIds(Long[] periodIds)
     public int deleteFsUserCoursePeriodByIds(Long[] periodIds)
     {
     {
-        return fsUserCoursePeriodMapper.deleteFsUserCoursePeriodByIds(periodIds);
+        if (checkPeriodStatus(periodIds)) {
+            throw new ServiceException("存在进行中或已结束的营期,不允许删除");
+        }
+        return fsUserCoursePeriodMapper.updateBatchDelFlag(periodIds,1);
+    }
+    private boolean checkPeriodStatus(Long[] ids) {
+        LocalDate currentDate = LocalDate.now(); // 2025-06-30
+        Set<Long> idSet = Arrays.stream(ids).collect(Collectors.toSet());
+        List<FsUserCoursePeriod> list = fsUserCoursePeriodMapper.selectFsUserCoursePeriodsByIds(idSet);
+
+        List<FsUserCoursePeriod> filteredList = list.stream()
+                .filter(period -> {
+                    LocalDate startTime = period.getPeriodStartingTime();
+                    LocalDate endTime = period.getPeriodEndTime();
+
+                    boolean isActive = startTime != null && !startTime.isAfter(currentDate)
+                            && (endTime == null || !endTime.isBefore(currentDate));
+
+                    return isActive;
+                })
+                .collect(Collectors.toList());
+
+        return !filteredList.isEmpty();
     }
     }
 
 
     /**
     /**

+ 23 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseTrainingCampServiceImpl.java

@@ -2,6 +2,7 @@ package com.fs.course.service.impl;
 
 
 
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.exception.ServiceException;
@@ -69,14 +70,33 @@ public class FsUserCourseTrainingCampServiceImpl extends ServiceImpl<FsUserCours
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public void del(Long[] ids) {
     public void del(Long[] ids) {
-        // 检查是否存在进行中的营期
+        // 检查是否存在进行中或者已结束的营期
         if (checkPeriodStatus(ids)) {
         if (checkPeriodStatus(ids)) {
-            throw new ServiceException("存在进行中的营期,请营期结束后再操作");
+            throw new ServiceException("存在进行中或已结束的营期,不允许删除");
         }
         }
+        batchUpdateDelFlag(Arrays.asList(ids),1);
 
 
-        baseMapper.deleteBatchIds(Arrays.asList(ids));
+        // 删除训练营的同时需要删除营期
+        List<FsUserCoursePeriod> fsUserCoursePeriods = fsUserCoursePeriodMapper.selectPeriodListByTrainingCampIds(ids);
+        List<Long> periodIds = fsUserCoursePeriods.stream().map(FsUserCoursePeriod::getPeriodId).collect(Collectors.toList());
+        if(!periodIds.isEmpty()){
+            fsUserCoursePeriodMapper.updateBatchDelFlag(periodIds.toArray(new Long[0]),1);
+        }
     }
     }
 
 
+    /**
+     * 批量修改训练列表数据
+     * @param ids
+     * @param delFlag
+     * @return
+     */
+    public int batchUpdateDelFlag(List<Long> ids, Integer delFlag) {
+        LambdaUpdateWrapper<FsUserCourseTrainingCamp> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.in(FsUserCourseTrainingCamp::getTrainingCampId, ids)
+                .set(FsUserCourseTrainingCamp::getDelFlag, delFlag);
+
+        return baseMapper.update(null, updateWrapper);
+    }
     /**
     /**
      * 检查是否存在进行中的营期
      * 检查是否存在进行中的营期
      * @param ids 训练营ID集合
      * @param ids 训练营ID集合

+ 8 - 7
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

@@ -29,6 +29,7 @@
     <select id="selectFsUserCoursePeriodList" parameterType="FsUserCoursePeriod" resultMap="FsUserCoursePeriodResult">
     <select id="selectFsUserCoursePeriodList" parameterType="FsUserCoursePeriod" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
         <include refid="selectFsUserCoursePeriodVo"/>
         <where>
         <where>
+            del_flag ='0'
             <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
             <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
             <if test="companyId != null "> and FIND_IN_SET (#{companyId}, company_id ) > 0</if>
             <if test="companyId != null "> and FIND_IN_SET (#{companyId}, company_id ) > 0</if>
             <if test="trainingCampId != null "> and training_camp_id = #{trainingCampId}</if>
             <if test="trainingCampId != null "> and training_camp_id = #{trainingCampId}</if>
@@ -64,6 +65,7 @@
         left join fs_user_course_training_camp fctc on fctc.training_camp_id = fs_user_course_period.training_camp_id
         left join fs_user_course_training_camp fctc on fctc.training_camp_id = fs_user_course_period.training_camp_id
         left join company on FIND_IN_SET(company.company_id, fs_user_course_period.company_id) > 0
         left join company on FIND_IN_SET(company.company_id, fs_user_course_period.company_id) > 0
         <where>
         <where>
+            fs_user_course_period.del_flag ='0'
             <if test="trainingCampId != null"> and fs_user_course_period.training_camp_id = #{trainingCampId}</if>
             <if test="trainingCampId != null"> and fs_user_course_period.training_camp_id = #{trainingCampId}</if>
             <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
             <if test="periodName != null  and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
             <if test="companyIdList != null and companyIdList.size() > 0 ">
             <if test="companyIdList != null and companyIdList.size() > 0 ">
@@ -82,7 +84,7 @@
 
 
     <select id="selectFsUserCoursePeriodById" parameterType="Long" resultMap="FsUserCoursePeriodResult">
     <select id="selectFsUserCoursePeriodById" parameterType="Long" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
         <include refid="selectFsUserCoursePeriodVo"/>
-        where period_id = #{periodId}
+        where del_flag ='0' and  period_id = #{periodId}
     </select>
     </select>
 
 
     <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod" useGeneratedKeys="true" keyProperty="periodId">
     <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod" useGeneratedKeys="true" keyProperty="periodId">
@@ -232,7 +234,7 @@
 
 
     <select id="selectFsUserCoursePeriodsByIds" resultType="FsUserCoursePeriod">
     <select id="selectFsUserCoursePeriodsByIds" resultType="FsUserCoursePeriod">
         select * from fs_user_course_period
         select * from fs_user_course_period
-        where period_id in
+        where del_flag ='0' and  period_id in
         <foreach collection="periodIds" item="item" open="(" separator="," close=")">
         <foreach collection="periodIds" item="item" open="(" separator="," close=")">
             #{item}
             #{item}
         </foreach>
         </foreach>
@@ -242,20 +244,19 @@
         select count(ucp.period_id)
         select count(ucp.period_id)
         from fs_user_course_period ucp
         from fs_user_course_period ucp
         inner join fs_user_course_training_camp uctc on uctc.training_camp_id = ucp.training_camp_id
         inner join fs_user_course_training_camp uctc on uctc.training_camp_id = ucp.training_camp_id
-        where uctc.training_camp_id in
+        where ucp.del_flag ='0' and uctc.training_camp_id in
         <foreach collection="params.ids" item="id" open="(" separator="," close=")">
         <foreach collection="params.ids" item="id" open="(" separator="," close=")">
             #{id}
             #{id}
         </foreach>
         </foreach>
         <![CDATA[
         <![CDATA[
-        and ((ucp.period_starting_time <= #{params.date}
-        and ucp.period_end_time >= #{params.date}
-        ) or ucp.period_end_time < #{params.date})
+       and (ucp.period_starting_time <= #{params.date}
+        and ucp.period_end_time > #{params.date})
         ]]>
         ]]>
     </select>
     </select>
 
 
     <select id="selectPeriodListByTrainingCampIds" resultType="FsUserCoursePeriod">
     <select id="selectPeriodListByTrainingCampIds" resultType="FsUserCoursePeriod">
         select * from fs_user_course_period
         select * from fs_user_course_period
-        where training_camp_id in
+        where del_flag ='0' and training_camp_id in
         <foreach collection="trainingCampIds" item="item" open="(" separator="," close=")">
         <foreach collection="trainingCampIds" item="item" open="(" separator="," close=")">
             #{item}
             #{item}
         </foreach>
         </foreach>

+ 3 - 1
fs-service/src/main/resources/mapper/course/FsUserCourseTrainingCampMapper.xml

@@ -17,6 +17,7 @@
         left join fs_user_course_period ctp on ctc.training_camp_id = ctp.training_camp_id
         left join fs_user_course_period ctp on ctc.training_camp_id = ctp.training_camp_id
         left join fs_course_watch_log cu on cu.period_id = ctp.period_id
         left join fs_course_watch_log cu on cu.period_id = ctp.period_id
         <where>
         <where>
+            ctc.del_flag ='0'
             <if test="params.trainingCampName != null and params.trainingCampName != ''">
             <if test="params.trainingCampName != null and params.trainingCampName != ''">
                 and ctc.training_camp_name like concat('%',#{params.trainingCampName},'%')
                 and ctc.training_camp_name like concat('%',#{params.trainingCampName},'%')
             </if>
             </if>
@@ -41,8 +42,9 @@
         ctc.training_camp_name dictLabel
         ctc.training_camp_name dictLabel
         from fs_user_course_training_camp ctc
         from fs_user_course_training_camp ctc
         <where>
         <where>
+            ctc.del_flag ='0'
             <if test="params.name != null and params.name != ''">
             <if test="params.name != null and params.name != ''">
-                ctc.training_camp_name like concat('%', #{params.name}, '%')
+               and ctc.training_camp_name like concat('%', #{params.name}, '%')
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>