No Description

SyncGoods.php 6.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php namespace App\Console\Commands;
  2. use App\Log;
  3. use App\Order;
  4. use Illuminate\Console\Command;
  5. use Illuminate\Support\Facades\DB;
  6. class SyncGoods extends Command {
  7. protected $signature = 'sync_goods';
  8. /**
  9. * The console command description.
  10. *
  11. * @var string
  12. */
  13. protected $description = '分销商同步商品库存';
  14. public function handle()
  15. {
  16. $list = $this->getGoodsList();
  17. $this->handleGoodsList($list);
  18. }
  19. /**
  20. * 获取商品以及库存列表
  21. */
  22. public function getGoodsList() {
  23. $goodsList = DB::table('seafood.goods')->get();
  24. $data = json_decode(json_encode($goodsList),true);
  25. return $data;
  26. }
  27. public function handleGoodsList($list) {
  28. foreach($list as $key=>$goods){
  29. //查询现在商品表中是否有该商品
  30. $info = DB::table('seafood_fx.goods')->where('productCode',$goods['productCode'])->first();
  31. if($info){
  32. //有商品信息则更新店铺商品信息
  33. //卖家云必要参数拼接转化
  34. $mjArr = array();
  35. $mjArr['eshopCode'] = config('constants.ESHOP_CODE');
  36. $mjArr['outerCode'] = config('constants.GOODS_PREFIX').$goods['id'];
  37. $mjArr['name'] = $goods['name'];
  38. $mjArr['description'] = $goods['description'];
  39. $mj = Order::mjGoodsUpdate($mjArr);
  40. if($mj == false){
  41. Log::errorLog(json_encode($mjArr),[],"order/syncGoods",0,'');
  42. die;
  43. }
  44. //查询规格信息,更新规格信息
  45. $result = DB::table('seafood.goods_skus')->where('goodsCode', $goods['id'])->get();
  46. $result = json_decode(json_encode($result),true);
  47. foreach ($result as $sku){
  48. //查询规格信息
  49. $skuInfo = DB::table('seafood_fx.goods_skus')->where('code',$sku['code'])->first();
  50. if(!$skuInfo){
  51. //增加shop sku
  52. $shopArr = array();
  53. $shopArr['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  54. $shopArr['eshopCode'] = config('constants.ESHOP_CODE');
  55. $shopArr['goodsCode'] = $sku['goodsCode'];
  56. $shopArr['propsName'] = $sku['propsName'];
  57. $shopArr['price'] = $sku['price'];
  58. $shopArr['skuProductCode'] = $sku['code'];
  59. $shopArr['createTime'] = date('Y-m-d H:i:s');
  60. $shopArr['modifyTime'] = $sku['createTime'];
  61. $sku_add = Order::mjSkuAdd($shopArr);
  62. if($sku_add == false){
  63. Log::errorLog(json_encode($shopArr),[],"order/syncGoods",0,'');
  64. die;
  65. }
  66. //更新商品信息以及添加库存
  67. $productCode = $goods['productCode'];
  68. unset($goods['productCode']);
  69. unset($goods['id']);
  70. $goods_up = DB::table('seafood_fx.goods')->where('productCode',$productCode)->update($goods);
  71. $sku['goodsCode'] = $skuInfo->id;
  72. $skus_ad = DB::table('seafood_fx.goods_skus')->insert($sku);
  73. } else {
  74. # eshop sku更新
  75. $shopArr = array();
  76. $shopArr['eshopCode'] = config('constants.ESHOP_CODE');
  77. $shopArr['goodsCode'] = $sku['goodsCode'];
  78. $shopArr['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  79. $shopArr['propsName'] = $sku['propsName'];
  80. $shopArr['price'] = $sku['price'];
  81. $sku_up = Order::mjSkuUpdate($shopArr);
  82. if($sku_up == false){
  83. Log::errorLog(json_encode($shopArr),[],"order/syncGoods",0,'');
  84. die;
  85. }
  86. $productCode = $goods['productCode'];
  87. unset($goods['id']);
  88. unset($goods['productCode']);
  89. $goods_up = DB::table('seafood_fx.goods')->where('productCode',$productCode)->update($goods);
  90. $code = $sku['code'];
  91. unset($sku['id']);
  92. unset($sku['code']);
  93. $sku_update = DB::table('seafood_fx.goods_skus')->where('code',$code)->update($sku);
  94. }
  95. }
  96. } else {
  97. //没有商品,直接同步店铺商品信息以及库存信息
  98. $result = DB::table('seafood.goods_skus')->where('goodsCode', $goods['id'])->get();
  99. $result = json_decode(json_encode($result),true);
  100. $mjArr = array();
  101. $skuArr = array();
  102. if(count($result) > 0){
  103. foreach ($result as $k=>$sku){
  104. $skuArr[$k]['propsName'] = $sku['propsName'];
  105. $skuArr[$k]['eShopCode'] = config('constants.ESHOP_CODE');
  106. $skuArr[$k]['price'] = $sku['price'];
  107. $skuArr[$k]['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  108. $skuArr[$k]['createTime'] = $sku['createTime'];
  109. $skuArr[$k]['modifyTime'] = $sku['modifyTime'];
  110. }
  111. }
  112. $mjArr['name'] = $goods['name'];
  113. $mjArr['description'] = $goods['description'];
  114. $mjArr['eshopCode'] = config('constants.ESHOP_CODE');
  115. $mjArr['productCode'] = $goods['productCode'];
  116. $mjArr['goodsCategoryName'] = $goods['goodsCategoryName'];
  117. $mjArr['picUrl'] = $goods['picUrl'];
  118. $mjArr['outerCode'] = config('constants.GOODS_PREFIX').$goods['id'];
  119. $mjArr['skuList'] = $skuArr;
  120. $mj = Order::mjGoodsAdd($mjArr);
  121. if($mj == false){
  122. Log::errorLog(json_encode($mjArr),[],"order/syncGoods",0,'');
  123. die;
  124. }
  125. //数据表中插入商品信息以及规格信息
  126. unset($goods['id']);
  127. $goods_id = DB::table('seafood_fx.goods')->insertGetId($goods);
  128. if($goods_id > 0 && count($result)>0 ){
  129. foreach ($result as $skus){
  130. $skus['goodsCode'] = $goods_id;
  131. $sku_ad = DB::table('seafood_fx.goods_skus')->insert($skus);
  132. }
  133. }
  134. }
  135. }
  136. echo 'SUCCESS';die;
  137. }
  138. }