瀏覽代碼

老师作品

liujc 1 年之前
父節點
當前提交
d669fce56a
共有 13 個文件被更改,包括 481 次插入119 次删除
  1. 2 47
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/UserMusicStarController.java
  2. 2 34
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/open/OpenUserMusicStarController.java
  3. 106 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/UserMusicController.java
  4. 79 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/UserMusicStarController.java
  5. 75 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/open/OpenUserMusicController.java
  6. 39 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/open/OpenUserMusicStarController.java
  7. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java
  8. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserMusicStarService.java
  9. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  10. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java
  11. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  12. 46 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserMusicServiceImpl.java
  13. 98 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserMusicStarServiceImpl.java

+ 2 - 47
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/UserMusicStarController.java

@@ -67,54 +67,9 @@ public class UserMusicStarController {
     @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 HttpResponseResult.succeed(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, Student> studentMap = studentService.getMapByIds(studentIds);
-        Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> userMap = sysUserService.getMapByIds(studentIds);
-
-        for (UserMusicStarWrapper.UserMusicStar userMusicStar : userMusicStars) {
-            Student student = studentMap.get(userMusicStar.getUserId());
-            if (student != null){
-                userMusicStar.setSubjectId(student.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());
-
-        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 HttpResponseResult.succeed(QueryInfo.pageInfo(pages,userMusicStars));
+        return HttpResponseResult.succeed(QueryInfo.pageInfo(pages));
     }
 
 

+ 2 - 34
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/open/OpenUserMusicStarController.java

@@ -1,12 +1,9 @@
 package com.yonge.cooleshow.student.controller.open;
 
-import com.alibaba.fastjson.JSON;
 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.common.response.template.R;
-import com.yonge.cooleshow.biz.dal.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.entity.UserMusicStar;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.UserMusicStarService;
@@ -14,20 +11,13 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserMusicStarWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 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
@@ -49,30 +39,8 @@ public class OpenUserMusicStarController {
     @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());
-            }
-        }
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
 
-        return R.from(QueryInfo.pageInfo(pages,userMusicStars));
+        return R.from(QueryInfo.pageInfo(pages));
     }
 }

+ 106 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/UserMusicController.java

@@ -0,0 +1,106 @@
+package com.yonge.cooleshow.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.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.UserMusic;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.UserMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.UserMusicWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.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;
+
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.failed;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController {
+
+    @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 HttpResponseResult.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());
+        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 HttpResponseResult.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());
+        userMusic.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicService.save(userMusic);
+
+        return HttpResponseResult.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 HttpResponseResult.succeed(true);
+    }
+}

+ 79 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/UserMusicStarController.java

@@ -0,0 +1,79 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.alibaba.fastjson.JSON;
+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.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+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.service.*;
+import com.yonge.cooleshow.biz.dal.wrapper.UserMusicStarWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.util.StringUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+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;
+
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.failed;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @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 HttpResponseResult.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());
+        star.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return HttpResponseResult.succeed();
+    }
+}

+ 75 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/open/OpenUserMusicController.java

