|
@@ -13,13 +13,18 @@ import com.fs.company.mapper.CompanyUserMapper;
|
|
import com.fs.company.vo.CompanyQwUserByIdsVo;
|
|
import com.fs.company.vo.CompanyQwUserByIdsVo;
|
|
import com.fs.course.mapper.FsCourseWatchLogMapper;
|
|
import com.fs.course.mapper.FsCourseWatchLogMapper;
|
|
import com.fs.course.service.IFsCourseLinkService;
|
|
import com.fs.course.service.IFsCourseLinkService;
|
|
|
|
+import com.fs.course.service.IFsCourseWatchLogService;
|
|
|
|
+import com.fs.course.vo.FsCourseWatchLogStatisticsListVO;
|
|
|
|
+import com.fs.his.mapper.FsUserMapper;
|
|
|
|
+import com.fs.his.service.IFsUserService;
|
|
|
|
+import com.fs.qw.domain.QwExternalContact;
|
|
import com.fs.qw.domain.QwSopUpdateStatus;
|
|
import com.fs.qw.domain.QwSopUpdateStatus;
|
|
import com.fs.qw.domain.QwUser;
|
|
import com.fs.qw.domain.QwUser;
|
|
import com.fs.qw.mapper.QwUserMapper;
|
|
import com.fs.qw.mapper.QwUserMapper;
|
|
-import com.fs.qw.param.QwAutoSopTimeParam;
|
|
|
|
|
|
+import com.fs.qw.param.*;
|
|
import com.fs.qw.result.QwFilterSopCustomersResult;
|
|
import com.fs.qw.result.QwFilterSopCustomersResult;
|
|
|
|
+import com.fs.qw.service.IQwExternalContactService;
|
|
import com.fs.qw.service.impl.AsyncChatSopService;
|
|
import com.fs.qw.service.impl.AsyncChatSopService;
|
|
-import com.fs.qw.service.impl.AsyncSopService;
|
|
|
|
import com.fs.qw.service.impl.AsyncSopTestService;
|
|
import com.fs.qw.service.impl.AsyncSopTestService;
|
|
import com.fs.qw.service.impl.AsyncWxSopService;
|
|
import com.fs.qw.service.impl.AsyncWxSopService;
|
|
import com.fs.qw.vo.QwSopRuleTimeVO;
|
|
import com.fs.qw.vo.QwSopRuleTimeVO;
|
|
@@ -32,9 +37,12 @@ import com.fs.sop.service.*;
|
|
import com.fs.sop.vo.QwSopTask;
|
|
import com.fs.sop.vo.QwSopTask;
|
|
import com.fs.sop.vo.SopVoiceListVo;
|
|
import com.fs.sop.vo.SopVoiceListVo;
|
|
import com.fs.sop.vo.VoiceVo;
|
|
import com.fs.sop.vo.VoiceVo;
|
|
|
|
+import com.fs.store.param.h5.UserStatisticsCommonParam;
|
|
|
|
+import com.fs.store.vo.h5.*;
|
|
import com.fs.voice.utils.StringUtil;
|
|
import com.fs.voice.utils.StringUtil;
|
|
import com.fs.wxUser.mapper.CompanyWxUserMapper;
|
|
import com.fs.wxUser.mapper.CompanyWxUserMapper;
|
|
import com.fs.wxUser.param.CompanyWxUserSopParam;
|
|
import com.fs.wxUser.param.CompanyWxUserSopParam;
|
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
|
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
@@ -122,6 +130,17 @@ public class QwSopServiceImpl implements IQwSopService
|
|
@Autowired
|
|
@Autowired
|
|
private RocketMQTemplate rocketMQTemplate;
|
|
private RocketMQTemplate rocketMQTemplate;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IQwExternalContactService qwExternalContactService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFsUserService fsUserService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFsCourseWatchLogService fsCourseWatchLogService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private FsUserMapper fsUserMapper;
|
|
/**
|
|
/**
|
|
* 查询企微sop
|
|
* 查询企微sop
|
|
*
|
|
*
|
|
@@ -1100,7 +1119,6 @@ public class QwSopServiceImpl implements IQwSopService
|
|
}
|
|
}
|
|
return qwSopLogsMapper.delete(new QueryWrapper<QwSopLogs>().in("sop_id", Arrays.asList(ids)));
|
|
return qwSopLogsMapper.delete(new QueryWrapper<QwSopLogs>().in("sop_id", Arrays.asList(ids)));
|
|
}
|
|
}
|
|
-
|
|
|
|
/**
|
|
/**
|
|
*新增员工执行SOP
|
|
*新增员工执行SOP
|
|
*/
|
|
*/
|
|
@@ -1253,4 +1271,108 @@ public class QwSopServiceImpl implements IQwSopService
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public FsUserStatisticsVO boardCourseQuizRedEnvelopeStats(CourseQuizRedEnvelopeStatsParam qwParam) {
|
|
|
|
+ String startTime = qwParam.getStartTime();
|
|
|
|
+ String endTime = qwParam.getEndTime();
|
|
|
|
+ //1:获取当前登录企微用户信息
|
|
|
|
+ QwUser qwUser = qwExternalContactService.getQwUserByRedis(qwParam.getCorpId().trim(),qwParam.getQwUserId().trim());
|
|
|
|
+ if (qwUser==null||qwUser.getCompanyUserId()==null){
|
|
|
|
+ return new FsUserStatisticsVO();
|
|
|
|
+ }
|
|
|
|
+ Long userId = qwUser.getCompanyUserId();
|
|
|
|
+ UserStatisticsCommonParam param = new UserStatisticsCommonParam();
|
|
|
|
+ param.setUserId(userId).setStartTime(startTime).setEndTime(endTime);
|
|
|
|
+ //2:获取当前用户统计数据
|
|
|
|
+ FsUserStatisticsVO vo = fsUserService.userStatistics(param);
|
|
|
|
+ DateTimeFormatter dfm = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
|
+ LocalDateTime startDateTime = LocalDateTime.parse(startTime, dfm);
|
|
|
|
+ LocalDateTime endDateTime = LocalDateTime.parse(endTime, dfm);
|
|
|
|
+ if (startDateTime.toLocalDate().equals(today) && endDateTime.toLocalDate().equals(today)) {
|
|
|
|
+ String yesterday = LocalDate.now().minusDays(1).toString();
|
|
|
|
+ UserStatisticsCommonParam paramYes = new UserStatisticsCommonParam();
|
|
|
|
+ paramYes.setUserId(userId).setStartTime(yesterday + " 00:00:00").setEndTime(yesterday + " 23:59:59");
|
|
|
|
+ FsUserStatisticsVO fsUserStatisticsVO = fsUserService.userStatistics(paramYes);
|
|
|
|
+ vo.setYesterdayVO(fsUserStatisticsVO);
|
|
|
|
+ } else {
|
|
|
|
+ vo.setYesterdayVO(new FsUserStatisticsVO());
|
|
|
|
+ }
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public ExternalUserStatsVO externalStatsList(QwSidebarStatsParam qwParam) {
|
|
|
|
+ ExternalUserStatsVO resultVo=new ExternalUserStatsVO();
|
|
|
|
+ //外部联系人入参对象
|
|
|
|
+ QwExternalContact externalContact = getExternalContact(
|
|
|
|
+ qwParam.getQwUserId(),
|
|
|
|
+ qwParam.getCorpId(),
|
|
|
|
+ qwParam.getExternalUserId()
|
|
|
|
+ );
|
|
|
|
+ if (externalContact == null) return new ExternalUserStatsVO();
|
|
|
|
+ Long fsUserId = externalContact.getFsUserId();
|
|
|
|
+ if (fsUserId == null || fsUserId <= 0) {
|
|
|
|
+ log.info("外部联系人没有绑定fs用户:{}",externalContact.getExternalUserId());
|
|
|
|
+ return resultVo;
|
|
|
|
+ }
|
|
|
|
+ Long companyUserId = externalContact.getCompanyUserId();
|
|
|
|
+ if (companyUserId == null || companyUserId <= 0){
|
|
|
|
+ log.info("外部联系人没有绑定销售人员:{}",externalContact.getExternalUserId());
|
|
|
|
+ return resultVo;
|
|
|
|
+ }
|
|
|
|
+ UserStatisticsCommonParam queryParam = new UserStatisticsCommonParam();
|
|
|
|
+ queryParam.setUserId(fsUserId).setCompanyUserId(String.valueOf(companyUserId)).setStartTime(qwParam.getStartTime()).setEndTime(qwParam.getEndTime());
|
|
|
|
+ //获取用户领取红包数据(红包个数、红包金额)
|
|
|
|
+ ExternalRedPacketStatsVO redPacketStatsVo = fsUserMapper.countExternalRedPacketStats(queryParam);
|
|
|
|
+ resultVo.setRedPacketNum(redPacketStatsVo.getRedPacketNum());
|
|
|
|
+ resultVo.setRedPacketAmount(redPacketStatsVo.getRedPacketAmount());
|
|
|
|
+ //获取用户答题数据(答题次数、正确次数)
|
|
|
|
+ ExternalAnswerStatsVO externalAnswerStatsVO = fsUserMapper.countExternalAnswerStats(queryParam);
|
|
|
|
+ resultVo.setAnswerNum(externalAnswerStatsVO.getAnswerNum());
|
|
|
|
+ resultVo.setAnswerRightNum(externalAnswerStatsVO.getAnswerRightNum());
|
|
|
|
+ //获取用户看课数据(观看次数、完播次数)
|
|
|
|
+ ExternalWatchStatsVO externalWatchStatsVO = fsUserMapper.countExternalWatchStats(queryParam);
|
|
|
|
+ resultVo.setCourseWatchNum(externalWatchStatsVO.getCourseWatchNum());
|
|
|
|
+ resultVo.setCourseCompleteNum(externalWatchStatsVO.getCourseCompleteNum());
|
|
|
|
+ return resultVo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<FsCourseWatchLogStatisticsListVO> externalWatchRecordStatsList(QwSidebarStatsParam qwParam) {
|
|
|
|
+ QwExternalContact externalContact = getExternalContact(
|
|
|
|
+ qwParam.getQwUserId(),
|
|
|
|
+ qwParam.getCorpId(),
|
|
|
|
+ qwParam.getExternalUserId()
|
|
|
|
+ );
|
|
|
|
+ if (externalContact == null) return Collections.emptyList();
|
|
|
|
+ //根据外部联系人主键id获取用户的课程观看记录
|
|
|
|
+ qwParam.setQwExternalContactId(externalContact.getId());
|
|
|
|
+ PageHelper.startPage(qwParam.getPageNum(), qwParam.getPageSize());
|
|
|
|
+ List<FsCourseWatchLogStatisticsListVO> list = fsCourseWatchLogService.selectQwFsCourseWatchLogStatisticsListVO(qwParam);
|
|
|
|
+ if (CollectionUtils.isEmpty(list)){
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
+ }
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取外部联系人信息
|
|
|
|
+ * */
|
|
|
|
+ private QwExternalContact getExternalContact(String qwUserId, String corpId, String externalUserId) {
|
|
|
|
+ ExternalContactParam param = new ExternalContactParam();
|
|
|
|
+ param.setUserId(qwUserId);
|
|
|
|
+ param.setCorpId(corpId);
|
|
|
|
+ param.setExternalUserId(externalUserId);
|
|
|
|
+
|
|
|
|
+ QwExternalContact contact = qwExternalContactService.selectQwUserListVOByQwUserIdAndCorpIdAndExternalUserId(param);
|
|
|
|
+
|
|
|
|
+ if (contact == null) {
|
|
|
|
+ log.info("未查询到关联的外部联系人信息: userId={}, corpId={}, externalUserId={}",
|
|
|
|
+ qwUserId, corpId, externalUserId);
|
|
|
|
+ }
|
|
|
|
+ return contact;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|