SynOrderNewCommand.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Models\Activity;
  4. use App\Models\Address;
  5. use App\Models\DataInfo;
  6. use App\Models\Gifts;
  7. use App\Models\Goods;
  8. use App\Models\Order;
  9. use App\Models\OrderDetail;
  10. use App\Models\OrderGift;
  11. use App\Models\Store;
  12. use App\Models\TongBuList;
  13. use App\Models\UrlList;
  14. use App\Models\User;
  15. use Carbon\Carbon;
  16. use GuzzleHttp\Client;
  17. use Illuminate\Console\Command;
  18. use Illuminate\Support\Facades\DB;
  19. use Illuminate\Support\Facades\Log;
  20. class SynOrderNewCommand extends Command
  21. {
  22. /**
  23. * The name and signature of the console command.
  24. *
  25. * @var string
  26. */
  27. protected $signature = 'SynOrderNewCommand';
  28. /**
  29. * The console command description.
  30. *
  31. * @var string
  32. */
  33. protected $description = 'Command description';
  34. /**
  35. * Create a new command instance.
  36. *
  37. * @return void
  38. */
  39. public function __construct()
  40. {
  41. parent::__construct();
  42. }
  43. /**
  44. * Execute the console command.
  45. *
  46. * @return mixed
  47. */
  48. public function handle()
  49. {
  50. // $TBarr=TongBuList::where('status',0)->orderByDesc('id')->first();
  51. // if (!$TBarr){
  52. // return ;
  53. // }
  54. $url_list=UrlList::where('id','=',16)->get();
  55. foreach ($url_list as $k=>$v){
  56. $token=$this->getToekn($v->url,$v->id);
  57. // $token=$v->token;
  58. $json = '{"QueryType":"0","Code":"","BrandIDS":[],"StartDate":"","EndDate":"","StartMoney":"","EndMoney":"","WarehouseIDS":[],"AccountMethod":"","CurrencyIDS":[],"AddrName":"","AddrPhone":"","Addr":"","IsChina":"","AddrID":"","Remark":"","SourceName":"","SourcePhone":"","ProductName":"","ProductCode":"","SourceAuthorizationCode":"","SalesRemark":"","SelectOrderIDs":[],"TeamID":"","PageNo":1,"PageSize":10,"DeliveryType":"","IsCreateOrderSales":null,"Sort":"","IsAsc":false,"PackagesType":[],"BrandLevels":[],"SelfDeliveryStoreName":"","BusinessContactName":"","StateIDs":[],"TeamIDs":[],"ExpressAccountMethod":"","CustomerOrderCategoryID":0,"EMSCompany":"","DateType":"","EMSCode":"","AccuracyQueryKey":[],"NotLikeQueryKey":[],"GratisOrReachedToPay":""}';
  59. $client=new Client();
  60. $url = $v->url.'/api/Admin/CompanyCustomerOrderList/GetMyCustomerOrderList';
  61. $data=json_decode($json,true);
  62. $data['PageSize']=50;
  63. $data['BrandIDS']=[1];
  64. $data['Code']='O2024110642943200094';
  65. $data['EndDate']=Carbon::tomorrow()->toDateTimeString();
  66. $data['StartDate']=Carbon::today()->addDays(-2)->toDateTimeString();
  67. $re=$client->post($url,[
  68. 'headers' => [
  69. 'Content-Type' => 'application/json', // 设置请求头
  70. 'Auth-AdminToken' => $token, // 如果需要身份验证令牌
  71. ],
  72. 'json'=>$data
  73. ]);
  74. // dump($re);
  75. $res=$re->getBody()->getContents();
  76. Log::error($v->url.$res);
  77. $info=json_decode($res,true);
  78. // if ($info['errcode']=='ExpiredAuthorization' || empty($info['errcode'])){
  79. // $this->getToekn($v->url,$v->id);
  80. // break;
  81. // }
  82. $arr=$info['data']['Models'];
  83. $arr_ss=new DataInfo();
  84. $arr_ss->data=json_encode($arr);
  85. $arr_ss->url=$v->url;
  86. $arr_ss->save();
  87. $n=ceil($info['data']['Total']/50);
  88. for ($i=2;$i<=$n;$i++){
  89. $data=[];
  90. $json = '{"QueryType":"0","Code":"","BrandIDS":[],"StartDate":"","EndDate":"","StartMoney":"","EndMoney":"","WarehouseIDS":[],"AccountMethod":"","CurrencyIDS":[],"AddrName":"","AddrPhone":"","Addr":"","IsChina":"","AddrID":"","Remark":"","SourceName":"","SourcePhone":"","ProductName":"","ProductCode":"","SourceAuthorizationCode":"","SalesRemark":"","SelectOrderIDs":[],"TeamID":"","PageNo":1,"PageSize":10,"DeliveryType":"","IsCreateOrderSales":null,"Sort":"","IsAsc":false,"PackagesType":[],"BrandLevels":[],"SelfDeliveryStoreName":"","BusinessContactName":"","StateIDs":[],"TeamIDs":[],"ExpressAccountMethod":"","CustomerOrderCategoryID":0,"EMSCompany":"","DateType":"","EMSCode":"","AccuracyQueryKey":[],"NotLikeQueryKey":[],"GratisOrReachedToPay":""}';
  91. $client=new Client();
  92. $url = $v->url.'/api/Admin/CompanyCustomerOrderList/GetMyCustomerOrderList';
  93. $data=json_decode($json,true);
  94. $data['PageSize']=50;
  95. $data['PageNo']=$i;
  96. $data['BrandIDS']=[1];
  97. // $data['Code']='A2024091470852300005';
  98. $data['EndDate']=Carbon::tomorrow()->toDateTimeString();
  99. $data['StartDate']=Carbon::today()->addDays(-1)->toDateTimeString();
  100. $re=$client->post($url,[
  101. 'headers' => [
  102. 'Content-Type' => 'application/json', // 设置请求头
  103. 'Auth-AdminToken' => $token, // 如果需要身份验证令牌
  104. ],
  105. 'json'=>$data
  106. ]);
  107. // dump($re);
  108. $res=$re->getBody()->getContents();
  109. // Log::error($v->url.$res);
  110. $info=json_decode($res,true);
  111. // if ($info['errcode']=='ExpiredAuthorization' || empty($info['errcode'])){
  112. // $this->getToekn($v->url,$v->id);
  113. // break;
  114. // }
  115. $arr=$info['data']['Models'];
  116. $arr_ss=new DataInfo();
  117. $arr_ss->data=json_encode($arr);
  118. $arr_ss->url=$v->url;
  119. $arr_ss->save();
  120. }
  121. // $this->DelOrder($arr,$v->url);
  122. }
  123. // $TBarr->status=1;
  124. // $TBarr->finish_at=Carbon::now()->toDateTimeString();
  125. // $TBarr->save();
  126. }
  127. protected function getToekn($url,$id){
  128. $client=new Client();
  129. $re=$client->post($url.'/api/Admin/System/MainSubLogin',[
  130. 'headers' => [
  131. 'Content-Type' => 'application/json', // 设置请求头
  132. // 'Auth-AdminToken' => 'SjI5Ym5US0xZVzZjSVd4V1FheHg4VG5hL1dpWDJwVi82RDdMY09WU3NTeENIdmJUdmxxTEFVOHZSZkRiaXM1c3RuYUlZTGVIcmI2NGlUdXJ4MXZ6dkREWmRoY283UG5TclQ2RnI5amV3UGYzYjBjNkZ0RTFzUElzRzRhV2F1d0M=', // 如果需要身份验证令牌
  133. ],
  134. 'json'=>['UserName'=>'dwadmin','Password'=>'zS76UMV9']
  135. ]);
  136. $res=$re->getBody()->getContents();
  137. $info=json_decode($res,true);
  138. $urlinfo=UrlList::find($id);
  139. // Log::error($res);
  140. Log::error($url);
  141. Log::error($info);
  142. if (!$info['errcode']){
  143. $token=$info['data']['accessToken'];
  144. $urlinfo->token=$token;
  145. $urlinfo->save();
  146. return $token;
  147. }else{
  148. Log::error($urlinfo->name.'生成token出错===='.$info['errcode']);
  149. return 0;
  150. }
  151. }
  152. protected function DelOrder($arr,$url){
  153. if (!$arr){
  154. return;
  155. }
  156. $activity_id=Activity::where('is_ing',1)->value('id');
  157. foreach ($arr as $k=>$v){
  158. //批发商
  159. $Sourcemobile=$v['SourceCustomerModel']['Telephone'];
  160. $Sourcenickname=$v['SourceCustomerModel']['CustomerName'];
  161. $Sourcecode=$v['SourceCustomerModel']['AuthorizationCode'];
  162. $user=User::where('auth_code',$Sourcecode)->first();
  163. if (!$user){
  164. $user=new User();
  165. $user->name=$Sourcenickname;
  166. $user->nickname=$Sourcenickname;
  167. $user->realname=$Sourcenickname;
  168. $user->remark_name=$Sourcenickname;
  169. $user->mobile=$Sourcemobile;
  170. $user->uuid=$Sourcemobile;
  171. $user->auth_code=$Sourcecode;
  172. $user->level=3;
  173. $user->url=$url;
  174. $user->save();
  175. }
  176. $TopCode=$v['TopCustomerModel']['AuthorizationCode'];
  177. $belongUser=User::where('auth_code',$TopCode)->first();
  178. if (!$belongUser){
  179. //经销商
  180. $belongUser=new User();
  181. $belongUser->name=$v['TopCustomerModel']['CustomerName'];
  182. $belongUser->nickname=$v['TopCustomerModel']['CustomerName'];
  183. $belongUser->realname=$v['TopCustomerModel']['CustomerName'];
  184. $belongUser->remark_name=$v['TopCustomerModel']['CustomerName'];
  185. $belongUser->mobile=$v['TopCustomerModel']['Telephone'];
  186. $belongUser->uuid=$v['TopCustomerModel']['Telephone'];
  187. $belongUser->auth_code=$TopCode;
  188. $belongUser->level=2;
  189. $belongUser->url=$url;
  190. $belongUser->save();
  191. }
  192. $order_num=$v['Code'];
  193. $order=Order::where('order_num',$order_num)->first();
  194. if ($order_num=='B2024082762185500002'){
  195. Log::error($order);
  196. }
  197. if ($order){
  198. if ($v['ReviewRemark']){
  199. if (!$order->is_deleted){
  200. $order->is_deleted=1;
  201. $order->wait_back_money+=$order->pay_money;
  202. $order->save();
  203. break;
  204. }
  205. }
  206. if ($order->is_deleted){
  207. break;
  208. }
  209. $address=Address::where('id',$order->address_id)->first();
  210. $address->user_id=$user->id;
  211. $address->username=$v['AddressDetail']['Name'];
  212. $address->mobile=$v['AddressDetail']['Phone'];
  213. $address->province=$v['AddressDetail']['Province'];
  214. $address->city=$v['AddressDetail']['City'];
  215. $address->town=$v['AddressDetail']['District'];
  216. $address->address=$v['AddressDetail']['Address'];
  217. $address->type=0;
  218. $address->save();
  219. if ($order->money!=$v['TotalCash']){
  220. OrderDetail::where('order_id',$order->id)->delete();
  221. }
  222. $order->money=$v['TotalCash'];
  223. if ($order->money==$order->pay_money){
  224. $order->no_pay_money=0;//未支付变为0
  225. $order->pay_status=2;//支付状态2,为全部支付
  226. $order->wait_back_money=0;//待退回金额为0
  227. }elseif ($order->money<$order->pay_money){//订单金额小于支付金额
  228. $order->no_pay_money=0;//未支付金额变为0
  229. $order->pay_status=3;//支付状态3,待退款状态
  230. $order->wait_back_money=$order->pay_money-$order->money;//待退款金额为支付金额减去订单金额
  231. }elseif ($order->money>$order->pay_money){//订单金额大于支付金额
  232. if ($order->pay_money==0){//如果支付金额为0
  233. $order->pay_status=0;//则支付状态0,未支付
  234. }else{
  235. $order->pay_status=1;//否则支付状态1,部分支付
  236. }
  237. $order->no_pay_money=$order->money-$order->pay_money;//未支付金额等于订单金额减去支付金额
  238. $order->wait_back_money=0;//待退款为0
  239. }
  240. $order->total=$v['TotalQty'];
  241. $order->save();
  242. $detail=$v['OrderDetailOutput'];
  243. $activity_status=false;
  244. $orderdrtail_id=[];
  245. foreach ($detail as $ke=>$va){
  246. if ($va['IsGift']){
  247. $activity_status=true;
  248. $gift_name=$va['ProductName'];
  249. $num=$va['Qty'];
  250. $gift=Gifts::where('name',$gift_name)->where('activity_id',$activity_id)->first();
  251. $ordergift=OrderGift::where('order_id',$order->id)
  252. ->where('gift_id',$gift->id)->first();
  253. if (!$ordergift){
  254. $ordergift=new OrderGift();
  255. }
  256. $order->total-=$num;
  257. $order->save();
  258. $ordergift->gift_id=$gift->id;
  259. $ordergift->order_id=$order->id;
  260. $ordergift->activity_id=$activity_id;
  261. $ordergift->num=$num;
  262. $ordergift->limit_num=1;
  263. $ordergift->save();
  264. }else{
  265. // Log::error($va);
  266. $size=$va['AttributesVales'][0]['AttributesValue'];
  267. $size1=$va['AttributesVales'][1]['AttributesValue'];
  268. $name=$va['ProductCode'];
  269. $num=$va['Qty'];
  270. $goods=Goods::where('summary',$name)->where('names',$size.'-'.$size1)->first();
  271. $orderDetail=OrderDetail::where('order_id',$order->id)
  272. ->where('goods_id',$goods->id)->first();
  273. if (!$orderDetail){
  274. $orderDetail=new OrderDetail();
  275. }
  276. $orderDetail->order_id=$order->id;
  277. $orderDetail->goods_id=$goods->id;
  278. $orderDetail->num=$num;
  279. $orderDetail->goods_price=$va['Price'];
  280. $orderDetail->money=$num*$va['Price'];
  281. $orderDetail->goods_name=$name;
  282. $orderDetail->goods_size=$goods->size;
  283. $orderDetail->goods_unit=$goods->unit;
  284. $orderDetail->goods_sku=$va['SKUCode'];
  285. $orderDetail->save();
  286. $order_id[]=$orderDetail->id;
  287. }
  288. }
  289. // $order->is_deleted=0;
  290. // $order->wait_back_money=$order->pay_money;
  291. // $order->save();
  292. }else{
  293. $address=new Address();
  294. $address->user_id=$user->id;
  295. $address->username=$v['AddressDetail']['Name'];
  296. $address->mobile=$v['AddressDetail']['Phone'];
  297. $address->province=$v['AddressDetail']['Province'];
  298. $address->city=$v['AddressDetail']['City'];
  299. $address->town=$v['AddressDetail']['District'];
  300. $address->address=$v['AddressDetail']['Address'];
  301. $address->type=0;
  302. $address->uid=$belongUser->id;
  303. $address->save();
  304. $order=new Order();
  305. $order->order_num=$order_num;
  306. $order->money=$v['TotalCash'];
  307. $order->no_pay_money=$v['TotalCash'];
  308. $order->user_id=$user->id;
  309. $order->total=$v['TotalQty'];
  310. $order->created_at=$v['CreateDate'];
  311. $order->ZDL_id=$v['CustomerOrderID'];
  312. $order->url=$url;
  313. $order->address_id=$address->id;
  314. $order->good_user_id=$belongUser->id;
  315. $order->save();
  316. $detail=$v['OrderDetailOutput'];
  317. $activity_status=false;
  318. foreach ($detail as $ke=>$va){
  319. if ($va['IsGift']){
  320. $activity_status=true;
  321. $gift_name=$va['ProductName'];
  322. $num=$va['Qty'];
  323. $gift=Gifts::where('name',$gift_name)->where('activity_id',$activity_id)->first();
  324. $ordergift=new OrderGift();
  325. $ordergift->gift_id=$gift->id;
  326. $ordergift->order_id=$order->id;
  327. $ordergift->activity_id=$activity_id;
  328. $ordergift->num=$num;
  329. $ordergift->limit_num=1;
  330. $ordergift->save();
  331. $order->total-=$num;
  332. $order->save();
  333. }else{
  334. // Log::error($va);
  335. $size=$va['AttributesVales'][0]['AttributesValue'];
  336. $size1=$va['AttributesVales'][1]['AttributesValue'];
  337. $name=$va['ProductCode'];
  338. $num=$va['Qty'];
  339. $goods=Goods::where('summary',$name)->where('names',$size.'-'.$size1)->first();
  340. Log::error($size.'==='.$size1);
  341. $orderDetail=new OrderDetail();
  342. $orderDetail->order_id=$order->id;
  343. $orderDetail->goods_id=$goods->id;
  344. $orderDetail->num=$num;
  345. $orderDetail->goods_price=$va['Price'];
  346. $orderDetail->money=$num*$va['Price'];
  347. $orderDetail->goods_name=$name;
  348. $orderDetail->goods_size=$goods->size;
  349. $orderDetail->goods_unit=$goods->unit;
  350. $orderDetail->goods_sku=$va['SKUCode'];
  351. $orderDetail->save();
  352. }
  353. }
  354. if ($activity_status){
  355. $order->activity_id=$activity_id;
  356. $order->save();
  357. }
  358. }
  359. }
  360. }
  361. /*获取体验店*/
  362. public function get_storename(){
  363. return $this->success_list(Store::where('type',2)->get());
  364. }
  365. }