From f9b3fd5799f0634c77889c74519369469dade16e Mon Sep 17 00:00:00 2001 From: jcadmin Date: Thu, 14 Nov 2024 22:10:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/Report/GenerateDaySeller.php | 37 +++++++---- .../Commands/Report/GenerateDayShop.php | 26 ++++++-- .../Commands/Report/GenerateDayWin.php | 39 +++++++---- app/Jobs/ReportOrderDataJob.php | 65 +++++++++++++++++++ app/Model/Order.php | 12 ++++ config/queue.php | 1 + 6 files changed, 149 insertions(+), 31 deletions(-) create mode 100755 app/Jobs/ReportOrderDataJob.php diff --git a/app/Console/Commands/Report/GenerateDaySeller.php b/app/Console/Commands/Report/GenerateDaySeller.php index b0fb3143..d9721e9c 100755 --- a/app/Console/Commands/Report/GenerateDaySeller.php +++ b/app/Console/Commands/Report/GenerateDaySeller.php @@ -6,7 +6,9 @@ use App\Model\Order; use App\Model\Report\ReportDaySeller; use App\Model\Seller\Seller; use App\Model\Seller\ShopBill; +use App\Utils\Helps; use Illuminate\Console\Command; +use Illuminate\Support\Facades\DB; class GenerateDaySeller extends Command { @@ -51,20 +53,31 @@ class GenerateDaySeller extends Command public function report(Seller $seller, $cdate) { - $chupiaoMoney = Order::usable() + $chupiaoMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_money, money)) as m') + ]) + ->usable() ->where('draft_date', $cdate) ->where('draft_user_id', $seller->id) - ->sum('money'); - - $sendMoney = Order::usable() + ->first(); + $chupiaoMoney = $chupiaoMoneyRow ? $chupiaoMoneyRow->m : 0; + $sendMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_send_prize, lottery_send_prize)) as m') + ]) + ->usable() ->where('send_date', $cdate) ->where('send_user_id', $seller->id) - ->sum('lottery_send_prize'); + ->first(); + $sendMoney = $sendMoneyRow ? $sendMoneyRow->m : 0; - $winMoney = Order::usable() + $winMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_should_send_prize, lottery_should_send_prize)) as m') + ]) + ->usable() ->where('draft_date', $cdate) ->where('draft_user_id', $seller->id) - ->sum('lottery_should_send_prize'); + ->first(); + $winMoney = $winMoneyRow ? $winMoneyRow->m : 0; $incrMoney = ShopBill::where('created_date', $cdate) ->where('type', ShopBill::TYPE_SELLER_INCR) @@ -85,11 +98,11 @@ class GenerateDaySeller extends Command $report->seller_id = $seller->id; $report->shop_id = $seller->shop_id; $report->cdate = $cdate; - $report->chupiao_money = $chupiaoMoney; - $report->send_prize = $sendMoney; - $report->win_prize = $winMoney; - $report->incr_money = $incrMoney; - $report->reduce_money = $reduceMoney; + $report->chupiao_money = Helps::floatFormat($chupiaoMoney); + $report->send_prize = Helps::floatFormat($sendMoney); + $report->win_prize = Helps::floatFormat($winMoney); + $report->incr_money = Helps::floatFormat($incrMoney); + $report->reduce_money = Helps::floatFormat($reduceMoney); $report->save(); return $report; } diff --git a/app/Console/Commands/Report/GenerateDayShop.php b/app/Console/Commands/Report/GenerateDayShop.php index 924c1a65..98521356 100755 --- a/app/Console/Commands/Report/GenerateDayShop.php +++ b/app/Console/Commands/Report/GenerateDayShop.php @@ -9,12 +9,12 @@ use App\Model\Customer\Customer; use App\Model\Customer\CustomerBill; use App\Model\Customer\CustomerWithdraw; use App\Model\Order; -use App\Model\Report\ReportDaySeller; use App\Model\Report\ReportDayShop; use App\Model\Seller\Seller; use App\Model\Seller\Shop; use App\Model\Seller\ShopBill; use App\Model\Seller\ShopCooperateBill; +use App\Utils\Helps; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; @@ -61,20 +61,32 @@ class GenerateDayShop extends Command public function report(Shop $shop, $cdate) { - $chupiaoMoney = Order::usable() + $chupiaoMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_money, money)) as m') + ]) + ->usable() ->where('draft_date', $cdate) ->where('draft_shop_id', $shop->id) - ->sum('money'); + ->first(); + $chupiaoMoney = Helps::floatFormat($chupiaoMoneyRow ? $chupiaoMoneyRow->m : 0); - $sendMoney = Order::usable() + $sendMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_send_prize, lottery_send_prize)) as m') + ]) + ->usable() ->where('send_date', $cdate) ->where('draft_shop_id', $shop->id) - ->sum('lottery_send_prize'); + ->first(); + $sendMoney = Helps::floatFormat($sendMoneyRow ? $sendMoneyRow->m : 0); - $winMoney = Order::usable() + $winMoneyRow = Order::select([ + DB::raw('sum(IF(type = 3, union_should_send_prize, lottery_should_send_prize)) as m') + ]) + ->usable() ->where('draft_date', $cdate) ->where('draft_shop_id', $shop->id) - ->sum('lottery_should_send_prize'); + ->first(); + $winMoney = Helps::floatFormat($winMoneyRow ? $winMoneyRow->m : 0); $withDraw = CustomerWithdraw::where('shop_id', $shop->id) ->where('created_at', 'like', '%' . date('Y-m-d', strtotime($cdate)) . '%') diff --git a/app/Console/Commands/Report/GenerateDayWin.php b/app/Console/Commands/Report/GenerateDayWin.php index 7aaf1601..03268ed7 100755 --- a/app/Console/Commands/Report/GenerateDayWin.php +++ b/app/Console/Commands/Report/GenerateDayWin.php @@ -2,6 +2,7 @@ namespace App\Console\Commands\Report; +use App\Enums\OrderType; use App\Model\Order; use App\Model\Report\ReportDayWin; use Illuminate\Console\Command; @@ -41,23 +42,37 @@ class GenerateDayWin extends Command } $winOrders = Order::where('win_date', $cdate)->get(); foreach ($winOrders as $order) { + $this->report($order); + } + } - $report = ReportDayWin::where('cdate', $cdate) - ->where('order_id', $order->id) - ->first(); - if (!$report) { - $report = new ReportDayWin(); - } - $report->cdate = $cdate; - $report->customer_id = $order->customer_id; - $report->order_id = $order->id; - $report->shop_id = $order->shop_id; - $report->lottery_id = $order->lottery_id; + public function report($order) + { + if (!$order) { + return; + } + $report = ReportDayWin::where('cdate', $order->win_date) + ->where('order_id', $order->id) + ->first(); + if (!$report) { + $report = new ReportDayWin(); + } + $report->cdate = $order->win_date; + $report->customer_id = $order->customer_id; + $report->order_id = $order->id; + $report->shop_id = $order->shop_id; + $report->lottery_id = $order->lottery_id; + if ($order->type == OrderType::UNION) { + $report->order_money = $order->union_money; + $report->order_prize = $order->union_should_send_prize; + $report->order_tax_prize = $order->union_send_prize; + $report->order_send_prize = $order->union_send_prize; + } else { $report->order_money = $order->money; $report->order_prize = $order->lottery_prize; $report->order_tax_prize = $order->lottery_tax_prize; $report->order_send_prize = $order->lottery_send_prize; - $report->save(); } + $report->save(); } } diff --git a/app/Jobs/ReportOrderDataJob.php b/app/Jobs/ReportOrderDataJob.php new file mode 100755 index 00000000..7664c062 --- /dev/null +++ b/app/Jobs/ReportOrderDataJob.php @@ -0,0 +1,65 @@ +orderId = $orderId; + $this->queue = config('queue.names.order_attr_change'); + } + public function handle() + { + Log::info('ReportOrderDataJob start ~~~, orderId:'. $this->orderId); + $order = Order::find($this->orderId); + if (!$order) { + return; + } + $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, $order->draft_date); + + $dayWin = new GenerateDayWin(); + $dayWin->report($order); + Log::info('ReportOrderDataJob end ~~~, orderId:'. $this->orderId); + } +} diff --git a/app/Model/Order.php b/app/Model/Order.php index 242a3055..5a907064 100755 --- a/app/Model/Order.php +++ b/app/Model/Order.php @@ -11,6 +11,7 @@ use App\Enums\OrderType; use App\Enums\PayState; use App\Enums\PlayType; use App\Events\OrderPaySuccessEvent; +use App\Jobs\ReportOrderDataJob; use App\Model\Customer\Customer; use App\Model\Lq\JclqOdds; use App\Model\Seller\Seller; @@ -20,6 +21,7 @@ use App\Utils\Helps; use App\Utils\ThrowException; use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class Order extends BaseModel { @@ -43,7 +45,17 @@ class Order extends BaseModel 'close_time_str', 'enable_add', ]; + public static function boot() + { + parent::boot(); + static::updated(function($model) { + if($model->wasChanged('lottery_state')) { + Log::info('ReportOrderDataJob dispatch11111111111, orderId:'. $model->id); + dispatch(new ReportOrderDataJob($model->id)); + } + }); + } public function pOrder() { return $this->belongsTo(Order::class, 'pid', 'id'); diff --git a/config/queue.php b/config/queue.php index af9ac815..7a30f13c 100755 --- a/config/queue.php +++ b/config/queue.php @@ -11,6 +11,7 @@ return [ 'ios_generate_ipa' => 'ios_generate_ipa', // 生成ios ipa 'generate_customer_ranking' => 'generate_customer_ranking', // 中奖后实时计算用户排名 'handle_order_win' => 'handle_order_win', // 中奖后其他逻辑 + 'order_attr_change' => 'order_attr_change', // 订单数据变更 ], /*