AudioController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package cn.efunbox.audio.controller;
  2. import cn.efunbox.audio.clients.AudioHttp;
  3. import cn.efunbox.audio.consts.Status;
  4. import cn.efunbox.audio.entity.*;
  5. import cn.efunbox.audio.service.*;
  6. import cn.efunbox.audio.utils.ApiCode;
  7. import cn.efunbox.audio.utils.HttpUtil;
  8. import cn.efunbox.audio.utils.Common;
  9. import com.alibaba.fastjson.JSONArray;
  10. import com.alibaba.fastjson.JSONObject;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.RequestBody;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.lang.reflect.Field;
  20. import java.lang.reflect.Method;
  21. import java.sql.Timestamp;
  22. import java.util.*;
  23. import java.util.List;
  24. /**
  25. * Created by yao on 17-9-26.
  26. */
  27. @RestController
  28. @Slf4j
  29. @RequestMapping(value = "/audio")
  30. public class AudioController {
  31. @Autowired
  32. AudioService audioService;
  33. @Autowired
  34. DeviceService deviceService;
  35. @Autowired
  36. RecordService recordService;
  37. @Autowired
  38. GroupingService groupingService;
  39. @Autowired
  40. RightsService rightsService;
  41. @Autowired
  42. AudioHttp audioHttp;
  43. /**
  44. * 管理员搜索接口
  45. * @param request
  46. * @param response
  47. */
  48. @RequestMapping(value = "/admsearch", method = RequestMethod.POST)
  49. public void AdminSearch(HttpServletRequest request, HttpServletResponse response){
  50. String name = request.getParameter("name");
  51. String album = request.getParameter("album");
  52. String idGroup = request.getParameter("idGroup");
  53. String page = request.getParameter("page");
  54. String size = request.getParameter("size");
  55. if(page==null || page.length()<1)
  56. page = "0";
  57. if(size==null || size.length()<1)
  58. size = "0";
  59. List<Audio> list = new ArrayList<>();
  60. if(idGroup!=null && idGroup.length()>0)
  61. list = audioService.SearchByIdGroup(Long.valueOf(idGroup), Integer.valueOf(page), Integer.valueOf(size));
  62. else if(name!=null && name.length()>0 && album!=null && album.length()>0)
  63. list = audioService.SearchByNameAlbum(name, album);
  64. else if(name!=null && name.length()>0)
  65. list = audioService.SearchByName(name);
  66. else if(album!=null && album.length()>0)
  67. list = audioService.SearchByAlbum(album);
  68. else
  69. list = audioService.SearchAll(Integer.valueOf(page), Integer.valueOf(size));
  70. HttpUtil.responseOkData(request, response, list);
  71. return;
  72. }
  73. /**
  74. * 用户搜索接口
  75. * @param request
  76. * @param response
  77. */
  78. @RequestMapping(value = "/search", method = RequestMethod.POST)
  79. public void Search(HttpServletRequest request, HttpServletResponse response){
  80. String id = request.getParameter("id");
  81. String name = request.getParameter("name");
  82. String album = request.getParameter("album");
  83. if(name==null && album==null){
  84. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  85. return;
  86. }
  87. if(id==null || id.length()==0)
  88. id = request.getHeader("id");
  89. List<Audio> list = null;
  90. // System.out.println("album:"+album+",name:"+name);
  91. if(name!=null && name.length()>0 && album!=null && album.length()>0)
  92. list = audioService.SearchByNameAlbum(name, album);
  93. else if(name!=null && name.length()>0)
  94. list = audioService.SearchByName(name);
  95. else
  96. list = audioService.SearchByAlbum(album);
  97. if(list==null || list.size()<1){
  98. HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
  99. return;
  100. }
  101. Device device = deviceService.GetOne(Long.valueOf(id));
  102. if(device==null){
  103. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  104. return;
  105. }
  106. //搜素设备所属渠道具有哪些资源组的权限
  107. Long idChannel = device.getIdChannel();
  108. List<Rights> rightsList = rightsService.SearchByIdChannel(idChannel, 0, 0);
  109. if(rightsList==null || rightsList.size()<1){
  110. HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
  111. return;
  112. }
  113. //过滤出有访问权限的音频列表
  114. List<Audio> audioList = FilterRights(list, rightsList);
  115. if(audioList==null || audioList.size()<1){
  116. HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED);
  117. return;
  118. }
  119. //随机选择一个音频
  120. Random random = new Random();
  121. int r = Math.abs(random.nextInt())%audioList.size();
  122. Audio audio = audioList.get(r);
  123. if(audio.getIdResource()!=null && audio.getIdResource().length()>0){
  124. String res = audioHttp.GetResource(audio.getIdResource());
  125. // System.out.println(res);
  126. Map map = JSONObject.parseObject(res);
  127. try{
  128. if(map.get("code").toString().equalsIgnoreCase("200")){
  129. map = JSONObject.parseObject(map.get("data").toString());
  130. JSONArray array = JSONArray.parseArray(map.get("audios").toString());
  131. map = JSONObject.parseObject(array.get(0).toString());
  132. String path = map.get("path").toString();
  133. path = path.replaceAll("\n","");
  134. audio.setUrl(path);
  135. // System.out.println(path);
  136. }
  137. }catch(Exception e){
  138. System.out.println(e.getMessage());
  139. audio.setUrl("fail to get resource uri");
  140. }
  141. }
  142. Record record = new Record();
  143. record.setIdDevice(device.getId());
  144. record.setIdChannel(device.getIdChannel());
  145. record.setIdAudio(audio.getId());
  146. record.setCreated(new Timestamp(new Date().getTime()));
  147. recordService.Insert(record);
  148. HttpUtil.responseOkData(request, response, audio);
  149. return;
  150. }
  151. // @RequestMapping(value = "/insert", method = RequestMethod.POST)
  152. // public void Insert(HttpServletRequest request, HttpServletResponse response){
  153. // String gid = request.getParameter("gid");
  154. // String rid = request.getParameter("rid");
  155. // String album = request.getParameter("album");
  156. // String lesson = request.getParameter("lesson");
  157. // String name = request.getParameter("name");
  158. // String url = request.getParameter("url");
  159. // if(gid==null || rid==null || album==null || name==null){
  160. // HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  161. // return;
  162. // }
  163. //
  164. // Audio audio = new Audio();
  165. // audio.setIdGroup(Long.valueOf(gid));
  166. // audio.setIdResource(rid);
  167. // audio.setAlbum(album);
  168. // if(lesson!=null && lesson.length()>0)
  169. // audio.setLesson(Integer.valueOf(lesson));
  170. // audio.setName(name);
  171. // audio.setUrl(url);
  172. // audio.setCreated(new Date());
  173. // audio = audioService.Insert(audio);
  174. //
  175. // HttpUtil.responseOutWithJson(request, response, audio);
  176. // return;
  177. // }
  178. @RequestMapping(value = "/insert", method = RequestMethod.POST)
  179. public void Insert(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
  180. if(audio.getIdGroup()==null || audio.getIdResource()==null || audio.getName()==null){
  181. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  182. return;
  183. }
  184. audio.setStatus(Status.ONLINE.getCode());
  185. audio.setCreated(new Timestamp(new Date().getTime()));
  186. audio = audioService.Insert(audio);
  187. HttpUtil.responseOkData(request, response, audio);
  188. return;
  189. }
  190. @RequestMapping(value = "/update", method = RequestMethod.POST)
  191. public void Update(HttpServletRequest request, HttpServletResponse response, @RequestBody Audio audio){
  192. if(audio.getId()==null){
  193. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  194. return;
  195. }
  196. System.out.println(audio.toString());
  197. Audio audioOld = audioService.GetOne(audio.getId());
  198. if(audioOld==null){
  199. HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
  200. return;
  201. }
  202. audio = (Audio)Common.CopyValue(audio, audioOld);
  203. audio = audioService.Insert(audio);
  204. HttpUtil.responseOkData(request, response, audio);
  205. return;
  206. }
  207. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  208. public void Delete(HttpServletRequest request, HttpServletResponse response){
  209. String idAudio = request.getParameter("idAudio");
  210. audioService.Delete(Long.valueOf(idAudio));
  211. HttpUtil.responseOk(request, response);
  212. return;
  213. }
  214. /**
  215. * 过滤出渠道有访问权限的音频列表
  216. * @param audioList
  217. * @param rightsList
  218. * @return audioList
  219. */
  220. private List<Audio> FilterRights(List<Audio> audioList, List<Rights> rightsList){
  221. List<Audio> aList = new ArrayList<>();
  222. for(int i=0; i<audioList.size(); i++){
  223. for(int j=0; j<rightsList.size(); j++){
  224. if(audioList.get(i).getIdGroup() == rightsList.get(j).getIdGroup()){
  225. aList.add(audioList.get(i));
  226. break;
  227. }
  228. }
  229. }
  230. return aList;
  231. }
  232. }