AudioController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. package cn.efunbox.audio.controller;
  2. import cn.efunbox.audio.clients.AudioHttp;
  3. import cn.efunbox.audio.consts.MediaType;
  4. import cn.efunbox.audio.consts.Status;
  5. import cn.efunbox.audio.entity.*;
  6. import cn.efunbox.audio.service.*;
  7. import cn.efunbox.audio.utils.ApiCode;
  8. import cn.efunbox.audio.utils.HttpUtil;
  9. import cn.efunbox.audio.utils.Common;
  10. import com.alibaba.fastjson.JSONArray;
  11. import com.alibaba.fastjson.JSONObject;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.web.bind.annotation.RequestBody;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestMethod;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import java.lang.reflect.Field;
  22. import java.lang.reflect.Method;
  23. import java.sql.Timestamp;
  24. import java.util.*;
  25. import java.util.List;
  26. /**
  27. * Created by yao on 17-9-26.
  28. */
  29. @RestController
  30. @Slf4j
  31. @RequestMapping(value = "/audio")
  32. public class AudioController {
  33. @Autowired
  34. AudioService audioService;
  35. @Autowired
  36. DeviceService deviceService;
  37. @Autowired
  38. RecordService recordService;
  39. @Autowired
  40. GroupingService groupingService;
  41. @Autowired
  42. RightsService rightsService;
  43. @Autowired
  44. AudioHttp audioHttp;
  45. @Autowired
  46. AdminService adminService;
  47. @Autowired
  48. TrailService trailService;
  49. /**
  50. * 管理员搜索接口
  51. * @param request
  52. * @param response
  53. */
  54. @RequestMapping(value = "/admsearch", method = RequestMethod.POST)
  55. public void AdminSearch(HttpServletRequest request, HttpServletResponse response){
  56. String idAudio = request.getParameter("idAudio");
  57. String mediaType = request.getParameter("mediaType");
  58. String name = request.getParameter("name");
  59. String album = request.getParameter("album");
  60. String idGroup = request.getParameter("idGroup");
  61. String page = request.getParameter("page");
  62. String size = request.getParameter("size");
  63. if(mediaType==null || mediaType.length()<1)
  64. mediaType = "0";
  65. if(page==null || page.length()<1)
  66. page = "0";
  67. if(size==null || size.length()<1)
  68. size = "0";
  69. Map<String,Object> map = new HashMap<>();
  70. List<Audio> list = null;
  71. if(idAudio!=null && idAudio.length()>0){
  72. Audio audio = audioService.GetOne(Long.valueOf(idAudio));
  73. list = new ArrayList<Audio>();
  74. list.add(audio);
  75. }else if(idGroup!=null && idGroup.length()>0){
  76. Page<Audio> pageRes = audioService.SearchByIdGroup(Integer.valueOf(mediaType), Long.valueOf(idGroup), Integer.valueOf(page), Integer.valueOf(size));
  77. map.put("data", pageRes.getContent());
  78. map.put("size", pageRes.getNumberOfElements());
  79. map.put("total", pageRes.getTotalElements());
  80. }else if(name!=null && name.length()>0 && album!=null && album.length()>0){
  81. list = audioService.SearchByNameAlbum(Integer.valueOf(mediaType), name, album);
  82. }else if(name!=null && name.length()>0){
  83. list = audioService.SearchByName(Integer.valueOf(mediaType), name);
  84. }else if(album!=null && album.length()>0){
  85. list = audioService.SearchByAlbum(Integer.valueOf(mediaType), album);
  86. }else{
  87. Page<Audio> pageRes = audioService.SearchAll(Integer.valueOf(mediaType), Integer.valueOf(page), Integer.valueOf(size));
  88. map.put("data", pageRes.getContent());
  89. map.put("size", pageRes.getNumberOfElements());
  90. map.put("total", pageRes.getTotalElements());
  91. }
  92. if(list!=null){
  93. map.put("data", list);
  94. map.put("size", list.size());
  95. map.put("total", list.size());
  96. }
  97. HttpUtil.responseOkData(request, response, map);
  98. return;
  99. }
  100. /**
  101. * 管理员搜索资源平台的接口
  102. * @param request
  103. * @param response
  104. */
  105. @RequestMapping(value = "/resource", method = RequestMethod.POST)
  106. public void AdminLoadResource(HttpServletRequest request, HttpServletResponse response){
  107. String name = request.getParameter("name");
  108. String idResource = request.getParameter("idResource");
  109. String idNo = request.getParameter("idNo");
  110. String type = request.getParameter("type"); //资源类型, 音频,视频, 直播 取值{0,1,2}, 分别表示{视频,音频,直播}
  111. String page = request.getParameter("page");
  112. String size = request.getParameter("size");
  113. JSONArray list = new JSONArray();
  114. String res = null;
  115. if((idResource!=null && idResource.length()>0)
  116. || (idNo!=null && idNo.length()>0)){
  117. if(idResource!=null && idResource.length()>0)
  118. res = audioHttp.SearchByIdResource(idResource);
  119. else
  120. res = audioHttp.SearchByIdNo(idNo);
  121. // System.out.println(res);
  122. Map map = JSONObject.parseObject(res);
  123. try{
  124. if(map.get("code").toString().equalsIgnoreCase("200")){
  125. map = JSONObject.parseObject(map.get("data").toString());
  126. list.add(map);
  127. }
  128. }catch(Exception e){
  129. System.out.println(e.getMessage());
  130. }
  131. }else if(name!=null && name.length()>0){
  132. if(type==null || type.length()<1)
  133. type = "0";
  134. if(page==null || page.length()<1)
  135. page = "1";
  136. if(size==null || size.length()<1)
  137. size = "10";
  138. res = audioHttp.SearchByName(name, Integer.valueOf(type), Integer.valueOf(page)+1, Integer.valueOf(size));
  139. // System.out.println(res);
  140. Map map = JSONObject.parseObject(res);
  141. try{
  142. if(map.get("code").toString().equalsIgnoreCase("200")){
  143. map = JSONObject.parseObject(map.get("data").toString());
  144. list = JSONArray.parseArray(map.get("list").toString());
  145. }
  146. }catch(Exception e){
  147. System.out.println(e.getMessage());
  148. }
  149. }
  150. HttpUtil.responseOkData(request, response, list);
  151. return;
  152. }
  153. /**
  154. * 用户搜索接口
  155. * @param request
  156. * @param response
  157. */
  158. @RequestMapping(value = "/search", method = RequestMethod.POST)
  159. public void Search(HttpServletRequest request, HttpServletResponse response){
  160. String mediaType = request.getParameter("mediaType");
  161. String id = request.getParameter("id");
  162. String name = request.getParameter("name");
  163. String album = request.getParameter("album");
  164. if(mediaType==null || mediaType.length()<1)
  165. mediaType = "0";
  166. if(name==null && album==null){
  167. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  168. return;
  169. }
  170. if(id==null || id.length()==0)
  171. id = request.getHeader("id");
  172. List<Audio> list = null;
  173. // System.out.println("album:"+album+",name:"+name);
  174. if(name!=null && name.length()>0 && album!=null && album.length()>0)
  175. list = audioService.SearchByNameAlbum(Integer.valueOf(mediaType), name, album);
  176. else if(name!=null && name.length()>0)
  177. list = audioService.SearchByName(Integer.valueOf(mediaType), name);
  178. else
  179. list = audioService.SearchByAlbum(Integer.valueOf(mediaType), album);
  180. if(list==null || list.size()<1){
  181. HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
  182. return;
  183. }
  184. Device device = deviceService.GetOne(Long.valueOf(id));
  185. if(device==null){
  186. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  187. return;
  188. }
  189. //搜素设备所属渠道具有哪些资源组的权限
  190. Long idChannel = device.getIdChannel();
  191. List<Rights> rightsList = rightsService.SearchByIdChannel(idChannel, 0, 0).getContent();
  192. if(rightsList==null || rightsList.size()<1){
  193. HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
  194. return;
  195. }
  196. //过滤出有访问权限的音频列表
  197. List<Audio> audioList = FilterRights(list, rightsList);
  198. if(audioList==null || audioList.size()<1){
  199. HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
  200. return;
  201. }
  202. //随机选择一个音频
  203. Random random = new Random();
  204. int r = Math.abs(random.nextInt())%audioList.size();
  205. Audio audio = audioList.get(r);
  206. if(audio.getIdResource()!=null && audio.getIdResource().length()>0){
  207. String res = audioHttp.SearchByIdResource(audio.getIdResource());
  208. // System.out.println(res);
  209. Map map = JSONObject.parseObject(res);
  210. try{
  211. if(map.get("code").toString().equalsIgnoreCase("200")){
  212. map = JSONObject.parseObject(map.get("data").toString());
  213. if(map.get("type").toString().equalsIgnoreCase("1")){
  214. JSONArray array = JSONArray.parseArray(map.get("audios").toString());
  215. map = JSONObject.parseObject(array.get(0).toString());
  216. String path = map.get("fullPath").toString();
  217. path = path.replaceAll("\n","");
  218. audio.setUrl(path);
  219. }else if(map.get("type").toString().equalsIgnoreCase("0")){
  220. JSONArray array = JSONArray.parseArray(map.get("videos").toString());
  221. map = JSONObject.parseObject(array.get(0).toString());
  222. String path = map.get("fullPath").toString();
  223. path = path.replaceAll("\n","");
  224. audio.setUrl(path);
  225. }
  226. // System.out.println(path);
  227. }
  228. }catch(Exception e){
  229. System.out.println(e.getMessage());
  230. audio.setUrl("fail to get resource uri");
  231. }
  232. }
  233. Record record = new Record();
  234. record.setIdDevice(device.getId());
  235. record.setIdChannel(device.getIdChannel());
  236. record.setIdAudio(audio.getId());
  237. record.setCreated(new Timestamp(new Date().getTime()));
  238. recordService.Insert(record);
  239. HttpUtil.responseOkData(request, response, audio);
  240. return;
  241. }
  242. // @RequestMapping(value = "/insert", method = RequestMethod.POST)
  243. // public void Insert(HttpServletRequest request, HttpServletResponse response){
  244. // String gid = request.getParameter("gid");
  245. // String rid = request.getParameter("rid");
  246. // String album = request.getParameter("album");
  247. // String lesson = request.getParameter("lesson");
  248. // String name = request.getParameter("name");
  249. // String url = request.getParameter("url");
  250. // if(gid==null || rid==null || album==null || name==null){
  251. // HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  252. // return;
  253. // }
  254. //
  255. // Audio audio = new Audio();
  256. // audio.setIdGroup(Long.valueOf(gid));
  257. // audio.setIdResource(rid);
  258. // audio.setAlbum(album);
  259. // if(lesson!=null && lesson.length()>0)
  260. // audio.setLesson(Integer.valueOf(lesson));
  261. // audio.setName(name);
  262. // audio.setUrl(url);
  263. // audio.setCreated(new Date());
  264. // audio = audioService.Insert(audio);
  265. //
  266. // HttpUtil.responseOutWithJson(request, response, audio);
  267. // return;
  268. // }
  269. @RequestMapping(value = "/insert", method = RequestMethod.POST)
  270. public void Insert(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
  271. if(audio.getIdGroup()==null || audio.getIdResource()==null || audio.getName()==null){
  272. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  273. return;
  274. }
  275. audio.setStatus(Status.ONLINE.getCode());
  276. audio.setCreated(new Timestamp(new Date().getTime()));
  277. audio = audioService.Insert(audio);
  278. TrailController.Insert(adminService, trailService, request, "audio", audio.getId(), " 新建资源:" + audio.getName());
  279. HttpUtil.responseOkData(request, response, audio);
  280. return;
  281. }
  282. @RequestMapping(value = "/update", method = RequestMethod.POST)
  283. public void Update(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
  284. if(audio.getId()==null){
  285. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  286. return;
  287. }
  288. System.out.println(audio.toString());
  289. Audio audioOld = audioService.GetOne(audio.getId());
  290. if(audioOld==null){
  291. HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
  292. return;
  293. }
  294. audio = (Audio)Common.CopyValue(audio, audioOld);
  295. audio = audioService.Insert(audio);
  296. TrailController.Insert(adminService, trailService, request, "audio", audio.getId(), " 修改资源:" + audio.getName());
  297. HttpUtil.responseOkData(request, response, audio);
  298. return;
  299. }
  300. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  301. public void Delete(HttpServletRequest request, HttpServletResponse response){
  302. String idAudio = request.getParameter("idAudio");
  303. audioService.Delete(Long.valueOf(idAudio));
  304. HttpUtil.responseOk(request, response);
  305. TrailController.Insert(adminService, trailService, request, "audio", Long.valueOf(idAudio), " 删除资源:" + idAudio);
  306. return;
  307. }
  308. /**
  309. * 过滤出渠道有访问权限的音频列表
  310. * @param audioList
  311. * @param rightsList
  312. * @return audioList
  313. */
  314. private List<Audio> FilterRights(List<Audio> audioList, List<Rights> rightsList){
  315. List<Audio> aList = new ArrayList<>();
  316. for(int i=0; i<audioList.size(); i++){
  317. for(int j=0; j<rightsList.size(); j++){
  318. if(audioList.get(i).getIdGroup() == rightsList.get(j).getIdGroup()){
  319. aList.add(audioList.get(i));
  320. break;
  321. }
  322. }
  323. }
  324. return aList;
  325. }
  326. }