TestsController.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 2021-05-18
  6. * Time: 15:09
  7. */
  8. namespace App\Http\Controllers;
  9. use Illuminate\Support\Facades\Config;
  10. use Illuminate\Support\Facades\DB;
  11. use Illuminate\Support\Facades\Input;
  12. use Illuminate\Support\Facades\Log;
  13. use Illuminate\Support\Facades\Redis;
  14. use Modules\Camera\Entities\CameraList;
  15. use Modules\Camera\Enum\CameraEnum;
  16. use Modules\Camera\Http\Controllers\Api\HaiKangController;
  17. use Modules\Camera\Http\Controllers\Api\TdwyController;
  18. use Modules\Camera\Jobs\CameraDownload;
  19. use Modules\Camera\Services\CameraServices;
  20. use Modules\Mine\Entities\MineList;
  21. use Modules\Mine\Entities\MineListExt;
  22. use Modules\Mine\Services\MineServices;
  23. use Modules\Mine\Enum\MineEnum;
  24. class TestsController {
  25. public function test()
  26. {
  27. //宁煤洗选重复摄像头
  28. //$this->xixuan_repeat();
  29. //新接入摄像头接口测试
  30. //$this->new_joggle();
  31. //乐橙token
  32. // $this->token();
  33. //乐橙直播列表
  34. // $this->list();
  35. //根据序列号获取直播地址和直播状态
  36. // $this->address();
  37. //区域下摄像头接口测试
  38. // $this->camera_list();
  39. //区域列表接口测试
  40. // $this->mine_list();
  41. }
  42. //区域列表接口测试
  43. public function mine_list(){
  44. $result = MineServices::getHaiKangArea(968, CameraEnum::REQUEST_TYPE_LOCAL);
  45. dd($result);
  46. }
  47. //区域下摄像头接口测试
  48. public function camera_list(){
  49. $result = CameraServices::getHaiKangCamera(968, '64018155582160000014', CameraEnum::CAMERA_TYPE_ALL);
  50. dd($result);
  51. //同步区域下摄像头
  52. if ($result['status']) {
  53. $trans_arr = [];
  54. $index_code_arr = [];
  55. foreach ($result['data'] as $k => $v) {
  56. $ip = '';
  57. $port = '';
  58. $com_number = '';
  59. //当前摄像头index_code数组
  60. $index_code_arr[$k] = $v['camera_id'];
  61. $params = [
  62. 'mine_id' => 4840,
  63. 'camera_name' => $this->transformCameraName($v['camera_name']),
  64. 'index_code' => $v['camera_id'],
  65. 'revert_id' => CameraEnum::CAMERA_DEFAULT_REVERT_ID,
  66. 'camera_source' => CameraEnum::CAMERA_SOURCE_2,
  67. 'ip' => $ip,
  68. 'port' => $port,
  69. 'com_number' => $com_number,
  70. ];
  71. CameraList::updateOrCreate(['index_code' => $v['camera_id']], $params);
  72. }
  73. //删除不存在的摄像头
  74. CameraList::where('mine_id', $val->id)->where('index_code', '!=', NULL)->whereNotIn('index_code', $index_code_arr)->delete();
  75. }
  76. }
  77. //转义摄像头名称中的特殊字符
  78. public function transformCameraName($camera_name)
  79. {
  80. $camera_name = trim($camera_name);
  81. $camera_name = str_replace('#', '号', $camera_name);
  82. $camera_name = str_replace(' ', '-', $camera_name);
  83. $camera_name = str_replace('+', '', $camera_name);
  84. return $camera_name;
  85. }
  86. //直播列表
  87. public function list(){
  88. // At_0000bd7f06fa796842778d92b50d4d2d
  89. $url = 'https://openapi.lechange.cn/openapi/liveList';
  90. //当前的UTC时间戳
  91. $time= strtotime(date('Y-m-d H:i:s',time()));
  92. //随机字符串
  93. $nonce = md5(time());
  94. //授权信息之appid
  95. $appId='lc753b03152e3b4f1e';
  96. //授权信息之appSecret
  97. $appSecret='cc9b1224acd24571a5daf18e8c7f94';
  98. //拼接计算“签名原始串”
  99. $signStr="time:$time,nonce:$nonce,appSecret:$appSecret";
  100. //计算摘要 sign
  101. $sign=md5($signStr);
  102. //业务参数
  103. $params = [
  104. 'token'=>'At_0000bd7f06fa796842778d92b50d4d2d',
  105. 'queryRange'=>"1-99"
  106. ];
  107. //组装调用接口的body体内容
  108. $data = json_encode([
  109. 'system'=>
  110. [
  111. 'ver'=>'1.0',
  112. 'sign'=>$sign,
  113. 'appId'=>$appId,
  114. 'time'=>$time,
  115. 'nonce'=>$nonce
  116. ],
  117. 'params'=>empty($params)? new \stdClass():$params,
  118. 'id'=>'88'
  119. ]);
  120. //http调用
  121. $ret = $this->curl_post($data, $url);
  122. $utf8 = iconv('utf-8', 'UTF-8', $ret);
  123. //调用后返回输出
  124. // dd(nl2br($utf8));
  125. $aa = json_decode(nl2br($utf8), true);
  126. dd($aa['result']['data']);
  127. }
  128. //根据序列号获取直播地址和直播状态
  129. public function address(){
  130. // At_0000bd7f06fa796842778d92b50d4d2d
  131. $url = 'https://openapi.lechange.cn/openapi/getLiveStreamInfo';
  132. //当前的UTC时间戳
  133. $time= strtotime(date('Y-m-d H:i:s',time()));
  134. //随机字符串
  135. $nonce = md5(time());
  136. //授权信息之appid
  137. $appId='lc753b03152e3b4f1e';
  138. //授权信息之appSecret
  139. $appSecret='cc9b1224acd24571a5daf18e8c7f94';
  140. //拼接计算“签名原始串”
  141. $signStr="time:$time,nonce:$nonce,appSecret:$appSecret";
  142. //计算摘要 sign
  143. $sign=md5($signStr);
  144. //业务参数
  145. $params = [
  146. 'token'=>'At_0000bd7f06fa796842778d92b50d4d2d',
  147. 'deviceId'=>'6J0C716PAZ6CF87',
  148. 'channelId'=>22
  149. ];
  150. //组装调用接口的body体内容
  151. $data = json_encode([
  152. 'system'=>
  153. [
  154. 'ver'=>'1.0',
  155. 'sign'=>$sign,
  156. 'appId'=>$appId,
  157. 'time'=>$time,
  158. 'nonce'=>$nonce
  159. ],
  160. 'params'=>empty($params)? new \stdClass():$params,
  161. 'id'=>'88'
  162. ]);
  163. //http调用
  164. $ret = $this->curl_post($data, $url);
  165. $utf8 = iconv('utf-8', 'UTF-8', $ret);
  166. //调用后返回输出
  167. dd(nl2br($utf8 ));
  168. }
  169. public function token(){
  170. // At_0000bd7f06fa796842778d92b50d4d2d
  171. $url = 'https://openapi.lechange.cn:443/openapi/accessToken';
  172. //当前的UTC时间戳
  173. $time= strtotime(date('Y-m-d H:i:s',time()));
  174. //随机字符串
  175. $nonce = md5(time());
  176. //授权信息之appid
  177. $appId='lc753b03152e3b4f1e';
  178. //授权信息之appSecret
  179. $appSecret='cc9b1224acd24571a5daf18e8c7f94';
  180. //拼接计算“签名原始串”
  181. $signStr="time:$time,nonce:$nonce,appSecret:$appSecret";
  182. //计算摘要 sign
  183. $sign=md5($signStr);
  184. //业务参数
  185. $params = [];
  186. //组装调用接口的body体内容
  187. $data = json_encode([
  188. 'system'=>
  189. [
  190. 'ver'=>'1.0',
  191. 'sign'=>$sign,
  192. 'appId'=>$appId,
  193. 'time'=>$time,
  194. 'nonce'=>$nonce
  195. ],
  196. 'params'=>empty($params)? new \stdClass():$params,
  197. 'id'=>'88'
  198. ]);
  199. //http调用
  200. $ret = $this->curl_post($data, $url);
  201. $utf8 = iconv('utf-8', 'UTF-8', $ret);
  202. //调用后返回输出
  203. echo 'result:<br>'.nl2br($utf8 ).'<br>';
  204. }
  205. function curl_post($data,$url)
  206. {
  207. $ch = curl_init();
  208. $res= curl_setopt ($ch, CURLOPT_URL,$url);
  209. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  210. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  211. curl_setopt ($ch, CURLOPT_HEADER, 0);
  212. curl_setopt($ch, CURLOPT_POST, 1);
  213. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  214. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  215. $result = curl_exec ($ch);
  216. curl_close($ch);
  217. if ($result == NULL) {
  218. return 0;
  219. }
  220. return $result;
  221. }
  222. //新接入摄像头接口测试
  223. public function new_joggle(){
  224. $mine_id_list = MineListExt::where('is_hak', 1)->pluck('mine_id')->all();
  225. // dd($mine_id_list);
  226. $result = MineServices::getHaiKangArea(4569, CameraEnum::REQUEST_TYPE_LOCAL);//配合修改mineext和haikangcontroller里打印
  227. dd($result);
  228. }
  229. //宁煤洗选重复摄像头
  230. public function xixuan_repeat(){
  231. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  232. //宁煤下各矿在离线数量
  233. $mine_list = DB::table('mine_list')->where('parent_id',968)->where('deleted_at',null)->get();
  234. $mine_use = [];//宁煤下每个矿所有区域
  235. foreach($mine_all as $key=>$value){
  236. if(count(explode('|',$value->degree)) > 1){
  237. if(explode('|',$value->degree)[0] == 968 && explode('|',$value->degree)[1] == 2429){
  238. $mine_use[] = $value->id;
  239. }
  240. }
  241. }
  242. $total = DB::table('camera_list')
  243. ->select('camera_list.camera_name','camera_list.camera_status','mine_list.title')
  244. ->leftJoin('mine_list','mine_list.id','=','camera_list.mine_id')
  245. ->whereIn('camera_list.mine_id',$mine_use)
  246. ->where('camera_list.deleted_at',null)
  247. ->where('mine_list.deleted_at',null)
  248. ->orderBy('mine_list.title')
  249. ->get();
  250. // dd($total);
  251. $aa = [];
  252. foreach($total as $k=>$v){
  253. $aa[] = $v->camera_name;
  254. }
  255. $unique_arr = array_unique ( $aa );
  256. // dd($unique_arr);
  257. $repeat_arr = array_diff_assoc ( $aa, $unique_arr );
  258. return $repeat_arr;
  259. }
  260. }