Нет описания

SyncOrderToMj.php 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace App\Console\Commands;
  3. use Illuminate\Console\Command;
  4. use DB;
  5. use App\Order;
  6. use App\GoodsSkus;
  7. use App\Goods;
  8. class SyncOrderToMj extends Command {
  9. protected $signature = 'SyncOrderToMj';
  10. /**
  11. * The console command description.
  12. *
  13. * @var string
  14. */
  15. protected $description = '同步订单到卖家云';
  16. public function handle()
  17. {
  18. $this->SyncOrder();
  19. }
  20. public function SyncOrder(){
  21. //查询需要同步到卖家云的订单
  22. $today_date = date('Y-m-d');
  23. echo "\n订单同步时间: " . date('Y-m-d H:i:s');
  24. $result = Order::where('delivery_date', '=', $today_date)->where('warehouse', 3)->where('is_del', 0)->whereIn('status', [2,3])->lists('id');
  25. if(empty($result)){
  26. return;
  27. }
  28. foreach($result as $id){
  29. $mjOrder = $this->getMjOrder($id);
  30. if(!empty($mjOrder)){
  31. if($mjOrder['status'] == '已取消'){
  32. $res = $this->updateOrderToMj($id);
  33. echo "\n订单ID:".$id." 卖家取消订单重新更新";
  34. }
  35. }else{
  36. $res = $this->syncOrderToMj($id);
  37. if(!$res){
  38. echo "\n订单ID:".$id." 同步失败";
  39. }else{
  40. echo "\n订单ID:".$id." 同步成功";
  41. }
  42. }
  43. }
  44. }
  45. /**
  46. * 订单同步到卖家云
  47. */
  48. public function syncOrderToMj($id, $order = []){
  49. if( empty($order) ){
  50. $order = Order::select('eshopCode','outerCode','status','customerName','shippingType','expressCompanyCode','expressCompanyName','receiverName','receiverMobile','receiverPhone','receiverState','receiverCity','receiverDistrict','receiverStreet','receiverAddress','buyerPostageFee','discountFee','adjustFee','serviceFee','paymentMethod','paymentType','paymentAccount','paymentTime','receivedAmount','buyerMemo','sellerMemo','createTime','modifyTime')->where('id', $id)->first();
  51. $order = json_decode(json_encode($order), true);
  52. $skus = DB::table('order_goods_skus')->where('order_id', $id)->where('is_del', 0)->get();
  53. $skus = json_decode(json_encode($skus), true);
  54. foreach($skus as $k=>$v){
  55. $sku_info = GoodsSkus::where('id', $v['sku_id'])->first();
  56. $goods_info = Goods::where('id', $v['goods_id'])->first();
  57. $params = array();
  58. $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
  59. $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
  60. $params['goodsCode'] = $sku_info->goodsCode;//
  61. $params['skuCode'] = $v['sku_id'];
  62. #商品名称
  63. $params['goodsName'] = $goods_info->name;
  64. $params['propertiesName'] = $sku_info->is_weigh==1 ? $sku_info->propsName.'【按半斤称重】' : $sku_info->propsName;
  65. //$params['goodsName'] = '海钓黄翅鱼';//$goods->code;
  66. $params['price'] = $sku_info->is_weigh==1 ? round($v['price']/2,2) : $v['price'];
  67. $params['quantity'] = (int)($sku_info->is_weigh==1 ? $v['num']*2 : $v['num']);
  68. $params['discountFee'] = 0;
  69. $params['adjustFee'] = 0;
  70. $params['refundStatus'] = '正常';
  71. $order['skuList'][] = $params;
  72. }
  73. }
  74. //卖家云添加订单 ->改为审核通过再同步卖家云
  75. $mj_add = Order::mjOrderAdd($order);
  76. //同步卖家云订单数据到本系统
  77. if( isset($mj_add['order']['code']) ){
  78. $mjorder = array();
  79. $mjorder['orderCode'] = $mj_add['order']['code'];
  80. Order::where('id', $id)->update($mjorder);
  81. }
  82. return $mj_add;
  83. }
  84. /**
  85. * 获取订单信息,可用来判断订单是否存在,同步订单状态
  86. */
  87. public function getMjOrder($id, $outerCode=''){
  88. $order = array();
  89. $order['eshopCode'] = config('constants.ESHOP_CODE');
  90. if(!$outerCode){
  91. $outerCode = Order::where('id', $id)->pluck('outerCode');
  92. }
  93. $order['outerCode'] = $outerCode;
  94. $mjOrder = Order::mjOrderGet($order);
  95. if(!isset($mjOrder['order']['code'])){
  96. return false;
  97. }
  98. return $mjOrder['order'];
  99. }
  100. /**
  101. * 订单更新同步到卖家云
  102. */
  103. public function updateOrderToMj($id, $order = []){
  104. if( empty($order) ){
  105. $order = Order::select('orderCode as code','eshopCode','outerCode','status','customerName','shippingType','expressCompanyCode','expressCompanyName','receiverName','receiverMobile','receiverPhone','receiverState','receiverCity','receiverDistrict','receiverStreet','receiverAddress','buyerPostageFee','discountFee','adjustFee','serviceFee','paymentMethod','paymentType','paymentAccount','paymentTime','receivedAmount','buyerMemo','sellerMemo','createTime','modifyTime')->where('id', $id)->first();
  106. $order = json_decode(json_encode($order), true);
  107. }
  108. $mj_add = Order::mjOrderUpdate($order);
  109. return $mj_add;
  110. }
  111. }