Browse Source

Merge remote-tracking branch 'origin/master'

吴树波 16 hours ago
parent
commit
b8a2876b6b
28 changed files with 600 additions and 310 deletions
  1. 11 0
      fs-company-app/src/main/java/com/fs/app/controller/CommonController.java
  2. 1 0
      fs-company/src/main/java/com/fs/framework/config/DataSourceConfig.java
  3. 1 0
      fs-framework/src/main/java/com/fs/framework/config/DataSourceConfig.java
  4. 1 0
      fs-qw-api/src/main/java/com/fs/framework/config/DataSourceConfig.java
  5. 1 1
      fs-qw-task/src/main/java/com/fs/app/task/CourseWatchLogScheduler.java
  6. 1 1
      fs-qw-task/src/main/java/com/fs/app/task/UserCourseWatchCountTask.java
  7. 21 9
      fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java
  8. 1 0
      fs-qwhook-sop/src/main/java/com/fs/framework/config/DataSourceConfig.java
  9. 1 0
      fs-qwhook/src/main/java/com/fs/framework/config/DataSourceConfig.java
  10. 7 1
      fs-service/src/main/java/com/fs/company/service/impl/CompanyTagUserServiceImpl.java
  11. 3 0
      fs-service/src/main/java/com/fs/course/domain/FsCourseAnswerLogs.java
  12. 2 0
      fs-service/src/main/java/com/fs/course/domain/FsCourseRedPacketLog.java
  13. 1 0
      fs-service/src/main/java/com/fs/course/param/FsCourseQuestionAnswerUParam.java
  14. 1 0
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java
  15. 0 1
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  16. 9 9
      fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java
  17. 55 9
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  18. 4 0
      fs-service/src/main/java/com/fs/sop/domain/QwSop.java
  19. 37 4
      fs-service/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java
  20. 5 0
      fs-service/src/main/java/com/fs/sop/vo/SopUserLogsVo.java
  21. 6 3
      fs-service/src/main/resources/mapper/course/FsCourseAnswerLogsMapper.xml
  22. 9 2
      fs-service/src/main/resources/mapper/course/FsCourseRedPacketLogMapper.xml
  23. 397 263
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml
  24. 5 2
      fs-service/src/main/resources/mapper/sop/QwSopLogsMapper.xml
  25. 3 0
      fs-service/src/main/resources/mapper/sop/QwSopMapper.xml
  26. 2 1
      fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml
  27. 14 4
      fs-service/src/main/resources/mapper/store/FsUserCourseCountMapper.xml
  28. 1 0
      fs-user-app/src/main/java/com/fs/framework/config/DataSourceConfig.java

+ 11 - 0
fs-company-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -25,6 +25,7 @@ import com.fs.his.service.IFsAppVersionService;
 import com.fs.his.service.IFsCityService;
 import com.fs.jpush.service.JpushService;
 
+import com.fs.store.service.IFsUserCourseCountService;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
 import com.fs.system.service.ISysConfigService;
@@ -228,5 +229,15 @@ public class CommonController extends AppBaseController {
 	}
 
 
+	@Autowired
+	private IFsUserCourseCountService userCourseCountService;
+
+	@PostMapping("test")
+	public R test() throws Exception
+	{
+		userCourseCountService.insertFsUserCourseCountTask();
+		return R.ok();
+	}
+
 
 }

+ 1 - 0
fs-company/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -40,6 +40,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }

+ 1 - 0
fs-framework/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -43,6 +43,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("clickhouseDataSource") DataSource clickhouseDataSource,@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         targetDataSources.put(DataSourceType.CLICKHOUSE.name(), clickhouseDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);

+ 1 - 0
fs-qw-api/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -40,6 +40,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }

+ 1 - 1
fs-qw-task/src/main/java/com/fs/app/task/CourseWatchLogScheduler.java

@@ -126,7 +126,7 @@ public class CourseWatchLogScheduler {
 
     }
 
