Selaa lähdekoodia

获取单个音频信息

xushengqiang 6 vuotta sitten
vanhempi
commit
8852eacbc3

+ 2 - 1
src/main/java/cn/efunbox/audio/SearchVO.java

@@ -3,6 +3,7 @@ package cn.efunbox.audio;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.List;
 
 /**
@@ -27,5 +28,5 @@ public class SearchVO implements Serializable {
 
     private List<Long> idGroups;
 
-    private List<Long> idAlbums;
+    private List<BigInteger> idAlbums;
 }

+ 2 - 2
src/main/java/cn/efunbox/audio/config/Config.java

@@ -45,12 +45,12 @@ public class Config extends WebMvcConfigurerAdapter{
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(authInterceptor())
-                .addPathPatterns("/audio/search","/audio/searchList")
+                .addPathPatterns("/audio/search","/audio/searchList","/audio/{id}")
                 .excludePathPatterns("/device/**", "/error");
 
         registry.addInterceptor(adminInterceptor())
                 .addPathPatterns("/**", "/device/update", "/device/delete")
-                .excludePathPatterns("/device/**", "/error", "/admin/login", "/audio/search","/file/**","/audio/searchList");
+                .excludePathPatterns("/device/**", "/error", "/admin/login", "/audio/search","/file/**","/audio/searchList","/audio/{id}");
 
         registry.addInterceptor(ignoreOptionsInterceptor())
                 .addPathPatterns("/**");

+ 2 - 2
src/main/java/cn/efunbox/audio/controller/AlbumController.java

@@ -45,7 +45,7 @@ public class AlbumController {
 
         album = albumService.Insert(album);
 
-        TrailController.Insert(adminService, trailService, request, "album", album.getId(), " 新建专辑:" + album.getName());
+        TrailController.Insert(adminService, trailService, request, "album", album.getId().longValue(), " 新建专辑:" + album.getName());
 
         HttpUtil.responseOkData(request, response, album);
         return;
@@ -60,7 +60,7 @@ public class AlbumController {
         }
         album = albumService.Update(album);
 
-        TrailController.Insert(adminService, trailService, request, "album", album.getId(), " 更新专辑:" + album.getName());
+        TrailController.Insert(adminService, trailService, request, "album", album.getId().longValue(), " 更新专辑:" + album.getName());
 
         HttpUtil.responseOkData(request, response, album);
         return;

+ 9 - 4
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -18,10 +18,7 @@ import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -407,6 +404,14 @@ public class AudioController {
         return;
     }
 
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    public void detail(HttpServletRequest request, HttpServletResponse response, @PathVariable(name = "id") Long id){
+
+        Audio audio = audioService.getAudioInfo(id);
+        HttpUtil.responseOkData(request, response, audio);
+        return;
+    }
+
     /**
      * 过滤出渠道有访问权限的音频列表
      * @param audioList

+ 2 - 1
src/main/java/cn/efunbox/audio/entity/Album.java

@@ -7,6 +7,7 @@ import org.hibernate.annotations.DynamicUpdate;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.sql.Timestamp;
 
 /**
@@ -23,7 +24,7 @@ public class Album implements Serializable {
 
     @Id
     @GeneratedValue
-    private Long id;
+    private BigInteger id;
 
     private String name;
 

+ 3 - 1
src/main/java/cn/efunbox/audio/entity/Audio.java

@@ -8,6 +8,7 @@ import org.hibernate.annotations.DynamicUpdate;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.sql.Timestamp;
 
 /**
@@ -25,6 +26,7 @@ public class Audio implements Serializable, Cloneable {
 
     @Id
     @GeneratedValue
+    @Column(name = "id")
     private Long id;
 
     @Column
@@ -77,7 +79,7 @@ public class Audio implements Serializable, Cloneable {
     private Timestamp modified;
 
     @Column(name = "album_id")
-    private Long albumId;
+    private BigInteger albumId;
 
     //专辑名,如儿歌
     @Transient

+ 3 - 2
src/main/java/cn/efunbox/audio/impl/AlbumServiceImpl.java

@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.math.BigInteger;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -27,7 +28,7 @@ public class AlbumServiceImpl implements AlbumService {
     private AlbumRepo albumRepo;
 
     @Override
-    public Album GetOne(Long id) {
+    public Album GetOne(BigInteger id) {
         return albumRepo.findOne(id);
     }
 
@@ -63,7 +64,7 @@ public class AlbumServiceImpl implements AlbumService {
         return albumRepo.findByNameLike(name);
     }
 
-    public List<Long> findLikeName(String name) {
+    public List<BigInteger> findLikeName(String name) {
         return albumRepo.findIdsByNameLike(name);
     }
 

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

@@ -18,6 +18,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -65,7 +66,7 @@ public class AudioServiceImpl implements AudioService {
     private void fillAlbum(List<Audio> list) {
 
         List<Long> albumIds = new ArrayList<>();
-        list.stream().forEach(audio -> albumIds.add(audio.getAlbumId()));
+//        list.stream().forEach(audio -> albumIds.add(audio.getAlbumId()));
 
         List<Album> albumList = albumRepo.findByIdIn(albumIds);
 
@@ -73,7 +74,7 @@ public class AudioServiceImpl implements AudioService {
             return;
         }
 
-        Map<Long, Album> albumMap = albumList.stream().collect(Collectors.toMap(Album::getId, album -> album));
+        Map<BigInteger, Album> albumMap = albumList.stream().collect(Collectors.toMap(Album::getId, album -> album));
 
         list.stream().forEach(audio -> {
             Album album = albumMap.get(audio.getAlbumId());
@@ -125,7 +126,8 @@ public class AudioServiceImpl implements AudioService {
     public List<Audio> SearchByAlbum(int mediaType, String album){
         if(album==null || album.isEmpty())
             return null;
-        List<Long> albumIds = albumRepo.findIdsByNameLike(album);
+
+        List<BigInteger> albumIds = albumRepo.findIdsByNameLike(album);
         List<Audio> list = null;
         if(mediaType== MediaType.AUDIO.getCode() || mediaType==MediaType.VIDEO.getCode())
             list = audioRepo.findByMediaTypeAndAlbumIdIn(mediaType, albumIds);
@@ -140,7 +142,7 @@ public class AudioServiceImpl implements AudioService {
         if(name==null || name.isEmpty()
                 || album==null || album.isEmpty())
             return null;
-        List<Long> albumIds = albumRepo.findIdsByNameLike(album);
+        List<BigInteger> albumIds = albumRepo.findIdsByNameLike(album);
         List<Audio> list = null;
         if(mediaType== MediaType.AUDIO.getCode() || mediaType==MediaType.VIDEO.getCode())
             list = audioRepo.findByMediaTypeAndNameAndAlbumIdIn(mediaType, name, albumIds);
@@ -198,7 +200,7 @@ public class AudioServiceImpl implements AudioService {
         }
 
         if (StringUtils.isNotBlank(searchVO.getAlbum())) {
-            List<Long> albumIds = albumRepo.findIdsByNameLike(searchVO.getAlbum());
+            List<BigInteger> albumIds = albumRepo.findIdsByNameLike(searchVO.getAlbum());
             searchVO.setIdAlbums(albumIds);
         }
 
@@ -209,4 +211,28 @@ public class AudioServiceImpl implements AudioService {
         return onePage;
     }
 
+    @Override
+    public Audio getAudioInfo(Long id) {
+
+        if (Objects.isNull(id) || id < 1) {
+            return null;
+        }
+
+        Audio audio = audioRepo.find(id);
+
+        if (Objects.isNull(audio)) {
+            return null;
+        }
+
+        Album album = albumRepo.find(audio.getAlbumId());
+        if (Objects.nonNull(album)) {
+            audio.setAlbum(album.getName());
+            if (StringUtils.isNotBlank(album.getImage())) {
+                audio.setAlbumImage(imgURL + album.getImage());
+            }
+        }
+
+        return audio;
+    }
+
 }

+ 3 - 2
src/main/java/cn/efunbox/audio/repository/AlbumRepo.java

@@ -7,16 +7,17 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 import javax.rmi.CORBA.PortableRemoteObjectDelegate;
+import java.math.BigInteger;
 import java.util.List;
 
 /**
  * Created by yao on 17-9-26.
  */
 @Repository
