فهرست منبع

会员营期允许删除,具体需要问曹丽芹看看关联哪些一起删除,还有会员营期的修改,这里因为是曹丽芹一直负责的,可以让他配合一起改一下

1、结束的营期可以删除
yfh 5 روز پیش
والد
کامیت
db206c45af

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

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

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

@@ -38,4 +38,9 @@ public class FsUserCourseTrainingCamp
     private LocalDateTime createTime;
 
     private Long userId;
+
+    /**
+     * 删除状态0、正常,1、已删除
+     */
+    private Integer delFlag;
 }

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

@@ -136,4 +136,12 @@ public interface FsUserCoursePeriodMapper
 
     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);
+
 }

+ 24 - 3
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -16,8 +16,8 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 会员营期Service业务层处理
@@ -100,9 +100,30 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
     @Override
     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();
+    }
     /**
      * 删除会员营期信息
      *

+ 16 - 3
fs-service-system/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.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.exception.ServiceException;
@@ -74,17 +75,29 @@ public class FsUserCourseTrainingCampServiceImpl extends ServiceImpl<FsUserCours
         if (checkPeriodStatus(ids)) {
             throw new ServiceException("存在进行中或已结束的营期,不允许删除");
         }
-
-        baseMapper.deleteBatchIds(Arrays.asList(ids));
+        batchUpdateDelFlag(Arrays.asList(ids),1);
 
         // 删除训练营的同时需要删除营期
         List<FsUserCoursePeriod> fsUserCoursePeriods = fsUserCoursePeriodMapper.selectPeriodListByTrainingCampIds(ids);
         List<Long> periodIds = fsUserCoursePeriods.stream().map(FsUserCoursePeriod::getPeriodId).collect(Collectors.toList());
         if(!periodIds.isEmpty()){
-            fsUserCoursePeriodMapper.deleteFsUserCoursePeriodByIds(periodIds.toArray(new Long[0]));
+            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集合

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

@@ -29,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectFsUserCoursePeriodList" parameterType="FsUserCoursePeriod" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
         <where>
+            del_flag ='0'
             <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="trainingCampId != null "> and training_camp_id = #{trainingCampId}</if>
@@ -64,6 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         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
         <where>
+            fs_user_course_period.del_flag ='0'
             <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="companyIdList != null and companyIdList.size() > 0 ">
@@ -82,7 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsUserCoursePeriodById" parameterType="Long" resultMap="FsUserCoursePeriodResult">
         <include refid="selectFsUserCoursePeriodVo"/>
-        where period_id = #{periodId}
+        where del_flag ='0' and  period_id = #{periodId}
     </select>
 
     <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod" useGeneratedKeys="true" keyProperty="periodId">
@@ -232,7 +234,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsUserCoursePeriodsByIds" resultType="FsUserCoursePeriod">
         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=")">
             #{item}
         </foreach>
@@ -242,23 +244,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select count(ucp.period_id)
         from fs_user_course_period ucp
         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=")">
             #{id}
         </foreach>
         <![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 id="selectPeriodListByTrainingCampIds" resultType="FsUserCoursePeriod">
         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=")">
             #{item}
         </foreach>
     </select>
-
 </mapper>

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

@@ -17,6 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         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
         <where>
+            ctc.del_flag ='0'
             <if test="params.trainingCampName != null and params.trainingCampName != ''">
                 and ctc.training_camp_name like concat('%',#{params.trainingCampName},'%')
             </if>