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

feat(course): 新增根据看课记录ID获取外部联系人ID的功能

- 在 FsCourseWatchLogMapper 中添加 getExContactIdsIdsByWatchLogIds 方法
- 在 FsCourseWatchLogServiceImpl 中实现对应服务方法
- 在 IFsCourseWatchLogService 接口中声明新方法
- 在 QwExternalContactController 中新增批量修改备注接口支持看课记录过滤
- 新增 QwExternalContactUpdateNoteParam 字段用于看课记录相关参数传递
- 扩展 QwTagParam 和 QwTagServiceImpl 支持公司ID字段处理
xw 1 тиждень тому
батько
коміт
6c8985ddac

+ 74 - 2
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactController.java

@@ -13,9 +13,10 @@ import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.impl.CompanyDeptServiceImpl;
+import com.fs.course.param.FsCourseWatchLogListParam;
 import com.fs.course.param.FsUserCourseListUParam;
-import com.fs.course.service.IFsUserCompanyBindService;
-import com.fs.course.service.IFsUserCourseStudyService;
+import com.fs.course.service.*;
+import com.fs.course.vo.FsCourseWatchLogListVO;
 import com.fs.course.vo.FsUserCourseStudyListUVO;
 import com.fs.course.vo.UserWatchLogListVo;
 import com.fs.crm.param.CrmMyCustomerListQueryParam;
@@ -718,7 +719,78 @@ public class QwExternalContactController extends BaseController
         return R.ok("正在批量修改备注中");
     }
 
+    /**
+     * copy批量修改备注方法,该方法提供给我的看课记录里面使用
+     * @param param
+     * @return
+     * @throws JSONException
+     */
+    @PreAuthorize("@ss.hasPermi('qw:externalContact:edit')")
+    @Log(title = "批量修改备注", businessType = BusinessType.UPDATE)
+    @PostMapping("/batchUpdateExternalContactNotesByWatchLog")
+    public R batchUpdateExternalContactNotesByWatchLog(@RequestBody QwExternalContactUpdateNoteParam param) throws JSONException {
+        if(param.isFilter()){
+            param.setWatchLogIds(getWatchLogIds(param.getFromMyList(), param.getWatchLogParam()));
+        }
+        //查询
+        if(null != param.getWatchLogIds() && !param.getWatchLogIds().isEmpty()){
+            param.setUserIds(getUserIdsByWatchLogIds(param.getWatchLogIds()));
+        }
+
+        if(param.getUserIds() == null || param.getUserIds().isEmpty()){
+            return R.error("修改用户为空");
+        }
+        qwUserServiceAsyncHelper.batchUpdateExternalContactNotes(param);
+        return R.ok("正在批量修改备注中");
+    }
+
+    @Autowired
+    private IFsUserCoursePeriodService userCoursePeriodService;
 
