123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- 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;
- import cn.efunbox.audio.entity.Device;
- import cn.efunbox.audio.entity.Record;
- import cn.efunbox.audio.entity.Rights;
- import cn.efunbox.audio.page.OnePage;
- import cn.efunbox.audio.plugin.AliStsOssAuth;
- import cn.efunbox.audio.service.*;
- import cn.efunbox.audio.utils.ApiCode;
- import cn.efunbox.audio.utils.Common;
- import cn.efunbox.audio.utils.HttpUtil;
- 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.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.sql.Timestamp;
- import java.util.*;
- /**
- * 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;
- @Autowired
- private AliStsOssAuth aliStsOssAuth;
- /**
- * 管理员搜索接口
- * @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 = "/adminSearch", method = RequestMethod.GET)
- public void AdminSearchV2(HttpServletRequest request, HttpServletResponse response,Audio audio,Integer pageNo,Integer pageSize){
- OnePage<Audio> onePage = audioService.pageList(audio,pageNo,pageSize);
- HttpUtil.responseOkData(request, response, onePage);
- 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();
- String format = map.get("format").toString();
- path = path.replaceAll("\n","");
- if(array.size()>1 && false==format.equalsIgnoreCase("mp4")){
- map = JSONObject.parseObject(array.get(1).toString());
- String quality = map.get("quality").toString();
- format = map.get("format").toString();
- if(quality.equalsIgnoreCase("standard") || format.equalsIgnoreCase("mp4")){
- 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);
- //阿里oss临时授权
- audio.setUrl(aliStsOssAuth.AuthUrl(audio.getUrl()));
- HttpUtil.responseOkData(request, response, audio);
- 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");
- // 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;
- }
- @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
- * @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;
- }
- }
|