testInitUserSkin(); $this->testGetUserSkinInfo(); $this->testAddSkin(); $this->testChangeSkin(); $this->testRewardSkin(); echo "=== 皮肤系统测试完成 ===\n"; } /** * 测试初始化用户皮肤 */ private function testInitUserSkin(): void { echo "\n--- 测试初始化用户皮肤 ---\n"; $result = SkinService::initUserSkin($this->testUserId); echo "初始化结果: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; } /** * 测试获取用户皮肤信息 */ private function testGetUserSkinInfo(): void { echo "\n--- 测试获取用户皮肤信息 ---\n"; $skinInfo = SkinService::getUserSkinInfo($this->testUserId); if ($skinInfo) { echo "用户ID: {$skinInfo->userId}\n"; echo "当前皮肤: {$skinInfo->currentSkinId} - {$skinInfo->currentSkinName}\n"; echo "拥有皮肤: " . implode(', ', $skinInfo->ownedSkins) . "\n"; } else { echo "获取用户皮肤信息失败\n"; } } /** * 测试添加皮肤 */ private function testAddSkin(): void { echo "\n--- 测试添加皮肤 ---\n"; // 添加2号皮肤 $result = SkinService::addSkin($this->testUserId, 2); echo "添加2号皮肤: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; // 再次添加2号皮肤(应该失败) $result = SkinService::addSkin($this->testUserId, 2); echo "重复添加2号皮肤: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; } /** * 测试切换皮肤 */ private function testChangeSkin(): void { echo "\n--- 测试切换皮肤 ---\n"; // 切换到2号皮肤 $result = SkinService::changeSkin($this->testUserId, 2); echo "切换到2号皮肤: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; // 切换到未拥有的3号皮肤(应该失败) $result = SkinService::changeSkin($this->testUserId, 3); echo "切换到3号皮肤: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; // 切换回1号皮肤 $result = SkinService::changeSkin($this->testUserId, 1); echo "切换回1号皮肤: " . ($result->success ? "成功" : "失败 - " . $result->message) . "\n"; } /** * 测试通过奖励组发放皮肤 */ private function testRewardSkin(): void { echo "\n--- 测试通过奖励组发放皮肤 ---\n"; try { // 创建测试奖励组 $rewardGroup = GameRewardGroup::create([ 'name' => '皮肤测试奖励组', 'code' => 'SKIN_TEST_REWARD', 'description' => '用于测试皮肤奖励的奖励组', 'is_random' => false, 'random_count' => 1, ]); // 创建皮肤奖励项 GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => REWARD_TYPE::SKIN->value, 'target_id' => 3, // 3号皮肤 'param1' => 0, 'param2' => 0, 'quantity' => 1, 'weight' => 1.0, 'is_guaranteed' => true, ]); echo "创建测试奖励组成功,ID: {$rewardGroup->id}\n"; // 发放奖励(在事务中) \Illuminate\Support\Facades\DB::transaction(function () use ($rewardGroup, &$result) { $result = RewardService::grantReward($this->testUserId, $rewardGroup->id, REWARD_SOURCE_TYPE::TEST, 1); }); echo "发放皮肤奖励: " . ($result->success ? "成功" : "失败 - " . $result->errorMessage) . "\n"; if ($result->success) { echo "获得的奖励:\n"; foreach ($result->items as $item) { echo " - 奖励类型: {$item->rewardType}, 目标ID: {$item->targetId}, 数量: {$item->quantity}\n"; } } // 清理测试数据 $rewardGroup->rewardItems()->delete(); $rewardGroup->delete(); echo "清理测试数据完成\n"; } catch (\Exception $e) { echo "测试奖励发放失败: " . $e->getMessage() . "\n"; } } }