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

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_scrm_java

caoliqin 1 місяць тому
батько
коміт
e43561f810
23 змінених файлів з 345 додано та 142 видалено
  1. 1 10
      fs-admin/src/main/java/com/fs/core/config/DataSourceConfig.java
  2. 13 15
      fs-admin/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java
  3. 6 10
      fs-admin/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java
  4. 4 12
      fs-company/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java
  5. 2 6
      fs-company/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java
  6. 5 0
      fs-company/src/main/java/com/fs/qw/QwContactWayController.java
  7. 8 0
      fs-company/src/main/java/com/fs/qw/QwContactWayLogsController.java
  8. 3 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java
  9. 5 0
      fs-service-system/src/main/java/com/fs/qw/domain/QwContactWayLogs.java
  10. 2 0
      fs-service-system/src/main/java/com/fs/qw/mapper/QwUserMapper.java
  11. 18 6
      fs-service-system/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java
  12. 3 0
      fs-service-system/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java
  13. 4 0
      fs-service-system/src/main/java/com/fs/qw/service/IQwContactWayLogsService.java
  14. 8 3
      fs-service-system/src/main/java/com/fs/qw/service/IQwWatchLogService.java
  15. 19 0
      fs-service-system/src/main/java/com/fs/qw/service/impl/QwContactWayLogsServiceImpl.java
  16. 1 1
      fs-service-system/src/main/java/com/fs/qw/service/impl/QwContactWayServiceImpl.java
  17. 125 58
      fs-service-system/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java
  18. 5 0
      fs-service-system/src/main/java/com/fs/qw/vo/QwWatchLogAllStatisticsListVO.java
  19. 1 0
      fs-service-system/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java
  20. 3 0
      fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml
  21. 18 11
      fs-service-system/src/main/resources/mapper/qw/QwContactWayLogsMapper.xml
  22. 4 0
      fs-service-system/src/main/resources/mapper/qw/QwUserMapper.xml
  23. 87 10
      fs-service-system/src/main/resources/mapper/qw/QwWatchLogMapper.xml

+ 1 - 10
fs-admin/src/main/java/com/fs/core/config/DataSourceConfig.java

@@ -34,23 +34,14 @@ public class DataSourceConfig {
         return new DruidDataSource();
     }
 
-    @Bean
-    @ConfigurationProperties(prefix = "spring.datasource.mysql.druid.slave")
-    public DataSource slaveDataSource() {
-        return new DruidDataSource();
-    }
-
-
 
     @Bean
     @Primary
     public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
-                                        @Qualifier("sopDataSource") DataSource sopDataSource,
-                                        @Qualifier("slaveDataSource") DataSource slaveDataSource) {
+                                        @Qualifier("sopDataSource") DataSource sopDataSource) {
         Map<Object, Object> targetDataSources = new HashMap<>();
         targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
 
-        targetDataSources.put(DataSourceType.SLAVE.name(), slaveDataSource);
         targetDataSources.put(DataSourceType.SOP.name(), sopDataSource);
         return new DynamicDataSource(masterDataSource, targetDataSources);
     }

+ 13 - 15
fs-admin/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.exception.CustomException;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.core.security.LoginUser;
@@ -26,6 +27,7 @@ import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import com.fs.qw.vo.QwWatchLogStatisticsListVO;
 import com.fs.sop.mapper.SopUserLogsMapper;
 import com.github.pagehelper.PageInfo;
+import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -73,7 +75,7 @@ public class FsCourseWatchLogController extends BaseController
     public TableDataInfo statisticsList(FsCourseWatchLogStatisticsListParam param)
     {
         if(param.getCompanyId() == null){
-            throw new IllegalArgumentException("必须选择公司!");
+            throw new CustomException("必须选择公司!");
         }
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
@@ -90,51 +92,47 @@ public class FsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(param.getPageNum() == null){
+            param.setPageNum(1L);
+        }
+        if(param.getPageSize() == null){
+            param.setPageSize(10L);
+        }
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
 
 
     @GetMapping("/qwWatchLogAllStatisticsList")
     public TableDataInfo qwWatchLogAllStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogAllStatisticsListVO> list = qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogAllStatisticsList")
     public TableDataInfo myQwWatchLogAllStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
 
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogAllStatisticsListVO> list = qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
     }
     @GetMapping("/watchLogStatistics")
     public TableDataInfo watchLogStatistics(FsCourseOverParam param)

