|
@@ -3,21 +3,29 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.Student;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.Subject;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.UserMusicStar;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.UserMusicMapper;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.UserMusicStarMapper;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.StudentService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.UserMusicStarService;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.UserMusicStarWrapper;
|
|
|
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
import com.yonge.toolset.base.util.StringUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -31,12 +39,24 @@ public class UserMusicStarServiceImpl extends ServiceImpl<UserMusicStarMapper, U
|
|
|
@Autowired
|
|
|
private UserMusicMapper userMusicMapper;
|
|
|
|
|
|
- /**
|
|
|
+ @Autowired
|
|
|
+ private StudentService studentService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TeacherService teacherService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SubjectService subjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserService sysUserService;
|
|
|
+
|
|
|
+ /**
|
|
|
* 查询详情
|
|
|
* @param id 详情ID
|
|
|
* @return UserMusicStar
|
|
|
*/
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public UserMusicStar detail(Long id) {
|
|
|
|
|
|
return baseMapper.selectById(id);
|
|
@@ -49,9 +69,80 @@ public class UserMusicStarServiceImpl extends ServiceImpl<UserMusicStarMapper, U
|
|
|
* @return IPage<UserMusicStar>
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query) {
|
|
|
+ public IPage<UserMusicStarWrapper.UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query) {
|
|
|
+
|
|
|
+ IPage<UserMusicStar> pages = page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ IPage<UserMusicStarWrapper.UserMusicStar> musicStarIPage = pages.convert(o -> JSON.parseObject(JSON.toJSONString(o), UserMusicStarWrapper.UserMusicStar.class));
|
|
|
|
|
|
- return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ List<UserMusicStarWrapper.UserMusicStar> userMusicStars = musicStarIPage.getRecords();
|
|
|
+ if (CollectionUtils.isEmpty(userMusicStars)){
|
|
|
+ return musicStarIPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ userMusicStars = JSON.parseArray(JSON.toJSONString(userMusicStars), UserMusicStarWrapper.UserMusicStar.class);
|
|
|
+
|
|
|
+ // 学生ID集合
|
|
|
+ List<Long> studentIds = userMusicStars.stream().filter(o -> o.getClientType() == ClientEnum.STUDENT)
|
|
|
+ .map(UserMusicStarWrapper.UserMusicStar::getUserId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Long, Student> studentMap = studentService.getMapByIds(studentIds);
|
|
|
+
|
|
|
+
|
|
|
+ // 老师ID集合
|
|
|
+ List<Long> teacherIds = userMusicStars.stream().filter(o -> o.getClientType() == ClientEnum.TEACHER)
|
|
|
+ .map(UserMusicStarWrapper.UserMusicStar::getUserId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Long, Teacher> teacherMap = teacherService.getMapByIds(teacherIds);
|
|
|
+ Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> userMap = sysUserService.getMapByIds(studentIds);
|
|
|
+
|
|
|
+ for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
|
|
|
+ if (userMusicStar.getClientType() == ClientEnum.STUDENT) {
|
|
|
+ Student student = studentMap.get(userMusicStar.getUserId());
|
|
|
+ if (student != null) {
|
|
|
+ userMusicStar.setSubjectId(student.getSubjectId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Teacher teacher = teacherMap.get(userMusicStar.getUserId());
|
|
|
+ if (teacher != null) {
|
|
|
+ userMusicStar.setSubjectId(teacher.getSubjectId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = userMap.get(userMusicStar.getUserId());
|
|
|
+ if (sysUser != null) {
|
|
|
+ userMusicStar.setUserName(sysUser.getUsername());
|
|
|
+ userMusicStar.setUserAvatar(sysUser.getAvatar());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 声部ID集合
|
|
|
+ List<String> subjectIds = studentMap.values().stream().map(Student::getSubjectId).collect(Collectors.toList());
|
|
|
+ subjectIds.addAll(teacherMap.values().stream().map(Teacher::getSubjectId).collect(Collectors.toList()));
|
|
|
+
|
|
|
+ Map<Integer, Subject> subjectMap =
|
|
|
+ subjectService.getMapByIds(subjectIds);
|
|
|
+
|
|
|
+ for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
|
|
|
+
|
|
|
+
|
|
|
+ if (StringUtil.isEmpty(userMusicStar.getSubjectId())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(userMusicStar.getSubjectId())) {
|
|
|
+
|
|
|
+ List<Integer> collect = Arrays.stream(userMusicStar.getSubjectId().split(",")).map(Integer::parseInt).collect(Collectors.toList());
|
|
|
+ List<Subject> subjects = new ArrayList<>();
|
|
|
+ for (Integer integer : collect) {
|
|
|
+ Subject subject = subjectMap.get(integer);
|
|
|
+ if (subject != null) {
|
|
|
+ subjects.add(subject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ userMusicStar.setSubjectName(subjects.stream().map(Subject::getName).collect(Collectors.joining(",")));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return musicStarIPage.setRecords(userMusicStars);
|
|
|
}
|
|
|
|
|
|
/**
|