+    @Autowired
+    private IFsUserCoursePeriodDaysService userCoursePeriodDaysService;
+
+    @Autowired
+    private IFsCourseWatchLogService fsCourseWatchLogService;
+    /**
+     * 用于适配看课批量修改标签【根据过滤条件版】
+     * @param fromMyList
+     * @param watchLogParam
+     * @return
+     */
+    private List<Long> getWatchLogIds(Integer fromMyList,FsCourseWatchLogListParam watchLogParam){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(Integer.valueOf(0).equals(fromMyList)){
+            watchLogParam.setCompanyId( loginUser.getCompany().getCompanyId());
+        }else{
+            watchLogParam.setCompanyUserId( loginUser.getUser().getUserId());
+        }
+
+        if (watchLogParam.getSendType()==1&& watchLogParam.getPeriodETime()!=null && watchLogParam.getPeriodSTime()!=null) {
+            List<Long> periodIds = userCoursePeriodDaysService.selectFsUserCoursePeriodDaysByTime(watchLogParam.getPeriodSTime(), watchLogParam.getPeriodETime());
+
+            if (!periodIds.isEmpty()){
+                List<Long> longs = userCoursePeriodService.selectFsUserCoursePeriodListByPeriodId(periodIds, loginUser.getCompany().getCompanyId());
+                if (!longs.isEmpty()){
+                    watchLogParam.setPeriodIds(longs);
+                }else {
+                    return new ArrayList<>();
+                }
+            }else {
+                return new ArrayList<>();
+            }
+
+        }
+
+        List<FsCourseWatchLogListVO> list = fsCourseWatchLogService.selectFsCourseWatchLogListVO(watchLogParam);
+        List<Long> collect = list.stream().map(FsCourseWatchLogListVO::getLogId).collect(Collectors.toList());
+        return collect;
+    }
+    private List<Long> getUserIdsByWatchLogIds(List<Long> watchLogIds){
+        List<Long> exContactIdsIdsByWatchLogIds = fsCourseWatchLogService.getExContactIdsIdsByWatchLogIds(watchLogIds);
+        Set<Long> set = new HashSet<>(exContactIdsIdsByWatchLogIds);
+        return new ArrayList<>(set);
+    }
 
     private List<Long> getList(Integer addType, QwExternalContactParam param){
         if(addType == null){

+ 9 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -570,4 +570,13 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
 
     // 统计当天各公司的观看人数和完播人数, 存到redis中,定时任务每 ? 分钟执行一次
     List<WatchCourseStatisticsResultDTO> watchCourseStatisticsGroupByCompany(@Param("params") Map<String, Object> params);
+
+    @Select({"<script>" +
+            " select qw_external_contact_id from fs_course_watch_log where log_id in  " +
+            "        <foreach collection=\"watchLogIds\" item=\"id\" open=\"(\" separator=\",\" close=\")\">\n" +
+               "    #{id} " +
+               "</foreach>" +
+            "</script>"
+    })
+    List<Long> getExContactIdsIdsByWatchLogIds(@Param("watchLogIds")List<Long> watchLogIds);
 }

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

@@ -139,4 +139,11 @@ public interface IFsCourseWatchLogService extends IService<FsCourseWatchLog> {
      * 看课统计
      * */
     List<FsCourseWatchLogStatisticsListVO> selectQwFsCourseWatchLogStatisticsListVO(QwSidebarStatsParam param);
+
+    /**
+     * 根据看课记录id获取所有的外部联系人ids
+     * @param watchLogIds
+     * @return
+     */
+    List<Long> getExContactIdsIdsByWatchLogIds(List<Long> watchLogIds);
 }

+ 11 - 6
fs-service/src/main/java/com/fs/course/service/impl/FsCourseWatchLogServiceImpl.java

@@ -47,10 +47,7 @@ import com.fs.sop.domain.QwSopLogs;
 import com.fs.sop.mapper.SopUserLogsMapper;
 import com.fs.store.service.cache.IFsUserCacheService;
 import com.fs.store.service.cache.IFsUserCourseCacheService;
-import com.fs.system.mapper.SysDictDataMapper;
 import com.fs.system.service.ISysConfigService;
-import com.fs.system.vo.DictVO;
-import com.fs.tag.service.FsTagUpdateService;
 import com.fs.tag.service.FsTagUpdateService;
 import com.hc.openapi.tool.util.StringUtils;
 import org.apache.commons.collections4.CollectionUtils;
@@ -136,9 +133,6 @@ public class FsCourseWatchLogServiceImpl extends ServiceImpl<FsCourseWatchLogMap
     @Autowired
     private IFsUserCoursePeriodDaysService userCoursePeriodDaysService;
 
-    @Autowired
-    private SysDictDataMapper sysDictDataMapper;
-
     @Autowired
     private FsTagUpdateService fsTagUpdateService;
 
@@ -1311,5 +1305,16 @@ public class FsCourseWatchLogServiceImpl extends ServiceImpl<FsCourseWatchLogMap
         return fsCourseWatchLogMapper.selectQwFsCourseWatchLogStatisticsListVO(param);
     }
 
+    /**
+     * 根据看课记录id获取所有的外部联系人ids
+     * @param watchLogIds
+     * @return
+     */
+    @Override
+    public List<Long> getExContactIdsIdsByWatchLogIds(List<Long> watchLogIds){
+        return fsCourseWatchLogMapper.getExContactIdsIdsByWatchLogIds(watchLogIds);
+    }
+
+
 
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/param/QwExternalContactUpdateNoteParam.java

@@ -1,5 +1,6 @@
 package com.fs.qw.param;
 
+import com.fs.course.param.FsCourseWatchLogListParam;
 import lombok.Data;
 
 import java.util.List;
@@ -13,4 +14,8 @@ public class QwExternalContactUpdateNoteParam {
     private Integer addType;
     private boolean filter;
     private QwExternalContactParam param;
+    private List<Long> watchLogIds;
+    //来源于我的看课记录 1 来源于看课记录 0
+    private Integer fromMyList;
+    private FsCourseWatchLogListParam watchLogParam;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/param/QwTagParam.java

@@ -12,4 +12,9 @@ public class QwTagParam  {
     /** 企业id */
     @Excel(name = "企业id")
     private String corpId;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
 }

+ 1 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwTagServiceImpl.java

@@ -74,6 +74,7 @@ public class QwTagServiceImpl implements IQwTagService
         QwTag qwTag = new QwTag();
         qwTag.setName(tagParam.getName());
         qwTag.setCorpId(tagParam.getCorpId());
+        qwTag.setCompanyId(tagParam.getCompanyId());
         List<QwTagVO> qwTags = qwTagMapper.selectQwTagListVO(qwTag);
 
         // Step 2: 提取 GroupId 列表(去重)