+ 6 - 10
fs-admin/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.exception.CustomException;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.core.security.LoginUser;
@@ -65,7 +66,6 @@ public class QwFsCourseWatchLogController extends BaseController
 //            }
 //        }
         startPage();
-
         List<FsCourseWatchLogListVO> list = fsCourseWatchLogService.selectFsCourseWatchLogListVO(param);
         return getDataTable(list);
     }
@@ -86,26 +86,24 @@ public class QwFsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
-        return getDataTable(list);
+        if(param.getCompanyId() == null){
+            throw new CustomException("必须选择公司!");
+        }
+        return qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
 
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
     }
 
 
@@ -113,8 +111,6 @@ public class QwFsCourseWatchLogController extends BaseController
     public TableDataInfo qwWatchLogAllStatisticsList(QwWatchLogStatisticsListParam param)
     {
         startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }

+ 4 - 12
fs-company/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java

@@ -92,54 +92,46 @@ public class FsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
 
 
     @GetMapping("/qwWatchLogAllStatisticsList")
     public TableDataInfo qwWatchLogAllStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogAllStatisticsListVO> list = qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogAllStatisticsList")
     public TableDataInfo myQwWatchLogAllStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogAllStatisticsListVO> list = qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogAllStatisticsListVONew(param);
     }
     @GetMapping("/watchLogStatistics")
     public TableDataInfo watchLogStatistics(FsCourseOverParam param)

+ 2 - 6
fs-company/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java

@@ -88,27 +88,23 @@ public class QwFsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVO(param);
     }
 
 

+ 5 - 0
fs-company/src/main/java/com/fs/qw/QwContactWayController.java

@@ -152,4 +152,9 @@ public class QwContactWayController extends BaseController
         List<OptionsVO> list = qwInformationService.selectQwInformationListOptionsVO();
         return R.ok().put("data",list);
     }
+    @GetMapping("/qwWayLogsList")
+    public R qwWayLogsList(){
+        List<OptionsVO> list = qwInformationService.selectQwInformationListOptionsVO();
+        return R.ok().put("data",list);
+    }
 }

+ 8 - 0
fs-company/src/main/java/com/fs/qw/QwContactWayLogsController.java

@@ -3,6 +3,7 @@ package com.fs.qw;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
@@ -94,4 +95,11 @@ public class QwContactWayLogsController extends BaseController
     {
         return toAjax(qwContactWayLogsService.deleteQwContactWayLogsByIds(ids));
     }
+    /**
+     * 删除联系我日志
+     */
+	@GetMapping("/getCompanyUserList")
+    public R getCompanyUserList(Long id){
+        return R.ok().put("data", qwContactWayLogsService.getCompanyUserList(id));
+    }
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -7,6 +7,7 @@ import com.fs.company.vo.CompanyQwUserByIdsVo;
 import com.fs.company.vo.CompanyUserQwListVO;
 import com.fs.company.vo.CompanyUserVO;
 import com.fs.company.vo.DocCompanyUserVO;
+import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.vo.CompanyUserQwVO;
 import com.fs.qw.vo.QwUserVO;
 import com.fs.wxUser.domain.CompanyWxUser;
@@ -270,6 +271,8 @@ public interface CompanyUserMapper
     @Select("select domain from company_user where user_id = #{userId}")
     String selectDomainByUserId(Long userId);
 
+    Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param);
+
     @Select("select * from company_user where ma_open_id = #{maOpenId}")
     CompanyUser getCompanyUserByOpenId(String openId);
 

+ 5 - 0
fs-service-system/src/main/java/com/fs/qw/domain/QwContactWayLogs.java

@@ -48,4 +48,9 @@ public class QwContactWayLogs extends BaseEntity
 
     private String corpId;
     private Long informationId;
+    private String name;
+    private String nickName;
+    private String avatar;
+    private Integer gender;
+    private Integer isRepeat;
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/qw/mapper/QwUserMapper.java

