Explorar el Código

设备请求音频资源时,判断设备所属渠道是否有该音频所属资源组的权限,有则随机返回其中一个音频

yaobo hace 7 años
padre
commit
8d97bc73ef

+ 45 - 12
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -1,14 +1,11 @@
 package cn.efunbox.audio.controller;
 
-import cn.efunbox.audio.entity.Audio;
-import cn.efunbox.audio.entity.Device;
-import cn.efunbox.audio.entity.Record;
-import cn.efunbox.audio.service.AudioService;
-import cn.efunbox.audio.service.DeviceService;
-import cn.efunbox.audio.service.RecordService;
+import cn.efunbox.audio.entity.*;
+import cn.efunbox.audio.service.*;
 import cn.efunbox.audio.util.ApiCode;
 import cn.efunbox.audio.util.HttpUtil;
 import com.netflix.ribbon.proxy.annotation.Http;
+import com.sun.tools.javac.util.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
+import java.util.List;
 
 /**
  * Created by yao on 17-9-26.
@@ -34,6 +32,10 @@ public class AudioController {
     DeviceService deviceService;
     @Autowired
     RecordService recordService;
+    @Autowired
+    GroupingService groupingService;
+    @Autowired
+    RightsService rightsService;
 
     @RequestMapping(value = "/search" ,method = RequestMethod.POST)
     public void Search(HttpServletRequest request, HttpServletResponse response){
@@ -57,17 +59,28 @@ public class AudioController {
             HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
             return;
         }
-        Random random = new Random();
-        int r = Math.abs(random.nextInt())%list.size();
-        Audio audio = list.get(r);
-
         Device device = deviceService.GetOne(Long.valueOf(id));
         if(device==null){
             HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
             return;
         }
-        //判断设备所属渠道是否有该资源所属组的权限
-
+        //搜素设备所属渠道具有哪些资源组的权限
+        Long idChannel = device.getIdChannel();
+        List<Rights> rightsList = rightsService.SearchByIdChannel(idChannel);
+        if(rightsList==null || rightsList.size()<1){
+            HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
+            return;
+        }
+        //过滤出有访问权限的音频列表
+        List<Audio> audioList = FilterRights(list, rightsList);
+        if(audioList==null || audioList.size()<1){
+            HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
+            return;
+        }
+        //随机选择一个音频
+        Random random = new Random();
+        int r = Math.abs(random.nextInt())%audioList.size();
+        Audio audio = audioList.get(r);
 
         Record record = new Record();
         record.setIdDevice(device.getId());
@@ -104,4 +117,24 @@ public class AudioController {
         return;
     }
 
+    /**
+     * 过滤出渠道有访问权限的音频列表
+     * @param audioList
+     * @param rightsList
+     * @return audioList
+     */
+    private List<Audio> FilterRights(List<Audio> audioList, List<Rights> rightsList){
+        List<Audio> aList = new ArrayList<>();
+        for(int i=0; i<audioList.size(); i++){
+            for(int j=0; j<rightsList.size(); j++){
+                if(audioList.get(i).getIdGroup() == rightsList.get(j).getIdGroup()){
+                    aList.add(audioList.get(i));
+                    break;
+                }
+            }
+        }
+
+        return aList;
+    }
+
 }

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

@@ -38,7 +38,7 @@ public class Audio implements Serializable, Cloneable {
 
     //专辑下的第几集
     @Column
-    private int lesson;
+    private int lesson = 0;
 
     //所属年级
     @Column
@@ -46,11 +46,11 @@ public class Audio implements Serializable, Cloneable {
 
     //适用最小年龄
     @Column
-    private int ageMin;
+    private int ageMin = 0;
 
     //适用最大年龄
     @Column
-    private int ageMax;
+    private int ageMax = 100;
 
     //音频名称,如两只老虎
     @Column