6
0
Fork 0

计算进货经销商补贴

release
李静 2022-02-11 16:00:29 +08:00
parent 2ebc5d9658
commit 9b2d2c9af1
3 changed files with 63 additions and 5 deletions

View File

@ -0,0 +1,35 @@
<?php
namespace App\Actions\Dealer;
use App\Models\Dealer;
use App\Models\DealerPurchaseLog;
use Illuminate\Support\Carbon;
class CalculatePurchaseAmount
{
/**
* 计算经销商的进货业绩
*
* @param \App\Models\Dealer $dealer
* @param \Illuminate\Support\Carbon|null $start
* @param \Illuminate\Support\Carbon|null $end
* @return string
*/
public function handle(Dealer $dealer, ?Carbon $start = null, ?Carbon $end = null): string
{
$query = DealerPurchaseLog::query();
if ($start && $end) {
$query->whereBetween('order_completed_at', [$start, $end]);
} else {
$query->when($start, function ($query, $start) {
$query->where('order_completed_at', '>=', $start);
})->when($end, function ($query, $end) {
$query->where('order_completed_at', '<=', $end);
});
}
return $query->where('path', 'like', "{$dealer->userInfo->full_path}%")->sum('total_amount');
}
}

View File

@ -2,6 +2,7 @@
namespace App\Console\Commands\Dealer;
use App\Actions\Dealer\CalculatePurchaseAmount;
use App\Enums\DealerEarningStatus;
use App\Enums\DealerLvl;
use App\Enums\DealerOrderSettleState;
@ -9,7 +10,6 @@ use App\Enums\DealerPurchaseSubsidySettleState;
use App\Enums\DealerPurchaseSubsidyStatus;
use App\Models\Dealer;
use App\Models\DealerOrder;
use App\Models\DealerPurchaseLog;
use App\Models\DealerPurchaseSubsidy;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
@ -31,6 +31,21 @@ class PurchaseSubsidySettleCommand extends Command
*/
protected $description = '结算签约经销商的进货补贴';
/**
* @var \App\Actions\Dealer\CalculatePurchaseAmount
*/
protected $calculatePurchaseAmount;
/**
* @param \App\Actions\Dealer\CalculatePurchaseAmount $calculatePurchaseAmount
*/
public function __construct(CalculatePurchaseAmount $calculatePurchaseAmount)
{
parent::__construct();
$this->calculatePurchaseAmount = $calculatePurchaseAmount;
}
/**
* Execute the console command.
*
@ -265,11 +280,10 @@ class PurchaseSubsidySettleCommand extends Command
*/
protected function initializePurchaseSubsidy(Dealer $dealer, Carbon $startAt, Carbon $endAt, $feeRate, array $purchaseRules)
{
$this->calculatePurchaseAmount->handle($dealer, $startAt, $endAt);
// 进货总额
$totalPurchaseAmount = DealerPurchaseLog::query()
->whereBetween('order_completed_at', [$startAt, $endAt])
->where('path', 'like', "{$dealer->userInfo->full_path}%")
->sum('total_amount');
$totalPurchaseAmount = $this->calculatePurchaseAmount->handle($dealer, $startAt, $endAt);
// 如果没有进货总额,则返回
if (bccomp($totalPurchaseAmount, '0', 2) <= 0) {

View File

@ -15,6 +15,15 @@ use Symfony\Component\HttpFoundation\HeaderUtils;
class AppServiceProvider extends ServiceProvider
{
/**
* All of the container singletons that should be registered.
*
* @var array
*/
public $singletons = [
\App\Actions\Dealer\CalculatePurchaseAmount::class => \App\Actions\Dealer\CalculatePurchaseAmount::class,
];
/**
* Register any application services.
*