123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- package cn.efunbox.audio.controller;
- import cn.efunbox.audio.clients.AudioHttp;
- import cn.efunbox.audio.consts.MediaType;
- import cn.efunbox.audio.consts.Status;
- import cn.efunbox.audio.entity.*;
- import cn.efunbox.audio.service.*;
- import cn.efunbox.audio.utils.ApiCode;
- import cn.efunbox.audio.utils.HttpUtil;
- import cn.efunbox.audio.utils.Common;
- import com.alibaba.fastjson.JSONArray;
- 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 javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.sql.Timestamp;
- import java.util.*;
- import java.util.List;
- /**
- * Created by yao on 17-9-26.
- */
- @RestController
- @Slf4j
- @RequestMapping(value = "/audio")
- public class AudioController {
- @Autowired
- AudioService audioService;
- @Autowired
- DeviceService deviceService;
- @Autowired
- RecordService recordService;
- @Autowired
- GroupingService groupingService;
- @Autowired
- RightsService rightsService;
- @Autowired
- AudioHttp audioHttp;
- @Autowired
- AdminService adminService;
- @Autowired
- TrailService trailService;
- /**
- * 管理员搜索接口
- * @param request
- * @param response
- */
- @RequestMapping(value = "/admsearch", method = RequestMethod.POST)
- public void AdminSearch(HttpServletRequest request, HttpServletResponse response){
- String idAudio = request.getParameter("idAudio");
- String mediaType = request.getParameter("mediaType");
- String name = request.getParameter("name");
- String album = request.getParameter("album");
- String idGroup = request.getParameter("idGroup");
- String page = request.getParameter("page");
- String size = request.getParameter("size");
- if(mediaType==null || mediaType.length()<1)
- mediaType = "0";
- if(page==null || page.length()<1)
- page = "0";
- if(size==null || size.length()<1)
- size = "0";
- Map<String,Object> map = new HashMap<>();
- List<Audio> list = null;
- if(idAudio!=null && idAudio.length()>0){
- Audio audio = audioService.GetOne(Long.valueOf(idAudio));
- list = new ArrayList<Audio>();
- list.add(audio);
- }else if(idGroup!=null && idGroup.length()>0){
- Page<Audio> pageRes = audioService.SearchByIdGroup(Integer.valueOf(mediaType), Long.valueOf(idGroup), Integer.valueOf(page), Integer.valueOf(size));
- map.put("data", pageRes.getContent());
- map.put("size", pageRes.getNumberOfElements());
- map.put("total", pageRes.getTotalElements());
- }else if(name!=null && name.length()>0 && album!=null && album.length()>0){
- list = audioService.SearchByNameAlbum(Integer.valueOf(mediaType), name, album);
- }else if(name!=null && name.length()>0){
- list = audioService.SearchByName(Integer.valueOf(mediaType), name);
- }else if(album!=null && album.length()>0){
- list = audioService.SearchByAlbum(Integer.valueOf(mediaType), album);
- }else{
- Page<Audio> pageRes = audioService.SearchAll(Integer.valueOf(mediaType), Integer.valueOf(page), Integer.valueOf(size));
- map.put("data", pageRes.getContent());
- map.put("size", pageRes.getNumberOfElements());
- map.put("total", pageRes.getTotalElements());
- }
- if(list!=null){
- map.put("data", list);
- map.put("size", list.size());
- map.put("total", list.size());
- }
- HttpUtil.responseOkData(request, response, map);
- return;
- }
- /**
- * 管理员搜索资源平台的接口
- * @param request
- * @param response
- */
- @RequestMapping(value = "/resource", method = RequestMethod.POST)
- public void AdminLoadResource(HttpServletRequest request, HttpServletResponse response){
- String name = request.getParameter("name");
- String idResource = request.getParameter("idResource");
- String idNo = request.getParameter("idNo");
- String type = request.getParameter("type"); //资源类型, 音频,视频, 直播 取值{0,1,2}, 分别表示{视频,音频,直播}
- String page = request.getParameter("page");
- String size = request.getParameter("size");
- JSONArray list = new JSONArray();
- String res = null;
- if((idResource!=null && idResource.length()>0)
- || (idNo!=null && idNo.length()>0)){
- if(idResource!=null && idResource.length()>0)
- res = audioHttp.SearchByIdResource(idResource);
- else
- res = audioHttp.SearchByIdNo(idNo);
- // System.out.println(res);
- Map map = JSONObject.parseObject(res);
- try{
- if(map.get("code").toString().equalsIgnoreCase("200")){
- map = JSONObject.parseObject(map.get("data").toString());
- list.add(map);
- }
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- }else if(name!=null && name.length()>0){
- if(type==null || type.length()<1)
- type = "0";
- if(page==null || page.length()<1)
- page = "1";
- if(size==null || size.length()<1)
- size = "10";
- res = audioHttp.SearchByName(name, Integer.valueOf(type), Integer.valueOf(page)+1, Integer.valueOf(size));
- // System.out.println(res);
- Map map = JSONObject.parseObject(res);
- try{
- if(map.get("code").toString().equalsIgnoreCase("200")){
- map = JSONObject.parseObject(map.get("data").toString());
- list = JSONArray.parseArray(map.get("list").toString());
- }
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- }
- HttpUtil.responseOkData(request, response, list);
- return;
- }
- /**
- * 用户搜索接口
- * @param request
- * @param response
- */
- @RequestMapping(value = "/search", method = RequestMethod.POST)
- public void Search(HttpServletRequest request, HttpServletResponse response){
- String mediaType = request.getParameter("mediaType");
- String id = request.getParameter("id");
- String name = request.getParameter("name");
- String album = request.getParameter("album");
- if(mediaType==null || mediaType.length()<1)
- mediaType = "0";
- if(name==null && album==null){
- HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
- return;
- }
- if(id==null || id.length()==0)
- id = request.getHeader("id");
- List<Audio> list = null;
- // System.out.println("album:"+album+",name:"+name);
- if(name!=null && name.length()>0 && album!=null && album.length()>0)
- list = audioService.SearchByNameAlbum(Integer.valueOf(mediaType), name, album);
- else if(name!=null && name.length()>0)
- list = audioService.SearchByName(Integer.valueOf(mediaType), name);
- else
- list = audioService.SearchByAlbum(Integer.valueOf(mediaType), album);
- if(list==null || list.size()<1){
- HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
- return;
- }
- 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, 0, 0).getContent();
- if(rightsList==null || rightsList.size()<1){
- HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
- return;
- }
- //过滤出有访问权限的音频列表
- List<Audio> audioList = FilterRights(list, rightsList);
- if(audioList==null || audioList.size()<1){
- HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
- return;
- }
- //随机选择一个音频
- Random random = new Random();
- int r = Math.abs(random.nextInt())%audioList.size();
- Audio audio = audioList.get(r);
- if(audio.getIdResource()!=null && audio.getIdResource().length()>0){
- String res = audioHttp.SearchByIdResource(audio.getIdResource());
- // System.out.println(res);
- Map map = JSONObject.parseObject(res);
- try{
- if(map.get("code").toString().equalsIgnoreCase("200")){
- map = JSONObject.parseObject(map.get("data").toString());
- if(map.get("type").toString().equalsIgnoreCase("1")){
- JSONArray array = JSONArray.parseArray(map.get("audios").toString());
- map = JSONObject.parseObject(array.get(0).toString());
- String path = map.get("fullPath").toString();
- path = path.replaceAll("\n","");
- audio.setUrl(path);
- }else if(map.get("type").toString().equalsIgnoreCase("0")){
- JSONArray array = JSONArray.parseArray(map.get("videos").toString());
- map = JSONObject.parseObject(array.get(0).toString());
- String path = map.get("fullPath").toString();
- path = path.replaceAll("\n","");
- audio.setUrl(path);
- }
- // System.out.println(path);
- }
- }catch(Exception e){
- System.out.println(e.getMessage());
- audio.setUrl("fail to get resource uri");
- }
- }
- Record record = new Record();
- record.setIdDevice(device.getId());
- record.setIdChannel(device.getIdChannel());
- record.setIdAudio(audio.getId());
- record.setCreated(new Timestamp(new Date().getTime()));
- recordService.Insert(record);
- HttpUtil.responseOkData(request, response, audio);
- return;
- }
- // @RequestMapping(value = "/insert", method = RequestMethod.POST)
- // public void Insert(HttpServletRequest request, HttpServletResponse response){
- // String gid = request.getParameter("gid");
- // String rid = request.getParameter("rid");
- // String album = request.getParameter("album");
- // String lesson = request.getParameter("lesson");
- // String name = request.getParameter("name");
- // String url = request.getParameter("url");
- // if(gid==null || rid==null || album==null || name==null){
- // HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
- // return;
- // }
- //
- // Audio audio = new Audio();
- // audio.setIdGroup(Long.valueOf(gid));
- // audio.setIdResource(rid);
- // audio.setAlbum(album);
- // if(lesson!=null && lesson.length()>0)
- // audio.setLesson(Integer.valueOf(lesson));
- // audio.setName(name);
- // audio.setUrl(url);
- // audio.setCreated(new Date());
- // audio = audioService.Insert(audio);
- //
- // HttpUtil.responseOutWithJson(request, response, audio);
- // return;
- // }
- @RequestMapping(value = "/insert", method = RequestMethod.POST)
- public void Insert(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
- if(audio.getIdGroup()==null || audio.getIdResource()==null || audio.getName()==null){
- HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
- return;
- }
- audio.setStatus(Status.ONLINE.getCode());
- audio.setCreated(new Timestamp(new Date().getTime()));
- audio = audioService.Insert(audio);
- TrailController.Insert(adminService, trailService, request, "audio", audio.getId(), " 新建资源:" + audio.getName());
- HttpUtil.responseOkData(request, response, audio);
- return;
- }
- @RequestMapping(value = "/update", method = RequestMethod.POST)
- public void Update(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
- if(audio.getId()==null){
- HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
- return;
- }
- System.out.println(audio.toString());
- Audio audioOld = audioService.GetOne(audio.getId());
- if(audioOld==null){
- HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
- return;
- }
- audio = (Audio)Common.CopyValue(audio, audioOld);
- audio = audioService.Insert(audio);
- TrailController.Insert(adminService, trailService, request, "audio", audio.getId(), " 修改资源:" + audio.getName());
- HttpUtil.responseOkData(request, response, audio);
- return;
- }
- @RequestMapping(value = "/delete", method = RequestMethod.POST)
- public void Delete(HttpServletRequest request, HttpServletResponse response){
- String idAudio = request.getParameter("idAudio");
- audioService.Delete(Long.valueOf(idAudio));
- HttpUtil.responseOk(request, response);
- TrailController.Insert(adminService, trailService, request, "audio", Long.valueOf(idAudio), " 删除资源:" + idAudio);
- 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;
- }
- }
|