jingcai-php/app/Jobs/ReportOrderDataJob.php

74 lines
2.4 KiB
PHP
Executable File

<?php
namespace App\Jobs;
use App\Console\Commands\Report\GenerateDaySeller;
use App\Console\Commands\Report\GenerateDayShop;
use App\Console\Commands\Report\GenerateDayWin;
use App\Enums\LottState;
use App\Model\Order;
use App\Model\Seller\Seller;
use App\Model\Seller\Shop;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class ReportOrderDataJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $orderId;
public function __construct($orderId)
{
$this->orderId = $orderId;
$this->queue = config('queue.names.order_attr_change');
}
public function handle()
{
$order = Order::find($this->orderId);
if (!$order) {
return;
}
Log::info('ReportOrderDataJob start ~~~', [
'order_id' => $order->id,
'lottery_state' => $order->lottery_state,
]);
$allowStates = [LottState::DRAFT, LottState::WIN, LottState::WAIT, LottState::SEND, LottState::REVOKE];
if (!in_array($order->lottery_state,$allowStates)) {
return;
}
$daySeller = new GenerateDaySeller();
if ($order->lottery_state == LottState::DRAFT) {
$seller = Seller::find($order->receive_user_id);
$date = $order->receive_date;
} else if ($order->lottery_state == LottState::WAIT || $order->lottery_state == LottState::WIN) {
$seller = Seller::find($order->draft_user_id);
$date = $order->draft_date;
} else if ($order->lottery_state == LottState::SEND) {
$seller = Seller::find($order->send_user_id);
$date = $order->send_date;
} else {
$seller = Seller::find($order->revoke_user_id);
$date = date('Ymd', strtotime($order->revoke_at));
}
if ($seller) {
$daySeller->report($seller, $date);
}
$dayShop = new GenerateDayShop();
$seller = Seller::find($order->receive_user_id);
$shop = Shop::find($seller ? $seller->shop_id : 0);
if ($shop) {
$dayShop->report($shop, $date);
}
$dayWin = new GenerateDayWin();
$dayWin->report($order);
Log::info('ReportOrderDataJob end ~~~, orderId:'. $this->orderId);
}
}