feat: add rocket levels four and five

This commit is contained in:
zhx 2026-07-15 18:58:26 +08:00
parent 7880ae2ec7
commit 756cb1b6f9
10 changed files with 151 additions and 14 deletions

View File

@ -0,0 +1,58 @@
-- rocket_config.level 已有唯一索引;以下两次 INSERT 均通过唯一键读取三级模板,数据量固定为单行。
-- 新等级先保持禁用,运营确认阈值和奖励后再从 WebConsole 启用,避免未确认配置参与发奖。
INSERT IGNORE INTO rocket_config (
id,
level,
max_energy,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
status,
created_at,
updated_at
)
SELECT
4,
4,
150000000,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
0,
NOW(),
NOW()
FROM rocket_config
WHERE level = 3;
INSERT IGNORE INTO rocket_config (
id,
level,
max_energy,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
status,
created_at,
updated_at
)
SELECT
5,
5,
200000000,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
0,
NOW(),
NOW()
FROM rocket_config
WHERE level = 3;
SELECT id, level, max_energy, status
FROM rocket_config
WHERE level IN (4, 5)
ORDER BY level;

View File

@ -0,0 +1,58 @@
-- rocket_config.level 已有唯一索引;以下两次 INSERT 均通过唯一键读取三级模板,数据量固定为单行。
-- 新等级先保持禁用,运营确认阈值和奖励后再从 WebConsole 启用,避免未确认配置参与发奖。
INSERT IGNORE INTO rocket_config (
id,
level,
max_energy,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
status,
created_at,
updated_at
)
SELECT
4,
4,
150000000,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
0,
NOW(),
NOW()
FROM rocket_config
WHERE level = 3;
INSERT IGNORE INTO rocket_config (
id,
level,
max_energy,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
status,
created_at,
updated_at
)
SELECT
5,
5,
200000000,
reward_config,
reward_quantity,
contributor_reward_rate,
normal_reward_config,
0,
NOW(),
NOW()
FROM rocket_config
WHERE level = 3;
SELECT id, level, max_energy, status
FROM rocket_config
WHERE level IN (4, 5)
ORDER BY level;

View File

@ -22,7 +22,7 @@ public class RocketConfigDTO {
private Long id;
/**
* 火箭等级 1/2/3
* 火箭等级 1/2/3/4/5
*/
private Integer level;

View File

@ -88,6 +88,8 @@ public class RocketConfigQueryExe {
case 1 -> "一级火箭";
case 2 -> "二级火箭";
case 3 -> "三级火箭";
case 4 -> "四级火箭";
case 5 -> "五级火箭";
default -> "未知等级";
};
}

View File

@ -35,7 +35,7 @@ public class RocketStatisticsCO {
/**
* 各等级发射次数分布
* key: level (1/2/3)
* key: level (1/2/3/4/5)
* value: count
*/
private Map<Integer, Long> launchByLevel;

View File

@ -137,7 +137,7 @@ public class RoomVoiceProfileCO extends ClientObject {
/**
* 火箭等级 (1-3)
* 火箭等级 (1-5)
*/
private Integer rocketLevel;

View File

@ -84,6 +84,8 @@ public class RocketConfig {
case 1 -> "一级火箭";
case 2 -> "二级火箭";
case 3 -> "三级火箭";
case 4 -> "四级火箭";
case 5 -> "五级火箭";
default -> "未知等级";
};
}

View File

@ -14,19 +14,29 @@ import lombok.Getter;
public enum RocketLevel {
/**
* 1级火箭15万能量
* 1级火箭3000万能量
*/
LEVEL_1(1, 150000L, "一级火箭"),
LEVEL_1(1, 30000000L, "一级火箭"),
/**
* 2级火箭50万能量
* 2级火箭6000万能量
*/
LEVEL_2(2, 500000L, "二级火箭"),
LEVEL_2(2, 60000000L, "二级火箭"),
/**
* 3级火箭100万能量
* 3级火箭1亿能量
*/
LEVEL_3(3, 1000000L, "三级火箭");
LEVEL_3(3, 100000000L, "三级火箭"),
/**
* 4级火箭1.5亿能量
*/
LEVEL_4(4, 150000000L, "四级火箭"),
/**
* 5级火箭2亿能量
*/
LEVEL_5(5, 200000000L, "五级火箭");
/**
* 等级值
@ -63,7 +73,9 @@ public enum RocketLevel {
return switch (this) {
case LEVEL_1 -> LEVEL_2;
case LEVEL_2 -> LEVEL_3;
case LEVEL_3 -> null; // 三级是最高级返回null表示需要重置
case LEVEL_3 -> LEVEL_4;
case LEVEL_4 -> LEVEL_5;
case LEVEL_5 -> null; // 五级是最高级返回null表示本轮等级链结束
};
}
@ -71,14 +83,19 @@ public enum RocketLevel {
* 是否是最高级
*/
public boolean isMaxLevel() {
return this == LEVEL_3;
return this == LEVEL_5;
}
/**
* 根据能量值判断等级
*/
public static RocketLevel determineLevel(Long energy) {
if (energy >= LEVEL_3.getMaxEnergy()) {
// 枚举阈值用于无数据库配置时的兜底判断正常发射仍以 rocket_config 为准
if (energy >= LEVEL_5.getMaxEnergy()) {
return LEVEL_5;
} else if (energy >= LEVEL_4.getMaxEnergy()) {
return LEVEL_4;
} else if (energy >= LEVEL_3.getMaxEnergy()) {
return LEVEL_3;
} else if (energy >= LEVEL_2.getMaxEnergy()) {
return LEVEL_2;

View File

@ -252,7 +252,7 @@ public class RocketStatus {
}
/**
* 重置状态级发射后重置为一级
* 重置状态最高级发射后重置为一级
*/
public void reset() {
this.date = LocalDate.now().toString();

View File

@ -22,7 +22,7 @@ public class RocketConfigEntity {
private Long id;
/**
* 火箭等级 1/2/3
* 火箭等级 1/2/3/4/5
*/
private Integer level;