From 9b2d2c9af18937b6b4b8dda30cb69a300c3c5149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Fri, 11 Feb 2022 16:00:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=BF=9B=E8=B4=A7=E7=BB=8F?= =?UTF-8?q?=E9=94=80=E5=95=86=E8=A1=A5=E8=B4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dealer/CalculatePurchaseAmount.php | 35 +++++++++++++++++++ .../Dealer/PurchaseSubsidySettleCommand.php | 24 ++++++++++--- app/Providers/AppServiceProvider.php | 9 +++++ 3 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 app/Actions/Dealer/CalculatePurchaseAmount.php diff --git a/app/Actions/Dealer/CalculatePurchaseAmount.php b/app/Actions/Dealer/CalculatePurchaseAmount.php new file mode 100644 index 00000000..9aca8883 --- /dev/null +++ b/app/Actions/Dealer/CalculatePurchaseAmount.php @@ -0,0 +1,35 @@ +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'); + } +} diff --git a/app/Console/Commands/Dealer/PurchaseSubsidySettleCommand.php b/app/Console/Commands/Dealer/PurchaseSubsidySettleCommand.php index fa8100ce..b013c8df 100644 --- a/app/Console/Commands/Dealer/PurchaseSubsidySettleCommand.php +++ b/app/Console/Commands/Dealer/PurchaseSubsidySettleCommand.php @@ -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) { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 74e95c0d..d23dee0a 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -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. *