Açıklama Yok

SyncOrderToMj.php 11KB

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