diff --git a/src/main/java/cn/hellohao/auth/filter/SubjectFilter.java b/src/main/java/cn/hellohao/auth/filter/SubjectFilter.java index be1504a..2480366 100644 --- a/src/main/java/cn/hellohao/auth/filter/SubjectFilter.java +++ b/src/main/java/cn/hellohao/auth/filter/SubjectFilter.java @@ -34,8 +34,8 @@ public class SubjectFilter extends BasicHttpAuthenticationFilter { String Users_Origin = httpServletRequest.getHeader("usersOrigin"); String token = httpServletRequest.getHeader("Authorization"); //验证前端域名 - if(httpServletRequest.getMethod().equals("POST") && !serviceName.contains("/api") - && !serviceName.contains("/verifyCode") && !serviceName.contains("/client")){ + if(httpServletRequest.getMethod().equals("POST") && !serviceName.contains("/api") && !serviceName.contains("/verifyCode") + && !serviceName.contains("/getClientVersion") && !serviceName.contains("/client")){ try{ if(Users_Origin.compareTo(SecureUtil.md5(WEBHOST))!=0){ System.out.println("前端域名校验未通过"); diff --git a/src/main/java/cn/hellohao/controller/AdminRootController.java b/src/main/java/cn/hellohao/controller/AdminRootController.java index 2f4608c..bc2a67f 100644 --- a/src/main/java/cn/hellohao/controller/AdminRootController.java +++ b/src/main/java/cn/hellohao/controller/AdminRootController.java @@ -313,9 +313,6 @@ public class AdminRootController { if (!appClient.getIsuse().equals("on")) { appClient.setIsuse("off"); } - if (!appClient.getAppupdate().equals("on")) { - appClient.setAppupdate("off"); - } appClientService.editAppClientData(appClient); msg.setInfo("配置保存成功"); } catch (Exception e) { diff --git a/src/main/java/cn/hellohao/controller/ClientAppController.java b/src/main/java/cn/hellohao/controller/ClientAppController.java index f5fe65d..8c177d7 100644 --- a/src/main/java/cn/hellohao/controller/ClientAppController.java +++ b/src/main/java/cn/hellohao/controller/ClientAppController.java @@ -1,7 +1,6 @@ package cn.hellohao.controller; import cn.hellohao.auth.token.JWTUtil; -import cn.hellohao.pojo.AppClient; import cn.hellohao.pojo.Msg; import cn.hellohao.pojo.UploadConfig; import cn.hellohao.pojo.User; @@ -79,26 +78,6 @@ public class ClientAppController { return msg; } - @PostMapping("/getVersion") - @ResponseBody - public Msg getVersion() { - Msg msg = new Msg(); - try { - AppClient app = appClientService.getAppClientData("app"); - if(app.getAppupdate().equals("on")){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("winpackurl",app.getWinpackurl()); - jsonObject.put("macpackurl",app.getMacpackurl()); - msg.setData(jsonObject); - }else{ - msg.setCode("000"); - } - }catch (Exception e){ - msg.setCode("000"); - } - return msg; - } - } diff --git a/src/main/java/cn/hellohao/controller/IndexController.java b/src/main/java/cn/hellohao/controller/IndexController.java index d03eb5c..87a4d16 100644 --- a/src/main/java/cn/hellohao/controller/IndexController.java +++ b/src/main/java/cn/hellohao/controller/IndexController.java @@ -6,6 +6,7 @@ import cn.hellohao.service.*; import cn.hellohao.service.impl.AlbumServiceImpl; import cn.hellohao.service.impl.UploadServicel; import cn.hellohao.service.impl.deleImages; +import cn.hellohao.utils.MyVersion; import cn.hellohao.utils.verifyCode.IVerifyCodeGen; import cn.hellohao.utils.verifyCode.SimpleCharVerifyCodeGenImpl; import cn.hutool.captcha.CaptchaUtil; @@ -13,6 +14,7 @@ import cn.hutool.captcha.ShearCaptcha; import cn.hutool.captcha.generator.MathGenerator; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; @@ -304,6 +306,32 @@ public class IndexController { return msg; } + @PostMapping("/getClientVersion") + @ResponseBody + public Msg getClientVersion(@RequestParam(value = "data", defaultValue = "") String data) { + Msg msg = new Msg(); + msg.setCode("000"); + try { + JSONObject jsonObj = JSONObject.parseObject(data); + String appv = jsonObj.getString("version"); + AppClient app = appClientService.getAppClientData("app"); + if(!StringUtils.isBlank(app.getAppupdate())){ + String version = app.getAppupdate().replaceAll("\\.",""); + if(MyVersion.compareVersion(app.getAppupdate(),appv)==1){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("winpackurl",app.getWinpackurl()); + jsonObject.put("macpackurl",app.getMacpackurl()); + msg.setCode("200"); + msg.setData(jsonObject); + } + } + }catch (Exception e){ + msg.setCode("000"); + } + return msg; + } + + @RequestMapping("/authError") @ResponseBody public Msg authError(HttpServletRequest request){ diff --git a/src/main/java/cn/hellohao/pojo/AppClient.java b/src/main/java/cn/hellohao/pojo/AppClient.java index 634e882..ab6663b 100644 --- a/src/main/java/cn/hellohao/pojo/AppClient.java +++ b/src/main/java/cn/hellohao/pojo/AppClient.java @@ -10,6 +10,7 @@ public class AppClient { private String applogo; private String appupdate; + public AppClient(){} public AppClient(String id, String isuse, String winpackurl, String macpackurl, String appname, String applogo, String appupdate) { diff --git a/src/main/java/cn/hellohao/utils/FirstRun.java b/src/main/java/cn/hellohao/utils/FirstRun.java index dcf402e..36c04c2 100644 --- a/src/main/java/cn/hellohao/utils/FirstRun.java +++ b/src/main/java/cn/hellohao/utils/FirstRun.java @@ -130,7 +130,7 @@ public class FirstRun implements InitializingBean { private String sql12 = "alter table tbed.user add `token` varchar(255)"; //创建客户端程序相关表 private String createAppclient = "CREATE TABLE `appclient` (`id` varchar(10) NOT NULL,`isuse` varchar(10) NOT NULL,`winpackurl` varchar(255) NULL DEFAULT NULL,`macpackurl` varchar(255) NULL DEFAULT NULL,`appname` varchar(20) NULL,`applogo` varchar(255) NULL,`appupdate` varchar(10) NOT NULL) "; - private String instartAppclient = "INSERT INTO `appclient` VALUES ('app', 'on', NULL, NULL, 'Hellohao图像托管', 'https://hellohao.nos-eastchina1.126.net/TbedClient/app.png', 'off');"; + private String instartAppclient = "INSERT INTO `appclient` VALUES ('app', 'on', NULL, NULL, 'Hellohao图像托管', 'https://hellohao.nos-eastchina1.126.net/TbedClient/app.png', '1.0.1');"; private String inddx_md5key = "ALTER TABLE imgdata ADD INDEX index_md5key_url ( md5key,imgurl)"; diff --git a/src/main/java/cn/hellohao/utils/MyVersion.java b/src/main/java/cn/hellohao/utils/MyVersion.java new file mode 100644 index 0000000..3793ca0 --- /dev/null +++ b/src/main/java/cn/hellohao/utils/MyVersion.java @@ -0,0 +1,50 @@ +package cn.hellohao.utils; + +/** + * @author Hellohao + * @version 1.0 + * @date 2022/7/18 9:49 + */ +public class MyVersion { + /** + * 版本号比较 + * + * @param v1 + * @param v2 + * @return 0代表相等,1代表左边大,-1代表右边大 + * Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1 + */ + public static int compareVersion(String v1, String v2) { + if (v1.equals(v2)) { + return 0; + } + String[] version1Array = v1.split("[._]"); + String[] version2Array = v2.split("[._]"); + int index = 0; + int minLen = Math.min(version1Array.length, version2Array.length); + long diff = 0; + + while (index < minLen + && (diff = Long.parseLong(version1Array[index]) + - Long.parseLong(version2Array[index])) == 0) { + index++; + } + if (diff == 0) { + for (int i = index; i < version1Array.length; i++) { + if (Long.parseLong(version1Array[i]) > 0) { + return 1; + } + } + + for (int i = index; i < version2Array.length; i++) { + if (Long.parseLong(version2Array[i]) > 0) { + return -1; + } + } + return 0; + } else { + return diff > 0 ? 1 : -1; + } + } + +}