@@ -0,0 +1,75 @@
+package com.yonge.cooleshow.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.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.UserMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.UserMusicWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.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 {
+
+    @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 HttpResponseResult.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 HttpResponseResult.succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 39 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,39 @@
+package com.yonge.cooleshow.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.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.UserMusicStarService;
+import com.yonge.cooleshow.biz.dal.wrapper.UserMusicStarWrapper;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+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;
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public R<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return R.from(QueryInfo.pageInfo(pages));
+    }
+}

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -17,6 +17,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 教师表 服务类
@@ -183,4 +184,6 @@ public interface TeacherService extends IService<Teacher> {
     void updateTenant(TeacherWrapper.UpdateTenant updateTenant,Long userId);
 
     UserPaymentOrderWrapper.AccountTenantTo teacherSettlementFrom(Long teacherId,Long recomUserId);
+
+    Map<Long, Teacher> getMapByIds(List<Long> teacherIds);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/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);
 
     /**
      * 添加

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java

@@ -175,7 +175,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
             return new HashMap<>();
         }
 
-        List<Subject> subjectList = subjectDao.findBySubjectByIdList(subjectIds.stream().collect(Collectors.joining(",")));
+        List<Subject> subjectList = subjectDao.findBySubjectByIdList(subjectIds.stream()
+            .filter(StringUtils::isNotBlank).collect(Collectors.joining(",")));
         if(CollectionUtils.isEmpty(subjectList)){
             return new HashMap<>();
         }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -60,6 +60,9 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	@Autowired
 	private SysMusicCompareWeekDataService sysMusicCompareWeekDataService;
 
+    @Autowired
+    private UserMusicService userMusicService;
+
 	@Override
 	public BaseDAO<Long, SysMusicCompareRecord> getDAO() {
 		return sysMusicCompareRecordDao;
@@ -296,6 +299,16 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		if(Objects.nonNull(sysMusicScore)){
 			jsonObject.put("sysMusicScoreName", sysMusicScore.getMusicSheetName());
 		}
+
+
+        // 上传过作品,用作品视频路径覆盖上传视频路径
+        // ID集合
+        Map<Long, UserMusic> userMusicMap = userMusicService.getMapByMusicPracticeRecordIds(Lists.newArrayList(recordId));
+
+        UserMusic userMusic = userMusicMap.get(recordId);
+        if (Objects.nonNull(userMusic)) {
+            jsonObject.put("videoFilePath", userMusic.getVideoUrl());
+        }
 		return jsonObject;
 	}
 

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -1184,4 +1184,19 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
         return accountTenantTo;
     }
+
+    @Override
+    public Map<Long, Teacher> getMapByIds(List<Long> teacherIds) {
+
+        if (CollectionUtils.isEmpty(teacherIds)) {
+            return Collections.emptyMap();
+        }
+
+        List<Teacher> teachers = getBaseMapper().selectBatchIds(teacherIds);
+        if (CollectionUtils.isEmpty(teachers)) {
+            return Collections.emptyMap();
+        }
+
+        return teachers.stream().collect(Collectors.toMap(Teacher::getUserId, o -> o, (o, n) -> n));
+    }
 }

+ 46 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserMusicServiceImpl.java

@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.*;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.mapper.UserMusicMapper;
 import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.wrapper.UserMusicStarWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserMusicWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.EUserMusicType;
@@ -19,10 +21,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -58,6 +57,10 @@ public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic
 
     @Autowired
     private SysConfigService sysConfigService;
+
+    @Autowired
+    private TeacherService teacherService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -216,15 +219,6 @@ public class UserMusicServiceImpl extends ServiceImpl<UserMusicMapper, UserMusic
             }
         }
 
-
-//        Map<Long, Integer> mapByUserMusicIds = userMusicStarService.getStarCountMapByUserMusicIds(ids);
-//        for (UserMusicWrapper.UserMusic record : records) {
-//            Integer starCount = mapByUserMusicIds.get(record.getId());
-//            if (starCount != null) {
-//                record.setLikeNum(starCount);
-//            }
-//        }
-
         // 评测记录ID集合
         List<Long> musicPracticeRecordIds = records.stream()
             .map(UserMusicWrapper.UserMusic::getMusicPracticeRecordId).collect(Collectors.toList());
@@ -250,22 +244,38 @@ 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<Long, Student> studentMap = studentService.getMapByIds(userIds);
+
+        // 学生ID集合
+        List<Long> studentIds = records.stream().filter(o -> o.getClientType() == ClientEnum.STUDENT).map(UserMusicWrapper.UserMusic::getUserId).collect(Collectors.toList());
+
+        Map<Long, Student> studentMap = studentService.getMapByIds(studentIds);
+
+
+        // 老师ID集合
+        List<Long> teacherIds = records.stream().filter(o -> o.getClientType() == ClientEnum.TEACHER).map(UserMusicWrapper.UserMusic::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 (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());
-            if (student != null) {
+            if (record.getClientType() == ClientEnum.STUDENT) {
+                Student student = studentMap.get(record.getUserId());
+                if (student != null) {
 
-                record.setSubjectId(student.getSubjectId());
-                record.setVipFlag(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(new Date()));
+                    record.setSubjectId(student.getSubjectId());
+                    record.setVipFlag(student.getMembershipEndTime() != null && student.getMembershipEndTime().after(new Date()));
+                }
+            } else {
+                Teacher teacher = teacherMap.get(record.getUserId());
+                if (teacher != null) {
+                    record.setSubjectId(teacher.getSubjectId());
+                    record.setVipFlag(teacher.getMembershipEndTime() != null && teacher.getMembershipEndTime().after(new Date()));
+                }
             }
         }
 
@@ -278,17 +288,24 @@ 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 (StringUtils.isNotBlank(record.getSubjectId())) {
+
+                List<Integer> collect = Arrays.stream(record.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);
+                    }
+                }
+                record.setSubjectName(subjects.stream().map(Subject::getName).collect(Collectors.joining(",")));
+
             }
             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());
             }

+ 98 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserMusicStarServiceImpl.java

@@ -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);
     }
 
     /**