true, 'generated_ts' => time(), 'message' => '宠物配置已拆分为三个独立文件,请使用各自的缓存类获取' ]; } catch (\Exception $e) { Log::error('Generate pet JSON failed: ' . $e->getMessage()); return [ 'success' => false, 'error' => $e->getMessage() ]; } } /** * 生成宠物基础配置JSON * * @return array 宠物基础配置数据 */ public static function generatePetConfigJson() { try { // 查询宠物配置表数据 $petConfigs = PetConfig::all() ->map(function ($config) { // 过滤numeric_attributes,只保留白名单中的属性 $numericAttributes = null; if ($config->numeric_attributes) { $numericAttributes = NumericAttributesWhitelist::filter($config->numeric_attributes); } return [ 'id' => $config->id, 'pet_type' => $config->pet_type, 'grade_probability' => $config->grade_probability, 'display_attributes' => $config->display_attributes, 'numeric_attributes' => $numericAttributes ]; }) ->toArray(); // 准备完整数据,包含生成时间 return [ 'generated_ts' => time(), 'pets' => $petConfigs, 'success' => true ]; } catch (\Exception $e) { Log::error('Generate pet config JSON failed: ' . $e->getMessage()); return [ 'generated_ts' => time(), 'pets' => [], 'success' => false, 'error' => $e->getMessage() ]; } } /** * 生成宠物等级配置JSON * * @return array 宠物等级配置数据 */ public static function generatePetLevelConfigJson() { try { // 查询宠物等级配置表数据 $petLevelConfigs = PetLevelConfig::orderBy('level') ->get() ->map(function ($config) { // 过滤numeric_attributes,只保留白名单中的属性 $numericAttributes = null; if ($config->numeric_attributes) { $numericAttributes = NumericAttributesWhitelist::filter($config->numeric_attributes); } return [ 'level' => $config->level, 'exp_required' => $config->exp_required, 'skills' => $config->skills, 'display_attributes' => $config->display_attributes, 'numeric_attributes' => $numericAttributes ]; }) ->toArray(); // 准备完整数据,包含生成时间 return [ 'generated_ts' => time(), 'pet_levels' => $petLevelConfigs, 'success' => true ]; } catch (\Exception $e) { Log::error('Generate pet level config JSON failed: ' . $e->getMessage()); return [ 'generated_ts' => time(), 'pet_levels' => [], 'success' => false, 'error' => $e->getMessage() ]; } } /** * 生成宠物技能配置JSON * * @return array 宠物技能配置数据 */ public static function generatePetSkillConfigJson() { try { // 查询宠物技能配置表数据 $petSkills = PetSkill::all() ->map(function ($skill) { // 添加显示属性字段,如果存在的话 $displayAttributes = null; if (property_exists($skill, 'display_attributes')) { $displayAttributes = $skill->display_attributes; } return [ 'id' => $skill->id, 'skill_name' => $skill->skill_name, 'stamina_cost' => $skill->stamina_cost, 'cool_down' => $skill->cool_down, 'effect_desc' => $skill->effect_desc, 'display_attributes' => $displayAttributes ]; }) ->toArray(); // 准备完整数据,包含生成时间 return [ 'generated_ts' => time(), 'pet_skills' => $petSkills, 'success' => true ]; } catch (\Exception $e) { Log::error('Generate pet skill config JSON failed: ' . $e->getMessage()); return [ 'generated_ts' => time(), 'pet_skills' => [], 'success' => false, 'error' => $e->getMessage() ]; } } /** * 执行命令 */ public function handle() { $this->info('Generating pet configuration JSON files...'); try { // 生成宠物基础配置JSON $petConfigData = self::generatePetConfigJson(); $this->info('Pet configs: ' . count($petConfigData['pets'])); // 生成宠物等级配置JSON $petLevelConfigData = self::generatePetLevelConfigJson(); $this->info('Pet level configs: ' . count($petLevelConfigData['pet_levels'])); // 生成宠物技能配置JSON $petSkillConfigData = self::generatePetSkillConfigJson(); $this->info('Pet skill configs: ' . count($petSkillConfigData['pet_skills'])); // 使用各自的缓存类保存数据 $this->info('Saving data to cache...'); \App\Module\Game\DCache\PetConfigJsonConfig::getData([], true); \App\Module\Game\DCache\PetLevelJsonConfig::getData([], true); \App\Module\Game\DCache\PetSkillJsonConfig::getData([], true); $this->info('Successfully generated pet configuration JSON files.'); } catch (\Exception $e) { $this->error('Failed to generate pet configuration JSON files: ' . $e->getMessage()); } } }