Переглянути джерело

feat(course): 添加红包批量插入或更新功能

- 在 FsUserCourseVideoRedPackageMapper 中新增 batchInsertOrUpdate 方法- 实现对应的 XML 插入语句,支持批量插入和主键冲突时更新
- 修改服务实现类,替换原有批量保存方法调用为新接口
- 调整包导入顺序,移除冗余的注解和类型声明
xw 1 місяць тому
батько
коміт
6bca95d9f9

+ 4 - 4
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseVideoRedPackageMapper.java

@@ -1,15 +1,12 @@
 package com.fs.course.mapper;
 
-import java.util.List;
-
-import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.course.domain.FsUserCourseVideoRedPackage;
 import com.fs.course.param.FsUserCourseVideoParam;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
-import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * 课程公司红包Mapper接口
@@ -104,4 +101,7 @@ public interface FsUserCourseVideoRedPackageMapper
     int updateBatchDelFlag(@Param("ids") Long [] ids, @Param("delFlag") Integer delFlag);
 
     Integer selectRedPacketByCompanyCount(@Param("videoId") Long videoId,@Param("companyId") Long companyId, @Param("periodId") Long periodId);
+
+    void batchInsertOrUpdate(List<FsUserCourseVideoRedPackage> list);
+
 }

+ 9 - 9
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoRedPackageServiceImpl.java

@@ -1,29 +1,28 @@
 package com.fs.course.service.impl;
 
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.StringUtils;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
+import com.fs.course.domain.FsUserCourseVideoRedPackage;
 import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
 import com.fs.course.mapper.FsUserCoursePeriodMapper;
+import com.fs.course.mapper.FsUserCourseVideoRedPackageMapper;
 import com.fs.course.param.BatchCompanyRedPackageParam;
 import com.fs.course.param.FsBatchPeriodRedPackageParam;
+import com.fs.course.service.IFsUserCourseVideoRedPackageService;
 import com.google.common.collect.Lists;
-import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.fs.course.mapper.FsUserCourseVideoRedPackageMapper;
-import com.fs.course.domain.FsUserCourseVideoRedPackage;
-import com.fs.course.service.IFsUserCourseVideoRedPackageService;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
 /**
  * 课程公司红包Service业务层处理
  *
@@ -230,7 +229,8 @@ public class FsUserCourseVideoRedPackageServiceImpl implements IFsUserCourseVide
         });
 
         // 5、 新增或修改
-        this.batchSaveCompanyRedPackage(fsRedPackageList);
+//        this.batchSaveCompanyRedPackage(fsRedPackageList);
+        fsUserCourseVideoRedPackageMapper.batchInsertOrUpdate(fsRedPackageList);
     }
 
     @Override

+ 10 - 0
fs-service/src/main/resources/mapper/course/FsUserCourseVideoRedPackageMapper.xml

@@ -158,4 +158,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <!--            <if test="periodId != null "> and period_id = #{periodId}</if>-->
 <!--        </where>-->
 <!--    </select>-->
+    <insert id="batchInsertOrUpdate">
+        INSERT INTO fs_user_course_video_red_package
+        (company_id, video_id, red_packet_money, period_id, data_type)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.companyId}, #{item.videoId}, #{item.redPacketMoney}, #{item.periodId}, #{item.dataType})
+        </foreach>
+        ON DUPLICATE KEY UPDATE
+        red_packet_money = VALUES(red_packet_money)
+    </insert>
 </mapper>