Explorar el Código

获取音频列表

xushengqiang hace 6 años
padre
commit
8a2730fc99

+ 31 - 0
src/main/java/cn/efunbox/audio/SearchVO.java

@@ -0,0 +1,31 @@
+package cn.efunbox.audio;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * SearchVO
+ * Created by xusq on 2018/5/11.
+ */
+@Data
+public class SearchVO implements Serializable {
+
+
+    private Integer mediaType;
+
+    private Long id;
+
+    private String name;
+
+    private String album;
+
+    private Integer pageNo;
+
+    private Integer pageSize;
+
+    private List<Long> idGroups;
+
+    private List<Long> 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")
+                .addPathPatterns("/audio/search","/audio/searchList")
                 .excludePathPatterns("/device/**", "/error");
 
         registry.addInterceptor(adminInterceptor())
                 .addPathPatterns("/**", "/device/update", "/device/delete")
-                .excludePathPatterns("/device/**", "/error", "/admin/login", "/audio/search","/file/**");
+                .excludePathPatterns("/device/**", "/error", "/admin/login", "/audio/search","/file/**","/audio/searchList");
 
         registry.addInterceptor(ignoreOptionsInterceptor())
                 .addPathPatterns("/**");

+ 43 - 0
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -1,5 +1,6 @@
 package cn.efunbox.audio.controller;
 
+import cn.efunbox.audio.SearchVO;
 import cn.efunbox.audio.clients.AudioHttp;
 import cn.efunbox.audio.consts.Status;
 import cn.efunbox.audio.entity.Audio;
@@ -287,6 +288,48 @@ public class AudioController {
         return;
     }
 
+
+    /**
+     * 用户搜索接口
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/searchList", method = RequestMethod.GET)
+    public void SearchList(HttpServletRequest request, HttpServletResponse response, SearchVO searchVO){
+
+        if (Objects.nonNull(searchVO.getPageSize()) && searchVO.getPageSize() > 100) {
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
+        }
+
+        Device device = deviceService.GetOne(searchVO.getId());
+        if(device==null){
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
+        }
+        //搜素设备所属渠道具有哪些资源组的权限
+        Long idChannel = device.getIdChannel();
+        List<Rights> rightsList = rightsService.SearchByIdChannel(idChannel, 0, 0).getContent();
+        if(rightsList==null || rightsList.size()<1){
+            HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
+            return;
+        }
+
+        List<Long> idGroups = new ArrayList<>();
+        rightsList.stream().forEach(rights -> idGroups.add(rights.getIdGroup()));
+        //过滤出有访问权限的音频列表
+
+
+        searchVO.setIdGroups(idGroups);
+
+        OnePage<Audio> onePage = audioService.searchList(searchVO);
+
+//        audioService.searchList(mediaType,name,album);
+//
+        HttpUtil.responseOkData(request, response, onePage);
+        return;
+    }
+
 //    @RequestMapping(value = "/insert", method = RequestMethod.POST)
 //    public void Insert(HttpServletRequest request, HttpServletResponse response){
 //        String gid = request.getParameter("gid");

+ 1 - 1
src/main/java/cn/efunbox/audio/controller/DeviceController.java

@@ -156,7 +156,7 @@ public class DeviceController {
         Map mapRes = JSONObject.parseObject(res);
         System.out.println(mapRes.toString());
         if(Integer.valueOf(mapRes.get("code").toString())!=200){
-            HttpUtil.responseApiCode(request, response, ApiCode.OPERATION_FAIL);
+            HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST);
             return;
         }
         mapRes = JSONObject.parseObject(mapRes.get("data").toString());

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

@@ -1,11 +1,13 @@
 package cn.efunbox.audio.impl;
 
+import cn.efunbox.audio.SearchVO;
 import cn.efunbox.audio.consts.MediaType;
 import cn.efunbox.audio.entity.Album;
 import cn.efunbox.audio.entity.Audio;
 import cn.efunbox.audio.page.OnePage;
 import cn.efunbox.audio.repository.AlbumRepo;
 import cn.efunbox.audio.repository.AudioRepo;
+import cn.efunbox.audio.repository.AudioRepoImpl;
 import cn.efunbox.audio.service.AudioService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +34,8 @@ public class AudioServiceImpl implements AudioService {
     AudioRepo audioRepo;
     @Autowired
     AlbumRepo albumRepo;
+    @Autowired
+    AudioRepoImpl audioRepoImpl;
 
     @Value("${efunbox.oss.img.url}")
     private String imgURL;
@@ -171,7 +175,9 @@ public class AudioServiceImpl implements AudioService {
             return onePage;
         }
 
-        List<Audio> audios = audioRepo.find(audio, onePage.getStart(), onePage.getPageSize());
+
+
+        List<Audio> audios = audioRepo.find(audio, onePage.getStart(),onePage.getPageSize());
 
         fillAlbum(audios);
         onePage.setList(audios);
@@ -179,4 +185,28 @@ public class AudioServiceImpl implements AudioService {
         return onePage;
     }
 
+    @Override
+    public OnePage<Audio> searchList(SearchVO searchVO) {
+
+        Long count = audioRepoImpl.count(searchVO);
+        if (Objects.isNull(count)) {
+            count = 0L;
+        }
+        OnePage<Audio> onePage = new OnePage(count,searchVO.getPageNo(),searchVO.getPageSize());
+        if (count == 0) {
+            return onePage;
+        }
+
+        if (StringUtils.isNotBlank(searchVO.getAlbum())) {
+            List<Long> albumIds = albumRepo.findIdsByNameLike(searchVO.getAlbum());
+            searchVO.setIdAlbums(albumIds);
+        }
+
+        List<Audio> audioList = audioRepoImpl.findAudio(searchVO, onePage.getStart(), onePage.getPageSize());
+        fillAlbum(audioList);
+        onePage.setList(audioList);
+
+        return onePage;
+    }
+
 }

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

@@ -1,11 +1,7 @@
 package cn.efunbox.audio.impl;
 
-import cn.efunbox.audio.entity.Channel;
-import cn.efunbox.audio.entity.Record;
 import cn.efunbox.audio.entity.Rights;
-import cn.efunbox.audio.repository.ChannelRepo;
 import cn.efunbox.audio.repository.RightsRepo;
-import cn.efunbox.audio.service.ChannelService;
 import cn.efunbox.audio.service.RightsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -13,7 +9,6 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -54,6 +49,11 @@ public class RightsServiceImpl implements RightsService {
         Page<Rights> list = rightsRepo.findByIdChannel(id, pageable);
         return list;
     }
+    @Override
+    public List<Rights> SearchByIdChannel(Long id){
+
+        return rightsRepo.findByIdChannel(id);
+    }
 
     @Override
     public Page<Rights> SearchByIdGroup(Long id, int page, int size){

+ 1 - 1
src/main/java/cn/efunbox/audio/page/OnePage.java

@@ -251,7 +251,7 @@ public class OnePage<E> implements Pageable<List<E>> ,Serializable {
 	 * @see Pageable#getStart()
 	 */
 	@Override
-	public long getStart() {
+	public int getStart() {
 		return (getPageNo() - 1) * getPageSize();
 	}
 }

+ 1 - 1
src/main/java/cn/efunbox/audio/page/Pageable.java

@@ -63,7 +63,7 @@ public interface Pageable<E> {
 	 * @author xtwin <br/>
 	 * @version 2016年8月1日 上午10:02:52 <br/>
 	 */
-	long getStart();
+	int getStart();
 	
 	/**
 	 * 功能:是否还有下一页 <br/>

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

@@ -0,0 +1,88 @@
+package cn.efunbox.audio.repository;
+
+import cn.efunbox.audio.SearchVO;
+import cn.efunbox.audio.entity.Audio;
+import org.apache.commons.lang3.StringUtils;
+import org.hibernate.SQLQuery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.math.BigInteger;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * AudioRepoImpl
+ * Created by xusq on 2018/5/11.
+ */
+@Repository
+public class AudioRepoImpl {
+
+    @Autowired
+    private EntityManager entityManager;
+
+    public List<Audio> findAudio(SearchVO searchVO, Integer pageStart, int pageSize) {
+
+        StringBuilder sb = new StringBuilder("select * from audio where 1=1 ");
+
+        fillSql(searchVO,sb);
+
+        Query query = entityManager.createNativeQuery(sb.toString());
+        query.unwrap(SQLQuery.class).addEntity(Audio.class);
+        query.setFirstResult(pageStart);
+        query.setMaxResults(pageSize);
+
+        return query.getResultList();
+    }
+
+    public Long count(SearchVO searchVO) {
+
+        StringBuilder sb = new StringBuilder("select count(*) from audio where 1=1 ");
+
+        fillSql(searchVO,sb);
+        Query query = entityManager.createNativeQuery(sb.toString());
+        query.unwrap(SQLQuery.class).addEntity(Long.class);
+
+        return query.getSingleResult();
+    }
+
+    private void fillSql(SearchVO searchVO, StringBuilder sb) {
+
+        if (StringUtils.isNotBlank(searchVO.getName())) {
+            sb.append("and name like '%").append(searchVO.getName()).append("%'");
+        }
+
+        List<Long> idAlbums = searchVO.getIdAlbums();
+        if (!CollectionUtils.isEmpty(idAlbums)) {
+            sb.append("and album_id in (");
+            for (int i = 0; i < idAlbums.size();i++) {
+                if (i > 0) {
+                    sb.append(",");
+                }
+                sb.append("'").append(idAlbums.get(i)).append("'");
+            }
+            sb.append(") ");
+        }
+
+        List<Long> idGroups = searchVO.getIdGroups();
+        if (!CollectionUtils.isEmpty(idGroups)) {
+            sb.append("and id_group in (");
+            for (int i = 0; i < idGroups.size();i++) {
+                if (i > 0) {
+                    sb.append(",");
+                }
+                sb.append("'").append(idGroups.get(i)).append("'");
+            }
+            sb.append(") ");
+        }
+
+        if (Objects.nonNull(searchVO.getMediaType()) && searchVO.getMediaType() > 0) {
+            sb.append("and media_type = ");
+            sb.append( searchVO.getMediaType() );
+        }
+    }
+}

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

@@ -1,6 +1,5 @@
 package cn.efunbox.audio.repository;
 
-import cn.efunbox.audio.entity.Channel;
 import cn.efunbox.audio.entity.Rights;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -22,4 +21,6 @@ public interface RightsRepo extends JpaRepository<Rights, Long> {
     public List<Rights> findByNameChannel(String nameChannel);
     public List<Rights> findByNameGroup(String nameGroup);
 
+    public List<Rights> findByIdChannel(Long idChannel);
+
 }

+ 4 - 4
src/main/java/cn/efunbox/audio/repository/base/ProjectJpaRepository.java

@@ -78,7 +78,7 @@ public interface ProjectJpaRepository<E, ID extends Serializable> extends JpaRep
 	 * @author xtwin <br/>
 	 * @version 2016年3月31日 下午4:52:30 <br/>
 	 */
-	List<E> find(Long start, Integer offset);
+	List<E> find(Integer start, Integer offset);
 	
 	/**
 	 * 功能:分页查询,使用sort规则排序 <br/>
@@ -86,7 +86,7 @@ public interface ProjectJpaRepository<E, ID extends Serializable> extends JpaRep
 	 * @author xtwin <br/>
 	 * @version 2016年7月29日 上午10:19:05 <br/>
 	 */
-	List<E> find(Long start, Integer offset, Sort sort);
+	List<E> find(Integer start, Integer offset, Sort sort);
 	
 	/**
 	 * 功能:根据样板查询数据,使用id降序排序 <br/>
@@ -110,7 +110,7 @@ public interface ProjectJpaRepository<E, ID extends Serializable> extends JpaRep
 	 * @author xtwin <br/>
 	 * @version 2016年3月31日 上午11:58:31 <br/>
 	 */
-	List<E> find(E sample, Long start, Integer offset);
+	List<E> find(E sample, Integer start, Integer offset);
 	
 	/**
 	 * 功能:分页查询,且排序 <br/>
@@ -118,7 +118,7 @@ public interface ProjectJpaRepository<E, ID extends Serializable> extends JpaRep
 	 * @author xtwin <br/>
 	 * @version 2016年7月29日 上午9:44:26 <br/>
 	 */
-	List<E> find(E sample, Long start, Integer offset, Sort sort);
+	List<E> find(E sample, Integer start, Integer offset, Sort sort);
 	
 	/**
 	 * 功能:更新操作,不更新为null的字段 <br/>

+ 9 - 9
src/main/java/cn/efunbox/audio/repository/base/ProjectSimpleJpaRepository.java

@@ -133,10 +133,10 @@ public class ProjectSimpleJpaRepository<E, ID extends Serializable> extends Simp
 	 * @param start
 	 * @param offset
 	 * @return <br/>
-	 * @see ProjectJpaRepository#find(Long, Integer)
+	 * @see ProjectJpaRepository#find(Integer, Integer)
 	 */
 	@Override
-	public List<E> find(Long start, Integer offset) {
+	public List<E> find(Integer start, Integer offset) {
 		return find(start, offset, null);
 	}
 
@@ -151,10 +151,10 @@ public class ProjectSimpleJpaRepository<E, ID extends Serializable> extends Simp
 	 * @param offset
 	 * @param sort
 	 * @return <br/>
-	 * @see ProjectJpaRepository#find(Long, Integer, Sort)
+	 * @see ProjectJpaRepository#find(Integer, Integer, Sort)
 	 */
 	@Override
-	public List<E> find(Long start, Integer offset, Sort sort) {
+	public List<E> find(Integer start, Integer offset, Sort sort) {
 		return find(null, start, offset, sort);
 	}
 
@@ -188,7 +188,7 @@ public class ProjectSimpleJpaRepository<E, ID extends Serializable> extends Simp
 	 */
 	@Override
 	public E findFirst(E sample, Sort sort) {
-		List<E> list = find(sample, 0L, 1, sort);
+		List<E> list = find(sample, 0, 1, sort);
 
 		return null == list || list.isEmpty() ? null : list.get(0);
 	}
@@ -237,10 +237,10 @@ public class ProjectSimpleJpaRepository<E, ID extends Serializable> extends Simp
 	 * @param start
 	 * @param offset
 	 * @return <br/>
-	 * @see ProjectJpaRepository#find(Object, Long, Integer)
+	 * @see ProjectJpaRepository#find(Object, Integer, Integer)
 	 */
 	@Override
-	public List<E> find(E sample, Long start, Integer offset) {
+	public List<E> find(E sample, Integer start, Integer offset) {
 		return find(sample, start, offset, null);
 	}
 
@@ -256,10 +256,10 @@ public class ProjectSimpleJpaRepository<E, ID extends Serializable> extends Simp
 	 * @param offset
 	 * @param sort
 	 * @return <br/>
-	 * @see ProjectJpaRepository#find(Object, Long, Integer, Sort)
+	 * @see ProjectJpaRepository#find(Object, Integer, Integer, Sort)
 	 */
 	@Override
-	public List<E> find(E sample, Long start, Integer offset, Sort sort) {
+	public List<E> find(E sample, Integer start, Integer offset, Sort sort) {
 		// 创建qbe
 		Specification<E> spec = getSpecification(sample);
 

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

@@ -1,5 +1,6 @@
 package cn.efunbox.audio.service;
 
+import cn.efunbox.audio.SearchVO;
 import cn.efunbox.audio.entity.Audio;
 import cn.efunbox.audio.page.OnePage;
 import org.springframework.data.domain.Page;
@@ -28,4 +29,6 @@ public interface AudioService {
     public void Delete(Long id);
 
     OnePage<Audio> pageList(Audio audio, Integer pageNo, Integer pageSize);
+
+    OnePage<Audio> searchList(SearchVO searchVO);
 }

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

@@ -1,6 +1,5 @@
 package cn.efunbox.audio.service;
 
-import cn.efunbox.audio.entity.Channel;
 import cn.efunbox.audio.entity.Rights;
 import org.springframework.data.domain.Page;
 
@@ -19,6 +18,8 @@ public interface RightsService {
 
     public Page<Rights> SearchByIdChannel(Long id, int page, int size);
 
+    public List<Rights> SearchByIdChannel(Long id);
+
     public Page<Rights> SearchByIdGroup(Long id, int page, int size);
 
     public List<Rights> SearchByIdChannelAndIdGroup(Long idChannel, Long idGroup);