[chuni] Add auto version matching

This commit is contained in:
samnyan
2020-12-14 17:18:21 +08:00
parent b3a8e80399
commit aa2e8cdea4
15 changed files with 256 additions and 21 deletions

View File

@@ -0,0 +1,21 @@
package icu.samnyan.aqua.sega.general.dao;
import icu.samnyan.aqua.security.model.WebUser;
import icu.samnyan.aqua.sega.general.model.Card;
import icu.samnyan.aqua.sega.general.model.GameVersion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Repository("GameVersionRepository")
public interface GameVersionRepository extends JpaRepository<GameVersion, String> {
Optional<GameVersion> findByUuid(String uuid);
List<GameVersion> findByLastTimeBefore(LocalDateTime time);
}

View File

@@ -0,0 +1,21 @@
package icu.samnyan.aqua.sega.general.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity(name = "SegaGameVersion")
@Table(name = "sega_game_version")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GameVersion {
@Id
private String uuid;
private String romVersion;
private String dataVersion;
private LocalDateTime lastTime;
}

View File

@@ -0,0 +1,42 @@
package icu.samnyan.aqua.sega.general.service;
import icu.samnyan.aqua.sega.general.dao.GameVersionRepository;
import icu.samnyan.aqua.sega.general.model.GameVersion;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Optional;
import static icu.samnyan.aqua.sega.util.AquaConst.DEFAULT_KEYCHIP_ID;
@Service
public class ClientSettingService {
private final GameVersionRepository gameVersionRepository;
public ClientSettingService(GameVersionRepository gameVersionRepository) {
this.gameVersionRepository = gameVersionRepository;
}
public void writeSetting(GameVersion setting) {
gameVersionRepository.save(setting);
}
public Optional<GameVersion> getSetting(String serial) {
if (serial.equals(DEFAULT_KEYCHIP_ID)) {
return Optional.empty();
}
try {
var vo = gameVersionRepository.findByUuid(serial);
if (vo.isPresent()) {
var v = vo.get();
v.setLastTime(LocalDateTime.now());
gameVersionRepository.save(v);
return Optional.of(v);
}
return Optional.empty();
} catch (Exception e) {
return Optional.empty();
}
}
}