Преглед изворни кода

Merge remote-tracking branch 'origin/master'

zyp пре 2 недеља
родитељ
комит
54ea19d537
18 измењених фајлова са 232 додато и 137 уклоњено
  1. 15 0
      fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java
  2. 4 0
      fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java
  3. 2 0
      fs-service-system/src/main/java/com/fs/course/mapper/FsUserCourseVideoRedPackageMapper.java
  4. 23 0
      fs-service-system/src/main/java/com/fs/course/param/BatchCompanyRedPackageParam.java
  5. 7 0
      fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseVideoRedPackageService.java
  6. 18 35
      fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java
  7. 50 8
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoRedPackageServiceImpl.java
  8. 45 20
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  9. 9 5
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserWatchCourseStatisticsServiceImpl.java
  10. 4 0
      fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java
  11. 9 2
      fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java
  12. 2 0
      fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml
  13. 8 1
      fs-service-system/src/main/resources/mapper/course/FsUserCourseVideoRedPackageMapper.xml
  14. 1 1
      fs-service-system/src/main/resources/mapper/course/FsVideoResourceMapper.xml
  15. 13 1
      fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml
  16. 0 7
      fs-user-app/src/main/java/com/fs/app/controller/CourseWxH5Controller.java
  17. 15 57
      fs-user-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java
  18. 7 0
      fs-user-app/src/main/java/com/fs/app/param/LoginMaWxParam.java

+ 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) {

+ 4 - 0
fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java

@@ -119,6 +119,10 @@ public class FsUserController extends AppBaseController {
         param.setUserId(Long.parseLong(getUserId()));
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         List<CompanyUserTagListVO> tagList = companyTagUserService.getTagList(param);
+        CompanyUserTagListVO noTag = new CompanyUserTagListVO();
+        noTag.setTagId(0L);
+        noTag.setTagName("无标签");
+        tagList.add(0, noTag);
         PageInfo<CompanyUserTagListVO> pageInfo = new PageInfo<>(tagList);
         return ResponseResult.ok(pageInfo);
     }

+ 2 - 0
fs-service-system/src/main/java/com/fs/course/mapper/FsUserCourseVideoRedPackageMapper.java

@@ -108,4 +108,6 @@ public interface FsUserCourseVideoRedPackageMapper
             "</foreach>" +
             "</script>")
     int updateBatchDelFlag(@Param("ids") Long [] ids, @Param("delFlag") Integer delFlag);
+
+    Integer selectRedPacketByCompanyCount(@Param("videoId") Long videoId,@Param("companyId") Long companyId, @Param("periodId") Long periodId);
 }

+ 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);
 }

+ 18 - 35
fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java

@@ -166,49 +166,32 @@ public class FsCourseQuestionBankServiceImpl implements IFsCourseQuestionBankSer
         new FsCourseAnswerLogs();
         FsCourseAnswerLogs rightLog;
         //判断短链类型
