No Description

SyncGoods.php 6.6KB

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