Преглед на файлове

fix(farm): 修复土地状态验证逻辑

- 移除了 LandStatusValidator 和 RemovableStatusValidator 中的无效注释
- 在 RemovableStatusValidator 中添加了对灾害状态的检查
- 修正了 RewardLogic 中的奖励类型检查逻辑
notfff преди 7 месеца
родител
ревизия
4a65479186

+ 1 - 2
app/Module/Farm/Validators/LandStatusValidator.php

@@ -29,8 +29,7 @@ class LandStatusValidator extends Validator
             $this->addError('土地信息不存在,请先验证土地归属');
             return false;
         }
-    // 不在验证土地状态
-        return  true;
+
         try {
             // 检查土地状态是否为空闲状态(允许种植)
             if ($land->status !== LAND_STATUS::IDLE->value) {

+ 3 - 4
app/Module/Farm/Validators/RemovableStatusValidator.php

@@ -30,14 +30,12 @@ class RemovableStatusValidator extends Validator
             return false;
         }
 
-
-        return true;
-        // 不再验证土地状态
         try {
             // 检查土地状态是否允许铲除作物
-            // 只有种植中、可收获、枯萎状态才能铲除
+            // 只有种植中、灾害、可收获、枯萎状态才能铲除
             $allowedStatuses = [
                 LAND_STATUS::PLANTING->value,
+                LAND_STATUS::DISASTER->value,
                 LAND_STATUS::HARVESTABLE->value,
                 LAND_STATUS::WITHERED->value
             ];
@@ -66,6 +64,7 @@ class RemovableStatusValidator extends Validator
         return match ($status) {
             LAND_STATUS::IDLE->value => '空闲',
             LAND_STATUS::PLANTING->value => '种植中',
+            LAND_STATUS::DISASTER->value => '灾害',
             LAND_STATUS::HARVESTABLE->value => '可收获',
             LAND_STATUS::WITHERED->value => '枯萎',
             default => '未知状态'

+ 4 - 4
app/Module/Game/Logics/RewardLogic.php

@@ -198,7 +198,7 @@ class RewardLogic
     private function processRewardItem(int $userId, RewardItemDto $item): void
     {
         switch ($item->rewardType) {
-            case REWARD_TYPE::ITEM:
+            case REWARD_TYPE::ITEM->valueInt():
                 // 发放物品奖励
                 ItemService::addItem($userId, $item->targetId, $item->quantity, [
                     'param1' => $item->param1,
@@ -208,7 +208,7 @@ class RewardLogic
                 ]);
                 break;
 
-            case REWARD_TYPE::CURRENCY:
+            case REWARD_TYPE::CURRENCY->valueInt():
                 // 发放货币奖励
                 // 这里需要调用货币服务,根据实际情况实现
                 // CurrencyService::addCurrency($userId, $item->targetId, $item->quantity, [
@@ -218,13 +218,13 @@ class RewardLogic
                 // ]);
                 break;
 
-            case REWARD_TYPE::PET_EXP:
+            case REWARD_TYPE::PET_EXP->valueInt():
                 // 发放宠物经验奖励
                 // 这里需要调用宠物服务,根据实际情况实现
                 // PetService::addExp($userId, $item->targetId, $item->quantity);
                 break;
 
-            case REWARD_TYPE::PET_ENERGY:
+            case REWARD_TYPE::PET_ENERGY->valueInt():
                 // 发放宠物体力奖励
                 // 这里需要调用宠物服务,根据实际情况实现
                 // PetService::addEnergy($userId, $item->targetId, $item->quantity);