@@ -356,4 +356,6 @@ public interface QwUserMapper extends BaseMapper<QwUser>
             "</foreach> " +
             "</script>")
     public List<QwUserVO> getQwUserByIdsNoCropId(@Param("qwUserIds") List<String> qwUserIds);
+
+    List<QwUser> getCompanyUserListByWxIdAndCorpId(@Param("ids") List<String> ids, @Param("corpId") String corpId);
 }

+ 18 - 6
fs-service-system/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java

@@ -95,6 +95,7 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "    qec.qw_user_id, DATE(qec.create_time) \n" +
             "ORDER BY\n" +
             "    DATE(qec.create_time) "+
+            "limit ${(pageNum-1)*pageSize},${pageSize}"+
             "</script>"})
     List<QwWatchLogStatisticsListVO> selectQwExtCountByDayAnd(QwWatchLogStatisticsListParam param);
     @Select("select \n" +
@@ -106,15 +107,23 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
     QwWatchLogStatisticsListVO selectQwWatchLogByQwUserId(@Param("id")Long id,@Param("createTime") Date createTime);
 
     List<QwWatchLogStatisticsListVO> selectQwWatchLogByCompanyUserId(
-            @Param("companyId") Long companyId,
-            @Param("companyUserId") Long companyUserId,
+                                            @Param("companyUserIds") List<Long> companyUserIds,
                                                                      @Param("sTime") Date sTime,
                                                                      @Param("dTime") Date dTime,
                                                                      @Param("project") Long project,
                                                                      @Param("courseId") Long courseId,
-                                                                     @Param("videoId") Long videoId
+                                                                     @Param("videoId") Long videoId,
+                                            @Param("pageNum") Long pageNum,
+                                            @Param("pageSize") Long pageSize
+    );
+    Long selectQwWatchLogByCompanyUserIdCount(
+            @Param("companyUserIds") List<Long> companyUserIds,
+            @Param("sTime") Date sTime,
+            @Param("dTime") Date dTime,
+            @Param("project") Long project,
+            @Param("courseId") Long courseId,
+            @Param("videoId") Long videoId
     );
-
 
     @Select("SELECT count(1) from qw_watch_log where ext_id=#{id} and `day`=0 ")
     int selectQwWatchLogIsFirst(Long id);
@@ -189,8 +198,7 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
     QwWatchLogAllStatisticsListVO selectQwWatchLogAllStatisticsListVO(@Param("id")Long id,@Param("createTime") Date createTime);
 
 
-    List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVONew(@Param("companyUserId")Long companyUserId,
-                                                                               @Param("companyId")Long companyId,
+    List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVONew(@Param("companyUserIds") List<Long> userIds,
                                                                                @Param("sDate") Date sDate, @Param("eDate") Date eDate,
                                                                                @Param("project") Long project,
                                                                                @Param("courseId") Long courseId,
@@ -219,4 +227,8 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "    DATE(qec.create_time) "+
             "</script>"})
     List<QwWatchLogAllStatisticsListVO> selectQwExtCountByDayAndLine(QwWatchLogStatisticsListParam param);
+
+    Long selectQwExtCountByDayAndCount(QwWatchLogStatisticsListParam param);
+
+    Long selectQwWatchLogAllStatisticsListVONewCount(List<Long> userIds, Date sTime, Date eTime, Long project, Long courseId, Long videoId);
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java

@@ -20,4 +20,7 @@ public class QwWatchLogStatisticsListParam {
     private Long project;
     private Long courseId;
     private Long videoId;
+
+    private Long pageNum;
+    private Long pageSize;
 }

+ 4 - 0
fs-service-system/src/main/java/com/fs/qw/service/IQwContactWayLogsService.java

@@ -1,6 +1,8 @@
 package com.fs.qw.service;
 
+import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwContactWayLogs;
+import com.fs.qw.domain.QwUser;
 
 import java.util.List;
 
@@ -59,4 +61,6 @@ public interface IQwContactWayLogsService
      * @return 结果
      */
     public int deleteQwContactWayLogsById(Long id);
+
+    List<QwUser> getCompanyUserList(Long id);
 }

+ 8 - 3
fs-service-system/src/main/java/com/fs/qw/service/IQwWatchLogService.java

@@ -1,6 +1,7 @@
 package com.fs.qw.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.common.core.page.TableDataInfo;
 import com.fs.qw.domain.QwWatchLog;
 import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
