|
@@ -3,38 +3,50 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.ActivityEvaluationDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ActivityEvaluationDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.activity.ActivityTeacherQuery;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityEvaluationSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluation;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.Subject;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
|
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.ActivityMusicVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.activity.ActivityTeacherWrapper;
|
|
|
+import com.yonge.cooleshow.common.enums.ActivityResourceEnum;
|
|
|
+import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
|
|
|
+import com.yonge.cooleshow.common.enums.EStatus;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluation;
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.ActivityEvaluationSearch;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.ActivityEvaluationDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationService;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
-
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluationDao, ActivityEvaluation> implements ActivityEvaluationService {
|
|
|
- private final static Logger log = LoggerFactory.getLogger(ActivityEvaluationServiceImpl.class);
|
|
|
+
|
|
|
@Autowired
|
|
|
private ActivityPlanService activityPlanService;
|
|
|
+ @Autowired
|
|
|
+ private SubjectService subjectService;
|
|
|
|
|
|
@Override
|
|
|
public ActivityEvaluationVo detail(Long id) {
|
|
@@ -59,14 +71,40 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
|
|
|
.eq(ActivityEvaluation::getActivityId, param.getActivityId())
|
|
|
);
|
|
|
|
|
|
- List<Long> oldMusicSheetIds = activityEvaluations.stream().map(o -> o.getMusicSheetId()).collect(Collectors.toList());
|
|
|
+ // 活动类型
|
|
|
+ ActivityTypeEnum activityType = ActivityTypeEnum.EVALUATION;
|
|
|
+ String resourceType = ActivityResourceEnum.MUSIC_SHEET.getCode();
|
|
|
+
|
|
|
+ if (Objects.nonNull(param.getActivityId())) {
|
|
|
+ ActivityPlan activityPlan = activityPlanService.getBaseMapper().selectById(param.getActivityId());
|
|
|
+
|
|
|
+ if (Objects.isNull(activityPlan)) {
|
|
|
+ throw new BizException("当前活动ID无效");
|
|
|
+ }
|
|
|
+ activityType = activityPlan.getActivityType();
|
|
|
+
|
|
|
+ switch (activityType) {
|
|
|
+ case SHARE: // 活动分享老师
|
|
|
+ resourceType = ActivityResourceEnum.TEACHER.getCode();
|
|
|
+ break;
|
|
|
+ case EVALUATION: // 曲目分享
|
|
|
+ resourceType = ActivityResourceEnum.MUSIC_SHEET.getCode();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> oldMusicSheetIds = activityEvaluations.stream().map(ActivityEvaluation::getMusicSheetId).collect(Collectors.toList());
|
|
|
musicSheetIds.removeAll(oldMusicSheetIds);
|
|
|
|
|
|
- if ((oldMusicSheetIds.size() + musicSheetIds.size()) > 10) {
|
|
|
+ if ((oldMusicSheetIds.size() + musicSheetIds.size()) > 10
|
|
|
+ && activityType == ActivityTypeEnum.EVALUATION) {
|
|
|
+
|
|
|
throw new BizException("添加的曲目不能多余10首");
|
|
|
}
|
|
|
if (CollectionUtils.isNotEmpty(musicSheetIds)) {
|
|
|
- baseMapper.addBatch(param.getActivityId(), user.getId(), musicSheetIds);
|
|
|
+ baseMapper.addBatch(param.getActivityId(), user.getId(), musicSheetIds, resourceType);
|
|
|
//更新修改人和修改时间
|
|
|
activityPlanService.update(Wrappers.<ActivityPlan>lambdaUpdate()
|
|
|
.set(ActivityPlan::getUpdateBy, user.getId())
|
|
@@ -102,4 +140,57 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
|
|
|
return page.setRecords(baseMapper.musicPage(page, query));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 活动老师信息
|
|
|
+ *
|
|
|
+ * @param page ActivityTeacherWrapper
|
|
|
+ * @param query ActivityTeacherQuery
|
|
|
+ * @return IPage<ActivityTeacherWrapper>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public IPage<ActivityTeacherWrapper> activityTeacherPageInfo(IPage<ActivityTeacherWrapper> page, ActivityTeacherQuery query) {
|
|
|
+
|
|
|
+ // 排除存在时间冲突的已参加活动老师
|
|
|
+ if (EStatus.ENABLE.match(query.getAddType())) {
|
|
|
+
|
|
|
+ ActivityPlan activityPlan = activityPlanService.getBaseMapper().selectById(query.getActivityId());
|
|
|
+
|
|
|
+ if (Objects.nonNull(activityPlan)) {
|
|
|
+
|
|
|
+ // 排除存在时间冲突的老师
|
|
|
+ query.activityType(ActivityTypeEnum.SHARE.getCode())
|
|
|
+ .resourceType(ActivityResourceEnum.TEACHER.getCode())
|
|
|
+ .activityState(EStatus.ENABLE.getValue())
|
|
|
+ .startTime(Optional.ofNullable(activityPlan.getActivityStart()).map(Date::getTime).orElse(null))
|
|
|
+ .endTime(Optional.ofNullable(activityPlan.getActivityEnd()).map(Date::getTime).orElse(null))
|
|
|
+ .activityId(null); // 重置活动匹配
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ActivityTeacherWrapper> wrappers = baseMapper.selectActivityTeacherPageInfo(page, query);
|
|
|
+
|
|
|
+ // 查询老师声部信息
|
|
|
+ List<Long> subjectIds = wrappers.stream()
|
|
|
+ .filter(x -> StringUtils.isNotEmpty(x.getSubjectId()))
|
|
|
+ .flatMap(x -> Arrays.stream(x.getSubjectId().split(",")))
|
|
|
+ .map(Long::parseLong).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Long, String> subjectNameMap = Maps.newHashMap();
|
|
|
+ if (CollectionUtils.isNotEmpty(subjectIds)) {
|
|
|
+
|
|
|
+ subjectNameMap = subjectService.findBySubjectByIdList(subjectIds).stream()
|
|
|
+ .collect(Collectors.toMap(Subject::getId, Subject::getName, (o, n) -> n));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ActivityTeacherWrapper item : wrappers) {
|
|
|
+
|
|
|
+ item.setSubjectName(subjectNameMap.entrySet().stream()
|
|
|
+ .filter(x -> item.getSubjectIds().contains(x.getKey()))
|
|
|
+ .map(Map.Entry::getValue)
|
|
|
+ .collect(Collectors.joining("、")));
|
|
|
+ }
|
|
|
+
|
|
|
+ return page.setRecords(wrappers);
|
|
|
+ }
|
|
|
+
|
|
|
}
|