-        if (param.getLinkType()!=null&&param.getLinkType()==1){
-            rightLog = courseAnswerLogsMapper.selectRightLogByCourseVideo(param.getVideoId(), param.getUserId(),null);
-            if (rightLog!=null){
+
+        FsCourseWatchLog log = courseWatchLogMapper.getWatchLogByFsUser(param.getVideoId(), param.getUserId(), param.getCompanyUserId());
+        if (log==null){
+            return R.error("无记录");
+        }
+        if (log.getLogType()!=2){
+            return R.error("未完课");
+        }
+        logId = log.getLogId();
+
+        rightLog = courseAnswerLogsMapper.selectRightLogByCourseVideo(param.getVideoId(), param.getUserId(), param.getQwUserId());
+        if (rightLog != null) {
+            if (log.getRewardType() != null) {
                 // 增加判断,去查询红包记录是否已发送成功,如果成功,则返回当前提示,否则返回答题成功(让其可以继续答题,直到红包领取完成)
                 FsCourseRedPacketLog fsCourseRedPacketLog = redPacketLogMapper.selectUserFsCourseRedPacketLog(param.getVideoId(), param.getUserId(),param.getPeriodId());
-                if(fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 1){
+                if(fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 1) {
                     return R.error("该课程已答题完成,不可重复答题");
-                }
-            }
-            errorCount = courseAnswerLogsMapper.selectErrorCountByCourseVideo(param.getVideoId(), param.getUserId(),null);
-
-        }else {
-            FsCourseWatchLog log;
-            if(isH5User){
-               log = courseWatchLogMapper.getWatchLogByFsUser(param.getVideoId(), param.getUserId(), param.getCompanyUserId());
-            } else {
-                log = courseWatchLogMapper.getWatchCourseVideo(param.getUserId(), param.getVideoId(), param.getQwUserId(), param.getQwExternalId());
-            }
-            if (log==null){
-                return R.error("无记录");
-            }
-            if (log.getLogType()!=2){
-                return R.error("未完课");
-            }
-            logId = log.getLogId();
-
-            rightLog = courseAnswerLogsMapper.selectRightLogByCourseVideo(param.getVideoId(), param.getUserId(), param.getQwUserId());
-            if (rightLog != null) {
-                if (log.getRewardType() != null) {
-                    // 增加判断,去查询红包记录是否已发送成功,如果成功,则返回当前提示,否则返回答题成功(让其可以继续答题,直到红包领取完成)
-                    FsCourseRedPacketLog fsCourseRedPacketLog = redPacketLogMapper.selectUserFsCourseRedPacketLog(param.getVideoId(), param.getUserId(),param.getPeriodId());
-                    if(fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 1) {
-                        return R.error("该课程已答题完成,不可重复答题");
-                    } else {
-                        return R.ok("答题成功");
-                    }
                 } else {
                     return R.ok("答题成功");
                 }
-//                return R.error("该课程已答题完成,不可重复答题");
+            } else {
+                return R.ok("答题成功");
             }
-            errorCount = courseAnswerLogsMapper.selectErrorCountByCourseVideo(param.getVideoId(), param.getUserId(),param.getQwUserId());
         }
+        errorCount = courseAnswerLogsMapper.selectErrorCountByCourseVideo(param.getVideoId(), param.getUserId(),param.getQwUserId());
+
 
 
         if (errorCount >= config.getAnswerErrorCount()) {

+ 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);
+    }
+
 
 }

+ 45 - 20
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -819,19 +819,49 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         packetParam.setRedPacketMode(config.getRedPacketMode());
         packetParam.setCompanyId(param.getCompanyId());
 
+        //2025.7.11 红包金额为0的时候
+        if (amount.compareTo(BigDecimal.ZERO)>0){
+            // 发送红包
+            R sendRedPacket = paymentService.sendRedPacket(packetParam);
+            if (sendRedPacket.get("code").equals(200)) {
+                FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
+                TransferBillsResult transferBillsResult;
+                if (sendRedPacket.get("isNew").equals(1)){
+                    transferBillsResult = (TransferBillsResult)sendRedPacket.get("data");
+                    redPacketLog.setResult(JSON.toJSONString(sendRedPacket));
+                    redPacketLog.setOutBatchNo(transferBillsResult.getOutBillNo());
+                }else {
+                    redPacketLog.setOutBatchNo(sendRedPacket.get("orderCode").toString());
+                }
+                // 添加红包记录
+                redPacketLog.setCourseId(param.getCourseId());
+//            redPacketLog.setOutBatchNo(sendRedPacket.get("orderCode").toString());
+                redPacketLog.setCompanyId(param.getCompanyId());
+                redPacketLog.setUserId(param.getUserId());
+                redPacketLog.setVideoId(param.getVideoId());
+                redPacketLog.setStatus(0);
+                redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
+                redPacketLog.setCompanyUserId(param.getCompanyUserId());
+                redPacketLog.setCreateTime(new Date());
+                redPacketLog.setAmount(amount);
+                redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
+                redPacketLog.setPeriodId(param.getPeriodId());
+
+                redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
+
+                // 更新观看记录的奖励类型
+//            if (param.getLinkType() == null || param.getLinkType() == 0) {
+                log.setRewardType(config.getRewardType());
+                courseWatchLogMapper.updateFsCourseWatchLog(log);
+//            }
+                return sendRedPacket;
+            } else {
+                return R.error("奖励发送失败,请联系客服");
+            }
 
-        // 发送红包
-        R sendRedPacket = paymentService.sendRedPacket(packetParam);
-        if (sendRedPacket.get("code").equals(200)) {
+        } else {
+            // 发送红包
             FsCourseRedPacketLog redPacketLog = new FsCourseRedPacketLog();
-            TransferBillsResult transferBillsResult;
-            if (sendRedPacket.get("isNew").equals(1)){
-                transferBillsResult = (TransferBillsResult)sendRedPacket.get("data");
-                redPacketLog.setResult(JSON.toJSONString(sendRedPacket));
-                redPacketLog.setOutBatchNo(transferBillsResult.getOutBillNo());
-            }else {
-                redPacketLog.setOutBatchNo(sendRedPacket.get("orderCode").toString());
-            }
             // 添加红包记录
             redPacketLog.setCourseId(param.getCourseId());
 //            redPacketLog.setOutBatchNo(sendRedPacket.get("orderCode").toString());
@@ -842,20 +872,15 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             redPacketLog.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null);
             redPacketLog.setCompanyUserId(param.getCompanyUserId());
             redPacketLog.setCreateTime(new Date());
-            redPacketLog.setAmount(amount);
+            redPacketLog.setAmount(BigDecimal.ZERO);
             redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
             redPacketLog.setPeriodId(param.getPeriodId());
-
             redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
 
             // 更新观看记录的奖励类型
-//            if (param.getLinkType() == null || param.getLinkType() == 0) {
             log.setRewardType(config.getRewardType());
             courseWatchLogMapper.updateFsCourseWatchLog(log);
-//            }
-            return sendRedPacket;
-        } else {
-            return R.error("奖励发送失败,请联系客服");
+            return R.ok("红包发送成功");
         }
     }
 