@@ -63,9 +64,13 @@ public interface IQwWatchLogService extends IService<QwWatchLog>{
      */
     int deleteQwWatchLogById(Long id);
 
-    List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param);
-    List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param);
+    TableDataInfo selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param);
+    TableDataInfo selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param);
+    Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param);
 
     List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVO(QwWatchLogStatisticsListParam param);
-    List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVONew(QwWatchLogStatisticsListParam param);
+    TableDataInfo selectQwWatchLogAllStatisticsListVONew(QwWatchLogStatisticsListParam param);
+
+
+
 }

+ 19 - 0
fs-service-system/src/main/java/com/fs/qw/service/impl/QwContactWayLogsServiceImpl.java

@@ -1,12 +1,20 @@
 package com.fs.qw.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.fs.common.utils.DateUtils;
+import com.fs.company.mapper.CompanyUserMapper;
+import com.fs.his.vo.OptionsVO;
+import com.fs.qw.domain.QwContactWay;
 import com.fs.qw.domain.QwContactWayLogs;
+import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwContactWayLogsMapper;
+import com.fs.qw.mapper.QwContactWayMapper;
+import com.fs.qw.mapper.QwUserMapper;
 import com.fs.qw.service.IQwContactWayLogsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -20,6 +28,10 @@ public class QwContactWayLogsServiceImpl implements IQwContactWayLogsService
 {
     @Autowired
     private QwContactWayLogsMapper qwContactWayLogsMapper;
+    @Autowired
+    private QwContactWayMapper qwContactWayMapper;
+    @Autowired
+    private QwUserMapper qwUserMapper;
 
     /**
      * 查询联系我日志
@@ -93,4 +105,11 @@ public class QwContactWayLogsServiceImpl implements IQwContactWayLogsService
     {
         return qwContactWayLogsMapper.deleteQwContactWayLogsById(id);
     }
+
+    @Override
+    public List<QwUser> getCompanyUserList(Long id) {
+        QwContactWay qwContactWay = qwContactWayMapper.selectQwContactWayById(id);
+        List<String> ids = JSON.parseArray(qwContactWay.getUserIds(), String.class);
+        return qwUserMapper.getCompanyUserListByWxIdAndCorpId(ids, qwContactWay.getCorpId());
+    }
 }

+ 1 - 1
fs-service-system/src/main/java/com/fs/qw/service/impl/QwContactWayServiceImpl.java

@@ -171,7 +171,7 @@ public class QwContactWayServiceImpl implements IQwContactWayService
         QwUpdateContactWayParam qwUpdateContactWayParam = new QwUpdateContactWayParam();
         qwUpdateContactWayParam.setConfig_id(qwContactWay.getConfigId());
         qwUpdateContactWayParam.setUser(users);
-        qwUpdateContactWayParam.setState("way:"+qwContactWay.getCompanyId()+":"+qwContactWay.getId());
+        qwUpdateContactWayParam.setState("way:"+qwContactWay.getCorpId()+":"+qwContactWay.getId());
         qwUpdateContactWayParam.setRemark(qwContactWay.getRemark());
         qwUpdateContactWayParam.setSkip_verify(qwContactWay.getSkipVerify()==1?true:false);
         if (qwContactWay.getIsWelcome()!=null&&qwContactWay.getIsWelcome()==1){

+ 125 - 58
fs-service-system/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java

@@ -2,8 +2,13 @@ package com.fs.qw.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.constant.HttpStatus;
+import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DictUtils;
+import com.fs.company.cache.ICompanyCacheService;
+import com.fs.company.cache.ICompanyUserCacheService;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.domain.FsUserCourse;
@@ -18,11 +23,13 @@ import com.fs.qw.service.IQwWatchLogService;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import com.fs.qw.vo.QwWatchLogStatisticsListVO;
 import com.fs.store.service.cache.IFsUserCourseCacheService;
+import com.github.pagehelper.PageInfo;
 import com.hc.openapi.tool.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 企微看课Service业务层处理
@@ -44,6 +51,12 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
 
     @Autowired
     private IFsUserCourseVideoCacheService fsUserCourseVideoCacheService;
+
+    @Autowired
+    private ICompanyCacheService companyCacheService;
+
+    @Autowired
+    private ICompanyUserCacheService companyUserCacheService;
     /**
      * 查询企微看课
      *
@@ -118,13 +131,18 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
     }
 
     @Override
-    public List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param) {
+    public TableDataInfo selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param) {
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(new ArrayList<>());
+        rspData.setTotal(0L);
 
         Date sTime = param.getSTime();
         Date eTime = param.getETime();
         List<Date> datesBetween = getDatesBetween(sTime, eTime);
         if (datesBetween.size() > 7) {
-            return new ArrayList<>();
+            return rspData;
         }
         if (param.getCompanyUserId()!=null){
             param.setIds(companyUserMapper.selectQwUserIdsByCompany(param.getCompanyUserId()));
@@ -140,46 +158,73 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
             vo.setFirstOver(stat.getFirstOver());
         }
 
-        return vos;
+        Long total = qwWatchLogMapper.selectQwExtCountByDayAndCount(param);
+        rspData.setRows(vos);
+        rspData.setTotal(total);
+        return rspData;
     }
 
     @Override
-    public List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param) {
+    public TableDataInfo selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param) {
         // 获取当前公司下的所有销售
         List<CompanyUser> companyUsers = companyUserMapper.selectCompanyUserByCompanyId(param.getCompanyId());
 
+        List<Long> userIds = companyUsers.stream()
+                .map(CompanyUser::getUserId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
         List<QwWatchLogStatisticsListVO> list = new ArrayList<>();
-        for (CompanyUser companyUser : companyUsers) {
-            // 统计销售下面的所有记录
-            List<QwWatchLogStatisticsListVO> vos = qwWatchLogMapper.selectQwWatchLogByCompanyUserId(companyUser.getCompanyId(),companyUser.getUserId()
-                    , param.getSTime(),param.getETime(),param.getProject(),param.getCourseId(),param.getVideoId());
-            for (QwWatchLogStatisticsListVO item : vos) {
-                item.setCompanyUserName(String.format("%s_%d",companyUser.getUserName(),companyUser.getUserId()));
-                item.setCreateTime(companyUser.getCreateTime());
-                if(ObjectUtils.isNotNull(item.getProject())){
-                    String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
-                    if(StringUtils.isNotBlank(sysCourseProject)){
-                        item.setProjectName(sysCourseProject);
-                    }
+
+        // 统计销售下面的所有记录
+        List<QwWatchLogStatisticsListVO> vos = qwWatchLogMapper
+                .selectQwWatchLogByCompanyUserId(userIds
+                , param.getSTime(),param.getETime(),param.getProject(),param.getCourseId(),param.getVideoId(),param.getPageNum(),param.getPageSize());
+
+        for (QwWatchLogStatisticsListVO item : vos) {
+            Company company = companyCacheService.selectCompanyById(item.getCompanyId());
+            if(ObjectUtils.isNotNull(company)){
+                item.setCompanyUserName(company.getCompanyName());
+                item.setCreateTime(company.getCreateTime());
+            }
+
+            if(ObjectUtils.isNotNull(item.getProject())){
+                String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
+                if(StringUtils.isNotBlank(sysCourseProject)){
+                    item.setProjectName(sysCourseProject);
                 }
-                // 课程名
-                if(ObjectUtils.isNotNull(item.getCourseId())) {
-                    FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
-                    if(ObjectUtils.isNotNull(course)){
-                        item.setCourseName(course.getCourseName());
-                    }
+            }
+            // 课程名
+            if(ObjectUtils.isNotNull(item.getCourseId())) {
+                FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
+                if(ObjectUtils.isNotNull(course)){
+                    item.setCourseName(course.getCourseName());
                 }
-                // 小节名
-                if(ObjectUtils.isNotNull(item.getVideoId())) {
-                    FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
-                    if(ObjectUtils.isNotNull(fsUserCourseVideo)){
-                        item.setVideoName(fsUserCourseVideo.getTitle());
-                    }
+            }
+            // 小节名
+            if(ObjectUtils.isNotNull(item.getVideoId())) {
+                FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
+                if(ObjectUtils.isNotNull(fsUserCourseVideo)){
+                    item.setVideoName(fsUserCourseVideo.getTitle());
                 }
-                list.add(item);
             }
+            list.add(item);
         }
-        return list;
+
+        // 获取总记录数
+        Long total = qwWatchLogMapper
+                .selectQwWatchLogByCompanyUserIdCount(userIds
+                        , param.getSTime(), param.getETime(), param.getProject(), param.getCourseId(), param.getVideoId());
+
+
+
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+
+        return rspData;
     }
 
     @Override
@@ -209,45 +254,67 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
     }
 
     @Override
-    public List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVONew(QwWatchLogStatisticsListParam param) {
+    public TableDataInfo selectQwWatchLogAllStatisticsListVONew(QwWatchLogStatisticsListParam param) {
         // 获取当前公司下的所有销售
         List<CompanyUser> companyUsers = companyUserMapper.selectCompanyUserByCompanyId(param.getCompanyId());
 
         List<QwWatchLogAllStatisticsListVO> list = new ArrayList<>();
 
-        for (CompanyUser companyUser : companyUsers) {
-            List<QwWatchLogAllStatisticsListVO> vos = qwWatchLogMapper
-                    .selectQwWatchLogAllStatisticsListVONew(companyUser.getUserId(),companyUser.getCompanyId(), param.getSTime(), param.getETime(),
-                            param.getProject(),param.getCourseId(),param.getVideoId()
-                            );
-            for (QwWatchLogAllStatisticsListVO item : vos) {
-                if(ObjectUtils.isNotNull(item.getProject())){
-                    String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
-                    if(StringUtils.isNotBlank(sysCourseProject)){
-                        item.setProjectName(sysCourseProject);
-                    }
+        List<Long> userIds = companyUsers.stream().filter(e -> e.getUserId() != null)
+                .map(e -> e.getUserId())
+                .collect(Collectors.toList());
+
+        List<QwWatchLogAllStatisticsListVO> vos = qwWatchLogMapper
+                .selectQwWatchLogAllStatisticsListVONew(userIds, param.getSTime(), param.getETime(),
+                        param.getProject(),param.getCourseId(),param.getVideoId()
+                        );
+        for (QwWatchLogAllStatisticsListVO item : vos) {
+            if(ObjectUtils.isNotNull(item.getProject())){
+                String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
+                if(StringUtils.isNotBlank(sysCourseProject)){
+                    item.setProjectName(sysCourseProject);
                 }
-                // 课程名
-                if(ObjectUtils.isNotNull(item.getCourseId())) {
-                    FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
-                    if(ObjectUtils.isNotNull(course)){
-                        item.setCourseName(course.getCourseName());
-                    }
+            }
+            // 课程名
+            if(ObjectUtils.isNotNull(item.getCourseId())) {
+                FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
+                if(ObjectUtils.isNotNull(course)){
+                    item.setCourseName(course.getCourseName());
                 }
-                // 小节名
-                if(ObjectUtils.isNotNull(item.getVideoId())) {
-                    FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
-                    if(ObjectUtils.isNotNull(fsUserCourseVideo)){
-                        item.setVideoName(fsUserCourseVideo.getTitle());
-                    }
+            }
+            // 小节名
+            if(ObjectUtils.isNotNull(item.getVideoId())) {
+                FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
+                if(ObjectUtils.isNotNull(fsUserCourseVideo)){
+                    item.setVideoName(fsUserCourseVideo.getTitle());
                 }
-                item.setQwUserName(companyUser.getUserName());
-                item.setCreateTime(companyUser.getCreateTime());
-                list.add(item);
             }
+            // 销售名称
+            CompanyUser companyUser = companyUserCacheService.selectCompanyUserById(item.getCompanyUserId());
 
+            item.setQwUserName(companyUser.getUserName());
+            item.setCreateTime(companyUser.getCreateTime());
+            list.add(item);
         }
-        return list;
+
+        Long total = qwWatchLogMapper
+                .selectQwWatchLogAllStatisticsListVONewCount(userIds, param.getSTime(), param.getETime(),
+                        param.getProject(),param.getCourseId(),param.getVideoId()
+                );
+
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+
+        return rspData;
+    }
+
+    @Override
+    public Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param) {
+
+        return companyUserMapper.selectQwWatchLogStatisticsListVONewCount(param);
     }
 
     public List<Date> getDatesBetween(Date sTime, Date eTime) {

+ 5 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwWatchLogAllStatisticsListVO.java

@@ -95,4 +95,9 @@ public class QwWatchLogAllStatisticsListVO {
      */
     private Long videoId;
     private String videoName;
+
+    private Long companyId;
+
+    private Long companyUserId;
+
 }

