Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

yfh 2 nedēļas atpakaļ
vecāks
revīzija
a7f1d1d23d

+ 15 - 0
fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -10,6 +10,7 @@ import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.domain.FsUserCourseVideoRedPackage;
+import com.fs.course.param.BatchCompanyRedPackageParam;
 import com.fs.course.param.CompanyRedPacketParam;
 import com.fs.course.param.FsBatchPeriodRedPackageParam;
 import com.fs.course.param.PeriodCountParam;
@@ -27,6 +28,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -213,6 +215,19 @@ public class FsUserCoursePeriodController extends BaseController {
         return R.ok();
     }
 
+    @PreAuthorize("@ss.hasPermi('course:period:setCompanyRedPacket')")
+    @ApiOperation("按公司批量保存设置红包金额")
+    @PostMapping("/batchRedPacket/byCompany")
+    public R batchRedPacketByCompany(@Validated @RequestBody BatchCompanyRedPackageParam param) {
+        try {
+            fsUserCourseVideoRedPackageService.batchRedPacketByCompany(param);
+        } catch (Exception e) {
+            logger.error("按恭送批量保存设置红包金额-失败!,入参:{}", param);
+            return R.error("保存失败!");
+        }
+        return R.ok();
+    }
+
     @PostMapping("/periodCount")
     @ApiOperation("营期统计")
     public R periodCourseCount(@RequestBody PeriodCountParam param) {

+ 23 - 0
fs-service-system/src/main/java/com/fs/course/param/BatchCompanyRedPackageParam.java

@@ -0,0 +1,23 @@
+package com.fs.course.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class BatchCompanyRedPackageParam {
+
+    @NotNull(message = "营期ID不能为空")
+    private Long periodId;
+
+    @NotEmpty(message = "公司ID不能为空")
+    private List<Long> companyIds;
+
+    @NotNull(message = "红包金额不能为空")
+    @DecimalMin(value = "0.1", message = "红包金额必须大于0.1")
+    private BigDecimal redPacketMoney;
+}

+ 7 - 0
fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseVideoRedPackageService.java

@@ -1,6 +1,7 @@
 package com.fs.course.service;
 
 import com.fs.course.domain.FsUserCourseVideoRedPackage;
+import com.fs.course.param.BatchCompanyRedPackageParam;
 import com.fs.course.param.FsBatchPeriodRedPackageParam;
 
 import java.util.List;
@@ -92,4 +93,10 @@ public interface IFsUserCourseVideoRedPackageService
     void batchRedPacketByPeriod(List<FsBatchPeriodRedPackageParam> periodRedPackageList);
 
     List<FsUserCourseVideoRedPackage> selectByRuleIds(List<Long> ruleIds);
+
+    /**
+     * 按照公司批量设置红包
+     * @param param 入参
+     */
+    void batchRedPacketByCompany(BatchCompanyRedPackageParam param);
 }

+ 50 - 8
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoRedPackageServiceImpl.java

@@ -1,26 +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.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.test.annotation.Rollback;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
 /**
  * 课程公司红包Service业务层处理
  *
@@ -244,5 +246,45 @@ public class FsUserCourseVideoRedPackageServiceImpl implements IFsUserCourseVide
         return fsUserCourseVideoRedPackageMapper.selectByRuleIds(ruleIds);
     }
 
+    /**
+     * 按照公司批量设置红包
+     * @param param 入参
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void batchRedPacketByCompany(BatchCompanyRedPackageParam param) {
+        FsUserCoursePeriod period = userCoursePeriodMapper.selectFsUserCoursePeriodById(param.getPeriodId());
+        if (Objects.isNull(period)) {
+            throw new CustomException("营期不存在");
+        }
+
+        Set<Long> targetCompanyIds = new HashSet<>(param.getCompanyIds());
+        Set<Long> companyIds = Arrays.stream(period.getCompanyId().split(","))
+                .filter(StringUtils::isNotBlank)
+                .map(Long::valueOf)
+                .filter(targetCompanyIds::contains)
+                .collect(Collectors.toSet());
+
+        if (companyIds.isEmpty()) {
+            throw new CustomException("当前营期不包含所选公司");
+        }
+
+        List<FsUserCoursePeriodDays> periodVideos = userCoursePeriodDaysMapper.selectCourseVideoList(Collections.singleton(period.getPeriodId()));
+
+        List<FsUserCourseVideoRedPackage> fsRedPackageList = companyIds.stream()
+            .flatMap(companyId -> periodVideos.stream().map(video -> {
+                FsUserCourseVideoRedPackage redPkg = new FsUserCourseVideoRedPackage();
+                redPkg.setCompanyId(companyId);
+                redPkg.setVideoId(video.getVideoId());
+                redPkg.setRedPacketMoney(param.getRedPacketMoney());
+                redPkg.setPeriodId(period.getPeriodId());
+                redPkg.setDataType(2);
+                return redPkg;
+            }))
+            .collect(Collectors.toList());
+
+        this.batchSaveCompanyRedPackage(fsRedPackageList);
+    }
+
 
 }

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

@@ -225,6 +225,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND fvrp.period_id = #{periodId}
                 AND fvrp.company_id = #{companyId}
                 AND fvrp.data_type = 2
+                and fvrp.del_flag = 0
         WHERE
             a.video_id IN (
                 SELECT