@@ -1141,8 +1166,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 //
         if (courseVideoDetails != null && courseVideoDetails.getDuration() != null){
             // 查询视频是否设置了红包,没有就不提示
-            FsUserCourseVideoRedPackage fsUserCourseVideoRedPackage = fsUserCourseVideoRedPackageMapper.selectRedPacketByCompanyId(param.getVideoId(), null, param.getPeriodId());
-            if(fsUserCourseVideoRedPackage != null){
+            Integer fsUserCourseVideoRedPackage = fsUserCourseVideoRedPackageMapper.selectRedPacketByCompanyCount(param.getVideoId(), null, param.getPeriodId());
+            if(fsUserCourseVideoRedPackage>0){
                 tipsTime = courseVideoDetails.getDuration() / 3;
                 tipsTime2 = (courseVideoDetails.getDuration() * 2) / 3;
             }

+ 9 - 5
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserWatchCourseStatisticsServiceImpl.java

@@ -6,6 +6,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
 import com.fs.store.mapper.FsUserMapper;
@@ -161,11 +162,14 @@ public class FsUserWatchCourseStatisticsServiceImpl extends ServiceImpl<FsUserWa
             if(userTotalDataList != null && !userTotalDataList.isEmpty()){
                 // 获取过滤时间后的销售会员数量
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-
-                int userNum = userTotalDataList.stream()
-                        .filter(v -> v.getUserCreateDate().before(data.getCourseStartDateTime())).mapToInt(FsUserWatchCourseStatistics::getUserNum).sum();
-                int newUserNum = userTotalDataList.stream()
-                        .filter(v -> sdf.format(v.getUserCreateDate()).equals(sdf.format(data.getCourseStartDateTime()))).mapToInt(FsUserWatchCourseStatistics::getUserNum).sum();
+                int userNum =0;
+                int newUserNum =0;
+                if (ObjectUtil.isNotEmpty(data.getCourseStartDateTime())){
+                    userNum = userTotalDataList.stream()
+                            .filter(v -> v.getUserCreateDate().before(data.getCourseStartDateTime())).mapToInt(FsUserWatchCourseStatistics::getUserNum).sum();
+                    newUserNum = userTotalDataList.stream()
+                            .filter(v -> sdf.format(v.getUserCreateDate()).equals(sdf.format(data.getCourseStartDateTime()))).mapToInt(FsUserWatchCourseStatistics::getUserNum).sum();
+                }
                 vo.setUserNum(userNum);
                 vo.setNewUserNum(newUserNum);
             } else {

+ 4 - 0
fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java

@@ -73,6 +73,10 @@ public class FsUserPageListParam implements Serializable {
     private Long pcLoginUserId;
 
     private Boolean isAdmin;
+    /**
+     * 判断是否选择了无标签
+     */
+    private Boolean isNullTag =false;
 
 
 

+ 9 - 2
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -470,7 +470,7 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public PageInfo<FsUserPageListVO> selectFsUserPageList(FsUserPageListParam param) {
-
+        System.out.println("参数:" + Arrays.toString(param.getTagIds()));
         CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param.getUserId());
         if (companyUser!=null && companyUser.isAdmin()){
             param.setUserId(0L);
@@ -482,7 +482,14 @@ public class FsUserServiceImpl implements IFsUserService
         }
 
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
-
+        if (param.getTagIds() != null && param.getTagIds().length > 0) {
+            boolean containsZero = Arrays.asList(param.getTagIds()).contains("0");
+            // 如果包含 "0",则设置 isNullTag 为 true
+            System.out.println("是否包含 0:" + containsZero + ",参数:" + Arrays.toString(param.getTagIds()));
+            if (containsZero) {
+                param.setIsNullTag(true);
+            }
+        }
         List<FsUserPageListVO> fsUserPageListVOS = fsUserMapper.selectFsUserPageList(param);
 
         // 获取当前销售所有重粉会员

+ 2 - 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
@@ -237,6 +238,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     a.period_id = #{periodId}
             )
           and a.period_id = #{periodId}
+          and a.del_flag = 0
     </select>
 
     <select id="selectFsUserCoursePeriodsByIds" resultType="FsUserCoursePeriod">

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

@@ -149,5 +149,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by id desc limit 1
     </select>
-
+    <select id="selectRedPacketByCompanyCount" resultType="java.lang.Integer">
+        select count(0) from fs_user_course_video_red_package
+        <where>
+            <if test="videoId != null "> and video_id =#{videoId}</if>
+            <if test="companyId != null "> and company_id = #{companyId}</if>
+            <if test="periodId != null "> and period_id = #{periodId}</if>
+        </where>
+    </select>
 </mapper>

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

@@ -24,6 +24,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="params.typeSubId != null">
             and rr.type_sub_id = #{params.typeSubId}
         </if>
-        order by rr.id
+        order by rr.resource_name
     </select>
 </mapper>

+ 13 - 1
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -563,7 +563,19 @@
         <if test="registerEndTime != null and registerEndTime !='' ">
             AND fs_user.create_time &lt;= #{registerEndTime}
         </if>
-        <if test="tagIds != null and tagIds.length > 0">
+
+        <if test="isNullTag">
+            and (company_tag_user.tag_ids is null
+            <if test="tagIds != null and tagIds.length > 0">
+                or
+                <foreach collection="tagIds" item="item" index="index" open="(" separator="or" close=")">
+                    CONCAT(',', company_tag_user.tag_ids, ',') LIKE CONCAT('%,', #{item}, ',%')
+                </foreach>
+            </if>
+            )
+        </if>
+
+        <if test="!isNullTag and tagIds != null and tagIds.length > 0">
             AND
             <foreach collection="tagIds" item="item" index="index" open="(" separator="or" close=")">
                 CONCAT(',', company_tag_user.tag_ids, ',') LIKE CONCAT('%,', #{item}, ',%')

+ 0 - 7
fs-user-app/src/main/java/com/fs/app/controller/CourseWxH5Controller.java

@@ -1,23 +1,18 @@
 package com.fs.app.controller;
 
 
-import cn.hutool.json.JSONUtil;
 import com.fs.app.annotation.Login;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
-import com.fs.course.config.CourseConfig;
-import com.fs.course.domain.FsCourseWatchLog;
 import com.fs.course.param.FsCourseQuestionAnswerUParam;
 import com.fs.course.param.FsCourseSendRewardUParam;
 import com.fs.course.param.FsUserCourseVideoFinishUParam;
 import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
-import com.fs.course.param.newfs.FsUserCourseBeMemberParam;
 import com.fs.course.param.newfs.FsUserCourseVideoLinkParam;
 import com.fs.course.param.newfs.FsUserCourseVideoUParam;
 import com.fs.course.service.*;
 import com.fs.course.vo.FsUserCourseVideoH5VO;
-import com.fs.course.vo.newfs.FsUserCourseVideoDetailsVO;
 import com.fs.course.vo.newfs.FsUserCourseVideoLinkDetailsVO;
 import com.fs.store.service.IFsUserService;
 import com.fs.system.service.ISysConfigService;
@@ -56,8 +51,6 @@ public class CourseWxH5Controller extends AppBaseController {
     @Autowired
     private IFsUserService fsUserService;
 
-
-    @RepeatSubmit
     @Login
     @ApiOperation("判断是否添加客服(是否关联销售)")
     @PostMapping("/isAddKf")

+ 15 - 57
fs-user-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -78,63 +78,21 @@ public class WxCompanyUserController extends AppBaseController {
             this.logger.info(session.getSessionKey());
             this.logger.info(session.getOpenid());
             this.logger.info(session.getUnionid());
-            // 解密
-            WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
-//            WxMaUserInfo userInfo = wxService.getUserService().getUserInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
-            FsUser user = userService.selectFsUserByPhone(phoneNoInfo.getPhoneNumber());
-            //以下暂时注释,不需要往销售表添加数据
-//            CompanyUser companyUser = companyUserService.getCompanyUserByOpenId(session.getOpenid());
-//            String ip = IpUtil.getRequestIp();
-//
-////            // 如果公司id为空(表示可能是该公司的第一位销售管理员),则需要根据电话号码判断是否存在销售,如果不存在则提示
-////            if (param.getCompanyId() == null) {
-////                if (checkPhone == null) {
-////                    throw new CustomException("由于不是管理员,不能直接登录", 401);
-////                }
-////            }
-//            if (companyUser == null) {
-//                CompanyUser checkPhone = companyUserService.getCompanyUserByPhone(phoneNoInfo.getPhoneNumber());
-//                if (checkPhone != null) {
-//                    if (checkPhone.getMaOpenId() == null) {
-//                        companyUser = checkPhone;
-//                        companyUser.setMaOpenId(session.getOpenid());
-//                        companyUser.setUserId(companyUser.getUserId());
-//                        companyUser.setUpdateTime(new DateTime());
-//                        companyUser.setLoginIp(ip);
-//                        companyUserService.updateUserProfile(companyUser);
-//                    } else {
-//                        throw new CustomException("此手机号用户已存在");
-//                    }
-//                } else {
-//                    //新增
-//                    companyUser = new CompanyUser();
-//                    companyUser.setUserName(phoneNoInfo.getPhoneNumber());
-//                    companyUser.setNickName(userInfo.getNickName() == null ? "微信用户" : userInfo.getNickName());
-//                    companyUser.setPhonenumber(phoneNoInfo.getPhoneNumber());
-//                    companyUser.setSex(userInfo.getGender());
-//                    //密码初始化为123456
-//                    String pw = "123456";
-//                    companyUser.setPassword(SecurityUtils.encryptPassword(param.getPassword() == null ? pw : param.getPassword()));
-//                    companyUser.setCreateTime(new Date());
-//                    companyUser.setCompanyId(param.getCompanyId());
-//                    companyUser.setParentId(param.getParentCompanyUseId());
-//                    companyUser.setMaOpenId(session.getOpenid());
-//
-//                    //部门信息
-//                    CompanyDept dept = companyDeptService.getDefaultCompanyDeptByCompanyId(param.getCompanyId());
-//                    if (Objects.nonNull(dept)) {
-//                        companyUser.setDeptId(dept.getDeptId());
-//                    }
-//                    companyUserService.insertUser(companyUser);
-//                }
-//            } else {
-//                CompanyUser companyUserMp = new CompanyUser();
-//                companyUserMp.setPhonenumber(phoneNoInfo.getPhoneNumber());
-//                companyUserMp.setUserId(companyUser.getUserId());
-//                companyUserMp.setUpdateTime(new DateTime());
-//                companyUserMp.setLoginIp(ip);
-//                companyUserService.updateUserProfile(companyUser);
-//            }
+
+            if (StringUtils.isEmpty(session.getOpenid())){
+                return R.error("登陆失败,openid未授权,请稍后再试!");
+            }
+
+            // 手机号信息
+            WxMaPhoneNumberInfo phoneNoInfo = new WxMaPhoneNumberInfo();
+            FsUser user = null;
+            if (param.getAuthType()==1){
+                phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
+                if (StringUtils.isEmpty(phoneNoInfo.getPhoneNumber())){
+                    return R.error("授权失败,请联系客服!");
+                }
+                user = userService.selectFsUserByPhone(phoneNoInfo.getPhoneNumber());
+            }
 
             // 特殊(需求设计:需要根据公司是否开启黑名单来设置会员初始化的状态)
             Company company = null;

+ 7 - 0
fs-user-app/src/main/java/com/fs/app/param/LoginMaWxParam.java

@@ -48,4 +48,11 @@ public class LoginMaWxParam implements Serializable {
 //    @ApiModelProperty(value = "用户密码")
 //    private String password;
 
+    /**
+     * 0:静默授权  1:手机号授权
+     */
+    @NotNull(message = "授权类型缺失")
+    @ApiModelProperty(value = "小程序授权类型")
+    private Integer authType;
+
 }