liujc hai 1 ano
pai
achega
d696d54569

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TenantAlbumMusic.java

@@ -59,4 +59,13 @@ public class TenantAlbumMusic implements Serializable {
 	@TableField(value = "create_time_")
     private Date createTime;
 
+
+    @ApiModelProperty("更新时间")
+    @TableField(value = "type_")
+    private String type;
+
+    @ApiModelProperty("创建时间")
+    @TableField(value = "level_")
+    private String level;
+
 }

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantAlbumMusicService.java

@@ -39,5 +39,10 @@ public interface TenantAlbumMusicService extends IService<TenantAlbumMusic>  {
      * @return Boolean
      */
      Boolean update(TenantAlbumMusicWrapper.TenantAlbumMusic tenantAlbumMusic);
-     
+
+    /**
+     * 获取机构专辑曲目查询条件
+     */
+    TenantAlbumMusicWrapper.TenantAlbumMusicSelectData getTenantAlbumMusicQuery(TenantAlbumMusicWrapper.TenantAlbumMusicSelect query);
+
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserTenantAlbumRecordService.java

@@ -6,6 +6,8 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 
+import java.util.List;
+
 /**
  * 购买训练工具记录
  * 2023-07-24 13:32:24
@@ -49,4 +51,12 @@ public interface UserTenantAlbumRecordService extends IService<UserTenantAlbumRe
      * @param clientType 客户端类型
      */
     UserTenantAlbumRecord getNewestByTenantIdAndUserId(Long tenantId, Long userId, ClientEnum clientType);
+
+    /**
+     * 获取生效中的专辑ID
+     *
+     * @param userId
+     * @return
+     */
+    List<Long> getUseAlbumIdsByUserId(Long userId,ClientEnum clientType);
 }

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

@@ -3,13 +3,27 @@ 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.MusicSheet;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.service.*;
+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.springframework.beans.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
 import com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMusicMapper;
-import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 机构专辑曲目
@@ -19,12 +33,25 @@ import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
 @Service
 public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMapper, TenantAlbumMusic> implements TenantAlbumMusicService {
 
-	/**
+
+    @Autowired
+    private UserTenantAlbumRecordService userTenantAlbumRecordService;
+
+    @Autowired
+    private MusicSheetService musicSheetService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private MusicTagService musicTagService;
+
+    /**
      * 查询详情
      * @param id 详情ID
      * @return TenantAlbumMusic
      */
-	@Override
+    @Override
     public TenantAlbumMusic detail(Long id) {
         
         return baseMapper.selectById(id);
@@ -41,15 +68,15 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
     /**
      * 添加
      * @param tenantAlbumMusic TenantAlbumMusicWrapper.TenantAlbumMusic
      * @return Boolean
      */
     @Override
-    public Boolean add(TenantAlbumMusicWrapper.TenantAlbumMusic tenantAlbumMusic) {    	
-        
+    public Boolean add(TenantAlbumMusicWrapper.TenantAlbumMusic tenantAlbumMusic) {
+
         return this.save(JSON.parseObject(tenantAlbumMusic.jsonString(), TenantAlbumMusic.class));
     }
 
@@ -63,4 +90,69 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 
         return this.updateById(JSON.parseObject(tenantAlbumMusic.jsonString(), TenantAlbumMusic.class));       
     }
+
+
+    /**
+     * 获取机构专辑曲目查询条件
+     */
+    @Override
+    public TenantAlbumMusicWrapper.TenantAlbumMusicSelectData getTenantAlbumMusicQuery(TenantAlbumMusicWrapper.TenantAlbumMusicSelect query) {
+
+        TenantAlbumMusicWrapper.TenantAlbumMusicSelectData data = new TenantAlbumMusicWrapper.TenantAlbumMusicSelectData();
+
+        // 获取学生的专辑
+        List<Long> albumIds = userTenantAlbumRecordService.getUseAlbumIdsByUserId(query.getUserId(), ClientEnum.STUDENT);
+        albumIds.add(1686291824928468993L);
+        if (CollectionUtils.isEmpty(albumIds)) {
+            return data;
+        }
+
+        // 专辑曲目关联数据
+        List<TenantAlbumMusic> list = this.lambdaQuery()
+                .in(TenantAlbumMusic::getTenantAlbumId, albumIds)
+                .eq(query.getSubjectType() !=null,TenantAlbumMusic::getSubjectType, query.getSubjectType())
+                .eq(TenantAlbumMusic::getDelFlag, false)
+                .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return data;
+        }
+
+        List<Long> musicSheetIds = list.stream().map(o -> o.getMusicSheetId()).distinct().collect(Collectors.toList());
+
+        Collection<MusicSheet> musicSheets = musicSheetService.listByIds(musicSheetIds);
+
+        // 类型
+        List<String> types = list.stream().map(TenantAlbumMusic::getType).distinct().filter(StringUtils::isNotBlank).collect(Collectors.toList());
+        data.setTypes(types);
+        // 级别
+        List<String> levels = list.stream().map(TenantAlbumMusic::getLevel).distinct().filter(StringUtils::isNotBlank).collect(Collectors.toList());
+        data.setLevels(levels);
+
+        // 声部
+        List<Long> subjectIds = musicSheets.stream()
+                .map(MusicSheet::getMusicSubject)
+                .filter(StringUtils::isNotBlank).distinct()
+                .map(Long::parseLong).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(subjectIds)) {
+            List<Subject> subjects = subjectService.findBySubjectByIdList(subjectIds);
+            data.setSubjects(subjects);
+        }
+
+        // 标签
+        List<Long> musicTagIds = musicSheets.stream().flatMap(o -> {
+            if (StringUtils.isNotBlank(o.getMusicTag())) {
+                return Arrays.stream(o.getMusicTag().split(","));
+            }
+            return Stream.empty();
+
+        }).filter(StringUtils::isNotBlank).distinct().map(Long::parseLong).collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(musicTagIds)) {
+
+            List<MusicTag> tagList = musicTagService.listByIds(musicTagIds).parallelStream().collect(Collectors.toList());
+            data.setTags(tagList);
+        }
+
+        return data;
+
+    }
 }

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