-    @Scheduled(fixedRate = 60000) // 每分钟执行一次
+    @Scheduled(fixedRate = 30000) // 每分钟执行一次
     public void checkFsUserWatchStatus() {
         // 尝试设置标志为 true,表示任务开始执行
         if (!isRunning4.compareAndSet(false, true)) {

+ 1 - 1
fs-qw-task/src/main/java/com/fs/app/task/UserCourseWatchCountTask.java

@@ -16,7 +16,7 @@ public class UserCourseWatchCountTask {
     /**
      * 每15分钟执行一次
      */
-    @Scheduled(cron = "0 */15 * * * ?")  // 每15分钟执行一次
+    @Scheduled(cron = "0 */10 * * * ?")  // 每10分钟执行一次
     public void userCourseCountTask() {
         try {
             log.info("==============会员看课统计任务执行===============开始");

+ 21 - 9
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -774,22 +774,33 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         sopLogs.setQwUserid(logVo.getQwUserId());
         sopLogs.setCorpId(logVo.getCorpId());
         sopLogs.setLogType(ruleTimeVO.getType());
+        sopLogs.setTakeRecords(0);
 
         if (isOfficial == 1) {
 
-            if (fsUserId== null || Long.valueOf(0L).equals(fsUserId)){
-                sopLogs.setSendType(2);
-                sopLogs.setRemark("未绑定小程序用户,单链补发");
-                //时间设置成固定7点
-                LocalDateTime dateTime = LocalDateTime.parse(formattedSendTime, DATE_TIME_FORMATTER);
-                sopLogs.setSendTime(OUTPUT_FORMATTER.format(dateTime));
+            if (logVo.getIsSampSend()== 1) {
+                if (fsUserId == null || Long.valueOf(0L).equals(fsUserId)) {
+                    sopLogs.setSendType(2);
+                    sopLogs.setRemark("未绑定小程序用户,单链补发");
+                    //时间设置成固定8点
+                    LocalDateTime dateTime = LocalDateTime.parse(formattedSendTime, DATE_TIME_FORMATTER);
+                    sopLogs.setSendTime(OUTPUT_FORMATTER.format(dateTime));
+                } else {
+                    sopLogs.setSendType(1);
+                }
+
             }else {
-                sopLogs.setSendType(1);
+                if (fsUserId == null || Long.valueOf(0L).equals(fsUserId)) {
+                    sopLogs.setTakeRecords(1);
+                    sopLogs.setSendType(1);
+                }else {
+                    sopLogs.setSendType(1);
+                }
             }
 
-        }else if (isOfficial==0){
+        } else if (isOfficial == 0) {
             sopLogs.setSendType(ruleTimeVO.getSendType() == 1 ? 2 : ruleTimeVO.getSendType());
-        }else{
+        } else {
             sopLogs.setSendType(ruleTimeVO.getSendType());
         }
 
@@ -1828,6 +1839,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         sopLogs.setExternalUserId(externalContact.getExternalUserId());
         sopLogs.setExternalUserName(externalContact.getName());
         sopLogs.setFsUserId(finishLog.getUserId() != null ? finishLog.getUserId() : null );
+        sopLogs.setUserLogsId("-");
         // 解析模板设置
         List<QwSopCourseFinishTempSetting.Setting> settings = parseSettings(finishTemp.getSetting());
         if (settings == null) {

+ 1 - 0
fs-qwhook-sop/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -40,6 +40,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }

+ 1 - 0
fs-qwhook/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -40,6 +40,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }

+ 7 - 1
fs-service/src/main/java/com/fs/company/service/impl/CompanyTagUserServiceImpl.java

@@ -117,8 +117,14 @@ public class CompanyTagUserServiceImpl implements ICompanyTagUserService
                 keywords = param.getKeyword().split(",");
             }
         }
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param != null ? param.getUserId() : null);
+        if (companyUser != null && companyUser.isAdmin()){
+            companyId = companyUser.getCompanyId();
+        }
         //获取所有销售
-        List<CompanyUser> companyUsers = companyUserMapper.selectAllCompanyUserAndSelf(param != null ? param.getUserId() : null,null);
+        List<CompanyUser> companyUsers = companyUserMapper.selectAllCompanyUserAndSelf(param != null ? param.getUserId() : null, companyId);
         List<Long> userIds = Collections.emptyList();
         if(companyUsers != null && !companyUsers.isEmpty()){
             userIds = companyUsers.stream().map(CompanyUser::getUserId).collect(Collectors.toList());

+ 3 - 0
fs-service/src/main/java/com/fs/course/domain/FsCourseAnswerLogs.java

@@ -66,4 +66,7 @@ public class FsCourseAnswerLogs extends BaseEntity {
     private String questionJson;
 
     private Long watchLogId;//绑定观看的记录id
+
+    /** 营期id */
+    private Long periodId;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/course/domain/FsCourseRedPacketLog.java

@@ -57,4 +57,6 @@ public class FsCourseRedPacketLog extends BaseEntity
     /** 营期id */
     private Long periodId;
 
+    private String result;
+
 }

+ 1 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseQuestionAnswerUParam.java

@@ -30,5 +30,6 @@ public class FsCourseQuestionAnswerUParam implements Serializable
     private Long duration;
     private Long qwExternalId;
     private List<FsCourseQuestionBank> questions;
+    private Long periodId;
 
 }

+ 1 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java

@@ -230,6 +230,7 @@ public class FsCourseQuestionBankServiceImpl implements IFsCourseQuestionBankSer
         logs.setQwUserId(param.getQwUserId() != null ? param.getQwUserId() : null );
         logs.setQuestionJson(JSONObject.toJSONString(param.getQuestions()));
         logs.setCreateTime(new Date());
+        logs.setPeriodId(param.getPeriodId());
 
         if (thisRightCount == param.getQuestions().size()) {
             logs.setIsRight(1);

+ 0 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -393,7 +393,6 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     }
 
     @Override
-    @Transactional
     public R isAddKf(FsUserCourseVideoAddKfUParam param) {
         logger.info("zyp \n【判断添加客服】:{}",param);
         //查询用户

+ 9 - 9
fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java

@@ -299,7 +299,7 @@ public interface FsUserMapper
     @Select("select * from fs_user where union_id=#{unionId}")
     FsUser selectFsUserByUnionId(String unionId);
 
-    List<UserListCountVO> getUserNumber(@Param("userId") Long userId);
+    List<UserListCountVO> getUserNumber(@Param("userId") Long userId, @Param("companyId") Long companyId);
 
     int getRepeatUserNumber(@Param("userId") Long userId);
 
@@ -309,9 +309,9 @@ public interface FsUserMapper
 
     UserDetailsVO getCountRedPacket(@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);
 
-    FsUserSummaryCountVO countUserSummary(@Param("userId") Long userId);
+    FsUserSummaryCountVO countUserSummary(@Param("userId") Long userId, @Param("companyId") Long companyId);
 
-    List<FsUserSummaryCountTagVO> countTag(@Param("userId") Long userId);
+    List<FsUserSummaryCountTagVO> countTag(@Param("userId") Long userId, @Param("companyId") Long companyId);
 
     Map<String, Long> countUserCourse(UserStatisticsCommonParam param);
 
@@ -319,21 +319,21 @@ public interface FsUserMapper
 
     Map<String, Long> countCourseDetails(UserStatisticsCommonParam param);
 
-    List<FsUserRankingVO> countUserRankingByComplete(@Param("userId") Long userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId") String periodId, @Param("videoId") String videoId, @Param("order") String order);
+    List<FsUserRankingVO> countUserRankingByComplete(@Param("userId") Long userId, @Param("companyId") Long companyId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId")String periodId, @Param("videoId")String videoId, @Param("order")String order);
 
-    List<FsUserRankingVO> countUserRankingByRight(@Param("userId") Long userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId") String periodId, @Param("videoId") String videoId, @Param("order") String order);
+    List<FsUserRankingVO> countUserRankingByRight(@Param("userId") Long userId, @Param("companyId") Long companyId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId")String periodId, @Param("videoId")String videoId, @Param("order")String order);
 
-    List<FsCourseRankingVO> countCourseRankingByComplete(@Param("userId") Long userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId") String periodId, @Param("videoId") String videoId, @Param("order") String order);
+    List<FsCourseRankingVO> countCourseRankingByComplete(@Param("userId") Long userId, @Param("companyId") Long companyId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId")String periodId, @Param("videoId")String videoId, @Param("order")String order);
 
-    List<FsCourseRankingVO> countCourseRankingByRight(@Param("userId") Long userId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId") String periodId, @Param("videoId") String videoId, @Param("order") String order);
+    List<FsCourseRankingVO> countCourseRankingByRight(@Param("userId") Long userId, @Param("companyId") Long companyId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("periodId")String periodId, @Param("videoId")String videoId, @Param("order")String order);
 
     Map<String, Object> countUserRedPacket(UserStatisticsCommonParam param);
 
     List<FsCourseAnalysisCountVO> courseAnalysisCourseCount(CourseAnalysisParam param);
 
-    CompanyUserSummaryCountVO companyUserCount(@Param("companyUserId") String companyUserId);
+    CompanyUserSummaryCountVO companyUserCount(@Param("companyUserId")String companyUserId, @Param("companyId") Long companyId);
 
-    CompanyUserSummaryCountVO newUserRedPacketCount(@Param("companyUserId") String companyUserId);
+    CompanyUserSummaryCountVO newUserRedPacketCount(@Param("companyUserId")String companyUserId, @Param("companyId") Long companyId);
 
 
     @Select("select * from fs_user where course_ma_open_id=#{openId}")

+ 55 - 9
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -700,7 +700,14 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public UserListPageVO getUserNumber(Long userId) {
-        List<UserListCountVO> list = fsUserMapper.getUserNumber(userId);
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+        if (companyUser != null && companyUser.isAdmin()){
+            userId = 0L;
+            companyId = companyUser.getCompanyId();
+        }
+        List<UserListCountVO> list = fsUserMapper.getUserNumber(userId, companyId);
         Map<String, Integer> map = list.stream()
                 .collect(Collectors.toMap(UserListCountVO::getStatus, UserListCountVO::getNum, (v1, v2) -> v1));
         UserListPageVO pageVO = new UserListPageVO();
@@ -744,8 +751,15 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public FsUserSummaryCountVO userSummaryCount(Long userId) {
-        FsUserSummaryCountVO fsUserSummaryCountVO = fsUserMapper.countUserSummary(userId);
-        List<FsUserSummaryCountTagVO> countTagList = fsUserMapper.countTag(userId);
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+        if (companyUser != null && companyUser.isAdmin()){
+            userId = 0L;
+            companyId = companyUser.getCompanyId();
+        }
+        FsUserSummaryCountVO fsUserSummaryCountVO = fsUserMapper.countUserSummary(userId, companyId);
+        List<FsUserSummaryCountTagVO> countTagList = fsUserMapper.countTag(userId, companyId);
         fsUserSummaryCountVO.setTagList(countTagList);
         return fsUserSummaryCountVO;
     }
@@ -759,6 +773,11 @@ public class FsUserServiceImpl implements IFsUserService
     public FsUserStatisticsVO userStatisticsDetails(UserStatisticsCommonParam param) {
         FsUserStatisticsVO userStatisticsVO = getUserStatistics(param);
 
+        // 判断是否是管理员
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param.getUserId());
+        if (companyUser != null && companyUser.isAdmin()){
+            param.setUserId(0L);
+        }
         //统计课程数据详情,在查询统计详情的时候需要显示
         Map<String, Long> courseDetailsMap = fsUserMapper.countCourseDetails(param);
         if(courseDetailsMap != null && courseDetailsMap.get("courseNum") != null && courseDetailsMap.get("videoNum") != null && courseDetailsMap.get("courseUserNum") != null){
@@ -772,25 +791,39 @@ public class FsUserServiceImpl implements IFsUserService
     @Override
     public List<FsUserRankingVO> userRanking(Long userId, String startTime, String endTime, String periodId, String videoId, String order, Integer type) {
         List<FsUserRankingVO> listVO = Collections.emptyList();
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+        if (companyUser != null && companyUser.isAdmin()){
+            userId = 0L;
+            companyId = companyUser.getCompanyId();
+        }
         if(type == 1){
             //按完播率
-            listVO = fsUserMapper.countUserRankingByComplete(userId, startTime, endTime, periodId, videoId, order);
+            listVO = fsUserMapper.countUserRankingByComplete(userId, companyId, startTime, endTime, periodId, videoId, order);
         }
         if(type == 2){
             //按正确率
-            listVO = fsUserMapper.countUserRankingByRight(userId, startTime, endTime, periodId, videoId, order);
+            listVO = fsUserMapper.countUserRankingByRight(userId, companyId, startTime, endTime, periodId, videoId, order);
         }
         return listVO;
     }
 
     @Override
     public List<FsCourseRankingVO> courseRanking(Long userId, String startTime, String endTime, String periodId, String videoId, String order, Integer type) {
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+        if (companyUser != null && companyUser.isAdmin()){
+            userId = 0L;
+            companyId = companyUser.getCompanyId();
+        }
         List<FsCourseRankingVO> list = Collections.emptyList();
         if(type == 1){
-            list = fsUserMapper.countCourseRankingByComplete(userId, startTime, endTime, periodId, videoId, order);
+            list = fsUserMapper.countCourseRankingByComplete(userId, companyId, startTime, endTime, periodId, videoId, order);
         }
         if(type == 2){
-            list = fsUserMapper.countCourseRankingByRight(userId, startTime, endTime, periodId, videoId, order);
+            list = fsUserMapper.countCourseRankingByRight(userId, companyId, startTime, endTime, periodId, videoId, order);
         }
 
         return list;
@@ -862,8 +895,15 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public CompanyUserSummaryCountVO companyUserSummaryCount(Long userId, String companyUserId) {
-        CompanyUserSummaryCountVO companyUserCount = fsUserMapper.companyUserCount(companyUserId);
-        CompanyUserSummaryCountVO newUserRedPacketCount = fsUserMapper.newUserRedPacketCount(companyUserId);
+        // 判断是否是管理员
+        Long companyId = null;
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+        if (companyUser != null && companyUser.isAdmin()){
+            companyUserId = String.valueOf(0);
+            companyId = companyUser.getCompanyId();
+        }
+        CompanyUserSummaryCountVO companyUserCount = fsUserMapper.companyUserCount(companyUserId, companyId);
+        CompanyUserSummaryCountVO newUserRedPacketCount = fsUserMapper.newUserRedPacketCount(companyUserId, companyId);
         CompanyUserSummaryCountVO vo = new CompanyUserSummaryCountVO();
         BeanUtils.copyProperties(companyUserCount, vo);
         vo.setUserRedPacketNum(newUserRedPacketCount.getUserRedPacketNum());
@@ -948,6 +988,12 @@ public class FsUserServiceImpl implements IFsUserService
     private FsUserStatisticsVO getUserStatistics(UserStatisticsCommonParam param) {
         FsUserStatisticsVO fsUserStatisticsVO = new FsUserStatisticsVO();
 
+        // 判断是否是管理员
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(param.getUserId());
+        if (companyUser != null && companyUser.isAdmin()){
+            param.setUserId(0L);
+            param.setCompanyId(companyUser.getCompanyId());
+        }
         // 获取课程统计
         Map<String, Long> couserMap = fsUserMapper.countUserCourse(param);
         if (couserMap != null) {

+ 4 - 0
fs-service/src/main/java/com/fs/sop/domain/QwSop.java

@@ -116,4 +116,8 @@ public class QwSop implements Serializable
     @Excel(name = "开启评论或者弹幕,1-开启评论;2-开启弹幕;3-都关闭")
     private Integer openCommentStatus;
 
+    /**
+     * 是否按照营期 发送官方群发 1是 2否(否的时候按单链发)
+     */
+    private Integer isSampSend;
 }

+ 37 - 4
fs-service/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java

@@ -54,6 +54,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.function.Function;
+import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
 /**
@@ -744,12 +745,44 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
             List<QwSopLogsDoSendListTVO> logsByJsApi = qwSopLogsMapper.getQwSopLogsByJsApiAll(param);
 
 
+//            // 优先返回 sendType == 8 的第一条记录
+//            List<QwSopLogsDoSendListTVO> result = logsByJsApi.stream()
+//                    .filter(log -> log.getSendType() == 8)
+//                    .findFirst()
+//                    .map(Collections::singletonList) // 单元素不可变 List
+//                    .orElse(logsByJsApi); // 如果没有匹配项,返回原列表
             // 优先返回 sendType == 8 的第一条记录
             List<QwSopLogsDoSendListTVO> result = logsByJsApi.stream()
-                    .filter(log -> log.getSendType() == 8)
-                    .findFirst()
-                    .map(Collections::singletonList) // 单元素不可变 List
-                    .orElse(logsByJsApi); // 如果没有匹配项,返回原列表
+                    .collect(Collector.of(
+                            () -> new Object() {
+                                QwSopLogsDoSendListTVO type8 = null;
+                                List<QwSopLogsDoSendListTVO> type9List = new ArrayList<>();
+                                List<QwSopLogsDoSendListTVO> otherList = new ArrayList<>();
+                            },
+                            (acc, log) -> {
+                                if (acc.type8 == null && log.getSendType() == 8) {
+                                    acc.type8 = log;
+                                } else if (acc.type8 == null) {
+                                    if (log.getSendType() == 9) {
+                                        acc.type9List.add(log);
+                                    } else {
+                                        acc.otherList.add(log);
+                                    }
+                                }
+                            },
+                            (acc1, acc2) -> { throw new UnsupportedOperationException(); },
+                            acc -> {
+                                if (acc.type8 != null) {
+                                    return Collections.singletonList(acc.type8);
+                                } else if (!acc.type9List.isEmpty()) {
+                                    List<QwSopLogsDoSendListTVO> combined = new ArrayList<>(acc.type9List.size() + acc.otherList.size());
+                                    combined.addAll(acc.type9List);
+                                    combined.addAll(acc.otherList);
+                                    return combined;
+                                }
+                                return logsByJsApi;
+                            }
+                    ));
 
             // 查询员工信息的id
             QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());

+ 5 - 0
fs-service/src/main/java/com/fs/sop/vo/SopUserLogsVo.java

@@ -40,4 +40,9 @@ public class SopUserLogsVo  {
     private Integer isRegister;
     private String chatId;
 
+    /**
+     * 是否按照营期 发送官方群发 1 按照【营期+插件补发】的形式发  2 按照【营期+官方单链】的形式发
+     */
+    private Integer isSampSend;
+
 }

+ 6 - 3
fs-service/src/main/resources/mapper/course/FsCourseAnswerLogsMapper.xml

@@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="answer"    column="answer"    />
         <result property="questionId"    column="question_id"    />
         <result property="questionJson"    column="question_json"    />
-        <result property="watchLogId"    column="watch_log_id"    />
+        <result property="periodId"    column="period_id"    />
     </resultMap>
 
     <sql id="selectFsCourseAnswerLogsVo">
@@ -54,7 +54,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="courseId != null">course_id,</if>
             <if test="questionJson != null">question_json,</if>
             <if test="watchLogId != null">watch_log_id,</if>
-         </trim>
+            <if test="periodId != null">period_id,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
             <if test="videoId != null">#{videoId},</if>
@@ -66,7 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="courseId != null">#{courseId},</if>
             <if test="questionJson != null">#{questionJson},</if>
             <if test="watchLogId != null">#{watchLogId},</if>
-         </trim>
+            <if test="periodId != null">#{periodId},</if>
+        </trim>
     </insert>
 
     <update id="updateFsCourseAnswerLogs" parameterType="FsCourseAnswerLogs">
@@ -81,6 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>
             <if test="courseId != null">course_id = #{courseId},</if>
             <if test="watchLogId != null">watch_log_id = #{watchLogId},</if>
+            <if test="periodId != null">period_id = #{periodId},</if>
         </trim>
         where log_id = #{logId}
     </update>

+ 9 - 2
fs-service/src/main/resources/mapper/course/FsCourseRedPacketLogMapper.xml

@@ -19,10 +19,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="watchLogId"    column="watch_log_id"    />
         <result property="remark"    column="remark"    />
+        <result property="result"    column="result"    />
+        <result property="periodId"    column="period_id"    />
     </resultMap>
 
     <sql id="selectFsCourseRedPacketLogVo">
-        select log_id,watch_log_id, remark,out_batch_no,status,update_time,course_id, user_id, video_id, company_user_id, company_id, amount, create_time, qw_user_id from fs_course_red_packet_log
+        select log_id,watch_log_id, remark,out_batch_no,status,update_time,course_id, user_id, video_id, company_user_id, company_id, amount, create_time, qw_user_id,period_id from fs_course_red_packet_log
     </sql>
 
     <select id="selectFsCourseRedPacketLogList" parameterType="FsCourseRedPacketLog" resultMap="FsCourseRedPacketLogResult">
@@ -101,6 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time,</if>
             <if test="watchLogId != null">watch_log_id,</if>
             <if test="remark != null">remark,</if>
+            <if test="result != null">result,</if>
+            <if test="periodId != null">period_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="courseId != null">#{courseId},</if>
@@ -116,7 +120,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">#{updateTime},</if>
             <if test="watchLogId != null">#{watchLogId},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+            <if test="periodId != null">#{periodId},</if>
+            <if test="result != null">#{result},</if>
+        </trim>
     </insert>
 
     <update id="updateFsCourseRedPacketLog" parameterType="FsCourseRedPacketLog">
@@ -134,6 +140,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="status != null">status = #{status},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="watchLogId != null">watch_log_id = #{watchLogId},</if>
+            <if test="periodId != null">period_id = #{periodId},</if>
             <if test="remark != null">remark = #{remark},</if>
         </trim>
         where log_id = #{logId}

+ 397 - 263
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -124,8 +124,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = flog.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
         <where>
-            <if test="companyUserId != null and companyUserId !='' ">
-                AND company_user.user_id = #{companyUserId}
+            <if test="companyUserId != null and companyUserId != 0 ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId == 0 ">
+                and fs_user.company_id = #{companyId}
             </if>
             <if test="periodId != null and periodId != ''">
                 AND flog.period_id =  #{periodId}
@@ -163,8 +166,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
         <where>
-            <if test="companyUserId != null and companyUserId !='' ">
-                AND company_user.user_id = #{companyUserId}
+            <if test="companyUserId != null and companyUserId != 0 ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId == 0 ">
+                and fs_user.company_id = #{companyId}
             </if>
             <if test="periodId != null and periodId != ''">
                 AND fs_course_answer_logs.period_id =  #{periodId}
@@ -579,9 +585,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_user
         LEFT JOIN fs_user_company_user ON fs_user_company_user.user_id = fs_user.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user_company_user.company_user_id
-        WHERE
-        (company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        and fs_user.is_del = 0
+        WHERE fs_user.is_del = 0
+        <if test="userId != null and userId != 0 ">
+            and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+        </if>
+        <if test="companyId != null ">
+            and fs_user.company_id = #{companyId}
+        </if>
         GROUP BY
         fs_user.`status`
     </select>
@@ -601,8 +611,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getCountWatchCourse" resultType="com.fs.store.vo.h5.UserDetailsVO">
         SELECT
-        ifnull( complete_watch_count, 0 ) AS completeWatchCount ,
-        ifnull( watch_times, 0 ) AS watchTimes,
+        <if test="dateTag == null or dateTag =='' ">
+            ifnull( sum(complete_watch_count), 0 ) AS completeWatchCount ,
+            ifnull( sum(watch_times), 0 ) AS watchTimes,
+        </if>
+        <if test="dateTag != null and dateTag !='' ">
+            ifnull( complete_watch_count, 0 ) AS completeWatchCount ,
+            ifnull( watch_times, 0 ) AS watchTimes,
+        </if>
         fs_user.user_id
         FROM
         fs_user_course_count
@@ -625,11 +641,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     </when>
                 </choose>
             </if>
+            and fs_user.user_id = #{fsUserId}
         </where>
         GROUP BY
         fs_user.user_id
-        HAVING
-        fs_user.user_id = #{fsUserId}
     </select>
 
     <select id="getCountAnswer" resultType="com.fs.store.vo.h5.UserDetailsVO">
@@ -641,28 +656,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_answer_logs
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        (company_user.user_id = #{userId} or company_user.parent_id = #{userId} )
-        <if test="dateTag != null and dateTag !='' ">
-            <choose>
-                <when test = "dateTag == '今天'">
-                    and to_days(fs_course_answer_logs.create_time) = to_days(now())
-                </when>
-                <when test = "dateTag == '昨天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_answer_logs.create_time &lt; CURDATE()
-                </when>
-                <when test = "dateTag == '前天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_answer_logs.create_time &lt; CURDATE() - INTERVAL 1 DAY
-                </when>
-                <when test = "dateTag == '近七天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 7 DAY
-                </when>
-            </choose>
-        </if>
+        <where>
+
+            <if test="dateTag != null and dateTag !='' ">
+                <choose>
+                    <when test = "dateTag == '今天'">
+                        and to_days(fs_course_answer_logs.create_time) = to_days(now())
+                    </when>
+                    <when test = "dateTag == '昨天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_answer_logs.create_time &lt; CURDATE()
+                    </when>
+                    <when test = "dateTag == '前天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_answer_logs.create_time &lt; CURDATE() - INTERVAL 1 DAY
+                    </when>
+                    <when test = "dateTag == '近七天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 7 DAY
+                    </when>
+                </choose>
+            </if>
+            and fs_user.user_id = #{fsUserId}
+        </where>
         GROUP BY
         fs_user.user_id
-        HAVING
-        fs_user.user_id = #{fsUserId}
         ) AS answerTime,
         (
         SELECT
@@ -671,29 +686,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_answer_logs
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        (company_user.user_id = #{userId} or company_user.parent_id = #{userId} )
-        AND fs_course_answer_logs.is_right = 1
-        <if test="dateTag != null and dateTag !='' ">
-            <choose>
-                <when test = "dateTag == '今天'">
-                    and to_days(fs_course_answer_logs.create_time) = to_days(now())
-                </when>
-                <when test = "dateTag == '昨天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_answer_logs.create_time &lt; CURDATE()
-                </when>
-                <when test = "dateTag == '前天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_answer_logs.create_time &lt; CURDATE() - INTERVAL 1 DAY
-                </when>
-                <when test = "dateTag == '近七天'">
-                    and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 7 DAY
-                </when>
-            </choose>
-        </if>
+        <where>
+            fs_course_answer_logs.is_right = 1
+            <if test="dateTag != null and dateTag !='' ">
+                <choose>
+                    <when test = "dateTag == '今天'">
+                        and to_days(fs_course_answer_logs.create_time) = to_days(now())
+                    </when>
+                    <when test = "dateTag == '昨天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_answer_logs.create_time &lt; CURDATE()
+                    </when>
+                    <when test = "dateTag == '前天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_answer_logs.create_time &lt; CURDATE() - INTERVAL 1 DAY
+                    </when>
+                    <when test = "dateTag == '近七天'">
+                        and fs_course_answer_logs.create_time &gt;= CURDATE() - INTERVAL 7 DAY
+                    </when>
+                </choose>
+            </if>
+            and fs_user.user_id = #{fsUserId}
+        </where>
         GROUP BY
         fs_user.user_id
-        HAVING
-        fs_user.user_id = #{fsUserId}
         ) AS answerRightTime;
     </select>
 
@@ -706,44 +720,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_red_packet_log
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_red_packet_log.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        (company_user.user_id = #{userId} or company_user.parent_id = #{userId} )
-        and fs_course_red_packet_log.status = 1
-        <if test="dateTag != null and dateTag !='' ">
-            <choose>
-                <when test = "dateTag == '今天'">
-                    and to_days(fs_course_red_packet_log.create_time) = to_days(now())
-                </when>
-                <when test = "dateTag == '昨天'">
-                    and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_red_packet_log.create_time &lt; CURDATE()
-                </when>
-                <when test = "dateTag == '前天'">
-                    and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_red_packet_log.create_time &lt; CURDATE() - INTERVAL 1 DAY
-                </when>
-                <when test = "dateTag == '近七天'">
-                    and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 7 DAY
-                </when>
-            </choose>
-        </if>
+        <where>
+            fs_course_red_packet_log.status = 1
+            <if test="dateTag != null and dateTag !='' ">
+                <choose>
+                    <when test = "dateTag == '今天'">
+                        and to_days(fs_course_red_packet_log.create_time) = to_days(now())
+                    </when>
+                    <when test = "dateTag == '昨天'">
+                        and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 1 DAY AND fs_course_red_packet_log.create_time &lt; CURDATE()
+                    </when>
+                    <when test = "dateTag == '前天'">
+                        and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 2 DAY AND fs_course_red_packet_log.create_time &lt; CURDATE() - INTERVAL 1 DAY
+                    </when>
+                    <when test = "dateTag == '近七天'">
+                        and fs_course_red_packet_log.create_time &gt;= CURDATE() - INTERVAL 7 DAY
+                    </when>
+                </choose>
+            </if>
+            and  fs_user.user_id = #{fsUserId}
+        </where>
         GROUP BY
         fs_user.user_id
-        HAVING
-        fs_user.user_id = #{fsUserId}
     </select>
 
     <select id="countUserSummary" resultType="com.fs.store.vo.h5.FsUserSummaryCountVO">
         SELECT (SELECT count(fs_user.user_id)
         FROM fs_user
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
-        WHERE (
-        company_user.user_id = #{userId}
-        OR company_user.parent_id = #{userId}
-        ) and fs_user.is_del = 0) as userTotal,
+        WHERE fs_user.is_del = 0
+        <if test="userId != null and userId != 0 ">
+            and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+        </if>
+        <if test="companyId != null ">
+            and fs_user.company_id = #{companyId}
+        </if>
+        ) as userTotal,
         (SELECT count(fs_user.user_id)
         FROM fs_user
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
-        WHERE (company_user.user_id = #{userId} OR company_user.parent_id = #{userId})
-        and fs_user.is_del = 0
+        WHERE fs_user.is_del = 0
+        <if test="userId != null and userId != 0 ">
+            and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+        </if>
+        <if test="companyId != null ">
+            and fs_user.company_id = #{companyId}
+        </if>
         AND to_days(fs_user.create_time) = to_days(now())) as todayNewUser
     </select>
 
@@ -756,7 +778,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = company_tag_user.user_id
         LEFT JOIN company_tag ON FIND_IN_SET( company_tag.tag_id, company_tag_user.tag_ids ) > 0
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
-        where (company_user.user_id = #{userId} or company_user.parent_id = #{userId} ) and company_tag.tag_id is not null
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="companyId != null ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            and company_tag.tag_id is not null
+        </where>
         GROUP BY
         company_tag.tag_id
     </select>
@@ -771,25 +801,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
         LEFT JOIN fs_user_course_period_days fcpd ON FIND_IN_SET(fcpd.period_id, fcc.course_ids) > 0
-        WHERE
-        ( company_user.user_id = #{userId}  OR company_user.parent_id = #{userId}  )
-        <if test="startTime != null and startTime !='' ">
-            and fcc.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            and fcc.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fcpd.period_id = #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fcpd.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
-
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                and fcc.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                and fcc.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fcpd.period_id = #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fcpd.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) as courseWatchNum,
         (
         SELECT
@@ -799,25 +834,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
         LEFT JOIN fs_user_course_period_days fcpd ON FIND_IN_SET(fcpd.period_id, fcc.course_ids) > 0
-        WHERE
-        ( company_user.user_id = #{userId}  OR company_user.parent_id = #{userId}  )
-        AND fcc.complete_watch_count > 0
-        <if test="startTime != null and startTime !='' ">
-            and fcc.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            and fcc.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fcpd.period_id = #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fcpd.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            AND fcc.complete_watch_count > 0
+            <if test="startTime != null and startTime !='' ">
+                and fcc.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                and fcc.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fcpd.period_id = #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fcpd.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) as courseCompleteNum
     </select>
 
@@ -830,24 +871,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_answer_logs
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        <if test="startTime != null and startTime !='' ">
-            AND fs_course_answer_logs.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fs_course_answer_logs.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fs_course_answer_logs.period_id = #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fs_course_answer_logs.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND fs_course_answer_logs.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fs_course_answer_logs.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fs_course_answer_logs.period_id = #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fs_course_answer_logs.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) AS answerNum,
         (
         SELECT
@@ -856,25 +903,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_answer_logs
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        AND fs_course_answer_logs.is_right = 1
-        <if test="startTime != null and startTime !='' ">
-            AND fs_course_answer_logs.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fs_course_answer_logs.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fs_course_answer_logs.period_id = #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fs_course_answer_logs.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            AND fs_course_answer_logs.is_right = 1
+            <if test="startTime != null and startTime !='' ">
+                AND fs_course_answer_logs.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fs_course_answer_logs.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fs_course_answer_logs.period_id = #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fs_course_answer_logs.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) AS answerRightNum
     </select>
 
@@ -888,6 +941,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         WHERE 1=1
         AND FIND_IN_SET(#{companyId}, fpd.company_id)
+        <if test="userId != null and userId != 0 ">
+            AND fs_user.company_user_id = #{userId}
+        </if>
+        <if test="userId != null and userId == 0 ">
+            and fs_user.company_id = #{companyId}
+        </if>
         <if test="periodId != null and periodId != ''">
             AND fcpd.period_id =  #{periodId}
         </if>
@@ -904,6 +963,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         WHERE 1=1
         AND FIND_IN_SET(#{companyId}, fpd.company_id)
+        <if test="userId != null and userId != 0 ">
+            AND fs_user.company_user_id = #{userId}
+        </if>
+        <if test="userId != null and userId == 0 ">
+            and fs_user.company_id = #{companyId}
+        </if>
         <if test="periodId != null and periodId != ''">
             AND fcpd.period_id =  #{periodId}
         </if>
@@ -929,6 +994,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="companyUserId != null and companyUserId != ''">
             AND fs_user.company_user_id = #{companyUserId}
         </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                AND fs_user.company_user_id = #{userId}
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+        </where>
         ) as courseUserNum
     </select>
 
@@ -943,20 +1016,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
         LEFT JOIN fs_user_course_period_days fcpd ON FIND_IN_SET( fcpd.period_id, fcc.course_ids ) > 0
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        <if test="startTime != null and startTime !='' ">
-            AND fcc.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fcc.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fcpd.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fcpd.video_id = #{videoId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                AND  ( fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND fcc.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fcc.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fcpd.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fcpd.video_id = #{videoId}
+            </if>
+        </where>
         group by fcc.user_id
         <choose>
             <when test="order != null and order == 'asc'">
@@ -983,20 +1062,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_answer_logs
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        <if test="startTime != null and startTime !='' ">
-            AND fs_course_answer_logs.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fs_course_answer_logs.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fs_course_answer_logs.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fs_course_answer_logs.video_id = #{videoId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                AND  ( fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND fs_course_answer_logs.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fs_course_answer_logs.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fs_course_answer_logs.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fs_course_answer_logs.video_id = #{videoId}
+            </if>
+        </where>
         group by fs_user.user_id
         <choose>
             <when test="order != null and order == 'asc'">
@@ -1028,20 +1113,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
         LEFT JOIN fs_user_course_period_days fcpd ON FIND_IN_SET( fcpd.period_id, fcc.course_ids ) > 0
         LEFT JOIN fs_user_course_video fcv ON fcv.video_id = fcpd.video_id
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        <if test="startTime != null and startTime !='' ">
-            AND fcc.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fcc.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fcpd.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fcpd.video_id = #{videoId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                AND ( fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND fcc.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fcc.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fcpd.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fcpd.video_id = #{videoId}
+            </if>
+        </where>
         GROUP BY
         fcpd.video_id
         <choose>
@@ -1074,20 +1165,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
         LEFT JOIN fs_user_course_video fcv ON fcv.video_id = fs_course_answer_logs.video_id
-        WHERE
-        ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
-        <if test="startTime != null and startTime !='' ">
-            AND fs_course_answer_logs.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND fs_course_answer_logs.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND fs_course_answer_logs.period_id = #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fs_course_answer_logs.video_id = #{videoId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                AND ( fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND fs_course_answer_logs.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND fs_course_answer_logs.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fs_course_answer_logs.period_id = #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fs_course_answer_logs.video_id = #{videoId}
+            </if>
+        </where>
         GROUP BY
         fs_course_answer_logs.video_id
         <choose>
@@ -1113,24 +1210,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_red_packet_log flog
         LEFT JOIN fs_user ON fs_user.user_id = flog.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        ( company_user.user_id = #{userId}  OR company_user.parent_id = #{userId}  )
-        <if test="startTime != null and startTime !='' ">
-            AND flog.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND flog.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND flog.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND flog.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND flog.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND flog.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND flog.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND flog.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) AS redPacketNum,
         (
         SELECT
@@ -1139,24 +1242,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_course_red_packet_log flog
         LEFT JOIN fs_user ON fs_user.user_id = flog.user_id
         LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-        WHERE
-        ( company_user.user_id = #{userId}  OR company_user.parent_id = #{userId}  )
-        <if test="startTime != null and startTime !='' ">
-            AND flog.create_time &gt;= #{startTime}
-        </if>
-        <if test="endTime != null and endTime != ''">
-            AND flog.create_time &lt;= #{endTime}
-        </if>
-        <if test="periodId != null and periodId != ''">
-            AND flog.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND flog.video_id = #{videoId}
-        </if>
-        -- 单独通过销售id查询
-        <if test="companyUserId != null and companyUserId != ''">
-            AND company_user.user_id = #{companyUserId}
-        </if>
+        <where>
+            <if test="userId != null and userId != 0 ">
+                and (fs_user.company_user_id = #{userId} OR company_user.parent_id = #{userId} )
+            </if>
+            <if test="userId != null and userId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="startTime != null and startTime !='' ">
+                AND flog.create_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND flog.create_time &lt;= #{endTime}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND flog.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND flog.video_id = #{videoId}
+            </if>
+            -- 单独通过销售id查询
+            <if test="companyUserId != null and companyUserId != ''">
+                AND company_user.user_id = #{companyUserId}
+            </if>
+        </where>
         ) AS redPacketAmount
     </select>
 
@@ -1178,14 +1287,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
         LEFT JOIN fs_user_course_period_days fcpd ON FIND_IN_SET( fcpd.period_id, fcc.course_ids ) > 0
-        WHERE
-        company_user.user_id = #{companyUserId}
-        <if test="periodId != null and periodId != ''">
-            AND fcpd.period_id =  #{periodId}
-        </if>
-        <if test="videoId != null and videoId != ''">
-            AND fcpd.video_id = #{videoId}
-        </if>
+        <where>
+            <if test="companyUserId != null and companyUserId != 0 ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId == 0 ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            <if test="periodId != null and periodId != ''">
+                AND fcpd.period_id =  #{periodId}
+            </if>
+            <if test="videoId != null and videoId != ''">
+                AND fcpd.video_id = #{videoId}
+            </if>
+        </where>
         GROUP BY
         fcpd.video_id
     </select>
@@ -1194,7 +1309,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT
         (
         SELECT count( fs_user.user_id ) FROM fs_user LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
-        WHERE company_user.user_id = #{companyUserId}
+        <where>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId != '0' ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId == '0' ">
+                and fs_user.company_id = #{companyId}
+            </if>
+        </where>
         ) AS userTotal,
         (
         SELECT
@@ -1202,11 +1324,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
         fs_user
         LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
-        WHERE
-        company_user.user_id = #{companyUserId}
-        and fs_user.is_del = 0
-        AND to_days( fs_user.create_time ) = to_days(
-        now())
+        <where>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId != '0' ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId == '0' ">
+                and fs_user.company_id = #{companyId}
+            </if>
+            and fs_user.is_del = 0
+            AND to_days( fs_user.create_time ) = to_days(
+            now())
+        </where>
         ) AS todayNewUser
     </select>
 
@@ -1217,7 +1345,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
         fs_course_red_packet_log flog
         LEFT JOIN fs_user ON fs_user.user_id = flog.user_id
-        WHERE
-        fs_user.company_user_id = #{companyUserId}
+        <where>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId != '0' ">
+                AND fs_user.company_user_id = #{companyUserId}
+            </if>
+            <if test="companyUserId != null and companyUserId != '' and companyUserId == '0' ">
+                and fs_user.company_id = #{companyId}
+            </if>
+        </where>
     </select>
 </mapper>

+ 5 - 2
fs-service/src/main/resources/mapper/sop/QwSopLogsMapper.xml

@@ -561,7 +561,7 @@
         qw_userid, external_user_id,external_id, external_user_name, log_type,
         content_json, send_status, send_time, real_send_time, send_type,
         company_id, receiving_status, msg_id, sop_id, remark,
-        corp_id, customer_id, fs_user_id, expiration_time
+        corp_id, customer_id, fs_user_id, expiration_time,sort,user_logs_id,take_records
         )
         VALUES
         <foreach collection="qwSopLogs" item="log" separator=",">
@@ -584,7 +584,10 @@
             #{log.corpId},
             #{log.customerId},
             #{log.fsUserId},
-            #{log.expirationTime}
+            #{log.expirationTime},
+            #{log.sort},
+            #{log.userLogsId},
+            #{log.takeRecords}
             )
         </foreach>
     </insert>

+ 3 - 0
fs-service/src/main/resources/mapper/sop/QwSopMapper.xml

@@ -33,6 +33,7 @@
         <result property="courseDay"    column="course_day"    />
         <result property="chatId"    column="chat_id"    />
         <result property="openCommentStatus"    column="open_comment_status"    />
+        <result property="isSampSend"    column="is_samp_send"    />
     </resultMap>
 
     <sql id="selectQwSopVo">
@@ -429,6 +430,8 @@
             <if test="data.isRating != null">is_rating = #{data.isRating},</if>
             <if test="data.courseDay != null">course_day = #{data.courseDay},</if>
             <if test="data.openCommentStatus != null">open_comment_status = #{data.openCommentStatus},</if>
+            <if test="data.chatId != null">chat_id = #{data.chatId},</if>
+            <if test="data.isSampSend != null">is_samp_send = #{data.isSampSend},</if>
         </trim>
         where id = #{data.id}
     </update>

+ 2 - 1
fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml

@@ -199,7 +199,8 @@
                b.is_fixed,
                b.is_register,
                b.chat_id,
-               b.filter_mode
+               b.filter_mode,
+               b.is_samp_send
         from sop_user_logs a
                  inner join qw_sop b on a.sop_id = b.id
         where a.start_time &lt;= Now()

+ 14 - 4
fs-service/src/main/resources/mapper/store/FsUserCourseCountMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.store.mapper.FsUserCourseCountMapper">
 
     <resultMap type="FsUserCourseCount" id="FsUserCourseCountResult">
@@ -80,7 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="completeWatchCount != null">complete_watch_count,</if>
             <if test="watchTimes != null">watch_times,</if>
             <if test="createDate != null">create_date,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
             <if test="userId != null">#{userId},</if>
@@ -101,7 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="completeWatchCount != null">#{completeWatchCount},</if>
             <if test="watchTimes != null">#{watchTimes},</if>
             <if test="createDate != null">#{createDate},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateFsUserCourseCount" parameterType="FsUserCourseCount">
@@ -231,6 +231,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         on duplicate key update
         <trim suffixOverrides=",">
+            <if test="watchCourseCount != null">watch_course_count = #{watchCourseCount},</if>
+            <if test="missCourseCount != null">miss_course_count = #{missCourseCount},</if>
+            <if test="missCourseStatus != null">miss_course_status = #{missCourseStatus},</if>
+            <if test="courseIds != null">course_ids = #{courseIds},</if>
+            <if test="partCourseCount != null">part_course_count = #{partCourseCount},</if>
+            <if test="lastWatchDate != null">last_watch_date = #{lastWatchDate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="completeWatchDate != null">complete_watch_date = #{completeWatchDate},</if>
+            <if test="completeWatchCount != null">complete_watch_count = #{completeWatchCount},</if>
+            <if test="watchTimes != null">watch_times = #{watchTimes},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
         </trim>
     </insert>

+ 1 - 0
fs-user-app/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -40,6 +40,7 @@ public class DataSourceConfig {
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER, masterDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }