liujc 1 år sedan
förälder
incheckning
cfad6bc7cc

+ 2 - 47
mec-application/src/main/java/com/ym/mec/student/controller/UserMusicStarController.java

@@ -64,54 +64,9 @@ public class UserMusicStarController  extends BaseController {
     @PostMapping("/page")
     public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
 
-        IPage<UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
 
-        List<UserMusicStar> records = pages.getRecords();
-
-        List<UserMusicStarWrapper.UserMusicStar> userMusicStars = new ArrayList<>();
-        if (CollectionUtils.isEmpty(records)){
-            return succeed(QueryInfo.pageInfo(pages,userMusicStars));
-        }
-
-        userMusicStars = JSON.parseArray(JSON.toJSONString(records), UserMusicStarWrapper.UserMusicStar.class);
-
-        // 学生ID集合
-        List<Integer> studentIds = records.stream().map(UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
-
-        Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds);
-        Map<Long, SysUser> userMap = sysUserService.getMapByIds(studentIds);
-
-        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
-            Student student = studentMap.get(userMusicStar.getUserId());
-            if (student != null){
-                userMusicStar.setSubjectId(student.getSubjectId());
-            }
-            SysUser sysUser = userMap.get(userMusicStar.getUserId());
-            if (sysUser != null) {
-                userMusicStar.setUserName(sysUser.getUsername());
-                userMusicStar.setUserAvatar(sysUser.getAvatar());
-            }
-        }
-
-        // 声部ID集合
-        List<Integer> subjectIds = studentMap.values().stream().map(Student::getSubjectId).filter(StringUtils::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
-
-        Map<Integer, Subject> subjectMap =
-            subjectService.getMapByIds(subjectIds);
-
-        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
-
-
-            if (StringUtil.isEmpty(userMusicStar.getSubjectId())) {
-                continue;
-            }
-            Subject subject = subjectMap.get(Integer.parseInt(userMusicStar.getSubjectId()));
-            if (subject != null){
-                userMusicStar.setSubjectName(subject.getName());
-            }
-        }
-
-        return succeed(QueryInfo.pageInfo(pages,userMusicStars));
+        return succeed(QueryInfo.pageInfo(pages));
     }
 
 

+ 0 - 31
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicStarController.java

@@ -43,35 +43,4 @@ public class OpenUserMusicStarController {
     @Autowired
     private SysUserService sysUserService;
 
-
-    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
-    @PostMapping("/page")
-    public R<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
-
-        IPage<UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
-
-        List<UserMusicStar> records = pages.getRecords();
-
-        List<UserMusicStarWrapper.UserMusicStar> userMusicStars = new ArrayList<>();
-        if (CollectionUtils.isEmpty(records)){
-            return R.from(QueryInfo.pageInfo(pages,userMusicStars));
-        }
-
-        userMusicStars = JSON.parseArray(JSON.toJSONString(records), UserMusicStarWrapper.UserMusicStar.class);
-
-        // 学生ID集合
-        List<Long> studentIds = records.stream().map(UserMusicStar::getUserId).collect(Collectors.toList());
-
-        Map<Long, SysUser> mapByIds = sysUserService.getMapByIds(studentIds);
-
-        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
-            SysUser student = mapByIds.get(userMusicStar.getUserId());
-            if (student != null){
-                userMusicStar.setUserName(student.getUsername());
-                userMusicStar.setUserAvatar(student.getAvatar());
-            }
-        }
-
-        return R.from(QueryInfo.pageInfo(pages,userMusicStars));
-    }
 }

+ 106 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicController.java

@@ -0,0 +1,106 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build,
+            JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build());
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId().longValue());
+        query.setClientType(ClientEnum.TEACHER);
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query, userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "保存草稿/发布作品", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusic")
+    @PostMapping("/save")
+    public HttpResponseResult<JSONObject> add(@Validated @RequestBody UserMusicWrapper.AddUserMusic userMusic) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        userMusic.setUserId(user.getId().longValue());
+        userMusic.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicService.save(userMusic);
+
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除", notes = "用户曲目作品- 传入id")
+    @PostMapping("/remove")
+    public HttpResponseResult<Boolean> remove(@RequestParam String id) {
+
+        if (StringUtils.isBlank(id)) {
+            throw new BizException( "id不能为空");
+        }
+        List<String> list = Arrays.asList(id.split(","));
+
+        userMusicService.lambdaUpdate()
+            .in(UserMusic::getId, list)
+            .set(UserMusic::getDelFlag, true)
+            .update();
+
+        return succeed(true);
+    }
+}

