jingcai-php/app/Jobs/ReportOrderDataJob.php

69 lines
2.3 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));
}
$daySeller->report($seller, $date);
$dayShop = new GenerateDayShop();
$shop = Shop::find($order->draft_shop_id);
$dayShop->report($shop, $date);
$dayWin = new GenerateDayWin();
$dayWin->report($order);
Log::info('ReportOrderDataJob end ~~~, orderId:'. $this->orderId);
}
}