find($conditionGroupCode) : GameConditionGroup::with('conditionItems')->where('code', $conditionGroupCode)->first(); return $conditionGroup; } catch (\Exception $e) { Log::error('获取条件组详情失败', [ 'condition_group' => $conditionGroupCode, 'error' => $e->getMessage() ]); return null; } } /** * 获取条件组条件 * * @param int|string $conditionGroupCode 条件组ID或编码 * @return array 条件组条件 */ public static function getConditionItems($conditionGroupCode): array { try { // 获取条件组 $conditionGroup = self::getConditionGroup($conditionGroupCode); if (!$conditionGroup || $conditionGroup->conditionItems->isEmpty()) { return []; } $conditions = []; // 处理每个条件项 foreach ($conditionGroup->conditionItems as $item) { $conditionItem = [ 'id' => $item->id, 'type' => $item->condition_type, 'target_id' => $item->target_id, 'operator' => $item->operator, 'value' => $item->value, 'group_id' => $conditionGroup->id, 'group_code' => $conditionGroup->code, 'group_name' => $conditionGroup->name, 'logic_type' => $conditionGroup->logic_type, 'operator_name' => CONDITION_OPERATOR::getName($item->operator) ]; // 根据条件类型获取目标名称 if ($item->condition_type == CONDITION_TYPE::LAND_LEVEL->value) { $landType = FarmLandType::find($item->target_id); $conditionItem['target_name'] = $landType ? $landType->name : "土地类型 {$item->target_id}"; $conditionItem['condition_name'] = "土地等级"; } elseif ($item->condition_type == CONDITION_TYPE::HOUSE_LEVEL->value) { $conditionItem['target_name'] = "房屋"; $conditionItem['condition_name'] = "房屋等级"; } elseif ($item->condition_type == CONDITION_TYPE::PET_LEVEL->value) { $pet = PetConfig::find($item->target_id); $conditionItem['target_name'] = $pet ? $pet->name : "宠物 {$item->target_id}"; $conditionItem['condition_name'] = "宠物等级"; } elseif ($item->condition_type == CONDITION_TYPE::ITEM_COUNT->value) { $itemInfo = Item::find($item->target_id); $conditionItem['target_name'] = $itemInfo ? $itemInfo->name : "物品 {$item->target_id}"; $conditionItem['condition_name'] = "物品持有数"; } elseif ($item->condition_type == CONDITION_TYPE::CURRENCY_COUNT->value) { $currency = FundCurrencyModel::find($item->target_id); $conditionItem['target_name'] = $currency ? $currency->name : "货币 {$item->target_id}"; $conditionItem['condition_name'] = "货币持有数"; } elseif ($item->condition_type == CONDITION_TYPE::FUND_COUNT->value) { $fund = FundConfigModel::find($item->target_id); $conditionItem['target_name'] = $fund ? $fund->name : "代币账户 {$item->target_id}"; $conditionItem['condition_name'] = "代币持有数"; } $conditions[] = $conditionItem; } return $conditions; } catch (\Exception $e) { Log::error('获取条件组条件失败', [ 'condition_group' => $conditionGroupCode, 'error' => $e->getMessage() ]); return []; } } }