|
|
@@ -2,6 +2,7 @@ package com.fs.course.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fs.common.core.domain.R;
|
|
|
@@ -13,6 +14,7 @@ import com.fs.company.domain.CompanyDomain;
|
|
|
import com.fs.course.domain.FsUserCoursePeriod;
|
|
|
import com.fs.course.domain.FsUserCoursePeriodDays;
|
|
|
import com.fs.course.domain.FsUserCourseVideo;
|
|
|
+import com.fs.course.mapper.FsUserCoursePeriodCompanyMapper;
|
|
|
import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
|
|
|
import com.fs.course.mapper.FsUserCoursePeriodMapper;
|
|
|
import com.fs.course.mapper.FsUserCourseVideoRedPackageMapper;
|
|
|
@@ -65,8 +67,11 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
private final FsUserCoursePeriodDaysMapper fsUserCoursePeriodDaysMapper;
|
|
|
private final IFsUserCourseVideoService fsUserCourseVideoService;
|
|
|
|
|
|
+ private final FsUserCoursePeriodCompanyMapper fsUserCoursePeriodCompanyMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsUserCourseVideoRedPackageMapper fsUserCourseVideoRedPackageMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 查询营期课程
|
|
|
*
|
|
|
@@ -74,8 +79,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 营期课程
|
|
|
*/
|
|
|
@Override
|
|
|
- public FsUserCoursePeriodDays selectFsUserCoursePeriodDaysById(Long id)
|
|
|
- {
|
|
|
+ public FsUserCoursePeriodDays selectFsUserCoursePeriodDaysById(Long id) {
|
|
|
return baseMapper.selectFsUserCoursePeriodDaysById(id);
|
|
|
}
|
|
|
|
|
|
@@ -86,8 +90,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 营期课程
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysList(FsUserCoursePeriodDays fsUserCoursePeriodDays)
|
|
|
- {
|
|
|
+ public List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysList(FsUserCoursePeriodDays fsUserCoursePeriodDays) {
|
|
|
return baseMapper.selectFsUserCoursePeriodDaysList(fsUserCoursePeriodDays);
|
|
|
}
|
|
|
|
|
|
@@ -98,8 +101,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int insertFsUserCoursePeriodDays(FsUserCoursePeriodDays fsUserCoursePeriodDays)
|
|
|
- {
|
|
|
+ public int insertFsUserCoursePeriodDays(FsUserCoursePeriodDays fsUserCoursePeriodDays) {
|
|
|
fsUserCoursePeriodDays.setCreateTime(DateUtils.getNowDate());
|
|
|
return baseMapper.insert(fsUserCoursePeriodDays);
|
|
|
}
|
|
|
@@ -111,12 +113,25 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateFsUserCoursePeriodDays(FsUserCoursePeriodDays fsUserCoursePeriodDays)
|
|
|
- {
|
|
|
+ public int updateFsUserCoursePeriodDays(FsUserCoursePeriodDays fsUserCoursePeriodDays) {
|
|
|
fsUserCoursePeriodDays.setUpdateTime(DateUtils.getNowDate());
|
|
|
return baseMapper.updateById(fsUserCoursePeriodDays);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean isShowShare(Long id) {
|
|
|
+ FsUserCoursePeriodDays fsUserCoursePeriodDays = fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysById(id);
|
|
|
+ if (fsUserCoursePeriodDays == null) {
|
|
|
+ throw new RuntimeException("营期课程不存在");
|
|
|
+ }
|
|
|
+ Integer registrationSwitch = fsUserCoursePeriodDays.getRegistrationSwitch();
|
|
|
+ List<Integer> selected = fsUserCoursePeriodCompanyMapper.selectRegistrationSwitchByPeriodId(fsUserCoursePeriodDays.getPeriodId());
|
|
|
+ if (CollectionUtils.isEmpty(selected)) {
|
|
|
+ throw new RuntimeException("营期公司未选择");
|
|
|
+ }
|
|
|
+ return (registrationSwitch == 1) && selected.contains(1);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 批量删除营期课程
|
|
|
*
|
|
|
@@ -124,17 +139,16 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteFsUserCoursePeriodDaysByIds(Long[] ids)
|
|
|
- {
|
|
|
+ public int deleteFsUserCoursePeriodDaysByIds(Long[] ids) {
|
|
|
int flag = 0;
|
|
|
List<FsUserCoursePeriodDays> fsUserCoursePeriodDays = fsUserCoursePeriodDaysMapper.selectBatchIds(Arrays.asList(ids));
|
|
|
List<Long> periodDayIds = fsUserCoursePeriodDays.stream().map(FsUserCoursePeriodDays::getId).collect(Collectors.toList());
|
|
|
List<Long> getPeriodIds = fsUserCoursePeriodDays.stream().map(FsUserCoursePeriodDays::getPeriodId).collect(Collectors.toList());
|
|
|
List<Long> videoIds = fsUserCoursePeriodDays.stream().map(FsUserCoursePeriodDays::getVideoId).collect(Collectors.toList());
|
|
|
- if(!periodDayIds.isEmpty()){
|
|
|
- flag = fsUserCoursePeriodDaysMapper.updateBatchDelFlag(periodDayIds.toArray(new Long[0]),1);
|
|
|
+ if (!periodDayIds.isEmpty()) {
|
|
|
+ flag = fsUserCoursePeriodDaysMapper.updateBatchDelFlag(periodDayIds.toArray(new Long[0]), 1);
|
|
|
//删除红包记录
|
|
|
- fsUserCourseVideoRedPackageMapper.deleteFsUserCourseVideoRedPackageByVedioIds(videoIds.toArray(new Long[0]),getPeriodIds.toArray(new Long[0]));
|
|
|
+ fsUserCourseVideoRedPackageMapper.deleteFsUserCourseVideoRedPackageByVedioIds(videoIds.toArray(new Long[0]), getPeriodIds.toArray(new Long[0]));
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
@@ -146,24 +160,24 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteFsUserCoursePeriodDaysById(Long id)
|
|
|
- {
|
|
|
+ public int deleteFsUserCoursePeriodDaysById(Long id) {
|
|
|
return baseMapper.deleteFsUserCoursePeriodDaysById(id);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public R addCourse(FsUserCoursePeriodDays entity) {
|
|
|
FsUserCoursePeriod period = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(entity.getPeriodId());
|
|
|
- List<FsUserCoursePeriodDays> dayList = list(new QueryWrapper<FsUserCoursePeriodDays>().eq("period_id", period.getPeriodId()).eq("del_flag","0"));
|
|
|
+ List<FsUserCoursePeriodDays> dayList = list(new QueryWrapper<FsUserCoursePeriodDays>().eq("period_id", period.getPeriodId()).eq("del_flag", "0"));
|
|
|
long days;
|
|
|
- if(period.getPeriodType() == 2){
|
|
|
+ if (period.getPeriodType() == 2) {
|
|
|
days = 1;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
days = DateUtil.differenceTime(period.getPeriodStartingTime(), period.getPeriodEndTime(), TimeTypeEnum.DAY);
|
|
|
}
|
|
|
days++;
|
|
|
- if(dayList.size() + entity.getVideoIds().size() > days) return R.error("课程不能超过营期范围");
|
|
|
- if(dayList.stream().anyMatch(e -> entity.getVideoIds().contains(e.getVideoId()))) return R.error("不能添加相同章节");
|
|
|
+ if (dayList.size() + entity.getVideoIds().size() > days) return R.error("课程不能超过营期范围");
|
|
|
+ if (dayList.stream().anyMatch(e -> entity.getVideoIds().contains(e.getVideoId())))
|
|
|
+ return R.error("不能添加相同章节");
|
|
|
AtomicInteger i = new AtomicInteger(0);
|
|
|
FsUserCourseVideo fsUserCourseVideo = new FsUserCourseVideo();
|
|
|
fsUserCourseVideo.setCourseId(entity.getCourseId());
|
|
|
@@ -176,30 +190,35 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
day.setLesson(dayList.size() + i.getAndIncrement());
|
|
|
day.setDayDate(period.getPeriodStartingTime().plusDays(day.getLesson()));
|
|
|
day.setCourseId(entity.getCourseId());
|
|
|
- if(entity.getStartTime() != null){
|
|
|
+ if (entity.getStartTime() != null) {
|
|
|
day.setStartDateTime(LocalDateTime.of(day.getDayDate(), entity.getStartTime()));
|
|
|
- }else if(video.getViewStartTime() != null){
|
|
|
+ } else if (video.getViewStartTime() != null) {
|
|
|
day.setStartDateTime(LocalDateTime.of(day.getDayDate(), video.getViewStartTime()));
|
|
|
}
|
|
|
- if(entity.getEndTime1() != null){
|
|
|
+ if (entity.getEndTime1() != null) {
|
|
|
day.setEndDateTime(LocalDateTime.of(day.getDayDate(), entity.getEndTime1()));
|
|
|
- }else if(video.getViewEndTime() != null){
|
|
|
+ } else if (video.getViewEndTime() != null) {
|
|
|
day.setEndDateTime(LocalDateTime.of(day.getDayDate(), video.getViewEndTime()));
|
|
|
}
|
|
|
SysConfig config = sysConfigMapper.selectConfigByConfigKey("joinTime.switch.config");
|
|
|
- if (ObjectUtils.isNotEmpty(config)&&config.getConfigValue().equals("1")){
|
|
|
+ if (ObjectUtils.isNotEmpty(config) && config.getConfigValue().equals("1")) {
|
|
|
entity.setJoinTime(entity.getEndTime1());
|
|
|
}
|
|
|
- if(entity.getJoinTime() != null){
|
|
|
+ if (entity.getJoinTime() != null) {
|
|
|
day.setLastJoinTime(LocalDateTime.of(day.getDayDate(), entity.getJoinTime()));
|
|
|
- }else if(video.getLastJoinTime() != null){
|
|
|
+ } else if (video.getLastJoinTime() != null) {
|
|
|
day.setLastJoinTime(LocalDateTime.of(day.getDayDate(), video.getLastJoinTime()));
|
|
|
}
|
|
|
day.setVideoId(e);
|
|
|
day.setCreateTime(new Date());
|
|
|
+ if (entity.getNoRegisterVideoIds() != null && entity.getNoRegisterVideoIds().contains(e)) {
|
|
|
+ day.setRegistrationSwitch(0);
|
|
|
+ } else {
|
|
|
+ day.setRegistrationSwitch(1);
|
|
|
+ }
|
|
|
// 默认开启今天及以后的两天
|
|
|
LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
- if(day.getDayDate().isBefore(compareDay)){
|
|
|
+ if (day.getDayDate().isBefore(compareDay)) {
|
|
|
day.setStatus(1);
|
|
|
} else {
|
|
|
day.setStatus(0);
|
|
|
@@ -224,7 +243,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
|
|
|
@Override
|
|
|
public List<CompanyRedPacketParam> getCompanyByPeriod(Long periodId, Long videoId) {
|
|
|
- if(videoId == null ){
|
|
|
+ if (videoId == null) {
|
|
|
return fsUserCoursePeriodMapper.selectCompanyByPeriod(periodId);
|
|
|
}
|
|
|
return fsUserCoursePeriodMapper.selectCompanyByPeriodVideo(periodId, videoId);
|
|
|
@@ -251,6 +270,8 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
courseAnalysisParam.setVideoIdList(param.getVideoIdList());
|
|
|
courseAnalysisParam.setCompanyId(param.getCompanyId());
|
|
|
courseAnalysisParam.setCompanyUserIds(param.getCompanyUserIds());
|
|
|
+ //查询营期维度的看课人数和完课人数
|
|
|
+ FsPeriodCountVO fsPeriodCountVO = fsUserMapper.selectFsPeriodCountVO(courseAnalysisParam);
|
|
|
List<FsCourseAnalysisCountVO> courseCountList = fsUserMapper.courseAnalysisWatchLog(courseAnalysisParam);
|
|
|
List<FsCourseAnalysisCountVO> redPacketCountList = fsUserMapper.courseAnalysisRedPacketCount(courseAnalysisParam);
|
|
|
List<FsCourseAnalysisCountVO> answerCountList = fsUserMapper.courseAnalysisAnswerCount(courseAnalysisParam);
|
|
|
@@ -277,7 +298,10 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
FsPeriodCountVO allVO = new FsPeriodCountVO();
|
|
|
BeanUtils.copyProperties(v, allVO);
|
|
|
allVO.setTitle(v.getVideoName());
|
|
|
-
|
|
|
+ if(fsPeriodCountVO != null){
|
|
|
+ allVO.setCoursePeriodWatchNum(fsPeriodCountVO.getCoursePeriodWatchNum());
|
|
|
+ allVO.setCoursePeriodCompleteNum(fsPeriodCountVO.getCoursePeriodCompleteNum());
|
|
|
+ }
|
|
|
FsCourseAnalysisCountVO countVO = getCourseAnalysisCountVO(v, courseMap, redPacketMap, answerMap);
|
|
|
allVO.setCountDetailsVO(countVO);
|
|
|
return allVO;
|
|
|
@@ -355,9 +379,9 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
day.setEndDateTime(vo.getEndTime1());
|
|
|
|
|
|
SysConfig config = sysConfigMapper.selectConfigByConfigKey("joinTime.switch.config");
|
|
|
- if (ObjectUtils.isNotEmpty(config)&&config.getConfigValue().equals("1")){
|
|
|
+ if (ObjectUtils.isNotEmpty(config) && config.getConfigValue().equals("1")) {
|
|
|
day.setLastJoinTime(vo.getEndTime1());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
day.setLastJoinTime(vo.getJoinTime());
|
|
|
}
|
|
|
|
|
|
@@ -365,9 +389,9 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
day.setDayDate(vo.getStartTime().toLocalDate());
|
|
|
// 设置状态
|
|
|
LocalDateTime compareDayTime = LocalDateTime.now();
|
|
|
- if(compareDayTime.isAfter(day.getStartDateTime()) && compareDayTime.isBefore(day.getEndDateTime())){
|
|
|
+ if (compareDayTime.isAfter(day.getStartDateTime()) && compareDayTime.isBefore(day.getEndDateTime())) {
|
|
|
day.setStatus(1);
|
|
|
- } else if(compareDayTime.isBefore(day.getStartDateTime())){
|
|
|
+ } else if (compareDayTime.isBefore(day.getStartDateTime())) {
|
|
|
day.setStatus(0);
|
|
|
} else {
|
|
|
day.setStatus(2);
|
|
|
@@ -381,14 +405,15 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
public R updateCourseDate(UpdateCourseTimeVo vo) {
|
|
|
FsUserCoursePeriodDays day = getById(vo.getId());
|
|
|
FsUserCoursePeriod period = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(day.getPeriodId());
|
|
|
- if(!DateUtil.isWithinRangeSafe(vo.getDayDate(), period.getPeriodStartingTime(), period.getPeriodEndTime())) return R.error("时间不在营期范围内");
|
|
|
+ if (!DateUtil.isWithinRangeSafe(vo.getDayDate(), period.getPeriodStartingTime(), period.getPeriodEndTime()))
|
|
|
+ return R.error("时间不在营期范围内");
|
|
|
day.setDayDate(vo.getDayDate());
|
|
|
day.setStartDateTime(LocalDateTime.of(day.getDayDate(), day.getStartDateTime().toLocalTime()));
|
|
|
day.setEndDateTime(LocalDateTime.of(day.getDayDate(), day.getEndDateTime().toLocalTime()));
|
|
|
day.setLastJoinTime(LocalDateTime.of(day.getDayDate(), day.getLastJoinTime().toLocalTime()));
|
|
|
// 默认开启今天及以后的两天,为进行中
|
|
|
LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
- if(day.getDayDate().isBefore(compareDay)){
|
|
|
+ if (day.getDayDate().isBefore(compareDay)) {
|
|
|
day.setStatus(1);
|
|
|
} else {
|
|
|
day.setStatus(0);
|
|
|
@@ -423,7 +448,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
|
|
|
@Override
|
|
|
public List<Long> selectFsUserCoursePeriodDaysByTime(String periodSTime, String periodETime) {
|
|
|
- return fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysByTime(periodSTime,periodETime);
|
|
|
+ return fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysByTime(periodSTime, periodETime);
|
|
|
}
|
|
|
|
|
|
private static FsCourseAnalysisCountVO getCourseAnalysisCountVO(FsUserCoursePeriodDays v, Map<Long, FsCourseAnalysisCountVO> courseMap, Map<Long, FsCourseAnalysisCountVO> redPacketMap, Map<Long, FsCourseAnalysisCountVO> answerMap) {
|
|
|
@@ -438,15 +463,16 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
countVO.setRedPacketNum(redPacketVO.getRedPacketNum())
|
|
|
.setRedPacketAmount(redPacketVO.getRedPacketAmount() != null ? redPacketVO.getRedPacketAmount() : new BigDecimal(BigInteger.ZERO));
|
|
|
countVO.setAnswerNum(answerVO.getAnswerNum()).setAnswerRightNum(answerVO.getAnswerRightNum())
|
|
|
- .setAnswerRightRate(answerVO.getAnswerRightRate()!=null ? answerVO.getAnswerRightRate() : new BigDecimal(BigInteger.ZERO))
|
|
|
+ .setAnswerRightRate(answerVO.getAnswerRightRate() != null ? answerVO.getAnswerRightRate() : new BigDecimal(BigInteger.ZERO))
|
|
|
.setAnswerTimes(answerVO.getAnswerTimes()).setAnswerRightTimes(answerVO.getAnswerRightTimes());
|
|
|
return countVO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询营期选项列表
|
|
|
- * @param params 参数
|
|
|
- * @return list
|
|
|
+ *
|
|
|
+ * @param params 参数
|
|
|
+ * @return list
|
|
|
*/
|
|
|
@Override
|
|
|
public List<OptionsVO> selectPeriodListByMap(Map<String, Object> params) {
|