+ 78 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicStarController.java

@@ -0,0 +1,78 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController  extends BaseController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+
+    @ApiOperation(value = "点赞/取消点赞")
+    @PostMapping("/star")
+    public HttpResponseResult<JSONObject> star(@Validated @RequestBody UserMusicStarWrapper.Star star) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        star.setUserId(user.getId().longValue());
+        star.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return succeed();
+    }
+}

+ 76 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicController.java

@@ -0,0 +1,76 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusic")
+@Api(tags = "用户曲目作品")
+public class OpenUserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build
+            ,userInfo);
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query
+            ,userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 29 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class OpenUserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/UserMusicStarService.java

@@ -27,7 +27,7 @@ public interface UserMusicStarService extends IService<UserMusicStar>  {
      * @param query UserMusicStarWrapper.UserMusicStarQuery
      * @return IPage<UserMusicStar>
      */
-    IPage<UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query);
+    IPage<UserMusicStarWrapper.UserMusicStar> selectPage(IPage<UserMusicStar> page, UserMusicStarWrapper.UserMusicStarQuery query);
 
     /**
      * 添加

+ 40 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicServiceImpl.java

@@ -8,6 +8,7 @@ import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.EUserMusicType;
 import com.ym.mec.biz.dal.mapper.UserMusicMapper;
 import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
@@ -53,6 +54,9 @@ public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic
     @Autowired
     private StudentService studentService;
 
+    @Autowired
+    private TeacherService teacherService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -242,20 +246,36 @@ public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic
         // 用户ID集合
         List<Long> userIds = records.stream().map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
         Map<Long, SysUser> userMap = sysUserService.getMapByIds(userIds);
-        Map<Integer, Student> studentMap = studentService.getMapByIds(userIds.stream().map(Long::intValue).collect(Collectors.toList()));
+
+        // 学生ID集合
+        List<Long> studentIds = records.stream().filter(o -> o.getClientType() == ClientEnum.STUDENT)
+            .map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+        Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds.stream().map(Long::intValue).collect(Collectors.toList()));
+
+        // 老师ID集合
+        List<Long> teacherIds = records.stream().filter(o -> o.getClientType() == ClientEnum.TEACHER)
+            .map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+        Map<Integer, Teacher> teacherMap = teacherService.getMapByIds(teacherIds.stream().map(Long::intValue).collect(Collectors.toList()));
         for (UserMusicWrapper.UserMusic record : records) {
             SysUser sysUser = userMap.get(record.getUserId());
             if (sysUser != null) {
                 record.setUsername(sysUser.getUsername());
                 record.setAvatar(sysUser.getAvatar());
-//                record.setCurrentGradeNum(sysUser.getCurrentGradeNum());
-//                record.setCurrentClass(sysUser.getCurrentClass());
             }
-            Student student = studentMap.get(record.getUserId().intValue());
-            if (student != null) {
-
-                record.setSubjectId(student.getSubjectId());
-                record.setVipFlag(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(new Date()));
+            if (record.getClientType() == ClientEnum.STUDENT) {
+                Student student = studentMap.get(record.getUserId().intValue());
+                if (student != null) {
+
+                    record.setCurrentGradeNum(student.getCurrentGradeNum());
+                    record.setCurrentClass(student.getCurrentClass());
+                    record.setSubjectId(student.getSubjectId());
+                    record.setVipFlag(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(new Date()));
+                }
+            } else {
+                Teacher teacher = teacherMap.get(record.getUserId().intValue());
+                if (teacher != null) {
+                    record.setSubjectId(teacher.getSubjectId());
+                }
             }
         }
 
@@ -270,17 +290,22 @@ public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic
             subjectService.getMapByIds(subjectIds);
 
         for (UserMusicWrapper.UserMusic record : records) {
-            if (StringUtil.isEmpty(record.getSubjectId())) {
-                continue;
-            }
-            Subject subject = subjectMap.get(Integer.parseInt(record.getSubjectId()));
-            if (subject != null) {
-                record.setSubjectName(subject.getName());
+            if (!StringUtil.isEmpty(record.getSubjectId())) {
+                String[] split = record.getSubjectId().split(",");
+                List<String> subjectNameList = new ArrayList<>();
+                for (String s : split) {
+                    Subject subject = subjectMap.get(Integer.parseInt(s));
+                    if (subject != null) {
+                        subjectNameList.add(subject.getName());
+                    }
+                }
+                record.setSubjectName(String.join(",", subjectNameList));
+
             }
             if (StringUtil.isEmpty(record.getMusicSheetSubjectId())) {
                 continue;
             }
-            subject = subjectMap.get(Integer.parseInt(record.getMusicSheetSubjectId()));
+            Subject subject = subjectMap.get(Integer.parseInt(record.getMusicSheetSubjectId()));
             if (subject != null) {
                 record.setMusicSheetSubjectName(subject.getName());
             }

+ 90 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/UserMusicStarServiceImpl.java

@@ -4,17 +4,25 @@ import com.alibaba.fastjson.JSON;
 import com.alipay.service.schema.util.StringUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.mapper.UserMusicMapper;
 import com.ym.mec.biz.dal.mapper.UserMusicStarMapper;
 import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
-import com.ym.mec.biz.service.UserMusicStarService;
+import com.ym.mec.biz.service.*;
 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.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +39,16 @@ public class UserMusicStarServiceImpl extends ServiceImpl<UserMusicStarMapper, U
     @Autowired
     private UserMusicMapper userMusicMapper;
 
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private TeacherService teacherService;
 	/**
      * 查询详情
      * @param id 详情ID
@@ -49,9 +67,78 @@ 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> userMusicStarIPage = page.setRecords(baseMapper.selectPage(page, query));
+        IPage<UserMusicStarWrapper.UserMusicStar> convert = userMusicStarIPage.convert(o -> JSON.parseObject(JSON.toJSONString(o), UserMusicStarWrapper.UserMusicStar.class));
+
+
+        List<UserMusicStarWrapper.UserMusicStar> records = convert.getRecords();
+
+        List<UserMusicStarWrapper.UserMusicStar> userMusicStars = new ArrayList<>();
+        if (CollectionUtils.isEmpty(records)){
+            return convert;
+        }
+
+        userMusicStars = JSON.parseArray(JSON.toJSONString(records), UserMusicStarWrapper.UserMusicStar.class);
+
+        // 学生ID集合
+        List<Integer> studentIds = records.stream().map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
 
-        return page.setRecords(baseMapper.selectPage(page, query));
+        Map<Long, SysUser> userMap = sysUserService.getMapByIds(studentIds);
+        studentIds = records.stream().filter(o ->o.getClientType() == ClientEnum.STUDENT)
+            .map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
+
+        Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds);
+
+
+        studentIds = records.stream().filter(o ->o.getClientType() == ClientEnum.TEACHER)
+            .map(UserMusicStarWrapper.UserMusicStar::getUserId).map(Long::intValue).collect(Collectors.toList());
+
+        Map<Integer, Teacher> teacherMap = teacherService.getMapByIds(studentIds);
+        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
+            if (userMusicStar.getClientType() == ClientEnum.STUDENT) {
+                Student student = studentMap.get(userMusicStar.getUserId().intValue());
+                if (student != null) {
+                    userMusicStar.setSubjectId(student.getSubjectId());
+                }
+            } else {
+                Teacher teacher = teacherMap.get(userMusicStar.getUserId().intValue());
+                if (teacher != null) {
+                    userMusicStar.setSubjectId(teacher.getSubjectId());
+                }
+
+            }
+            SysUser sysUser = userMap.get(userMusicStar.getUserId());
+            if (sysUser != null) {
+                userMusicStar.setUserName(sysUser.getUsername());
+                userMusicStar.setUserAvatar(sysUser.getAvatar());
+            }
+        }
+
+        // 声部ID集合
+        List<Integer> subjectIds = studentMap.values().stream().map(Student::getSubjectId).filter(StringUtils::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
+
+        Map<Integer, Subject> subjectMap =
+            subjectService.getMapByIds(subjectIds);
+
+        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
+
+
+            if (!StringUtil.isEmpty(userMusicStar.getSubjectId())) {
+                String[] split = userMusicStar.getSubjectId().split(",");
+                List<String> subjectNameList = new ArrayList<>();
+                for (String s : split) {
+                    Subject subject = subjectMap.get(Integer.parseInt(s));
+                    if (subject != null) {
+                        subjectNameList.add(subject.getName());
+                    }
+                }
+                userMusicStar.setSubjectName(String.join(",", subjectNameList));
+
+            }
+        }
+        return convert.setRecords(userMusicStars);
     }
 
     /**