feat(electron): 实现系统托盘和关闭行为配置功能
- 添加系统托盘创建和销毁逻辑- 实现窗口关闭行为配置(退出/最小化/托盘) - 添加配置文件读写功能 - 实现下载取消和清理功能 - 添加待更新文件检查机制 - 优化文件下载进度和错误处理 - 添加自动更新配置选项- 实现平滑滚动动画效果 - 添加试用期过期类型检查 -优化VIP状态刷新逻辑
This commit is contained in:
@@ -15,20 +15,21 @@ import java.util.Map;
|
||||
|
||||
/**
|
||||
* 版本管理控制器
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/version")
|
||||
@Anonymous
|
||||
public class VersionController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
private static final String VERSION_REDIS_KEY = "erp:client:version";
|
||||
private static final String ASAR_URL_REDIS_KEY = "erp:client:asar_url";
|
||||
private static final String JAR_URL_REDIS_KEY = "erp:client:jar_url";
|
||||
|
||||
private static final String UPDATE_NOTES_REDIS_KEY = "erp:client:update_notes";
|
||||
|
||||
/**
|
||||
* 检查版本更新
|
||||
*/
|
||||
@@ -36,14 +37,15 @@ public class VersionController extends BaseController {
|
||||
public AjaxResult checkVersion(@RequestParam String currentVersion) {
|
||||
String latestVersion = redisTemplate.opsForValue().get(VERSION_REDIS_KEY);
|
||||
boolean needUpdate = compareVersions(currentVersion, latestVersion) < 0;
|
||||
|
||||
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("currentVersion", currentVersion);
|
||||
data.put("latestVersion", latestVersion);
|
||||
data.put("needUpdate", needUpdate);
|
||||
data.put("asarUrl", redisTemplate.opsForValue().get(ASAR_URL_REDIS_KEY));
|
||||
data.put("jarUrl", redisTemplate.opsForValue().get(JAR_URL_REDIS_KEY));
|
||||
|
||||
data.put("updateNotes", redisTemplate.opsForValue().get(UPDATE_NOTES_REDIS_KEY));
|
||||
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
/**
|
||||
@@ -56,16 +58,17 @@ public class VersionController extends BaseController {
|
||||
if (StringUtils.isEmpty(currentVersion)) {
|
||||
currentVersion = "2.0.0";
|
||||
}
|
||||
|
||||
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("currentVersion", currentVersion);
|
||||
data.put("asarUrl", redisTemplate.opsForValue().get(ASAR_URL_REDIS_KEY));
|
||||
data.put("jarUrl", redisTemplate.opsForValue().get(JAR_URL_REDIS_KEY));
|
||||
data.put("updateNotes", redisTemplate.opsForValue().get(UPDATE_NOTES_REDIS_KEY));
|
||||
data.put("updateTime", System.currentTimeMillis());
|
||||
|
||||
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置版本信息和下载链接
|
||||
*/
|
||||
@@ -73,8 +76,9 @@ public class VersionController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('system:version:update')")
|
||||
@PostMapping("/update")
|
||||
public AjaxResult updateVersionInfo(@RequestParam("version") String version,
|
||||
@RequestParam(value = "asarUrl", required = false) String asarUrl,
|
||||
@RequestParam(value = "jarUrl", required = false) String jarUrl) {
|
||||
@RequestParam(value = "asarUrl", required = false) String asarUrl,
|
||||
@RequestParam(value = "jarUrl", required = false) String jarUrl,
|
||||
@RequestParam("updateNotes") String updateNotes) {
|
||||
redisTemplate.opsForValue().set(VERSION_REDIS_KEY, version);
|
||||
if (StringUtils.isNotEmpty(asarUrl)) {
|
||||
redisTemplate.opsForValue().set(ASAR_URL_REDIS_KEY, asarUrl);
|
||||
@@ -82,15 +86,17 @@ public class VersionController extends BaseController {
|
||||
if (StringUtils.isNotEmpty(jarUrl)) {
|
||||
redisTemplate.opsForValue().set(JAR_URL_REDIS_KEY, jarUrl);
|
||||
}
|
||||
|
||||
redisTemplate.opsForValue().set(UPDATE_NOTES_REDIS_KEY, updateNotes);
|
||||
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("version", version);
|
||||
data.put("asarUrl", asarUrl);
|
||||
data.put("jarUrl", jarUrl);
|
||||
data.put("updateNotes", updateNotes);
|
||||
data.put("updateTime", System.currentTimeMillis());
|
||||
return AjaxResult.success(data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 比较版本号
|
||||
* @param version1 版本1
|
||||
@@ -103,18 +109,18 @@ public class VersionController extends BaseController {
|
||||
}
|
||||
String[] v1Parts = version1.split("\\.");
|
||||
String[] v2Parts = version2.split("\\.");
|
||||
|
||||
|
||||
int maxLength = Math.max(v1Parts.length, v2Parts.length);
|
||||
|
||||
|
||||
for (int i = 0; i < maxLength; i++) {
|
||||
int v1Part = i < v1Parts.length ? Integer.parseInt(v1Parts[i]) : 0;
|
||||
int v2Part = i < v2Parts.length ? Integer.parseInt(v2Parts[i]) : 0;
|
||||
|
||||
|
||||
if (v1Part != v2Part) {
|
||||
return Integer.compare(v1Part, v2Part);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user