diff --git a/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionConfig.java b/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionConfig.java new file mode 100644 index 0000000..6b05d3c --- /dev/null +++ b/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionConfig.java @@ -0,0 +1,13 @@ +package com.flyfish.framework.backup.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; + +/** + * 版本配置 + * + * @author wangyu + */ +@EnableConfigurationProperties(VersionProperties.class) +//@Configuration +public class VersionConfig { +} diff --git a/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionProperties.java b/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionProperties.java new file mode 100644 index 0000000..9eff5f4 --- /dev/null +++ b/flyfish-backup/src/main/java/com/flyfish/framework/backup/config/VersionProperties.java @@ -0,0 +1,29 @@ +package com.flyfish.framework.backup.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 备份配置 + * + * @author wangyu + */ +@ConfigurationProperties(prefix = "flyfish.version") +@Data +public class VersionProperties { + + /** + * 服务器地址 + */ + private String server = "http://version.flyfish.group"; + + /** + * 版本配置地址 + */ + private String versionUri = "/doc-system/version.json"; + + /** + * 当前系统版本 + */ + private String version = "v1.0"; +} diff --git a/flyfish-backup/src/main/java/com/flyfish/framework/backup/controller/VersionController.java b/flyfish-backup/src/main/java/com/flyfish/framework/backup/controller/VersionController.java new file mode 100644 index 0000000..1391abb --- /dev/null +++ b/flyfish-backup/src/main/java/com/flyfish/framework/backup/controller/VersionController.java @@ -0,0 +1,15 @@ +package com.flyfish.framework.backup.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 版本控制服务 + * @author wangyu + */ +@RestController +@RequestMapping("versions") +public class VersionController { + + +} diff --git a/flyfish-backup/src/main/java/com/flyfish/framework/backup/domain/Version.java b/flyfish-backup/src/main/java/com/flyfish/framework/backup/domain/Version.java new file mode 100644 index 0000000..ff5f71a --- /dev/null +++ b/flyfish-backup/src/main/java/com/flyfish/framework/backup/domain/Version.java @@ -0,0 +1,26 @@ +package com.flyfish.framework.backup.domain; + +import com.flyfish.framework.annotations.Property; +import lombok.Data; + +import java.util.Date; + +/** + * 版本号实体 + * @author wangyu + */ +@Data +public class Version { + + @Property("版本号") + private String version; + + @Property("下载地址") + private String payload; + + @Property("安装脚本") + private String script; + + @Property("创建时间") + private Date time; +} diff --git a/flyfish-backup/src/main/java/com/flyfish/framework/backup/service/VersionService.java b/flyfish-backup/src/main/java/com/flyfish/framework/backup/service/VersionService.java new file mode 100644 index 0000000..408bdf0 --- /dev/null +++ b/flyfish-backup/src/main/java/com/flyfish/framework/backup/service/VersionService.java @@ -0,0 +1,44 @@ +package com.flyfish.framework.backup.service; + +import com.flyfish.framework.backup.config.VersionProperties; +import com.flyfish.framework.backup.domain.Version; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +/** + * 版本服务 + * + * @author wangyu + */ +@Service +public class VersionService { + + private final VersionProperties versionProperties; + + private final WebClient webClient; + + public VersionService(VersionProperties versionProperties) { + this.versionProperties = versionProperties; + this.webClient = WebClient.create(versionProperties.getServer()); + } + + /** + * 拉取最新版本 + * + * @return 结果 + */ + public Mono fetch() { + return webClient.get().uri(versionProperties.getVersionUri()) + .exchangeToMono(clientResponse -> clientResponse.bodyToMono(Version.class)); + } + + /** + * 检查新版 + * + * @return 结果 + */ + public Mono checkUpdate() { + return fetch().map(version -> !version.getVersion().equals(versionProperties.getVersion())); + } +}