| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <?php
- namespace App\Module\Pet\Commands;
- use App\Module\Pet\Models\PetConfig;
- use App\Module\Pet\Models\PetLevelConfig;
- use App\Module\Pet\Models\PetSkill;
- use Illuminate\Console\Command;
- use Illuminate\Support\Facades\Log;
- /**
- * 生成宠物配置表JSON数据命令
- *
- * 该命令用于从数据库中的宠物相关表生成宠物JSON数据文件,供客户端使用。
- * 生成的JSON文件包含宠物的基本信息、等级配置和技能配置等。
- * 该命令通常在宠物配置更新后运行,以确保客户端获取最新的宠物数据。
- */
- class GeneratePetJsonCommand extends Command
- {
- /**
- * 命令名称和签名
- *
- * @var string
- */
- protected $signature = 'pet:generate-json';
- /**
- * 命令描述
- *
- * @var string
- */
- protected $description = 'Generate pet configuration JSON files from database';
- /**
- * 生成宠物配置JSON数据
- *
- * @param bool $saveToFile 是否保存到文件
- * @return array 生成的数据
- */
- public static function generateJson()
- {
- try {
- // 生成宠物基础配置JSON
- $petConfigData = self::generatePetConfigJson();
- // 生成宠物等级配置JSON
- $petLevelConfigData = self::generatePetLevelConfigJson();
- // 生成宠物技能配置JSON
- $petSkillConfigData = self::generatePetSkillConfigJson();
- // 返回所有配置数据
- return [
- 'pet_config' => $petConfigData,
- 'pet_level_config' => $petLevelConfigData,
- 'pet_skill_config' => $petSkillConfigData,
- 'success' => true,
- 'generated_ts' => time()
- ];
- } catch (\Exception $e) {
- Log::error('Generate pet JSON failed: ' . $e->getMessage());
- return [
- 'success' => false,
- 'error' => $e->getMessage()
- ];
- }
- }
- /**
- * 生成宠物基础配置JSON
- */
- private static function generatePetConfigJson()
- {
- // 查询宠物配置表数据
- $petConfigs = PetConfig::all()
- ->map(function ($config) {
- return [
- 'id' => $config->id,
- 'pet_type' => $config->pet_type,
- 'grade_probability' => $config->grade_probability,
- 'display_attributes' => $config->display_attributes,
- 'numeric_attributes' => $config->numeric_attributes
- ];
- })
- ->toArray();
- // 准备完整数据,包含生成时间
- return [
- 'generated_ts' => time(),
- 'pets' => $petConfigs
- ];
- }
- /**
- * 生成宠物等级配置JSON
- */
- private static function generatePetLevelConfigJson()
- {
- // 查询宠物等级配置表数据
- $petLevelConfigs = PetLevelConfig::orderBy('level')
- ->get()
- ->map(function ($config) {
- return [
- 'level' => $config->level,
- 'exp_required' => $config->exp_required,
- 'skills' => $config->skills,
- 'display_attributes' => $config->display_attributes,
- 'numeric_attributes' => $config->numeric_attributes
- ];
- })
- ->toArray();
- // 准备完整数据,包含生成时间
- return [
- 'generated_ts' => time(),
- 'pet_levels' => $petLevelConfigs
- ];
- }
- /**
- * 生成宠物技能配置JSON
- */
- private static function generatePetSkillConfigJson()
- {
- // 查询宠物技能配置表数据
- $petSkills = PetSkill::all()
- ->map(function ($skill) {
- return [
- 'id' => $skill->id,
- 'skill_name' => $skill->skill_name,
- 'stamina_cost' => $skill->stamina_cost,
- 'cool_down' => $skill->cool_down,
- 'effect_desc' => $skill->effect_desc,
- 'min_level' => $skill->min_level
- ];
- })
- ->toArray();
- // 准备完整数据,包含生成时间
- return [
- 'generated_ts' => time(),
- 'pet_skills' => $petSkills
- ];
- }
- /**
- * 执行命令
- */
- public function handle()
- {
- $this->info('Generating pet configuration JSON files...');
- $result = self::generateJson();
- if ($result['success']) {
- $this->info('Successfully generated pet configuration JSON files.');
- // 显示生成的配置数据概要
- $this->info('Pet configs: ' . count($result['pet_config']['pets']));
- $this->info('Pet level configs: ' . count($result['pet_level_config']['pet_levels']));
- $this->info('Pet skill configs: ' . count($result['pet_skill_config']['pet_skills']));
- } else {
- $this->error('Failed to generate pet configuration JSON files: ' . $result['error']);
- }
- }
- }
|