@@ -4,6 +4,7 @@ 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.enums.ClientEnum;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -12,6 +13,11 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 购买训练工具记录
  * 2023-07-24 13:32:24
@@ -85,4 +91,21 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
                 .last("limit 1")
                 .one();
     }
+
+    @Override
+    public List<Long> getUseAlbumIdsByUserId(Long userId,ClientEnum clientType) {
+        if (userId == null) {
+            return new ArrayList<>();
+        }
+        List<UserTenantAlbumRecord> list = this.lambdaQuery()
+                .eq(UserTenantAlbumRecord::getUserId, userId)
+                .eq(UserTenantAlbumRecord::getClientType, clientType)
+                .le(UserTenantAlbumRecord::getEndTime, new Date())
+                .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream().map(UserTenantAlbumRecord::getTenantAlbumId).distinct().collect(Collectors.toList());
+
+    }
 }

+ 51 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TenantAlbumMusicWrapper.java

@@ -2,8 +2,13 @@ package com.yonge.cooleshow.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
 import java.util.Optional;
 
 import lombok.AllArgsConstructor;
@@ -60,4 +65,50 @@ public class TenantAlbumMusicWrapper {
         }
 	}
 
+
+
+
+    @Data
+    @ApiModel(" TenantAlbumMusicSelectQuery-机构专辑曲目查询对象")
+    public static class TenantAlbumMusicSelect {
+
+        @ApiModelProperty("声部分类(ENSEMBLE, MUSIC, SUBJECT)")
+        private SubjectTypeEnum subjectType;
+
+        @ApiModelProperty(value = "用户ID",hidden = true)
+        private Long userId;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static TenantAlbumMusic from(String json) {
+            return JSON.parseObject(json, TenantAlbumMusic.class);
+        }
+    }
+
+    @Data
+    @ApiModel(" TenantAlbumMusicSelectData-机构专辑曲目查询结果")
+    public static class TenantAlbumMusicSelectData {
+
+        @ApiModelProperty("声部集合")
+        private List<Subject> subjects;
+
+        @ApiModelProperty("级别集合")
+        private List<String> levels;
+
+        @ApiModelProperty("类型集合")
+        private List<String> types;
+
+        @ApiModelProperty("标签集合")
+        private List<MusicTag> tags;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static TenantAlbumMusic from(String json) {
+            return JSON.parseObject(json, TenantAlbumMusic.class);
+        }
+    }
 }

+ 72 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TenantAlbumSheetController.java

@@ -0,0 +1,72 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
+import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
+import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import io.swagger.annotations.*;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 专辑表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/tenantAlbumMusic")
+@Api(tags = "机构专辑曲目 API接口")
+public class TenantAlbumSheetController extends BaseController {
+
+    @Autowired
+    private TenantAlbumMusicService tenantAlbumMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "查询条件")
+    @PostMapping("/selectCondition")
+    public HttpResponseResult<TenantAlbumMusicWrapper.TenantAlbumMusicSelectData> selectCondition(@RequestBody TenantAlbumMusicWrapper.TenantAlbumMusicSelect query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId());
+        /*if(StringUtils.isBlank(query.getSubjectId())){
+        	Student student = studentService.getById(user.getId());
+        	query.setSubjectId(student.getSubjectId());
+        }*/
+        return succeed(tenantAlbumMusicService.getTenantAlbumMusicQuery(query));
+    }
+
+}