No Description

SyncGoods.php 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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. Log::errorLog(1,[],"order/syncGoods",0,'');
  31. $info = DB::table('seafood_fx.goods')->where('productCode',$goods['productCode'])->first();
  32. if($info){
  33. Log::errorLog(2,[],"order/syncGoods",0,'');
  34. //有商品信息则更新店铺商品信息
  35. //卖家云必要参数拼接转化
  36. $mjArr = array();
  37. $mjArr['eshopCode'] = config('constants.ESHOP_CODE');
  38. $mjArr['outerCode'] = config('constants.GOODS_PREFIX').$goods['id'];
  39. $mjArr['name'] = $goods['name'];
  40. $mjArr['description'] = $goods['description'];
  41. $mj = Order::mjGoodsUpdate($mjArr);
  42. if($mj == false){
  43. Log::errorLog(json_encode($mjArr),[],"order/syncGoods",0,'');
  44. die;
  45. }
  46. //查询规格信息,更新规格信息
  47. $result = DB::table('seafood.goods_skus')->where('goodsCode', $goods['id'])->get();
  48. $result = json_decode(json_encode($result),true);
  49. foreach ($result as $sku){
  50. //查询规格信息
  51. $skuInfo = DB::table('seafood_fx.goods_skus')->where('code',$sku['code'])->first();
  52. if(!$skuInfo){
  53. //增加shop sku
  54. $shopArr = array();
  55. $shopArr['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  56. $shopArr['eshopCode'] = config('constants.ESHOP_CODE');
  57. $shopArr['goodsCode'] = $sku['goodsCode'];
  58. $shopArr['propsName'] = $sku['propsName'];
  59. $shopArr['price'] = $sku['price'];
  60. $shopArr['skuProductCode'] = $sku['code'];
  61. $shopArr['createTime'] = date('Y-m-d H:i:s');
  62. $shopArr['modifyTime'] = $sku['createTime'];
  63. $sku_add = Order::mjSkuAdd($shopArr);
  64. if($sku_add == false){
  65. Log::errorLog(json_encode($shopArr),[],"order/syncGoods",0,'');
  66. die;
  67. }
  68. //更新商品信息以及添加库存
  69. Log::errorLog(3,[],"order/syncGoods",0,'');
  70. $productCode = $goods['productCode'];
  71. unset($goods['productCode']);
  72. unset($goods['id']);
  73. $goods_up = DB::table('seafood_fx.goods')->where('productCode',$productCode)->update($goods);
  74. $sku['goodsCode'] = $skuInfo->id;
  75. $skus_ad = DB::table('seafood_fx.goods_skus')->insert($sku);
  76. } else {
  77. # eshop sku更新
  78. $shopArr = array();
  79. $shopArr['eshopCode'] = config('constants.ESHOP_CODE');
  80. $shopArr['goodsCode'] = $sku['goodsCode'];
  81. $shopArr['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  82. $shopArr['propsName'] = $sku['propsName'];
  83. $shopArr['price'] = $sku['price'];
  84. $sku_up = Order::mjSkuUpdate($shopArr);
  85. if($sku_up == false){
  86. Log::errorLog(json_encode($shopArr),[],"order/syncGoods",0,'');
  87. die;
  88. }
  89. Log::errorLog(4,[],"order/syncGoods",0,'');
  90. $productCode = $goods['productCode'];
  91. unset($goods['id']);
  92. unset($goods['productCode']);
  93. $goods_up = DB::table('seafood_fx.goods')->where('productCode',$productCode)->update($goods);
  94. $code = $sku['code'];
  95. unset($sku['id']);
  96. unset($sku['code']);
  97. $sku_update = DB::table('seafood_fx.goods_skus')->where('code',$code)->update($sku);
  98. }
  99. }
  100. } else {
  101. //没有商品,直接同步店铺商品信息以及库存信息
  102. $result = DB::table('seafood.goods_skus')->where('goodsCode', $goods['id'])->get();
  103. $result = json_decode(json_encode($result),true);
  104. $mjArr = array();
  105. $skuArr = array();
  106. if(count($result) > 0){
  107. foreach ($result as $k=>$sku){
  108. $skuArr[$k]['propsName'] = $sku['propsName'];
  109. $skuArr[$k]['eShopCode'] = config('constants.ESHOP_CODE');
  110. $skuArr[$k]['price'] = $sku['price'];
  111. $skuArr[$k]['outerCode'] = config('constants.GOODS_PREFIX').$sku['id'];
  112. $skuArr[$k]['createTime'] = $sku['createTime'];
  113. $skuArr[$k]['modifyTime'] = $sku['modifyTime'];
  114. }
  115. }
  116. $mjArr['name'] = $goods['name'];
  117. $mjArr['description'] = $goods['description'];
  118. $mjArr['eshopCode'] = config('constants.ESHOP_CODE');
  119. Log::errorLog(5,[],"order/syncGoods",0,'');
  120. $mjArr['productCode'] = $goods['productCode'];
  121. $mjArr['goodsCategoryName'] = $goods['goodsCategoryName'];
  122. $mjArr['picUrl'] = $goods['picUrl'];
  123. $mjArr['outerCode'] = config('constants.GOODS_PREFIX').$goods['id'];
  124. $mjArr['skuList'] = $skuArr;
  125. $mj = Order::mjGoodsAdd($mjArr);
  126. if($mj == false){
  127. Log::errorLog(json_encode($mjArr),[],"order/syncGoods",0,'');
  128. die;
  129. }
  130. //数据表中插入商品信息以及规格信息
  131. unset($goods['id']);
  132. $goods_id = DB::table('seafood_fx.goods')->insertGetId($goods);
  133. if($goods_id > 0 && count($result)>0 ){
  134. foreach ($result as $skus){
  135. $skus['goodsCode'] = $goods_id;
  136. $sku_ad = DB::table('seafood_fx.goods_skus')->insert($skus);
  137. }
  138. }
  139. }
  140. }
  141. echo 'SUCCESS';die;
  142. }
  143. }