| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- <?php
- namespace App\Services;
- use App\Models\ActivityReward;
- use App\Models\BalanceLog;
- use App\Models\User;
- use App\Models\UserLogin;
- use App\Support\ActivityEligibility;
- class ActivityEligibilityService
- {
- public static function memberContext($memberId): ?array
- {
- if ($memberId === null || $memberId === '') {
- return null;
- }
- $user = User::where('member_id', $memberId)->first();
- if (!$user) {
- return null;
- }
- $platform = UserLogin::where('user_id', $memberId)
- ->where('status', UserLogin::STATUS_SUCCESS)->orderBy('id')->value('platform');
- return [
- 'registered_at' => $user->getRawOriginal('created_at'),
- 'register_platform' => ActivityEligibility::normalizePlatform($platform),
- // Same categories as getTotalRecharge(), retaining the database decimal precision.
- 'deposit_total' => (string)BalanceLog::where('member_id', $memberId)->where('type', 1)
- ->whereIn('change_type', ['充值', '人工充值', '三方充值'])
- ->selectRaw('COALESCE(SUM(amount), 0) AS total')->value('total'),
- ];
- }
- public static function evaluate(ActivityReward $activity, ?array $member): array
- {
- return ActivityEligibility::evaluate($activity->toArray(), $member);
- }
- public static function isPublishedOn(ActivityReward $activity, ?string $platform): bool
- {
- return ActivityEligibility::isPublishedOn($activity->toArray(), $platform);
- }
- }
|