36 lines
1.0 KiB
PHP
36 lines
1.0 KiB
PHP
<?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');
|
|
}
|
|
}
|