TongbuOrderNewJob.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. namespace App\Jobs;
  3. use App\Models\Activity;
  4. use App\Models\Address;
  5. use App\Models\Gifts;
  6. use App\Models\Goods;
  7. use App\Models\Order;
  8. use App\Models\OrderDetail;
  9. use App\Models\OrderGift;
  10. use App\Models\User;
  11. use Illuminate\Bus\Queueable;
  12. use Illuminate\Contracts\Queue\ShouldQueue;
  13. use Illuminate\Foundation\Bus\Dispatchable;
  14. use Illuminate\Queue\InteractsWithQueue;
  15. use Illuminate\Queue\SerializesModels;
  16. use Illuminate\Support\Facades\DB;
  17. use Illuminate\Support\Facades\Log;
  18. class TongbuOrderNewJob implements ShouldQueue
  19. {
  20. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  21. /**
  22. * Create a new job instance.
  23. *
  24. * @return void
  25. */
  26. protected $data;
  27. public function __construct($data)
  28. {
  29. $this->data=$data;
  30. }
  31. /**
  32. * Execute the job.
  33. *
  34. * @return void
  35. */
  36. public function handle()
  37. {
  38. $data_info=$this->data;
  39. // Log::error($data_info);
  40. $id=$data_info['id'];
  41. $info=json_decode($data_info['data'],true);
  42. $type=$info['Type'];
  43. $order_arr=explode('-',$info['Code']);
  44. if (count($order_arr)>1){
  45. Log::error($info['Code']);
  46. return null;
  47. }
  48. if ($type==3){
  49. $order=Order::where('order_num',$info['Code'])->first();
  50. if ($order){
  51. if (!$order->is_deleted){
  52. if ($order->pay_money>0){
  53. $order->wait_back_money=$order->pay_money;
  54. $order->pay_status=3;
  55. }
  56. }
  57. $order->is_deleted=1;
  58. $order->save();
  59. }
  60. DB::connection('mysql_w')->table('data_or')
  61. ->where('id',$id)
  62. ->update(['status'=>1,'type'=>$type]);
  63. return;
  64. }
  65. $this->DelOrder([$info['data']],mb_substr($info['Domain'],0,-1));
  66. DB::connection('mysql_w')->table('data_or')
  67. ->where('id',$id)
  68. ->update(['status'=>1,'type'=>$type]);
  69. }
  70. protected function DelOrder($arr,$url){
  71. if (!$arr){
  72. return;
  73. }
  74. // Log::error($arr);
  75. try {
  76. $activity_id=Activity::where('is_ing',1)->value('id');
  77. foreach ($arr as $k=>$v){
  78. //批发商
  79. $Sourcemobile=$v['SourceCustomerModel']['Telephone'];
  80. $Sourcenickname=$v['SourceCustomerModel']['CustomerName'];
  81. $Sourcecode=$v['SourceCustomerModel']['AuthorizationCode'];
  82. $user=User::where('auth_code',$Sourcecode)->first();
  83. Log::info($Sourcecode);
  84. if (!$user){
  85. $user=new User();
  86. $user->name=$Sourcenickname;
  87. $user->nickname=$Sourcenickname;
  88. $user->realname=$Sourcenickname;
  89. $user->remark_name=$Sourcenickname;
  90. $user->mobile=$Sourcemobile;
  91. $user->uuid=$Sourcemobile;
  92. $user->auth_code=$Sourcecode;
  93. $user->level=3;
  94. $user->url=$url;
  95. $user->save();
  96. }
  97. $TopCode=$v['TopCustomerModel']['AuthorizationCode'];
  98. $belongUser=User::where('auth_code',$TopCode)->first();
  99. if (!$belongUser){
  100. //经销商
  101. $belongUser=new User();
  102. $belongUser->name=$v['TopCustomerModel']['CustomerName'];
  103. $belongUser->nickname=$v['TopCustomerModel']['CustomerName'];
  104. $belongUser->realname=$v['TopCustomerModel']['CustomerName'];
  105. $belongUser->remark_name=$v['TopCustomerModel']['CustomerName'];
  106. $belongUser->mobile=$v['TopCustomerModel']['Telephone'];
  107. $belongUser->uuid=$v['TopCustomerModel']['Telephone'];
  108. $belongUser->auth_code=$TopCode;
  109. $belongUser->level=2;
  110. $belongUser->url=$url;
  111. $belongUser->save();
  112. }
  113. $order_num=$v['Code'];
  114. Log::info($order_num);
  115. $order=Order::where('order_num',$order_num)->first();
  116. if ($order){
  117. $address=Address::where('id',$order->address_id)->first();
  118. $address->user_id=$user->id;
  119. $address->username=$v['AddressDetail']['Name'];
  120. $address->mobile=$v['AddressDetail']['Phone'];
  121. $address->province=$v['AddressDetail']['Province'];
  122. $address->city=$v['AddressDetail']['City'];
  123. $address->town=$v['AddressDetail']['District'];
  124. $address->address=$v['AddressDetail']['Address'];
  125. $address->type=0;
  126. $address->save();
  127. if ($order->money!=$v['TotalCash']){
  128. OrderDetail::where('order_id',$order->id)->delete();
  129. }
  130. $order->money=$v['TotalCash'];
  131. if ($order->money==$order->pay_money){
  132. $order->no_pay_money=0;//未支付变为0
  133. $order->pay_status=2;//支付状态2,为全部支付
  134. $order->wait_back_money=0;//待退回金额为0
  135. }elseif ($order->money<$order->pay_money){//订单金额小于支付金额
  136. $order->no_pay_money=0;//未支付金额变为0
  137. $order->pay_status=3;//支付状态3,待退款状态
  138. $order->wait_back_money=$order->pay_money-$order->money;//待退款金额为支付金额减去订单金额
  139. }elseif ($order->money>$order->pay_money){//订单金额大于支付金额
  140. if ($order->pay_money==0){//如果支付金额为0
  141. $order->pay_status=0;//则支付状态0,未支付
  142. }else{
  143. $order->pay_status=1;//否则支付状态1,部分支付
  144. }
  145. $order->no_pay_money=$order->money-$order->pay_money;//未支付金额等于订单金额减去支付金额
  146. $order->wait_back_money=0;//待退款为0
  147. }
  148. $order->total=$v['TotalQty'];
  149. $order->State=$v['State'];
  150. $order->save();
  151. $detail=$v['OrderDetail'];
  152. $activity_status=false;
  153. $orderdrtail_id=[];
  154. foreach ($detail as $ke=>$va){
  155. if ($va['IsGift']){
  156. $activity_status=true;
  157. $gift_name=$va['ProductName'];
  158. $num=$va['Qty'];
  159. $gift=Gifts::where('name',$gift_name)->where('activity_id',$activity_id)->first();
  160. $ordergift=OrderGift::where('order_id',$order->id)
  161. ->where('gift_id',$gift->id)->first();
  162. if (!$ordergift){
  163. $ordergift=new OrderGift();
  164. }
  165. $order->total-=$num;
  166. $order->save();
  167. $ordergift->gift_id=$gift->id;
  168. $ordergift->order_id=$order->id;
  169. $ordergift->activity_id=$activity_id;
  170. $ordergift->num=$num;
  171. $ordergift->limit_num=1;
  172. $ordergift->save();
  173. }else{
  174. // Log::error($va);
  175. $GroupID=$va['ProductGroupSKUID'];
  176. $num=$va['Qty'];
  177. $goods=Goods::where('groupID',$GroupID)->first();
  178. if (!$goods){
  179. Log::error('不存在商品'.$GroupID);
  180. }
  181. $orderDetail=OrderDetail::where('order_id',$order->id)
  182. ->where('goods_id',$goods->id)->first();
  183. if (!$orderDetail){
  184. $orderDetail=new OrderDetail();
  185. }
  186. $orderDetail->order_id=$order->id;
  187. $orderDetail->goods_id=$goods->id;
  188. $orderDetail->num=$num;
  189. $orderDetail->goods_price=$goods->money;
  190. $orderDetail->money=$num*$goods->money;
  191. $orderDetail->goods_name=$goods->name;
  192. $orderDetail->goods_size=$goods->size;
  193. $orderDetail->goods_unit=$goods->unit;
  194. $orderDetail->goods_sku='';
  195. $orderDetail->save();
  196. $order_id[]=$orderDetail->id;
  197. }
  198. }
  199. }else{
  200. $address=new Address();
  201. $address->user_id=$user->id;
  202. $address->username=$v['AddressDetail']['Name'];
  203. $address->mobile=$v['AddressDetail']['Phone'];
  204. $address->province=$v['AddressDetail']['Province'];
  205. $address->city=$v['AddressDetail']['City'];
  206. $address->town=$v['AddressDetail']['District'];
  207. $address->address=$v['AddressDetail']['Address'];
  208. $address->type=0;
  209. $address->uid=$belongUser->id;
  210. $address->save();
  211. $order=new Order();
  212. $order->order_num=$order_num;
  213. $order->money=$v['TotalCash'];
  214. $order->no_pay_money=$v['TotalCash'];
  215. $order->user_id=$user->id;
  216. $order->total=$v['TotalQty'];
  217. $order->created_at=$v['CreateDate'];
  218. $order->ZDL_id=$v['CustomerOrderID'];
  219. $order->url=$url;
  220. $order->State=$v['State'];
  221. $order->address_id=$address->id;
  222. $order->good_user_id=$belongUser->id;
  223. if ($v['State']=='7'){
  224. $order->is_deleted=1;
  225. }
  226. $order->save();
  227. $detail=$v['OrderDetail'];
  228. $activity_status=false;
  229. foreach ($detail as $ke=>$va){
  230. if ($va['IsGift']){
  231. $activity_status=true;
  232. $gift_name=$va['ProductName'];
  233. $num=$va['Qty'];
  234. $gift=Gifts::where('name',$gift_name)->where('activity_id',$activity_id)->first();
  235. $ordergift=new OrderGift();
  236. $ordergift->gift_id=$gift->id;
  237. $ordergift->order_id=$order->id;
  238. $ordergift->activity_id=$activity_id;
  239. $ordergift->num=$num;
  240. $ordergift->limit_num=1;
  241. $ordergift->save();
  242. $order->total-=$num;
  243. $order->save();
  244. }else{
  245. $GroupID=$va['ProductGroupSKUID'];
  246. $num=$va['Qty'];
  247. $goods=Goods::where('groupID',$GroupID)->first();
  248. if (!$goods){
  249. Log::error('不存在该商品'.$GroupID);
  250. }
  251. $orderDetail=new OrderDetail();
  252. $orderDetail->order_id=$order->id;
  253. $orderDetail->goods_id=$goods->id;
  254. $orderDetail->num=$num;
  255. $orderDetail->goods_price=$goods->money;
  256. $orderDetail->money=$num*$goods->money;
  257. $orderDetail->goods_name=$goods->name;
  258. $orderDetail->goods_size=$goods->size;
  259. $orderDetail->goods_unit=$goods->unit;
  260. $orderDetail->goods_sku='';
  261. $orderDetail->save();
  262. }
  263. }
  264. if ($activity_status){
  265. $order->activity_id=$activity_id;
  266. $order->save();
  267. }
  268. }
  269. }
  270. }catch (\Exception $exception){
  271. Log::error($arr);
  272. // DB::table('data_in')
  273. // ->insert(['uuid'=>$data_id]);
  274. Log::error($exception->getMessage());
  275. }
  276. }
  277. }