+ 1 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java

@@ -10,6 +10,7 @@ public class QwWatchLogStatisticsListVO {
     private Long id;
     private String qwUserName;
     private String companyUserName;
+    private Long companyId;
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createTime;
     /**

+ 3 - 0
fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -435,5 +435,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             del_flag = 0
           AND (company_user.user_id = #{userId} or company_user.parent_id = #{userId})
     </select>
+    <select id="selectQwWatchLogStatisticsListVONewCount" resultType="java.lang.Long">
+
+    </select>
 
 </mapper>

+ 18 - 11
fs-service-system/src/main/resources/mapper/qw/QwContactWayLogsMapper.xml

@@ -22,18 +22,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id, way_id,information_id, user_id, company_user_id, type, msg, external_user_id, company_id, create_time,corp_id from qw_contact_way_logs
     </sql>
 
-    <select id="selectQwContactWayLogsList" parameterType="QwContactWayLogs" resultMap="QwContactWayLogsResult">
-        <include refid="selectQwContactWayLogsVo"/>
+    <select id="selectQwContactWayLogsList" parameterType="QwContactWayLogs" resultType="QwContactWayLogs">
+        select a.*,b.name,b.avatar,b.gender,b.is_repeat,c.nick_name from qw_contact_way_logs a
+        inner join qw_external_contact b on a.external_user_id = b.id
+        inner join company_user c on b.company_user_id = c.user_id
         <where>
-            <if test="wayId != null "> and way_id = #{wayId}</if>
-            <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="companyUserId != null "> and company_user_id = #{companyUserId}</if>
-            <if test="type != null "> and type = #{type}</if>
-            <if test="msg != null  and msg != ''"> and msg = #{msg}</if>
-            <if test="corpId != null "> and corp_id = #{corpId}</if>
-            <if test="externalUserId != null "> and external_user_id = #{externalUserId}</if>
-            <if test="companyId != null "> and company_id = #{companyId}</if>
-            <if test="createTime != null "> and create_time = #{createTime}</if>
+            <if test="wayId != null "> and a.way_id = #{wayId}</if>
+            <if test="userId != null "> and a.user_id = #{userId}</if>
+            <if test="companyUserId != null "> and b.company_user_id = #{companyUserId}</if>
+            <if test="type != null "> and a.type = #{type}</if>
+            <if test="msg != null  and msg != ''"> and a.msg = #{msg}</if>
+            <if test="corpId != null "> and a.corp_id = #{corpId}</if>
+            <if test="externalUserId != null "> and a.external_user_id = #{externalUserId}</if>
+            <if test="companyId != null "> and a.company_id = #{companyId}</if>
+            <if test="beginTime != null"><!-- 开始时间检索 -->
+                AND date_format(a.create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
+            </if>
+            <if test="endTime != null"><!-- 结束时间检索 -->
+                AND date_format(a.create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
         </where>
     </select>
 

+ 4 - 0
fs-service-system/src/main/resources/mapper/qw/QwUserMapper.xml

@@ -180,4 +180,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{userId}
         </foreach>
     </select>
+
+    <select id="getCompanyUserListByWxIdAndCorpId" resultType="com.fs.qw.domain.QwUser">
+        select * from qw_user where corp_id = #{corpId} and qw_user_id in <foreach collection="ids" open="(" separator="," close=")" item="item">#{item}</foreach>
+    </select>
 </mapper>

+ 87 - 10
fs-service-system/src/main/resources/mapper/qw/QwWatchLogMapper.xml

@@ -40,14 +40,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             COUNT(CASE WHEN day = 0 and status=2 THEN 1 END) AS firstOver,
             COUNT(CASE WHEN day = 1 and status in (1,2) THEN 1 END) AS d1Online,
             COUNT(CASE WHEN day = 1 and status=2 THEN 1 END) AS d1Over,
-            COUNT(1) AS line,project,course_id,video_id
+            COUNT(1) AS line,project,course_id,video_id,company_id
              from qw_watch_log
              <where>
-                 <if test="companyUserId">
-                     and company_user_id = #{companyUserId}
-                 </if>
-                 <if test="companyId">
-                     and company_id = #{companyId}
+                 <if test="companyUserIds != null and companyUserIds.size() != 0">
+                     and company_user_id in
+                     <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                         ${item}
+                     </foreach>
                  </if>
                  <if test="project != null">
                      and project=#{project}
@@ -61,10 +61,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  and DATE(line_time) between #{sTime} and #{dTime}
              </where>
             group by project,course_id,video_id
+            limit ${(pageNum-1)*pageSize},${pageSize}
     </select>
     <select id="selectQwWatchLogAllStatisticsListVONew"
             resultType="com.fs.qw.vo.QwWatchLogAllStatisticsListVO">
             select
+            any_value(company_id),
+            any_value(company_user_id),
             COUNT(CASE WHEN day = 0 and status in (1,2) THEN 1 END) AS firstOnline,
             COUNT(CASE WHEN day = 0 and status=2 THEN 1 END) AS firstOver,
             COUNT(CASE WHEN day = 1 and status in (1,2) THEN 1 END) AS d1Online,
@@ -131,11 +134,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              from qw_watch_log
             <where>
                  <if test="companyUserId">
-                     and company_user_id=#{companyUserId}
+                     and company_user_id in
+                     <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                         ${item}
+                     </foreach>
                  </if>
-                <if test="companyId">
-                    and company_id = #{companyId}
-                </if>
                 <if test="project != null">
                     and project = #{project}
                 </if>
@@ -148,6 +151,80 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and DATE(line_time) between #{sDate} AND #{eDate} group by project,course_id,video_id
             </where>
     </select>
+    <select id="selectQwWatchLogByCompanyUserIdCount" resultType="java.lang.Long">
+        SELECT COUNT(*)
+        FROM (
+        SELECT 1
+        FROM qw_watch_log
+        <where>
+            <if test="companyUserIds != null and companyUserIds.size() != 0">
+                and company_user_id in
+                <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="project != null">
+                and project=#{project}
+            </if>
+            <if test="courseId != null">
+                and course_id=#{courseId}
+            </if>
+            <if test="videoId != null">
+                and video_id=#{videoId}
+            </if>
+            and DATE(line_time) between #{sTime} and #{dTime}
+        </where>
+        GROUP BY project, course_id, video_id
+        ) AS count_temp_table
+    </select>
+    <select id="selectQwExtCountByDayAndCount" resultType="java.lang.Long">
+        SELECT COUNT(*) AS total_count
+        FROM (
+        SELECT 1
+        FROM
+        qw_external_contact qec
+        JOIN
+        qw_user qu ON qec.qw_user_id = qu.id
+        WHERE
+        DATE(qec.create_time) &gt;= DATE(#{sTime})
+        AND DATE(qec.create_time) &lt;= DATE(#{eTime})
+        AND qec.company_id = #{companyId}
+        <if test='nickName != null and nickName != ""'>
+            AND qu.qw_user_name LIKE CONCAT(#{nickName}, '%')
+        </if>
+        <if test='ids != null and ids != ""'>
+            AND qec.qw_user_id IN
+            <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY
+        qec.qw_user_id, DATE(qec.create_time)
+        ) AS grouped_data
+    </select>
+    <select id="selectQwWatchLogAllStatisticsListVONewCount" resultType="java.lang.Long">
+        select
+        count(1)
+        from qw_watch_log
+        <where>
+            <if test="companyUserId">
+                and company_user_id in
+                <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                    ${item}
+                </foreach>
+            </if>
+            <if test="project != null">
+                and project = #{project}
+            </if>
+            <if test="courseId != null">
+                and course_id = #{courseId}
+            </if>
+            <if test="videoId != null">
+                and video_id =#{videoId}
+            </if>
+            and DATE(line_time) between #{sDate} AND #{eDate} group by project,course_id,video_id
+        </where>
+    </select>
 
     <insert id="insertQwWatchLog" parameterType="QwWatchLog" useGeneratedKeys="true" keyProperty="id">
         insert into qw_watch_log