-public interface AlbumRepo extends ProjectJpaRepository<Album, Long> {
+public interface AlbumRepo extends ProjectJpaRepository<Album, BigInteger> {
 
     @Query(value = "select a.id From album a where a.name like concat('%',?1,'%')", nativeQuery = true)
-    List<Long> findIdsByNameLike(String name);
+    List<BigInteger> findIdsByNameLike(String name);
 
     @Query(value = "select * From album a where a.name like concat('%',?1,'%')", nativeQuery = true)
     List<Album> findByNameLike(String name);

+ 7 - 5
src/main/java/cn/efunbox/audio/repository/AudioRepo.java

@@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigInteger;
 import java.util.List;
 
 /**
@@ -43,16 +44,17 @@ public interface AudioRepo extends ProjectJpaRepository<Audio, Long> {
 //    @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> findByMediaTypeAndAlbumIdIn(int mediaType, List<Long> albumIds);
+    List<Audio> findByMediaTypeAndAlbumIdIn(int mediaType, List<BigInteger> albumIds);
 
-    List<Audio> findByAlbumIdIn(List<Long> albumIds);
+    @Query("from Audio a where a.albumId in :albumIds")
+    List<Audio> findByAlbumIdIn(@Param("albumIds") List<BigInteger> albumIds);
 
-    List<Audio> findByMediaTypeAndNameAndAlbumIdIn(int mediaType, String name, List<Long> albumIds);
+    List<Audio> findByMediaTypeAndNameAndAlbumIdIn(int mediaType, String name, List<BigInteger> albumIds);
 
-    List<Audio> findByNameAndAlbumIdIn(String name, List<Long> albumIds);
+    List<Audio> findByNameAndAlbumIdIn(String name, List<BigInteger> 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);
+    List<Audio> findByNameLikeAndAlbumIdIn(@Param("name") String name, @Param("albumIds") List<BigInteger> albumIds);
 
     @Query("from Audio a where a.name LIKE CONCAT('%',:name,'%')")
     List<Audio> findByNameLike(@Param("name") String name);

+ 3 - 3
src/main/java/cn/efunbox/audio/repository/AudioRepoImpl.java

@@ -45,9 +45,9 @@ public class AudioRepoImpl {
 
         fillSql(searchVO,sb);
         Query query = entityManager.createNativeQuery(sb.toString());
-        query.unwrap(SQLQuery.class).addEntity(Long.class);
+        BigInteger singleResult = (BigInteger)query.getSingleResult();
 
-        return (Long) query.getSingleResult();
+        return singleResult.longValue();
     }
 
     private void fillSql(SearchVO searchVO, StringBuilder sb) {
@@ -56,7 +56,7 @@ public class AudioRepoImpl {
             sb.append("and name like '%").append(searchVO.getName()).append("%'");
         }
 
-        List<Long> idAlbums = searchVO.getIdAlbums();
+        List<BigInteger> idAlbums = searchVO.getIdAlbums();
         if (!CollectionUtils.isEmpty(idAlbums)) {
             sb.append("and album_id in (");
             for (int i = 0; i < idAlbums.size();i++) {

+ 2 - 1
src/main/java/cn/efunbox/audio/service/AlbumService.java

@@ -3,6 +3,7 @@ package cn.efunbox.audio.service;
 import cn.efunbox.audio.entity.Album;
 import cn.efunbox.audio.page.OnePage;
 
+import java.math.BigInteger;
 import java.util.List;
 
 /**
@@ -11,7 +12,7 @@ import java.util.List;
  */
 public interface AlbumService {
 
-    public Album GetOne(Long id);
+    public Album GetOne(BigInteger id);
 
     public OnePage<Album> SearchAll(Album album,Integer page, Integer size);
 

+ 2 - 0
src/main/java/cn/efunbox/audio/service/AudioService.java

@@ -31,4 +31,6 @@ public interface AudioService {
     OnePage<Audio> pageList(Audio audio, Integer pageNo, Integer pageSize);
 
     OnePage<Audio> searchList(SearchVO searchVO);
+
+    Audio getAudioInfo(Long id);
 }