xushengqiang 7 lat temu
rodzic
commit
07b34aaaba

+ 0 - 3
src/main/java/cn/efunbox/audio/controller/FileUploadController.java

@@ -51,9 +51,6 @@ public class FileUploadController {
     @Value("${aliyun.oss.file.prefix}")
     private String ossPrefix;
 
-    @Value("${efunbox.oss.img.url}")
-    private String imgURL;
-
     private static final String DOT = ".";
 
 

+ 11 - 6
src/main/java/cn/efunbox/audio/entity/Audio.java

@@ -1,7 +1,6 @@
 package cn.efunbox.audio.entity;
 
 
-import cn.efunbox.audio.consts.Status;
 import lombok.Data;
 import lombok.ToString;
 import org.hibernate.annotations.DynamicInsert;
@@ -10,7 +9,6 @@ import org.hibernate.annotations.DynamicUpdate;
 import javax.persistence.*;
 import java.io.Serializable;
 import java.sql.Timestamp;
-import java.util.Date;
 
 /**
  * 音视频资源
@@ -36,10 +34,6 @@ public class Audio implements Serializable, Cloneable {
     @Column
     private Long idGroup;
 
-    //专辑名,如儿歌
-    @Column
-    private String album;
-
     //专辑下的第几集
     @Column
     private Integer lesson;
@@ -80,6 +74,17 @@ public class Audio implements Serializable, Cloneable {
 //    private Date created;
     private Timestamp created;
 
+    private Timestamp modified;
+
+    @Column(name = "album_id")
+    private Long albumId;
+
+    //专辑名,如儿歌
+    @Transient
+    private String album;
+    @Transient
+    private String albumImage;
+
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }

+ 40 - 5
src/main/java/cn/efunbox/audio/impl/AudioServiceImpl.java

@@ -1,18 +1,24 @@
 package cn.efunbox.audio.impl;
 
 import cn.efunbox.audio.consts.MediaType;
+import cn.efunbox.audio.entity.Album;
 import cn.efunbox.audio.entity.Audio;
 import cn.efunbox.audio.repository.AlbumRepo;
 import cn.efunbox.audio.repository.AudioRepo;
 import cn.efunbox.audio.service.AudioService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Created by yao on 17-9-26.
@@ -25,6 +31,9 @@ public class AudioServiceImpl implements AudioService {
     @Autowired
     AlbumRepo albumRepo;
 
+    @Value("${efunbox.oss.img.url}")
+    private String imgURL;
+
     @Override
     public Audio GetOne(Long id){
         Audio audio = audioRepo.findById(id);
@@ -41,9 +50,35 @@ public class AudioServiceImpl implements AudioService {
             list = audioRepo.findByMediaType(mediaType, pageable);
         else
             list = audioRepo.findAll(pageable);
+
+        fillAlbum(list.getContent());
+
         return list;
     }
 
+    private void fillAlbum(List<Audio> list) {
+
+        List<Long> albumIds = new ArrayList<>();
+        list.stream().forEach(audio -> albumIds.add(audio.getAlbumId()));
+
+        List<Album> albumList = albumRepo.findByIdIn(albumIds);
+
+        if (CollectionUtils.isEmpty(albumList)) {
+            return;
+        }
+
+        Map<Long, Album> albumMap = albumList.stream().collect(Collectors.toMap(Album::getId, album -> album));
+
+        list.stream().forEach(audio -> {
+            Album album = albumMap.get(audio.getAlbumId());
+            if (Objects.nonNull(album)) {
+                audio.setAlbum(album.getName());
+                audio.setAlbumImage(imgURL + album.getImage());
+            }
+        });
+
+    }
+
     @Override
     public Page<Audio> SearchByIdGroup(int mediaType, Long idGroup, int page, int size){
         if(size<=0)
@@ -83,9 +118,9 @@ public class AudioServiceImpl implements AudioService {
         List<Long> albumIds = albumRepo.findIdsByNameLike(album);
         List<Audio> list = null;
         if(mediaType== MediaType.AUDIO.getCode() || mediaType==MediaType.VIDEO.getCode())
-            list = audioRepo.findByMediaTypeAndAlbumIn(mediaType, albumIds);
+            list = audioRepo.findByMediaTypeAndAlbumIdIn(mediaType, albumIds);
         else
-            list = audioRepo.findByAlbumIn(albumIds);
+            list = audioRepo.findByAlbumIdIn(albumIds);
         return list;
     }
 
@@ -97,11 +132,11 @@ public class AudioServiceImpl implements AudioService {
         List<Long> albumIds = albumRepo.findIdsByNameLike(album);
         List<Audio> list = null;
         if(mediaType== MediaType.AUDIO.getCode() || mediaType==MediaType.VIDEO.getCode())
-            list = audioRepo.findByMediaTypeAndNameAndAlbumIn(mediaType, name, albumIds);
+            list = audioRepo.findByMediaTypeAndNameAndAlbumIdIn(mediaType, name, albumIds);
         else
-            list = audioRepo.findByNameAndAlbumIn(name, albumIds);
+            list = audioRepo.findByNameAndAlbumIdIn(name, albumIds);
         if(CollectionUtils.isEmpty(list))
-            list = audioRepo.findByNameLikeAndAlbumIn(name, albumIds);
+            list = audioRepo.findByNameLikeAndAlbumIdIn(name, albumIds);
 
         return list;
     }

+ 1 - 0
src/main/java/cn/efunbox/audio/repository/AlbumRepo.java

@@ -20,4 +20,5 @@ public interface AlbumRepo extends JpaRepository<Album, Long> {
     List<Album> findByNameLike(String name);
 
 
+    List<Album> findByIdIn(List<Long> albumIds);
 }

+ 6 - 16
src/main/java/cn/efunbox/audio/repository/AudioRepo.java

@@ -33,35 +33,25 @@ public interface AudioRepo extends JpaRepository<Audio, Long> {
 //    @Query("from Audio a where a.media_type=:mediaType and a.name LIKE :name")
 //    List<Audio> findByMediaTypeAndNameLike(Integer mediaType, String name);
 
-    List<Audio> findByNameContaining(String name);
 
     Page<Audio> findByIdGroup(Long idGroup, Pageable pageable);
 
     Page<Audio> findByMediaTypeAndIdGroup(Integer mediaType, Long idGroup, Pageable pageable);
 
-    List<Audio> findByAlbum( String Album);
-
-    List<Audio> findByMediaTypeAndAlbum(Integer mediaType, String Album);
-
-    List<Audio> findByAlbumLike(String Album);
-
-    List<Audio> findByNameAndAlbum(String name, String Album);
-
-    List<Audio> findByMediaTypeAndNameAndAlbum(Integer mediaType, String name, String Album);
 
 //    @Query("from Audio a where a.name like CONCAT('%',:name,'%') and a.album like CONCAT('%',:album,'%') ")
 //    List<Audio> searchByNameAndAlbum(@Param("name") String name, @Param("album") String album);
 
-    List<Audio> findByMediaTypeAndAlbumIn(int mediaType, List<Long> albumIds);
+    List<Audio> findByMediaTypeAndAlbumIdIn(int mediaType, List<Long> albumIds);
 
-    List<Audio> findByAlbumIn(List<Long> albumIds);
+    List<Audio> findByAlbumIdIn(List<Long> albumIds);
 
-    List<Audio> findByMediaTypeAndNameAndAlbumIn(int mediaType, String name, List<Long> albumIds);
+    List<Audio> findByMediaTypeAndNameAndAlbumIdIn(int mediaType, String name, List<Long> albumIds);
 
-    List<Audio> findByNameAndAlbumIn(String name, List<Long> albumIds);
+    List<Audio> findByNameAndAlbumIdIn(String name, List<Long> albumIds);
 
-    @Query("from Audio a where a.name like CONCAT('%',:name,'%') and a.album in :albumIds")
-    List<Audio> findByNameLikeAndAlbumIn(@Param("name") String name, @Param("albumIds") List<Long> albumIds);
+    @Query("from Audio a where a.name like CONCAT('%',:name,'%') and a.albumId in :albumIds")
+    List<Audio> findByNameLikeAndAlbumIdIn(@Param("name") String name, @Param("albumIds") List<Long> albumIds);
 
     @Query("from Audio a where a.name LIKE CONCAT('%',:name,'%')")
     List<Audio> findByNameLike(@Param("name") String name);