feat: 更新数据库结构和链接任务逻辑

主要修改:
1. 更新`game.sql`文件,添加`system_config`表并调整多个表的`ENGINE`和`AUTO_INCREMENT`设置。
2. 在`LinkTask`实体中新增`completedPoints`字段,更新状态字段以包含`COMPLETED`状态。
3. 在`LinkTaskMapper`中新增根据设备ID和状态查询链接任务的方法。
4. 在`LinkStatusService`中更新状态描述映射,增加对`COMPLETED`状态的处理。
5. 在`DeviceStatusService`和`ScriptClient`中新增解析设备状态的方法,支持检查设备是否完成游戏。

技术细节:
- 通过数据库结构的更新,增强了系统的配置管理和链接任务的状态处理能力。
- 新增的功能支持更灵活的设备状态监控和任务管理。
This commit is contained in:
zyh
2025-08-27 16:00:43 +08:00
parent bb4136b4ab
commit c6e8953960
16 changed files with 620 additions and 55 deletions

View File

@@ -13,7 +13,7 @@ public class LinkStatusResponse {
@Schema(description = "批次ID", example = "123")
private Long batchId;
@Schema(description = "链接状态", example = "NEW", allowableValues = {"NEW", "USING", "LOGGED_IN", "REFUNDED", "EXPIRED"})
@Schema(description = "链接状态", example = "NEW", allowableValues = {"NEW", "USING", "LOGGED_IN", "COMPLETED", "REFUNDED", "EXPIRED"})
private String status;
@Schema(description = "链接状态描述", example = "新建")

View File

@@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "用户端链接状态响应")
public class UserLinkStatusResponse {
@Schema(description = "链接状态", example = "NEW", allowableValues = {"NEW", "USING", "LOGGED_IN", "REFUNDED", "EXPIRED"})
@Schema(description = "链接状态", example = "NEW", allowableValues = {"NEW", "USING", "LOGGED_IN", "COMPLETED", "REFUNDED", "EXPIRED"})
private String status;
// Getter and Setter

View File

@@ -25,7 +25,7 @@ public class LinkTask {
@TableField("expire_at")
private LocalDateTime expireAt;
private String status; // NEW | USING | LOGGED_IN | REFUNDED | EXPIRED
private String status; // NEW | USING | LOGGED_IN | COMPLETED | REFUNDED | EXPIRED
private String region; // Q | V
@@ -61,6 +61,9 @@ public class LinkTask {
@TableField("first_region_select_at")
private LocalDateTime firstRegionSelectAt;
@TableField("completed_points")
private Integer completedPoints;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
@@ -118,4 +121,7 @@ public class LinkTask {
public LocalDateTime getFirstRegionSelectAt() { return firstRegionSelectAt; }
public void setFirstRegionSelectAt(LocalDateTime firstRegionSelectAt) { this.firstRegionSelectAt = firstRegionSelectAt; }
public Integer getCompletedPoints() { return completedPoints; }
public void setCompletedPoints(Integer completedPoints) { this.completedPoints = completedPoints; }
}