6
0
Fork 0

管理津贴包含未结算的

release
李静 2022-03-22 10:21:27 +08:00
parent aada984dce
commit 332191e648
4 changed files with 59 additions and 25 deletions

View File

@ -0,0 +1,28 @@
<?php
namespace App\Actions\Dealer;
use App\Models\Dealer;
use App\Models\DealerManageSubsidyLog;
class CalculateManageSubsidiesOfCurrentPeriod
{
/**
* @param \App\Models\Dealer $dealer
* @return string
*/
public function handle(Dealer $dealer): string
{
$tz = now();
if ($tz->day >= 20) {
$startAt = $tz->copy()->setDay(20)->startOfDay();
} elseif ($tz->day >= 5) {
$startAt = $tz->copy()->setDay(5)->startOfDay();
} else {
$startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay();
}
return DealerManageSubsidyLog::where('order_completed_at', '>=', $startAt)->where('user_id', $dealer->user_id)->sum('total_amount');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Actions\Dealer;
use App\Models\Dealer;
use App\Models\DealerManageSubsidyLog;
class CalculateNotCompletedManageSubsidies
{
/**
* @param \App\Models\Dealer $dealer
* @return string
*/
public function handle(Dealer $dealer): string
{
return DealerManageSubsidyLog::whereNull('order_completed_at')->where('user_id', $dealer->user_id)->sum('total_amount');
}
}

View File

@ -2,6 +2,8 @@
namespace App\Endpoint\Api\Http\Controllers\Dealer;
use App\Actions\Dealer\CalculateManageSubsidiesOfCurrentPeriod;
use App\Actions\Dealer\CalculateNotCompletedManageSubsidies;
use App\Actions\Dealer\CalculateNotCompletedPurchaseAmount;
use App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod;
use App\Endpoint\Api\Http\Controllers\Controller;
@ -15,18 +17,29 @@ class UserController extends Controller
* 个人信息
*
* @param \Illuminate\Http\Request $request
* @param \App\Actions\Dealer\CalculateNotCompletedManageSubsidies $calculateNotCompletedManageSubsidies
* @param \App\Actions\Dealer\CalculateManageSubsidiesOfCurrentPeriod $calculateManageSubsidiesOfCurrentPeriod
* @param \App\Actions\Dealer\CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount
* @param \App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
* @return \Illuminate\Http\JsonResponse
*/
public function show(
Request $request,
CalculateNotCompletedManageSubsidies $calculateNotCompletedManageSubsidies,
CalculateManageSubsidiesOfCurrentPeriod $calculateManageSubsidiesOfCurrentPeriod,
CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount,
CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
) {
$user = $request->user();
$user->dealer->setRelation('userInfo', $user->userInfo);
$dealerResource = DealerResource::make($user->dealer)->toArray($request);
$dealerResource['guanli_values'] = bcadd(
$calculateNotCompletedManageSubsidies->handle($user->dealer),
$calculateManageSubsidiesOfCurrentPeriod->handle($user->dealer),
2
);
$dealerResource['total_purchase_amount'] = bcadd(
$calculateNotCompletedPurchaseAmount->handle($user->dealer),
$calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer),

View File

@ -94,31 +94,6 @@ class Dealer extends Model
return $this->lvl->text();
}
/**
* 实时管理津贴
*
* @return void
*/
public function getCalculateTotalAmountAttribute()
{
$tz = now();
if ($tz->day >= 20) {
// 结算当月20号开始的管理津贴
$startAt = $tz->copy()->setDay(20)->startOfDay();
} elseif ($tz->day >= 5) {
// 结算当月5号开始的管理津贴
$startAt = $tz->copy()->setDay(5)->startOfDay();
} else {
// 结算上月20号开始的管理津贴
$startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay();
}
return DealerManageSubsidyLog::where(
'user_id', $this->user_id
)->where('order_completed_at', '>=', $startAt)->sum('total_amount');
}
/**
* 确认此经销商是否是金牌经销商
*