v1.0
parent
f863b630d9
commit
a0b0c01c77
@ -0,0 +1,108 @@ |
||||
<?php |
||||
|
||||
declare (strict_types=1); |
||||
|
||||
namespace app\command; |
||||
|
||||
use think\console\Command; |
||||
use think\console\Output; |
||||
use think\console\Input; |
||||
use think\facade\Db; |
||||
use app\common\model\Goods; |
||||
use app\common\model\GoodsSku; |
||||
|
||||
// /www/server/php/74/bin/php /server/wwwroot/yanzong/think test |
||||
class UpdateCollectGoodsPrice extends Command |
||||
{ |
||||
protected function configure() |
||||
{ |
||||
// 指令配置 |
||||
$this->setName('UpdateCollectGoodsPrice')->setDescription('自动更新商品的价格'); |
||||
$this->addArgument("goods_id"); |
||||
$this->addArgument("div"); |
||||
$this->addArgument("mod"); |
||||
} |
||||
|
||||
protected function execute(Input $input, Output $output) |
||||
{ |
||||
$goods_id = $input->getArgument("goods_id"); |
||||
$div = $input->getArgument("div"); |
||||
$mod = $input->getArgument("mod"); |
||||
$limit = 10; |
||||
$service = new \app\job\service\goods\Collector(); |
||||
while (TRUE) { |
||||
$sql = "SELECT goods_id,link,goods_price_min,cost_price_min,profit,profit_rate,store_id FROM `yoshop_goods` WHERE goods_id > " . $goods_id . " AND goods_id % ". $div . " = ". $mod ." AND store_id = 0 AND is_delete = 0 AND status = 10 AND link != '' "; |
||||
$list = Db::query($sql); |
||||
if (!$list) { |
||||
return false; |
||||
} |
||||
foreach ($list as $item) { |
||||
try { |
||||
$sku = GoodsSku::where('goods_id', $item['goods_id'])->field('goods_sku_no,cost_price,goods_price')->find(); |
||||
if (!$sku || !$sku['goods_sku_no']) { |
||||
echo $item['link'].":sku不存在".PHP_EOL; |
||||
continue; |
||||
} |
||||
$data = $service->collector($item['link'], (int)$item['store_id']); |
||||
if (!$data || !isset($data['specData']['skuList']) || !$data['specData']['skuList']) { |
||||
echo $item['link'].":没有抓取到sku信息".PHP_EOL; |
||||
continue; |
||||
} |
||||
$skuList = array_column($data['specData']['skuList'], null, "goods_sku_no"); |
||||
var_dump($skuList); |
||||
$goods_price = $skuList[$sku['goods_sku_no']]['goods_price'] ?? 0; |
||||
var_dump($goods_price); |
||||
//exit(); |
||||
if (!$goods_price) { |
||||
echo $item['link'].":商品价格没有抓取到".PHP_EOL; |
||||
continue; |
||||
} |
||||
|
||||
$cost_price = $item['cost_price_min']; |
||||
$profit = $goods_price - $cost_price; |
||||
$profit_rate = (float)$goods_price > 0 ? ($goods_price - $cost_price) / $goods_price : 0.00; |
||||
$profit_rate = $profit_rate > 0.0001 ? bcmul($profit_rate, 100, 2) : 0.00; |
||||
|
||||
//更新商品价格 |
||||
$goodsData = [ |
||||
'goods_price_min' => $goods_price, |
||||
'profit' => $profit, |
||||
'profit_rate' => $profit_rate, |
||||
'update_time' => time(), |
||||
]; |
||||
Goods::where('goods_id', $item['goods_id'])->update($goodsData); |
||||
//更新sku价格 |
||||
$skuData = [ |
||||
'goods_price' => $goods_price, |
||||
'update_time' => time(), |
||||
]; |
||||
Goods::where('goods_id', $item['goods_id'])->update($goodsData); |
||||
} catch (Exception $e) { |
||||
echo $e->getMessage().PHP_EOL; |
||||
continue; |
||||
} |
||||
|
||||
} |
||||
// var_dump($list); |
||||
// exit(); |
||||
|
||||
} |
||||
// $page = 1; |
||||
// $limit = 1000; |
||||
// while (TRUE) { |
||||
|
||||
// $list = Goods::where('spu_id',0)->field('goods_id')->page($page)->limit($limit)->select(); |
||||
// foreach ($list as $key => $value) { |
||||
// $ret = Goods::where('goods_id', $value['goods_id'])->update(['spu_id' => $value['goods_id']]); |
||||
// $ret = GoodsSku::where('goods_id', $value['goods_id'])->update(['spu_id' => $value['goods_id']]); |
||||
// var_dump($ret); |
||||
// } |
||||
// $page++; |
||||
// } |
||||
|
||||
//var_dump($list); |
||||
|
||||
} |
||||
|
||||
|
||||
} |
Loading…
Reference in new issue