diff --git a/app/Console/Commands/Swoole.php b/app/Console/Commands/Swoole.php new file mode 100644 index 0000000..9e97435 --- /dev/null +++ b/app/Console/Commands/Swoole.php @@ -0,0 +1,56 @@ +where('plat_id', 1)->where('status', 1)->get(); + $endTime = DateTimeUtils::getMicroTime(); + $beginTime = $endTime - 1000; + foreach ($shops as $shop) { + BusinessFactory::init()->make($shop->plat_id)->setShop($shop)->downloadOrdersAndSave($beginTime, $endTime, 1, '', 'increment'); + } + }); + Event::wait(); + } +} diff --git a/app/Console/Commands/UpdateSuperPermissions.php b/app/Console/Commands/UpdateSuperAdminPermissions.php similarity index 95% rename from app/Console/Commands/UpdateSuperPermissions.php rename to app/Console/Commands/UpdateSuperAdminPermissions.php index c662b0b..5f8b1b0 100644 --- a/app/Console/Commands/UpdateSuperPermissions.php +++ b/app/Console/Commands/UpdateSuperAdminPermissions.php @@ -7,7 +7,7 @@ use Illuminate\Console\Command; use Spatie\Permission\Models\Permission; use Spatie\Permission\Models\Role; -class UpdateSuperPermissions extends Command +class UpdateSuperAdminPermissions extends Command { /** * The name and signature of the console command. diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a8c5158..35c09a0 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,6 +2,7 @@ namespace App\Console; +use App\Console\Commands\Inventory; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -24,8 +25,9 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - // $schedule->command('inspire') - // ->hourly(); + // 服务器添加cron入口 + // * * * * * cd /home/wwwroot/erp.staging.chutang66.com && php artisan schedule:run >> /dev/null 2>&1 + $schedule->command(Inventory::class)->dailyAt('07:00'); } /** diff --git a/app/Http/Controllers/Shop/ShopsController.php b/app/Http/Controllers/Shop/ShopsController.php index e6fc501..a4aee5c 100644 --- a/app/Http/Controllers/Shop/ShopsController.php +++ b/app/Http/Controllers/Shop/ShopsController.php @@ -89,11 +89,9 @@ class ShopsController extends Controller $business->setShop($shop); if ('goods' === $request->get('type')) { $business->bindGoods($request->get('data')); - event(new BindBusinessGoods($shop)); } if ('orders' === $request->get('type')) { $business->saveOrders(); - event(new UpdateBusinessGoodsStock($shop)); } } } diff --git a/app/Jobs/ProcessPodcast.php b/app/Jobs/ProcessPodcast.php new file mode 100644 index 0000000..6d4df9c --- /dev/null +++ b/app/Jobs/ProcessPodcast.php @@ -0,0 +1,34 @@ +shop = $shop; + $this->shopId = $shopId; + $this->updateOrders = $updateOrders; } /** * Handle the event. * - * @param Registered $event + * @param Registered $event * @return void */ public function handle(Registered $event) { - // + if (empty($this->updateOrders)) { + return; + } } } diff --git a/app/Services/Business/BusinessClient.php b/app/Services/Business/BusinessClient.php index fa9af39..12dc06c 100644 --- a/app/Services/Business/BusinessClient.php +++ b/app/Services/Business/BusinessClient.php @@ -88,18 +88,21 @@ abstract class BusinessClient $res = (new Client())->request('POST', $url, $headers); $size = $res->getBody()->getSize(); $res = json_decode($res->getBody()->getContents(), true); - $log = new Log(); + if ('pdd.ktt.increment.order.query' === $params['type']) { + $log = Log::query()->where('user_id', $this->shop->id)->where('target_field', $params['type'])->first(); + } else { + $log = new Log(); + } $log->module = 'plat'; $log->action = 'POST'; $log->target_type = $this->shop->plat_id; - $log->target_id = $this->skuId; + $log->target_id = $this->getSkuId(); $log->target_field = $params['type']; - $log->user_id = 1; + $log->user_id = $this->shop->id; if ($size < 64000) { $log->message = json_encode($res, 256); } $log->save(); - if (isset($res['error_response'])) { throw new \Exception($res['error_response']['error_msg'], $res['error_response']['error_code']); } diff --git a/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php b/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php index c8aae35..b299df8 100644 --- a/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php +++ b/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php @@ -80,13 +80,14 @@ class KuaiTuanTuan extends BusinessClient { if ('increment' === $downloadType) { [$type, $appendParams] = Order::downloadIncrementOrders($beginTime, $endTime, $page); + $responseName = 'ktt_increment_order_query_response'; } else { [$type, $appendParams] = Order::downloadOrders($beginTime, $endTime, $page); + $responseName = 'ktt_order_list_response'; } $res = $this->doRequest($type, $appendParams); - $this->saveOrders($res['ktt_order_list_response']['order_list']); - exit(); - $pageNum = ceil($res['ktt_order_list_response']['total_count'] / $appendParams['size']); + $this->saveOrders($res[$responseName]['order_list']); + $pageNum = ceil($res[$responseName]['total_count'] / $appendParams['page_size']); if ($pageNum > $page && 10 >= $page) { $this->downloadOrdersAndSave($beginTime, $endTime, $page + 1); } diff --git a/app/Services/Business/KuaiTuanTuan/Order.php b/app/Services/Business/KuaiTuanTuan/Order.php index 06ddf58..d9d74f9 100644 --- a/app/Services/Business/KuaiTuanTuan/Order.php +++ b/app/Services/Business/KuaiTuanTuan/Order.php @@ -2,6 +2,7 @@ namespace App\Services\Business\KuaiTuanTuan; +use App\Listeners\UpdateBusinessGoodsStock; use App\Models\BusinessOrder; use App\Models\BusinessOrderItem; @@ -17,7 +18,7 @@ class Order 'confirm_at_begin' => $beginTime, // 成交启始时间, 必填,毫秒时间戳 'confirm_at_end' => $endTime, // 成交结束时间,必填, 毫秒时间戳,成交结束时间 - 成交启始时间 <= 24h 'page_number' => $page, // 页码, 必填 - 'page_size' => 1, // 数量, 必填, 1~100 + 'page_size' => 100, // 数量, 必填, 1~100 // 非必填 // 'activity_no' => $activityNo, // 团号 'after_sales_status' => 0, // 售后状态, 可选 0-未发起售后 1-退款中 2-退款成功 3-待处理 4-拒绝退款 6-待(顾客)退货 7-待(团长)确认退货 8-(顾客)撤销 9-(系统)关闭 @@ -54,12 +55,14 @@ class Order // 下载订单事件之后去统计 然后更新库存 public static function saveOrders(array $orders, $shopId) { + $updateOrders = []; foreach ($orders as $order) { unset($order['custom_item_list'], $order['logistics_list'], $order['gift_order_list']); $orderRecord = BusinessOrder::updateOrCreate( ['shop_id' => $shopId, 'order_sn' => $order['order_sn']], $order ); + $updateOrders[] = $order['order_sn']; foreach ($order['sub_order_list'] as $item) { BusinessOrderItem::updateOrCreate( ['shop_id' => $shopId, 'business_order_id' => $orderRecord->id, 'goods_id' => $item['goods_id'], 'sku_id' => $item['sku_id']], @@ -67,6 +70,7 @@ class Order ); } } + event(new UpdateBusinessGoodsStock($shopId, $updateOrders)); } } diff --git a/app/Services/Business/MiaoXuan/Order.php b/app/Services/Business/MiaoXuan/Order.php index 07278fa..89c6e73 100644 --- a/app/Services/Business/MiaoXuan/Order.php +++ b/app/Services/Business/MiaoXuan/Order.php @@ -2,6 +2,7 @@ namespace App\Services\Business\MiaoXuan; +use App\Listeners\UpdateBusinessGoodsStock; use App\Models\BusinessOrder; class Order @@ -9,11 +10,13 @@ class Order // 下载订单事件之后去统计 然后更新库存 public static function saveOrders(array $orders, $shopId) { + $updateOrders = []; foreach ($orders as $order) { $orderRecord = BusinessOrder::updateOrCreate( ['shop_id' => $shopId, 'order_sn' => $order['order_sn']], $order ); + $updateOrders[] = $order['order_sn']; foreach ($order['sub_order_list'] as $item) { $orderRecord = BusinessOrder::updateOrCreate( ['shop_id' => $shopId, 'business_order_id' => $orderRecord->id, 'goods_id' => $item['goods_id'], 'sku_id' => $item['sku_id']], @@ -21,6 +24,7 @@ class Order ); } } + event(new UpdateBusinessGoodsStock($shopId, $updateOrders)); } } diff --git a/composer.lock b/composer.lock index 1e34c06..4c69252 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5a01163bdf570af5226c567ad02f45d7", + "content-hash": "037b06c1b26399725a1d9c0687402942", "packages": [ { "name": "aliyuncs/oss-sdk-php", @@ -9110,7 +9110,7 @@ "prefer-lowest": false, "platform": { "php": "^7.2.5|^8.0", - "ext-json": "^1.7" + "ext-json": "*" }, "platform-dev": [], "plugin-api-version": "2.3.0" diff --git a/database/migrations/2022_07_26_103559_create_daily_stock_records_table.php b/database/migrations/2022_07_26_103559_create_daily_stock_records_table.php index 894332f..3b1c792 100644 --- a/database/migrations/2022_07_26_103559_create_daily_stock_records_table.php +++ b/database/migrations/2022_07_26_103559_create_daily_stock_records_table.php @@ -20,8 +20,9 @@ class CreateDailyStockRecordsTable extends Migration $table->unsignedInteger('arrived_today_num')->default(0)->comment('今日到货'); $table->unsignedInteger('loss_num')->default(0)->comment('损耗'); $table->unsignedInteger('inventory')->default(0)->comment('库存盘点'); - $table->unique(['sku_id', 'day']); $table->timestamps(); + // 索引 + $table->unique(['sku_id', 'day']); }); } diff --git a/database/migrations/2022_08_10_150657_create_jobs_table.php b/database/migrations/2022_08_10_150657_create_jobs_table.php new file mode 100644 index 0000000..1be9e8a --- /dev/null +++ b/database/migrations/2022_08_10_150657_create_jobs_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('jobs'); + } +}