DeviceController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. package cn.efunbox.audio.controller;
  2. //import cn.efunbox.audio.clients.UserFeign;
  3. import cn.efunbox.audio.clients.AudioHttp;
  4. import cn.efunbox.audio.clients.UserHttp;
  5. import cn.efunbox.audio.entity.Channel;
  6. import cn.efunbox.audio.entity.Device;
  7. import cn.efunbox.audio.service.ChannelService;
  8. import cn.efunbox.audio.service.DeviceService;
  9. import cn.efunbox.audio.utils.ApiCode;
  10. import cn.efunbox.audio.utils.Encrypt;
  11. import cn.efunbox.audio.utils.HttpUtil;
  12. import com.alibaba.fastjson.JSON;
  13. import com.alibaba.fastjson.JSONArray;
  14. import com.alibaba.fastjson.JSONObject;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.data.domain.Page;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestMethod;
  22. import org.springframework.web.bind.annotation.RequestParam;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.nio.charset.StandardCharsets;
  27. import java.sql.Timestamp;
  28. import java.util.*;
  29. /**
  30. * Created by yao on 17-9-26.
  31. */
  32. @RestController
  33. @Slf4j
  34. @RequestMapping(value = "/device")
  35. public class DeviceController {
  36. @Autowired
  37. DeviceService deviceService;
  38. @Autowired
  39. ChannelService channelService;
  40. // @Autowired
  41. // UserFeign userFeign;
  42. @Autowired
  43. UserHttp userHttp;
  44. @Autowired
  45. AudioHttp audioHttp;
  46. @Value("${iaas.user.register}")
  47. private String urlRegister;
  48. @Value("${iaas.user.audio.bizCode}")
  49. private String bizCode;
  50. @Value("${iaas.user.audio.appCode}")
  51. private String appCode;
  52. @Value("${iaas.user.audio.platform}")
  53. private String platform;
  54. @Value("${iaas.user.audio.os}")
  55. private String os;
  56. @Value("${iaas.user.audio.appVer}")
  57. private String appVer;
  58. @Value("${iaas.user.audio.terminal}")
  59. private String terminal;
  60. @Value("${iaas.user.audio.entryType}")
  61. private String entryType;
  62. @Value("${interface.sign.key}")
  63. private String signKey;
  64. @RequestMapping(value = "/feign")
  65. public void Feigh(HttpServletRequest request, HttpServletResponse response,
  66. @RequestParam("idChannel")String idChannel, @RequestParam("mobile")String mobile){
  67. String res = audioHttp.SearchByIdResource("653f6a0c-b997-11e7-9771-080027fcfc4b");
  68. System.out.println(res);
  69. Map map = JSONObject.parseObject(res);
  70. if(map.get("code").toString().equalsIgnoreCase("200")){
  71. map = JSONObject.parseObject(map.get("data").toString());
  72. JSONArray array = JSONArray.parseArray(map.get("audios").toString());
  73. map = JSONObject.parseObject(array.get(0).toString());
  74. String path = map.get("path").toString();
  75. System.out.println(path);
  76. }
  77. // String ip = HttpUtil.getIpAddress(request);
  78. // System.out.println("start:"+ip);
  79. // String res = userHttp.Register(UUID.randomUUID().toString().substring(0, 31),
  80. // idChannel, ip, mobile, mobile);
  81. // String res = userFeign.Register(
  82. //// "application/json",
  83. // bizCode,
  84. //// UUID.randomUUID().toString().substring(0, 31),
  85. // "8723-4327-64238-asdkja",
  86. // appCode,
  87. // platform,
  88. // os,
  89. // "1111",
  90. // "123.126.111.3",
  91. // appVer,
  92. // terminal,
  93. // mobile,
  94. // entryType,
  95. // "123456",
  96. // "",
  97. // ""
  98. // );
  99. // System.out.println(res);
  100. // Map map = JSONObject.parseObject(res);
  101. // HttpUtil.responseOkData(request, response, map);
  102. // System.out.println("res:"+res);
  103. // String res = userFeign.getUser("c26ceb09-4e85-40ba-a81d-1535d142cc43");
  104. // System.out.println(res);
  105. }
  106. @RequestMapping(value = "/token" ,method = RequestMethod.POST)
  107. public void Login(HttpServletRequest request, HttpServletResponse response, @RequestParam long id, @RequestParam String token){
  108. Device device = deviceService.Login(id, token);
  109. if(device==null){
  110. HttpUtil.responseApiCode(request, response, ApiCode.INVALID_TOKEN);
  111. return;
  112. }
  113. device.setIaas_eid("");
  114. device.setIaas_name("");
  115. device.setIaas_uid("");
  116. device.setIaas_token("");
  117. device.setIaas_pwd("");
  118. device.setTokenOld("");
  119. HttpUtil.responseOkData(request, response, device);
  120. return;
  121. }
  122. @RequestMapping(value = "/register" ,method = RequestMethod.POST)
  123. public void Register(HttpServletRequest request, HttpServletResponse response){
  124. String idChannel = request.getParameter("idChannel");
  125. String idDevice = request.getParameter("idDevice");
  126. if(idChannel==null || idDevice==null){
  127. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  128. return;
  129. }
  130. if(deviceService.CheckRegister(Long.valueOf(idChannel), idDevice)) {
  131. HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST);
  132. return;
  133. }
  134. Channel channel = channelService.SearchById(Long.valueOf(idChannel));
  135. if(Objects.isNull(channel)){
  136. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  137. return;
  138. }
  139. //向云平台注册设备
  140. String ip = HttpUtil.getIpAddress(request);
  141. System.out.println("start:"+ip);
  142. String res = userHttp.Register(UUID.randomUUID().toString().substring(0, 31),
  143. idChannel, ip, idDevice, idDevice);
  144. System.out.println(res);
  145. Map mapRes = JSONObject.parseObject(res);
  146. System.out.println(mapRes.toString());
  147. if(Integer.valueOf(mapRes.get("code").toString())!=200){
  148. HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST);
  149. return;
  150. }
  151. mapRes = JSONObject.parseObject(mapRes.get("data").toString());
  152. Device device = deviceService.Register(Long.valueOf(idChannel), idDevice);
  153. if(device!=null){
  154. //记录云平台的账号信息
  155. device.setIaas_eid(mapRes.get("eid").toString());
  156. device.setIaas_uid(mapRes.get("uid").toString());
  157. device.setIaas_name(idDevice);
  158. device.setIaas_pwd(idDevice);
  159. device.setIaas_token(mapRes.get("token").toString());
  160. device.setIaas_expiration(new Timestamp(Long.valueOf(mapRes.get("expiration").toString())));
  161. device = deviceService.Update(device);
  162. device.setIaas_eid("");
  163. device.setIaas_name("");
  164. device.setIaas_uid("");
  165. device.setIaas_token("");
  166. device.setIaas_pwd("");
  167. device.setTokenOld("");
  168. HttpUtil.responseOkData(request, response, device);
  169. }
  170. return;
  171. }
  172. @RequestMapping(value = "/token",method = RequestMethod.GET)
  173. public void token(HttpServletRequest request, HttpServletResponse response){
  174. String idChannel = request.getParameter("idChannel");
  175. String idDevice = request.getParameter("idDevice");
  176. String ts = request.getParameter("x-ts");
  177. String sign = request.getParameter("sign");
  178. if(StringUtils.isBlank(idChannel) || StringUtils.isBlank(idDevice) || StringUtils.isBlank(sign)){
  179. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  180. return;
  181. }
  182. Map<String,String> param = new HashMap<>();
  183. param.put("idChannel",idChannel);
  184. param.put("idDevice",idDevice);
  185. param.put("x-ts",ts);
  186. log.info("find token param : {} , sign : {}", JSON.toJSONString(param),sign);
  187. String test = Encrypt.createHMACSHA256(param,signKey);
  188. if (StringUtils.isBlank(ts)) {
  189. test = Encrypt.createSHA256Sign(param,signKey);
  190. }
  191. if (!sign.equalsIgnoreCase(test)) {
  192. HttpUtil.responseApiCode(request, response, ApiCode.SIGN_FAIL);
  193. return;
  194. }
  195. Channel channel = channelService.SearchById(Long.valueOf(idChannel));
  196. if(Objects.isNull(channel)){
  197. HttpUtil.responseApiCode(request, response, ApiCode.CHANNEL_NOT_FOUND_ERROR);
  198. return;
  199. }
  200. Device device = deviceService.findToken(Long.valueOf(idChannel), idDevice);
  201. if(Objects.isNull(device)){
  202. HttpUtil.responseApiCode(request, response, ApiCode.NO_REGISTER_FAIL);
  203. return;
  204. }
  205. device.setIaas_eid("");
  206. device.setIaas_name("");
  207. device.setIaas_uid("");
  208. device.setIaas_token("");
  209. device.setIaas_pwd("");
  210. device.setTokenOld("");
  211. HttpUtil.responseOkData(request, response, device);
  212. return;
  213. }
  214. @RequestMapping(value = "/v2/token",method = RequestMethod.GET)
  215. public void tokenV2(HttpServletRequest request, HttpServletResponse response){
  216. String idChannel = request.getParameter("idChannel");
  217. String idDevice = request.getParameter("idDevice");
  218. String ts = request.getParameter("x-ts");
  219. String sign = request.getParameter("sign");
  220. if(StringUtils.isBlank(idChannel) || StringUtils.isBlank(idDevice) || StringUtils.isBlank(sign)){
  221. HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  222. return;
  223. }
  224. Map<String,String> param = new HashMap<>();
  225. param.put("idChannel",idChannel);
  226. param.put("idDevice",idDevice);
  227. param.put("x-ts",ts);
  228. String signStr = Encrypt.createHMACSHA256(param,signKey);
  229. if (!signStr.equalsIgnoreCase(sign)) {
  230. HttpUtil.responseApiCode(request, response, ApiCode.SIGN_FAIL);
  231. return;
  232. }
  233. Channel channel = channelService.SearchById(Long.valueOf(idChannel));
  234. if(Objects.isNull(channel)){
  235. HttpUtil.responseApiCode(request, response, ApiCode.CHANNEL_NOT_FOUND_ERROR);
  236. return;
  237. }
  238. Device device = deviceService.findToken(Long.valueOf(idChannel), idDevice);
  239. if(Objects.isNull(device)){
  240. HttpUtil.responseApiCode(request, response, ApiCode.NO_REGISTER_FAIL);
  241. return;
  242. }
  243. device.setIaas_eid("");
  244. device.setIaas_name("");
  245. device.setIaas_uid("");
  246. device.setIaas_token("");
  247. device.setIaas_pwd("");
  248. device.setTokenOld("");
  249. HttpUtil.responseOkData(request, response, device);
  250. return;
  251. }
  252. // @RequestMapping(value = "/register" ,method = RequestMethod.POST)
  253. // public Map Register(HttpServletRequest request, @RequestBody Device device){
  254. // Map map = new HashMap<>();
  255. // if(device.getIdChannel()==null || device.getIdDevice()==null){
  256. // map.put("code", ApiCode.PARAMETER_ERROR.getCode());
  257. // map.put("msg", ApiCode.PARAMETER_ERROR.getMessage());
  258. // return map;
  259. // }
  260. // if(deviceService.CheckRegister(device.getIdChannel(), device.getIdDevice())){
  261. // map.put("code", ApiCode.RECORD_EXIST.getCode());
  262. // map.put("msg", ApiCode.RECORD_EXIST.getMessage());
  263. // return map;
  264. // }
  265. // List<Channel> channelList = channelService.SearchById(device.getIdChannel());
  266. // if(channelList==null || channelList.size()<1){
  267. // map.put("code", ApiCode.PARAMETER_ERROR.getCode());
  268. // map.put("msg", ApiCode.PARAMETER_ERROR.getMessage());
  269. // return map;
  270. // }
  271. // device = deviceService.Register(device.getIdChannel(), device.getIdDevice());
  272. // if(device!=null){
  273. // map.put("code", ApiCode.OK.getCode());
  274. // Map data = new HashMap<>();
  275. // data.put("id", device.getId());
  276. // data.put("token", device.getTokenNew());
  277. // map.put("data", data);
  278. // }
  279. //
  280. // return map;
  281. // }
  282. /**
  283. * 搜索已注册的设备
  284. * @param request
  285. * @param response
  286. */
  287. @RequestMapping(value = "/search" ,method = RequestMethod.POST)
  288. public void Search(HttpServletRequest request, HttpServletResponse response){
  289. String idDevice = request.getParameter("idDevice");
  290. String idChannel = request.getParameter("idChannel");
  291. String start = request.getParameter("start");
  292. String end = request.getParameter("end");
  293. String page = request.getParameter("page");
  294. String size = request.getParameter("size");
  295. if(page==null || page.length()<1)
  296. page = "0";
  297. if(size==null || size.length()<1)
  298. size = "0";
  299. Map<String,Object> map = new HashMap<>();
  300. if((idDevice==null || idDevice.length()==0) && (idChannel==null || idChannel.length()==0)){
  301. Page<Device> pageRes = null;
  302. if((start==null || start.length()==0) || (end==null || end.length()==0))
  303. pageRes = deviceService.SearchAll(Integer.valueOf(page), Integer.valueOf(size));
  304. else
  305. pageRes = deviceService.SearchAll(Integer.valueOf(page), Integer.valueOf(size), Timestamp.valueOf(start), Timestamp.valueOf(end));
  306. for(int i=0; i<pageRes.getNumberOfElements(); i++){
  307. pageRes.getContent().get(i).setTokenNew("");
  308. pageRes.getContent().get(i).setTokenOld("");
  309. }
  310. map.put("data", pageRes.getContent());
  311. map.put("size", pageRes.getNumberOfElements());
  312. map.put("total", pageRes.getTotalElements());
  313. }else{
  314. if(idDevice==null || idDevice.length()==0)
  315. idDevice = "0";
  316. if(idChannel==null || idChannel.length()==0)
  317. idChannel = "0";
  318. Page<Device> pageRes = null;
  319. if((start==null || start.length()==0) || (end==null || end.length()==0))
  320. pageRes = deviceService.Search(Long.valueOf(idChannel), idDevice, Integer.valueOf(page), Integer.valueOf(size));
  321. else
  322. pageRes = deviceService.Search(Long.valueOf(idChannel), idDevice, Integer.valueOf(page), Integer.valueOf(size), Timestamp.valueOf(start), Timestamp.valueOf(end));
  323. for(int i=0; i<pageRes.getNumberOfElements(); i++){
  324. System.out.println("i:"+i);
  325. pageRes.getContent().get(i).setTokenNew("");
  326. pageRes.getContent().get(i).setTokenOld("");
  327. }
  328. map.put("data", pageRes.getContent());
  329. map.put("size", pageRes.getNumberOfElements());
  330. map.put("total", pageRes.getTotalElements());
  331. }
  332. HttpUtil.responseOkData(request, response, map);
  333. return;
  334. }
  335. // @RequestMapping(value = "/update", method = RequestMethod.POST)
  336. // public void Update(HttpServletRequest request, HttpServletResponse response, @RequestBody Device device){
  337. // Device deviceOld = deviceService.GetOne(device.getId());
  338. // if(deviceOld==null){
  339. // HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
  340. // return;
  341. // }
  342. // device = (Device)Common.CopyValue(device, deviceOld);
  343. // device = deviceService.Update(device);
  344. // HttpUtil.responseOutWithJson(request, response, device);
  345. // return;
  346. // }
  347. //
  348. // @RequestMapping(value = "/delete", method = RequestMethod.POST)
  349. // public void Delete(HttpServletRequest request, HttpServletResponse response){
  350. // String idDevice = request.getParameter("idDevice");
  351. // deviceService.Delete(Long.valueOf(idDevice));
  352. // HttpUtil.responseOk(request, response);
  353. // return;
  354. // }
  355. @RequestMapping(value = "/findAlbum", method = RequestMethod.GET)
  356. public void findAlbum(HttpServletRequest request, HttpServletResponse response, String id){
  357. Map<String,Object> map = new HashMap<>();
  358. map.put("albums", deviceService.findAlbum(id));
  359. HttpUtil.responseOkData(request, response, map);
  360. }
  361. }