6
0
Fork 0

未完成的进货业绩

release
李静 2022-03-22 10:13:10 +08:00
parent 661c9739a7
commit aada984dce
6 changed files with 38 additions and 32 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace App\Actions\Dealer;
use App\Models\Dealer;
use App\Models\DealerPurchaseLog;
class CalculateNotCompletedPurchaseAmount
{
/**
* 计算经销商的未完成的进货业绩
*
* @param \App\Models\Dealer $dealer
* @return string
*/
public function handle(Dealer $dealer): string
{
return DealerPurchaseLog::whereNull('order_completed_at')
->where('path', 'like', "{$dealer->userInfo->full_path}%")
->sum('total_amount');
}
}

View File

@ -3,8 +3,6 @@
namespace App\Actions\Dealer;
use App\Models\Dealer;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
class CalculatePurchaseAmountOfCurrentPeriod
{
@ -31,17 +29,6 @@ class CalculatePurchaseAmountOfCurrentPeriod
$startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay();
}
return Cache::remember($this->prefix($startAt).':'.$dealer->user_id, 600, function () use ($dealer, $startAt) {
return bcdiv($this->calculatePurchaseAmount->handle($dealer, $startAt), '1', 2);
});
}
/**
* @param \Illuminate\Support\Carbon $tz
* @return string
*/
protected function prefix(Carbon $tz): string
{
return $tz->rawFormat('ymd').'_dealer_purchase_amount';
return bcdiv($this->calculatePurchaseAmount->handle($dealer, $startAt), '1', 2);
}
}

View File

@ -2,6 +2,7 @@
namespace App\Endpoint\Api\Http\Controllers\Dealer;
use App\Actions\Dealer\CalculateNotCompletedPurchaseAmount;
use App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\Dealer\DealerFansResource;
@ -15,17 +16,20 @@ class FansController extends Controller
* 统计当前信息
*
* @param Request $request
* @param CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount
* @param CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
*
*/
public function statistics(
Request $request,
CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount,
CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
) {
$user = $request->user();
return response()->json([
'fans_num'=> $user->fans()->count(),
// 未完成的业绩
'not_completed_purchase_amount' => $calculateNotCompletedPurchaseAmount->handle($user->dealer),
'total_purchase_amount'=> $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer),
]);
}

View File

@ -2,6 +2,7 @@
namespace App\Endpoint\Api\Http\Controllers\Dealer;
use App\Actions\Dealer\CalculateNotCompletedPurchaseAmount;
use App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\Dealer\DealerResource;
@ -14,22 +15,28 @@ class UserController extends Controller
* 个人信息
*
* @param \Illuminate\Http\Request $request
* @param \App\Actions\Dealer\CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount
* @param \App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
* @return \Illuminate\Http\JsonResponse
*/
public function show(
Request $request,
CalculateNotCompletedPurchaseAmount $calculateNotCompletedPurchaseAmount,
CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod
) {
$user = $request->user();
$dealer = DealerResource::make($user->dealer)->toArray($request);
$dealer['current_purchase_amount'] = $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer);
$dealerResource = DealerResource::make($user->dealer)->toArray($request);
$dealerResource['total_purchase_amount'] = bcadd(
$calculateNotCompletedPurchaseAmount->handle($user->dealer),
$calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer),
2
);
return response()->json([
'id' => $user->id,
'phone' => $user->phone,
'dealer'=> $dealer,
'dealer'=> $dealerResource,
'dealer_wallet' => $user->dealerWallet?->balance,
'user_info' => UserInfoResource::make($user->userInfo),
'has_password' => (bool) $user->wallet?->password,

View File

@ -23,7 +23,6 @@ class DealerResource extends JsonResource
'team_sales_value' => $this->team_sales_value, // 团队业绩
'pay_info'=>$this->pay_info ?: null,
'can_withdraw'=> $this->canWithdraw(),
'total_purchase_amount'=> bcdiv($this->total_purchase_amount, '1', 2), // 总进货业绩
];
}
}

View File

@ -6,7 +6,6 @@ use App\Casts\JsonArray;
use App\Enums\DealerLvl;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
class Dealer extends Model
{
@ -95,18 +94,6 @@ class Dealer extends Model
return $this->lvl->text();
}
/**
* 获取已结算的进货业绩
*
* @return string
*/
public function getTotalPurchaseAmountAttribute()
{
return Cache::remember('dealer_total_purchase_amount:'.$this->user_id, 3600, function () {
return $this->purchaseSubsidies()->sum('total_purchase_amount');
});
}
/**
* 实时管理津贴
*