소스 검색

fix:专辑列表展示收藏

liujunchi 3 년 전
부모
커밋
3f892e486f

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java

@@ -30,6 +30,9 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty("专辑状态0:停用,1:启用")
     private YesOrNoEnum albumStatus;
 
+    @ApiModelProperty("登录用户id")
+    private Long userId;
+
 
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
@@ -49,6 +52,13 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty(hidden = true)
     private List<Long> subjectIdList;
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 
     public String getSubjectIds() {
         return subjectIds;

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumFavoriteService.java

@@ -21,4 +21,13 @@ public interface AlbumFavoriteService extends IService<AlbumFavorite> {
      * @return list
      */
     List<AlbumFavorite> getFavorite(Long studentId, Long albumId);
+
+    /**
+     * 获取收藏信息
+     *
+     * @param userId 用户id
+     * @param albumIds 专辑id
+     * @return
+     */
+    List<Long> selectFavorite(Long userId, List<Long> albumIds);
 }

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

@@ -8,8 +8,11 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * AlbumFavoriteService服务实现类
@@ -37,4 +40,17 @@ public class AlbumFavoriteServiceImpl extends ServiceImpl<AlbumFavoriteDao,Album
                     .eq(AlbumFavorite::getUserId, studentId)
                     .list();
     }
+
+    @Override
+    public List<Long> selectFavorite(Long userId, List<Long> albumIds) {
+        List<AlbumFavorite> list = this.lambdaQuery()
+                                       .in(AlbumFavorite::getAlbumId, albumIds)
+                                       .eq(AlbumFavorite::getUserId, userId)
+                                       .list();
+
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream().map(AlbumFavorite::getAlbumId).collect(Collectors.toList());
+    }
 }

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

@@ -203,7 +203,21 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 
     @Override
     public IPage<MusicAlbumVo> selectStudentPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query) {
-        return page.setRecords(baseMapper.selectStudentPage(page,query));
+        IPage<MusicAlbumVo> iPage = page.setRecords(baseMapper.selectStudentPage(page, query));
+        List<MusicAlbumVo> records = iPage.getRecords();
+        List<Long> albumIds = records.stream().map(MusicAlbumVo::getId).collect(Collectors.toList());
+        if (query.getUserId() == null || CollectionUtils.isEmpty(albumIds)) {
+            return iPage;
+        }
+        albumIds = albumFavoriteService.selectFavorite(query.getUserId(),albumIds);
+        for (MusicAlbumVo record : records) {
+            if(albumIds.contains(record.getId())) {
+                record.setFavorite(YesOrNoEnum.YES);
+            } else {
+                record.setFavorite(YesOrNoEnum.NO);
+            }
+        }
+        return iPage;
     }
 
     private boolean checkNameRepeat(String albumName, Long id) {

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicAlbumVo.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -11,6 +12,11 @@ import io.swagger.annotations.ApiModelProperty;
  */
 public class MusicAlbumVo extends MusicAlbum {
 
+
+    @ApiModelProperty("收藏0:否,1:是")
+    private YesOrNoEnum favorite = YesOrNoEnum.NO;
+
+
     @ApiModelProperty("教材标签")
     private String musicTagNames;
 
@@ -23,6 +29,14 @@ public class MusicAlbumVo extends MusicAlbum {
     @ApiModelProperty("专辑声部")
     private String subjectNames;
 
+    public YesOrNoEnum getFavorite() {
+        return favorite;
+    }
+
+    public void setFavorite(YesOrNoEnum favorite) {
+        this.favorite = favorite;
+    }
+
     public String getSubjectNames() {
         return subjectNames;
     }

+ 5 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java

@@ -44,6 +44,11 @@ public class OpenMusicAlbumController extends BaseController {
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
     public HttpResponseResult<PageInfo<MusicAlbumVo>> list(@RequestBody MusicAlbumSearch query) {
 
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser != null && sysUser.getId() != null) {
+            query.setUserId(sysUser.getId());
+        }
+
         // 检查app版本
         query.setAuditVersion(YesOrNoEnum.NO);
         query.setAlbumStatus(YesOrNoEnum.YES);