统计调整

pull/1/head
jcadmin 2024-11-14 22:10:54 +08:00
parent 2ae08ffc8c
commit f9b3fd5799
6 changed files with 149 additions and 31 deletions

View File

@ -6,7 +6,9 @@ use App\Model\Order;
use App\Model\Report\ReportDaySeller; use App\Model\Report\ReportDaySeller;
use App\Model\Seller\Seller; use App\Model\Seller\Seller;
use App\Model\Seller\ShopBill; use App\Model\Seller\ShopBill;
use App\Utils\Helps;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class GenerateDaySeller extends Command class GenerateDaySeller extends Command
{ {
@ -51,20 +53,31 @@ class GenerateDaySeller extends Command
public function report(Seller $seller, $cdate) 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_date', $cdate)
->where('draft_user_id', $seller->id) ->where('draft_user_id', $seller->id)
->sum('money'); ->first();
$chupiaoMoney = $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('send_date', $cdate)
->where('send_user_id', $seller->id) ->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_date', $cdate)
->where('draft_user_id', $seller->id) ->where('draft_user_id', $seller->id)
->sum('lottery_should_send_prize'); ->first();
$winMoney = $winMoneyRow ? $winMoneyRow->m : 0;
$incrMoney = ShopBill::where('created_date', $cdate) $incrMoney = ShopBill::where('created_date', $cdate)
->where('type', ShopBill::TYPE_SELLER_INCR) ->where('type', ShopBill::TYPE_SELLER_INCR)
@ -85,11 +98,11 @@ class GenerateDaySeller extends Command
$report->seller_id = $seller->id; $report->seller_id = $seller->id;
$report->shop_id = $seller->shop_id; $report->shop_id = $seller->shop_id;
$report->cdate = $cdate; $report->cdate = $cdate;
$report->chupiao_money = $chupiaoMoney; $report->chupiao_money = Helps::floatFormat($chupiaoMoney);
$report->send_prize = $sendMoney; $report->send_prize = Helps::floatFormat($sendMoney);
$report->win_prize = $winMoney; $report->win_prize = Helps::floatFormat($winMoney);
$report->incr_money = $incrMoney; $report->incr_money = Helps::floatFormat($incrMoney);
$report->reduce_money = $reduceMoney; $report->reduce_money = Helps::floatFormat($reduceMoney);
$report->save(); $report->save();
return $report; return $report;
} }

View File

@ -9,12 +9,12 @@ use App\Model\Customer\Customer;
use App\Model\Customer\CustomerBill; use App\Model\Customer\CustomerBill;
use App\Model\Customer\CustomerWithdraw; use App\Model\Customer\CustomerWithdraw;
use App\Model\Order; use App\Model\Order;
use App\Model\Report\ReportDaySeller;
use App\Model\Report\ReportDayShop; use App\Model\Report\ReportDayShop;
use App\Model\Seller\Seller; use App\Model\Seller\Seller;
use App\Model\Seller\Shop; use App\Model\Seller\Shop;
use App\Model\Seller\ShopBill; use App\Model\Seller\ShopBill;
use App\Model\Seller\ShopCooperateBill; use App\Model\Seller\ShopCooperateBill;
use App\Utils\Helps;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -61,20 +61,32 @@ class GenerateDayShop extends Command
public function report(Shop $shop, $cdate) 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_date', $cdate)
->where('draft_shop_id', $shop->id) ->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('send_date', $cdate)
->where('draft_shop_id', $shop->id) ->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_date', $cdate)
->where('draft_shop_id', $shop->id) ->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) $withDraw = CustomerWithdraw::where('shop_id', $shop->id)
->where('created_at', 'like', '%' . date('Y-m-d', strtotime($cdate)) . '%') ->where('created_at', 'like', '%' . date('Y-m-d', strtotime($cdate)) . '%')

View File

@ -2,6 +2,7 @@
namespace App\Console\Commands\Report; namespace App\Console\Commands\Report;
use App\Enums\OrderType;
use App\Model\Order; use App\Model\Order;
use App\Model\Report\ReportDayWin; use App\Model\Report\ReportDayWin;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@ -41,23 +42,37 @@ class GenerateDayWin extends Command
} }
$winOrders = Order::where('win_date', $cdate)->get(); $winOrders = Order::where('win_date', $cdate)->get();
foreach ($winOrders as $order) { foreach ($winOrders as $order) {
$this->report($order);
}
}
$report = ReportDayWin::where('cdate', $cdate) public function report($order)
{
if (!$order) {
return;
}
$report = ReportDayWin::where('cdate', $order->win_date)
->where('order_id', $order->id) ->where('order_id', $order->id)
->first(); ->first();
if (!$report) { if (!$report) {
$report = new ReportDayWin(); $report = new ReportDayWin();
} }
$report->cdate = $cdate; $report->cdate = $order->win_date;
$report->customer_id = $order->customer_id; $report->customer_id = $order->customer_id;
$report->order_id = $order->id; $report->order_id = $order->id;
$report->shop_id = $order->shop_id; $report->shop_id = $order->shop_id;
$report->lottery_id = $order->lottery_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_money = $order->money;
$report->order_prize = $order->lottery_prize; $report->order_prize = $order->lottery_prize;
$report->order_tax_prize = $order->lottery_tax_prize; $report->order_tax_prize = $order->lottery_tax_prize;
$report->order_send_prize = $order->lottery_send_prize; $report->order_send_prize = $order->lottery_send_prize;
}
$report->save(); $report->save();
} }
}
} }

View File

@ -0,0 +1,65 @@
<?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()
{
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);
}
}

View File

@ -11,6 +11,7 @@ use App\Enums\OrderType;
use App\Enums\PayState; use App\Enums\PayState;
use App\Enums\PlayType; use App\Enums\PlayType;
use App\Events\OrderPaySuccessEvent; use App\Events\OrderPaySuccessEvent;
use App\Jobs\ReportOrderDataJob;
use App\Model\Customer\Customer; use App\Model\Customer\Customer;
use App\Model\Lq\JclqOdds; use App\Model\Lq\JclqOdds;
use App\Model\Seller\Seller; use App\Model\Seller\Seller;
@ -20,6 +21,7 @@ use App\Utils\Helps;
use App\Utils\ThrowException; use App\Utils\ThrowException;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class Order extends BaseModel class Order extends BaseModel
{ {
@ -43,7 +45,17 @@ class Order extends BaseModel
'close_time_str', 'close_time_str',
'enable_add', '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() public function pOrder()
{ {
return $this->belongsTo(Order::class, 'pid', 'id'); return $this->belongsTo(Order::class, 'pid', 'id');

View File

@ -11,6 +11,7 @@ return [
'ios_generate_ipa' => 'ios_generate_ipa', // 生成ios ipa 'ios_generate_ipa' => 'ios_generate_ipa', // 生成ios ipa
'generate_customer_ranking' => 'generate_customer_ranking', // 中奖后实时计算用户排名 'generate_customer_ranking' => 'generate_customer_ranking', // 中奖后实时计算用户排名
'handle_order_win' => 'handle_order_win', // 中奖后其他逻辑 'handle_order_win' => 'handle_order_win', // 中奖后其他逻辑
'order_attr_change' => 'order_attr_change', // 订单数据变更
], ],
/* /*