getActivityReward($activityId); } catch (Exception $e) { Log::error('获取活动奖励信息失败', [ 'activity_id' => $activityId, 'error' => $e->getMessage() ]); return null; } } /** * 发放活动奖励 * * @param int $userId 用户ID * @param int $activityId 活动ID * @return array */ public static function grantActivityReward(int $userId, int $activityId): array { try { $rewardLogic = new RewardLogic(); // 检查是否可以领取奖励 if (!$rewardLogic->canClaimReward($userId, $activityId)) { return [ 'success' => false, 'message' => '不满足领取奖励条件', 'rewards' => [] ]; } // 发放奖励 $result = $rewardLogic->grantActivityReward($userId, $activityId); // 如果发放成功,标记奖励为已领取 if ($result['success']) { $rewardLogic->markRewardAsClaimed($userId, $activityId); } return $result; } catch (Exception $e) { Log::error('发放活动奖励失败', [ 'user_id' => $userId, 'activity_id' => $activityId, 'error' => $e->getMessage() ]); return [ 'success' => false, 'message' => $e->getMessage(), 'rewards' => [] ]; } } /** * 标记奖励为已过期 * * @param int $userId 用户ID * @param int $activityId 活动ID * @return bool */ public static function markRewardAsExpired(int $userId, int $activityId): bool { try { $rewardLogic = new RewardLogic(); return $rewardLogic->markRewardAsExpired($userId, $activityId); } catch (Exception $e) { Log::error('标记奖励为已过期失败', [ 'user_id' => $userId, 'activity_id' => $activityId, 'error' => $e->getMessage() ]); return false; } } /** * 批量发放活动奖励 * * @param array $userIds 用户ID数组 * @param int $activityId 活动ID * @return array */ public static function batchGrantActivityReward(array $userIds, int $activityId): array { $results = [ 'success_count' => 0, 'fail_count' => 0, 'details' => [] ]; foreach ($userIds as $userId) { $result = self::grantActivityReward($userId, $activityId); if ($result['success']) { $results['success_count']++; } else { $results['fail_count']++; } $results['details'][$userId] = $result; } return $results; } }