暂无描述

SyncOrderToMj.php 10.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. namespace App\Console\Commands;
  3. use Illuminate\Console\Command;
  4. use DB;
  5. use App\Order;
  6. use App\FxOrder;
  7. use App\GoodsSkus;
  8. use App\Goods;
  9. class SyncOrderToMj extends Command {
  10. protected $signature = 'SyncOrderToMj';
  11. /**
  12. * The console command description.
  13. *
  14. * @var string
  15. */
  16. protected $description = '同步订单到卖家云';
  17. public function handle()
  18. {
  19. $this->SyncOrder();
  20. $this->SyncFxOrder();
  21. }
  22. public function SyncOrder(){
  23. //查询需要同步到卖家云的订单
  24. $today_date = date('Y-m-d');
  25. echo "\n订单同步时间: " . date('Y-m-d H:i:s');
  26. $result = Order::where('delivery_date', '=', $today_date)->where('warehouse', 3)->where('is_del', 0)->whereIn('status', [2,3])->lists('id');
  27. if(empty($result)){
  28. return;
  29. }
  30. foreach($result as $id){
  31. $mjOrder = $this->getMjOrder($id);
  32. if(!empty($mjOrder)){
  33. if($mjOrder['status'] == '已取消'){
  34. $res = $this->updateOrderToMj($id);
  35. echo "\n订单ID:".$id." 卖家取消订单重新更新";
  36. }
  37. }else{
  38. $res = $this->syncOrderToMj($id);
  39. if(!$res){
  40. echo "\n订单ID:".$id." 同步失败";
  41. }else{
  42. echo "\n订单ID:".$id." 同步成功";
  43. }
  44. }
  45. }
  46. }
  47. public function SyncFxOrder(){
  48. //查询需要同步到卖家云的订单
  49. $today_date = date('Y-m-d');
  50. echo "\n订单同步时间: " . date('Y-m-d H:i:s');
  51. $result = FxOrder::where('delivery_date', '=', $today_date)->where('warehouse', 3)->where('is_del', 0)->whereIn('status', [2,3])->lists('id');
  52. if(empty($result)){
  53. return;
  54. }
  55. foreach($result as $id){
  56. $mjOrder = $this->getFxMjOrder($id);
  57. if(!empty($mjOrder)){
  58. if($mjOrder['status'] == '已取消'){
  59. $res = $this->updateFxOrderToMj($id);
  60. echo "\n订单ID:".$id." 卖家取消订单重新更新";
  61. }
  62. }else{
  63. $res = $this->syncFxOrderToMj($id);
  64. if(!$res){
  65. echo "\n订单ID:".$id." 同步失败";
  66. }else{
  67. echo "\n订单ID:".$id." 同步成功";
  68. }
  69. }
  70. }
  71. }
  72. /**
  73. * 订单同步到卖家云
  74. */
  75. public function syncOrderToMj($id, $order = []){
  76. if( empty($order) ){
  77. $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();
  78. $order = json_decode(json_encode($order), true);
  79. $skus = DB::table('order_goods_skus')->where('order_id', $id)->where('is_del', 0)->get();
  80. $skus = json_decode(json_encode($skus), true);
  81. foreach($skus as $k=>$v){
  82. $sku_info = GoodsSkus::where('id', $v['sku_id'])->first();
  83. $goods_info = Goods::where('id', $v['goods_id'])->first();
  84. $params = array();
  85. $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
  86. $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
  87. $params['goodsCode'] = $sku_info->goodsCode;//
  88. $params['skuCode'] = $v['sku_id'];
  89. #商品名称
  90. $params['goodsName'] = $goods_info->name;
  91. $params['propertiesName'] = $sku_info->is_weigh==1 ? $sku_info->propsName.'【按半斤称重】' : $sku_info->propsName;
  92. //$params['goodsName'] = '海钓黄翅鱼';//$goods->code;
  93. $params['price'] = $sku_info->is_weigh==1 ? round($v['price']/2,2) : $v['price'];
  94. $params['quantity'] = (int)($sku_info->is_weigh==1 ? $v['num']*2 : $v['num']);
  95. $params['discountFee'] = 0;
  96. $params['adjustFee'] = 0;
  97. $params['refundStatus'] = '正常';
  98. $order['skuList'][] = $params;
  99. }
  100. }
  101. //卖家云添加订单 ->改为审核通过再同步卖家云
  102. $mj_add = Order::mjOrderAdd($order);
  103. //同步卖家云订单数据到本系统
  104. if( isset($mj_add['order']['code']) ){
  105. $mjorder = array();
  106. $mjorder['orderCode'] = $mj_add['order']['code'];
  107. Order::where('id', $id)->update($mjorder);
  108. }
  109. return $mj_add;
  110. }
  111. /**
  112. * 获取订单信息,可用来判断订单是否存在,同步订单状态
  113. */
  114. public function getMjOrder($id, $outerCode=''){
  115. $order = array();
  116. $order['eshopCode'] = config('constants.ESHOP_CODE');
  117. if(!$outerCode){
  118. $outerCode = Order::where('id', $id)->pluck('outerCode');
  119. }
  120. $order['outerCode'] = $outerCode;
  121. $mjOrder = Order::mjOrderGet($order);
  122. if(!isset($mjOrder['order']['code'])){
  123. return false;
  124. }
  125. return $mjOrder['order'];
  126. }
  127. /**
  128. * 订单更新同步到卖家云
  129. */
  130. public function updateOrderToMj($id, $order = []){
  131. if( empty($order) ){
  132. $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();
  133. $order = json_decode(json_encode($order), true);
  134. }
  135. $mj_add = Order::mjOrderUpdate($order);
  136. return $mj_add;
  137. }
  138. /**
  139. * 订单同步到卖家云
  140. */
  141. public function syncFxOrderToMj($id, $order = []){
  142. if( empty($order) ){
  143. $order = FxOrder::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();
  144. $order = json_decode(json_encode($order), true);
  145. $skus = DB::table('fx_order_goods_skus')->where('order_id', $id)->where('is_del', 0)->get();
  146. $skus = json_decode(json_encode($skus), true);
  147. foreach($skus as $k=>$v){
  148. $sku_info = GoodsSkus::where('id', $v['sku_id'])->first();
  149. $goods_info = Goods::where('id', $v['goods_id'])->first();
  150. $params = array();
  151. $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
  152. $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
  153. $params['goodsCode'] = $sku_info->goodsCode;//
  154. $params['skuCode'] = $v['sku_id'];
  155. #商品名称
  156. $params['goodsName'] = $goods_info->name;
  157. $params['propertiesName'] = $sku_info->is_weigh==1 ? $sku_info->propsName.'【按半斤称重】' : $sku_info->propsName;
  158. //$params['goodsName'] = '海钓黄翅鱼';//$goods->code;
  159. $params['price'] = $sku_info->is_weigh==1 ? round($v['price']/2,2) : $v['price'];
  160. $params['quantity'] = (int)($sku_info->is_weigh==1 ? $v['num']*2 : $v['num']);
  161. $params['discountFee'] = 0;
  162. $params['adjustFee'] = 0;
  163. $params['refundStatus'] = '正常';
  164. $order['skuList'][] = $params;
  165. }
  166. }
  167. //卖家云添加订单 ->改为审核通过再同步卖家云
  168. $mj_add = Order::mjOrderAdd($order);
  169. //同步卖家云订单数据到本系统
  170. if( isset($mj_add['order']['code']) ){
  171. $mjorder = array();
  172. $mjorder['orderCode'] = $mj_add['order']['code'];
  173. FxOrder::where('id', $id)->update($mjorder);
  174. }
  175. return $mj_add;
  176. }
  177. /**
  178. * 获取订单信息,可用来判断订单是否存在,同步订单状态
  179. */
  180. public function getFxMjOrder($id, $outerCode=''){
  181. $order = array();
  182. $order['eshopCode'] = config('constants.ESHOP_CODE');
  183. if(!$outerCode){
  184. $outerCode = FxOrder::where('id', $id)->pluck('outerCode');
  185. }
  186. $order['outerCode'] = $outerCode;
  187. $mjOrder = Order::mjOrderGet($order);
  188. if(!isset($mjOrder['order']['code'])){
  189. return false;
  190. }
  191. return $mjOrder['order'];
  192. }
  193. /**
  194. * 订单更新同步到卖家云
  195. */
  196. public function updateFxOrderToMj($id, $order = []){
  197. if( empty($order) ){
  198. $order = FxOrder::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();
  199. $order = json_decode(json_encode($order), true);
  200. }
  201. $mj_add = Order::mjOrderUpdate($order);
  202. return $mj_add;
  203. }
  204. }