diff --git a/app/Actions/Dealer/CalculateNotCompletedPurchaseAmount.php b/app/Actions/Dealer/CalculateNotCompletedPurchaseAmount.php new file mode 100644 index 00000000..87a2a833 --- /dev/null +++ b/app/Actions/Dealer/CalculateNotCompletedPurchaseAmount.php @@ -0,0 +1,22 @@ +where('path', 'like', "{$dealer->userInfo->full_path}%") + ->sum('total_amount'); + } +} diff --git a/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php b/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php index 61f071db..856cbb9c 100644 --- a/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php +++ b/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php @@ -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); } } diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php b/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php index 3d1dcb0a..a6a1acc3 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php @@ -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), ]); } diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php b/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php index 57543d3d..ec1e0ed0 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php @@ -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, diff --git a/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php b/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php index b1bce8f2..2297d458 100644 --- a/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php +++ b/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php @@ -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), // 总进货业绩 ]; } } diff --git a/app/Models/Dealer.php b/app/Models/Dealer.php index 5acc6e50..ab28fd7b 100644 --- a/app/Models/Dealer.php +++ b/app/Models/Dealer.php @@ -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'); - }); - } - /** * 实时管理津贴 *