targetId)) { throw new Exception("无效的皮肤ID: {$item->targetId}"); } // 检查用户是否已拥有该皮肤 if (SkinService::hasSkin($userId, $item->targetId)) { Log::info("用户已拥有该皮肤,跳过发放", [ 'userId' => $userId, 'skinId' => $item->targetId, 'sourceType' => $sourceType, 'sourceId' => $sourceId ]); return; // 已拥有则跳过,不抛异常 } // 为用户添加皮肤 $result = SkinService::addSkin($userId, $item->targetId); if (!$result->success) { throw new Exception("皮肤奖励发放失败: " . $result->errorMessage); } Log::info("皮肤奖励发放成功", [ 'userId' => $userId, 'skinId' => $item->targetId, 'skinName' => SkinService::getSkinName($item->targetId), 'quantity' => $item->quantity, 'sourceType' => $sourceType, 'sourceId' => $sourceId ]); } catch (Exception $e) { Log::error("皮肤奖励处理失败", [ 'userId' => $userId, 'rewardType' => $item->rewardType, 'targetId' => $item->targetId, 'quantity' => $item->quantity, 'sourceType' => $sourceType, 'sourceId' => $sourceId, 'error' => $e->getMessage() ]); throw $e; } } }