DwyService.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. <?php
  2. namespace App\Service;
  3. /**
  4. * dwy相关
  5. * @package App\Models
  6. */
  7. class DwyService extends Service
  8. {
  9. private $url = 'https://tm.dwycloud.com';
  10. private $url1 = 'https://tm.dwycloud.com';
  11. protected $num = 0;
  12. protected static $instance;
  13. public static function getInstance(): self
  14. {
  15. if (self::$instance == null) {
  16. self::$instance = new DwyService();
  17. }
  18. return self::$instance;
  19. }
  20. public function setBoxData($token,$dv,$data,$box_list,$old_data){
  21. //
  22. $this->num = 0;
  23. // 测试
  24. // $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODg5MzM1OTMwMTE3MjAxOTIiLCJhdXRoIjoiUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSLFJPTEVfQlJBTkRfU1VQUExJRVIsUk9MRV9VU0VfQlJBTkRfU1VQUExJRVIsUk9MRV9PVVRFUl9VU0VSLFJPTEVfSU5ORVJfVVNFUiIsInRva2VuSWQiOiIyIiwiZXhwIjoxNzIxMDExNjcwfQ.T8M-h2_EbBLU9xxMUP52c4B_OtzIRLWdLOYru8qE0Zi0k9PfIfYff8TxaQ9Kux8j6_2zJW1asSODjK3slNsNYQ';
  25. // $dv = 'cff4dc68c73115b';/**/
  26. // $box_list = [
  27. // 'CK00009',
  28. // 'CK00018',
  29. // ];
  30. //
  31. // $old_data = json_decode(file_get_contents('38929.txt'),true);
  32. // var_dump($old_data);die;
  33. // 处理数据
  34. // list ($data,$box_list) = $this->clearData($old_data);
  35. // var_dump($data);die;
  36. // var_dump($box_list);die;
  37. // dd($old_data);die;
  38. //请求获取仓位卷码信息
  39. $box_roll_list = $this->getBoxData($dv,$token,$box_list);
  40. // var_dump($box_roll_list);die;
  41. $new_data = [];
  42. foreach ($data as $k=>$box_detail){
  43. foreach ($box_detail['detail'] as $v){
  44. foreach ($box_roll_list as $roll_number=>$roll_detail){
  45. if(in_array($v,$roll_detail['detail'])){
  46. if(!isset($new_data[$roll_detail['box_code']])) $new_data[$roll_detail['box_code']] = [
  47. 'detail' => [],
  48. 'fake_qty' => $data[$roll_detail['box_code']]['fake_qty'],
  49. 'material_code' => $roll_detail['material_code'],
  50. 'roll_number' => $roll_number
  51. ];
  52. $new_data[$roll_detail['box_code']]['detail'][] = $v;
  53. break;
  54. }
  55. }
  56. }
  57. }
  58. //补全数据
  59. if($dv === 'a6a672c3e458bed2'&&false){
  60. $new_data = $this->setBoxFake($new_data);
  61. list($lind_bind,$lead_out) = $this->setNewData1($old_data,$new_data);
  62. }else{
  63. list($lind_bind,$lead_out) = $this->setNewData($old_data,$new_data);
  64. }
  65. //
  66. //把数据拼回去
  67. // var_dump($data);die;
  68. // var_dump($old_data);die;
  69. // var_dump($lind_bind);
  70. // var_dump($lead_out);die;
  71. // die('ddd');
  72. return [$lind_bind,$lead_out];
  73. }
  74. public function setBoxData1($token,$dv,$data,$box_list,$old_data){
  75. //
  76. $this->num = 0;
  77. // 测试
  78. // $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODg5MzM1OTMwMTE3MjAxOTIiLCJhdXRoIjoiUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSLFJPTEVfQlJBTkRfU1VQUExJRVIsUk9MRV9VU0VfQlJBTkRfU1VQUExJRVIsUk9MRV9PVVRFUl9VU0VSLFJPTEVfSU5ORVJfVVNFUiIsInRva2VuSWQiOiIyIiwiZXhwIjoxNzIxMDExNjcwfQ.T8M-h2_EbBLU9xxMUP52c4B_OtzIRLWdLOYru8qE0Zi0k9PfIfYff8TxaQ9Kux8j6_2zJW1asSODjK3slNsNYQ';
  79. // $dv = 'cff4dc68c73115b';/**/
  80. // $box_list = [
  81. // 'CK00009',
  82. // 'CK00018',
  83. // ];
  84. //
  85. // $old_data = json_decode(file_get_contents('38929.txt'),true);
  86. // var_dump($old_data);die;
  87. // 处理数据
  88. // list ($data,$box_list) = $this->clearData($old_data);
  89. // var_dump($data);die;
  90. // var_dump($box_list);die;
  91. // dd($old_data);die;
  92. //请求获取仓位卷码信息
  93. $box_roll_list = $this->getBoxData1($dv,$token,$box_list);
  94. $new_data = [];
  95. foreach ($data as $k=>$box_detail){
  96. foreach ($box_detail['detail'] as $v){
  97. foreach ($box_roll_list as $roll_number=>$roll_detail){
  98. if(in_array($v,$roll_detail['detail'])){
  99. if(!isset($new_data[$roll_detail['box_code']])) $new_data[$roll_detail['box_code']] = [
  100. 'detail' => [],
  101. 'fake_qty' => $data[$roll_detail['box_code']]['fake_qty'],
  102. 'material_code' => $roll_detail['material_code'],
  103. 'roll_number' => $roll_number
  104. ];
  105. $new_data[$roll_detail['box_code']]['detail'][] = $v;
  106. break;
  107. }
  108. }
  109. }
  110. }
  111. //补全数据
  112. if($dv === 'a6a672c3e458bed2'&&false){
  113. $new_data = $this->setBoxFake($new_data);
  114. list($lind_bind,$lead_out) = $this->setNewData1($old_data,$new_data);
  115. }else{
  116. list($lind_bind,$lead_out) = $this->setNewData2($old_data,$new_data);
  117. }
  118. // var_dump($lind_bind);
  119. // var_dump($lead_out);die;
  120. //
  121. //把数据拼回去
  122. // var_dump($data);die;
  123. // var_dump($old_data);die;
  124. // var_dump($lind_bind);
  125. // var_dump($lead_out);die;
  126. // die('ddd');
  127. return [$lind_bind,$lead_out];
  128. }
  129. public function clearData($data){
  130. $return = [];
  131. $box_list = [];
  132. if( empty($data['lead_out']) || empty($data['lead_out']['brand_out_stock_list'])) return;
  133. foreach ($data['lead_out']['brand_out_stock_list'] as $value){
  134. $tmp = $value['brand_out_stock_dtl'][0] ?? [];
  135. $return[$value['send_box_code']] = [
  136. 'fake_qty' => $tmp['fake_qty'],
  137. 'detail' => explode(',',$tmp['brand_qr_code_list'])
  138. ];
  139. $box_list[] = $value['send_box_code'];
  140. }
  141. return [$return,$box_list];
  142. }
  143. // 获取指定数量的值,并从原数组中删除这些值
  144. function getValues(&$array, $count) {
  145. // 获取前$count个值
  146. $result = array_slice($array, 0, $count);
  147. // 从原数组中删除这些值
  148. $array = array_slice($array, $count);
  149. return $result;
  150. }
  151. private function setNewData($old_data,$data){
  152. // var_dump($old_data);
  153. $code_key_data = [];
  154. foreach ($data as $v){
  155. if(!isset($code_key_data[$v['material_code']])) $code_key_data[$v['material_code']] = [];
  156. $code_key_data[$v['material_code']] = array_merge($code_key_data[$v['material_code']],$v['detail']);
  157. }
  158. $lind_bind = $old_data['lead_bind'];
  159. $lind_bind_key_list = [];
  160. foreach ($lind_bind['material_list'] as &$l){
  161. // unset($l['brand_qr_code_list']);
  162. // $l['qty'] = $l['fake_qty'];
  163. // $l['brand_qr_code_list'] = $this->getValues( $code_key_data[$l['material_code']],$l['qty']);
  164. $lind_bind_key_list[$l['order_item_id']] = [
  165. 'product_code' => $l['product_code'],
  166. 'product_code_show' => $l['product_code_show'],
  167. 'process_title' => $l['process_title'],
  168. 'color' => $l['color'],
  169. 'process_title_two' => $l['process_title_two'],
  170. 'color_two' => $l['color_two'],
  171. ];
  172. unset($l['fake_qty']);
  173. }
  174. $lead_out = $old_data['lead_out']['brand_out_stock_list'];
  175. foreach ($lead_out as &$ll){
  176. foreach ($ll['brand_out_stock_dtl'] as &$lll){
  177. // unset($lll['brand_qr_code_list']);
  178. // $lll['qty'] = $ll['brand_out_stock_dtl'][0]['fake_qty'];
  179. // $lll['qty'] = $lll['fake_qty'];
  180. // unset($lll['fake_qty']);
  181. // var_dump($data[$ll['send_box_code']]);
  182. // $lll['brand_qr_code_list'] = implode(',',$data[$ll['send_box_code']]['detail']);
  183. // $lll['brand_qr_code_list'] = implode(',',$this->getValues( $data[$ll['send_box_code']]['detail'],$lll['qty']));;
  184. $lll['product_code'] = $lind_bind_key_list[$lll['bus_no']]['product_code'] ?? '';
  185. $lll['product_code_show'] = $lind_bind_key_list[$lll['bus_no']]['product_code_show'] ?? '';
  186. $lll['process_title'] = $lind_bind_key_list[$lll['bus_no']]['process_title'] ?? '';
  187. $lll['color'] = $lind_bind_key_list[$lll['bus_no']]['color'] ?? '';
  188. $lll['process_title_two'] = $lind_bind_key_list[$lll['bus_no']]['process_title_two'] ?? '';
  189. $lll['color_two'] = $lind_bind_key_list[$lll['bus_no']]['color_two'] ?? '';
  190. }
  191. }
  192. file_put_contents('1.txt',json_encode(['lind_bind'=>$lind_bind,'lead_out'=>['brand_out_stock_list'=>$lead_out]]));
  193. // var_dump($lind_bind);
  194. // var_dump($lead_out);die;
  195. return [$lind_bind,['brand_out_stock_list'=>$lead_out]];
  196. }
  197. private function setNewData2($old_data,$data){
  198. // var_dump($old_data);
  199. $code_key_data = [];
  200. foreach ($data as $v){
  201. if(!isset($code_key_data[$v['material_code']])) $code_key_data[$v['material_code']] = [];
  202. $code_key_data[$v['material_code']] = array_merge($code_key_data[$v['material_code']],$v['detail']);
  203. }
  204. $lind_bind = $old_data['lead_bind'];
  205. $lind_bind_key_list = [];
  206. foreach ($lind_bind['material_list'] as &$l){
  207. // unset($l['brand_qr_code_list']);
  208. // $l['qty'] = $l['fake_qty'];
  209. // $l['brand_qr_code_list'] = $this->getValues( $code_key_data[$l['material_code']],$l['qty']);
  210. $mma = $l['mat_material_a'] ?? [];
  211. //"mat_material_a":{"mat_category_code_show":"免漆板1800香杉木","mat_category_code":"BC020202","cpdj_show":"尊贵型","cpdj":"cpdj01","grade_show":"E0","grade":"01"
  212. if(isset($l['mat_material_a'])){
  213. $l['mat_category_code_show'] = $l['mat_material_a']['mat_category_code_show'] ?? '';
  214. $l['mat_category_code'] = $l['mat_material_a']['mat_category_code'] ?? '';
  215. $l['cpdj'] = $l['mat_material_a']['cpdj'] ?? '';
  216. $l['cpdj_show'] = $l['mat_material_a']['cpdj_show'] ?? '';
  217. $l['grade_show'] = $l['mat_material_a']['grade_show'] ?? '';
  218. $l['grade'] = $l['mat_material_a']['grade'] ?? '';
  219. }
  220. $lind_bind_key_list[$l['order_item_id']] = [
  221. 'product_code' => $l['product_code'],
  222. 'product_code_show' => $l['product_code_show'],
  223. 'process_title' => $l['process_title']??'',
  224. 'color' => $l['color']??'',
  225. 'process_title_two' => $l['process_title_two']??'',
  226. 'color_two' => $l['color_two']??'',
  227. 'mat_material_a' => $l['mat_material_a']??'',
  228. 'mat_category_code_show' => $mma['mat_category_code_show'] ?? '',
  229. 'mat_category_code' => $mma['mat_category_code'] ?? '',
  230. 'cpdj' => $mma['cpdj'] ?? '',
  231. 'cpdj_show' => $mma['cpdj_show'] ?? '',
  232. 'grade_show' => $mma['grade_show'] ?? '',
  233. 'grade' => $mma['grade'] ?? '',
  234. ];
  235. unset($l['fake_qty']);
  236. }
  237. $lead_out = $old_data['lead_out']['brand_out_stock_list'];
  238. foreach ($lead_out as &$ll){
  239. foreach ($ll['brand_out_stock_dtl'] as &$lll){
  240. // unset($lll['brand_qr_code_list']);
  241. // $lll['qty'] = $ll['brand_out_stock_dtl'][0]['fake_qty'];
  242. // $lll['qty'] = $lll['fake_qty'];
  243. // unset($lll['fake_qty']);
  244. // var_dump($data[$ll['send_box_code']]);
  245. // $lll['brand_qr_code_list'] = implode(',',$data[$ll['send_box_code']]['detail']);
  246. // $lll['brand_qr_code_list'] = implode(',',$this->getValues( $data[$ll['send_box_code']]['detail'],$lll['qty']));;
  247. $lll['product_code'] = $lind_bind_key_list[$lll['bus_no']]['product_code'] ?? '';
  248. $lll['product_code_show'] = $lind_bind_key_list[$lll['bus_no']]['product_code_show'] ?? '';
  249. $lll['process_title'] = $lind_bind_key_list[$lll['bus_no']]['process_title'] ?? '';
  250. $lll['color'] = $lind_bind_key_list[$lll['bus_no']]['color'] ?? '';
  251. $lll['process_title_two'] = $lind_bind_key_list[$lll['bus_no']]['process_title_two'] ?? '';
  252. $lll['color_two'] = $lind_bind_key_list[$lll['bus_no']]['color_two'] ?? '';
  253. $lll['mat_category_code_show'] = $lind_bind_key_list[$lll['bus_no']]['mat_category_code_show'] ?? '';
  254. $lll['mat_category_code'] = $lind_bind_key_list[$lll['bus_no']]['mat_category_code'] ?? '';
  255. $lll['cpdj'] = $lind_bind_key_list[$lll['bus_no']]['cpdj'] ?? '';
  256. $lll['cpdj_show'] = $lind_bind_key_list[$lll['bus_no']]['cpdj_show'] ?? '';
  257. $lll['grade_show'] = $lind_bind_key_list[$lll['bus_no']]['grade_show'] ?? '';
  258. $lll['grade'] = $lind_bind_key_list[$lll['bus_no']]['grade'] ?? '';
  259. }
  260. }
  261. file_put_contents('1.txt',json_encode(['lind_bind'=>$lind_bind,'lead_out'=>['brand_out_stock_list'=>$lead_out]]));
  262. // var_dump($lind_bind);
  263. // var_dump($lead_out);die;
  264. return [$lind_bind,['brand_out_stock_list'=>$lead_out]];
  265. }
  266. private function setNewData1($old_data,$data){
  267. // var_dump($old_data);
  268. $code_key_data = [];
  269. foreach ($data as $v){
  270. if(!isset($code_key_data[$v['material_code']])) $code_key_data[$v['material_code']] = [];
  271. $code_key_data[$v['material_code']] = array_merge($code_key_data[$v['material_code']],$v['detail']);
  272. }
  273. $lind_bind = $old_data['lead_bind'];
  274. $lind_bind_key_list = [];
  275. foreach ($lind_bind['material_list'] as &$l){
  276. unset($l['brand_qr_code_list']);
  277. // $l['qty'] = $l['fake_qty'];
  278. $l['brand_qr_code_list'] = $this->getValues( $code_key_data[$l['material_code']],$l['qty']);
  279. $lind_bind_key_list[$l['order_item_id']] = [
  280. 'product_code' => $l['product_code'],
  281. 'product_code_show' => $l['product_code_show'],
  282. 'process_title' => $l['process_title'],
  283. 'color' => $l['color'],
  284. 'process_title_two' => $l['process_title_two'],
  285. 'color_two' => $l['color_two'],
  286. ];
  287. unset($l['fake_qty']);
  288. }
  289. $lead_out = $old_data['lead_out']['brand_out_stock_list'];
  290. foreach ($lead_out as &$ll){
  291. foreach ($ll['brand_out_stock_dtl'] as &$lll){
  292. unset($lll['brand_qr_code_list']);
  293. // $lll['qty'] = $ll['brand_out_stock_dtl'][0]['fake_qty'];
  294. // $lll['qty'] = $lll['fake_qty'];
  295. // unset($lll['fake_qty']);
  296. // var_dump($data[$ll['send_box_code']]);
  297. // $lll['brand_qr_code_list'] = implode(',',$data[$ll['send_box_code']]['detail']);
  298. $lll['brand_qr_code_list'] = implode(',',$this->getValues( $data[$ll['send_box_code']]['detail'],$lll['qty']));;
  299. $lll['product_code'] = $lind_bind_key_list[$lll['bus_no']]['product_code'] ?? '';
  300. $lll['product_code_show'] = $lind_bind_key_list[$lll['bus_no']]['product_code_show'] ?? '';
  301. $lll['process_title'] = $lind_bind_key_list[$lll['bus_no']]['process_title'] ?? '';
  302. $lll['color'] = $lind_bind_key_list[$lll['bus_no']]['color'] ?? '';
  303. $lll['process_title_two'] = $lind_bind_key_list[$lll['bus_no']]['process_title_two'] ?? '';
  304. $lll['color_two'] = $lind_bind_key_list[$lll['bus_no']]['color_two'] ?? '';
  305. }
  306. }
  307. file_put_contents('1.txt',json_encode(['lind_bind'=>$lind_bind,'lead_out'=>['brand_out_stock_list'=>$lead_out]]));
  308. // var_dump($lind_bind);
  309. // var_dump($lead_out);die;
  310. return [$lind_bind,['brand_out_stock_list'=>$lead_out]];
  311. }
  312. private function setBoxFake($data){
  313. foreach ($data as $k=>$v){
  314. if($v['fake_qty'] > count($v['detail'])){
  315. $diff = $v['fake_qty'] - count($v['detail']);
  316. $return = $this->fakeData($v['roll_number'],$diff);
  317. $data[$k]['detail'] = array_merge($v['detail'],$return);
  318. }
  319. }
  320. return $data;
  321. }
  322. private function fakeData($number,$diff){
  323. $return = [];
  324. for ($i=0;$i < $diff;$i++){
  325. $this->num++;
  326. $return[] = 'f'.$number.'a'.$this->num.rand(10,99);
  327. }
  328. return $return;
  329. }
  330. private function getBoxData($dv,$token,$box_list){
  331. //为了取商标卷码
  332. $res = $this->post_helper($this->url.'/jbl/api/module-data/device/device/diy/device_code',['device_code'=>$dv],$token);
  333. $res = json_decode($res,true);
  334. $detail = [];
  335. $qr_codes = [];
  336. if(isset($res['data'])){
  337. foreach ($res['data'] as $v){
  338. if(in_array($v['box_code'],$box_list)){
  339. $detail[$v['roll_qr_code']] = $v['box_code'];
  340. $qr_codes[] = $v['roll_qr_code'];
  341. }
  342. }
  343. }else{
  344. return [false,''];
  345. }
  346. //为了取仓对应卷码进行获取
  347. $res = $this->post_helper($this->url.'/jbl/api/module-data/brand_sale_order/brand_sale_order/diy/find_roll_qr_code_list',['roll_qr_code_list'=>$qr_codes],$token);
  348. $res = json_decode($res,true);
  349. $qr_roll_list = [];
  350. if(isset($res['data'])){
  351. foreach ($res['data'] as $v){
  352. // if(!empty($v['out_brand_qr_code'])) continue;
  353. if(!isset($qr_roll_list[$v['roll_qr_code']]['material_code'])) {
  354. $qr_roll_list[$v['roll_qr_code']]['material_code'] = $v['material_code'];
  355. $qr_roll_list[$v['roll_qr_code']]['box_code'] = $detail[$v['roll_qr_code']];
  356. }
  357. $qr_roll_list[$v['roll_qr_code']]['detail'][] = $v['brand_qr_code'];
  358. }
  359. }
  360. return $qr_roll_list;
  361. }
  362. private function getBoxData1($dv,$token,$box_list){
  363. //为了取商标卷码
  364. $res = $this->post_helper($this->url1.'/jbl/api/module-data/device/device/diy/device_code',['device_code'=>$dv],$token);
  365. // var_dump($this->url1);
  366. // var_dump($res);die;
  367. $res = json_decode($res,true);
  368. $detail = [];
  369. $qr_codes = [];
  370. if(isset($res['data'])){
  371. foreach ($res['data'] as $v){
  372. if(in_array($v['box_code'],$box_list)){
  373. $detail[$v['roll_qr_code']] = $v['box_code'];
  374. $qr_codes[] = $v['roll_qr_code'];
  375. }
  376. }
  377. }else{
  378. return [false,''];
  379. }
  380. //为了取仓对应卷码进行获取
  381. $res = $this->post_helper($this->url1.'/jbl/api/module-data/brand_sale_order/brand_sale_order/diy/find_roll_qr_code_list',['roll_qr_code_list'=>$qr_codes],$token);
  382. $res = json_decode($res,true);
  383. $qr_roll_list = [];
  384. if(isset($res['data'])){
  385. foreach ($res['data'] as $v){
  386. // if(!empty($v['out_brand_qr_code'])) continue;
  387. if(!isset($qr_roll_list[$v['roll_qr_code']]['material_code'])) {
  388. $qr_roll_list[$v['roll_qr_code']]['material_code'] = $v['material_code'];
  389. $qr_roll_list[$v['roll_qr_code']]['box_code'] = $detail[$v['roll_qr_code']];
  390. }
  391. $qr_roll_list[$v['roll_qr_code']]['detail'][] = $v['brand_qr_code'];
  392. }
  393. }
  394. return $qr_roll_list;
  395. }
  396. //限制领标
  397. public function setLimitForBoxOut($data){
  398. if(empty($data['token']) || empty($data['list']) || empty($data['mac'])) return [false, '缺少必要参数,操作失败'];
  399. foreach ($data['list'] as $value){
  400. $key = $value['order_item_id'] . hash('md5', $value['title']);
  401. $bool = $this->limitingSendRequestBackg($key, $value['num'], 600);
  402. if(! $bool) return [false, '同一产品相同商标限制同时操作,请稍后操作!'];
  403. }
  404. return [true, ''];
  405. }
  406. //删除限制领标
  407. public function delLimitForBoxOut($data){
  408. if(empty($data['material_list'])) return ;
  409. foreach ($data['material_list'] as $value){
  410. $key = $value['order_item_id'] . hash('md5', $value['material_code_show']);
  411. $this->dellimitingSendRequestBackg($key);
  412. }
  413. }
  414. public function post_helper($url, $data, $auth)
  415. {
  416. $header = [
  417. 'Content-Type: application/json',
  418. 'Authorization: ' . $auth,
  419. ];
  420. $data = json_encode($data);
  421. // var_dump($url);die;
  422. $ch = curl_init();
  423. curl_setopt($ch, CURLOPT_POST, 1);
  424. curl_setopt($ch, CURLOPT_URL, $url);
  425. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  426. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  427. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  428. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  429. if (!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  430. $r = curl_exec($ch);
  431. curl_close($ch);
  432. return $r;
  433. }
  434. }