diff --git a/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/AndroidVersionServiceImpl.java b/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/AndroidVersionServiceImpl.java index c10c6e3..18502cb 100644 --- a/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/AndroidVersionServiceImpl.java +++ b/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/AndroidVersionServiceImpl.java @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; /** * Created by hzlizx on 2018/6/21 0021 @@ -70,6 +71,8 @@ public ServiceResult findNewestVersion(String tenantAppId, String version, Strin } // 将查询结果再次进行筛选,选出大于传入version的安卓版本,然后再找出最新版本 List androidVersionsResult = new LinkedList<>(); + //是否强制更新 + AtomicBoolean forceUpdate = new AtomicBoolean(false); androidVersionsResult.addAll(androidVersions); if (VersionCompareUtils.compareVersion(version, androidVersions.get(androidVersions.size() - 1).getAppVersion()) > 0) { Collections.reverse(androidVersions); @@ -86,7 +89,11 @@ public ServiceResult findNewestVersion(String tenantAppId, String version, Strin } logger.debug("查询到的筛选过的版本:"); androidVersionsResult.forEach(androidVersion -> logger.debug(androidVersion.getAppVersion())); - + androidVersionsResult.forEach(androidVersion -> { + if (androidVersion.getUpdateType().equals(0)) { + forceUpdate.set(true); + } + }); //查找指定渠道 logger.debug("查询channelCode为{}的渠道...", channelCode); Channel channel = new Channel(); @@ -117,7 +124,7 @@ public ServiceResult findNewestVersion(String tenantAppId, String version, Strin for (AndroidVersion androidVersion : androidVersionsResult) { if (channelSelected != null) { if (channelSelected.getChannelStatus() == 1) { - HashMap apk = this.findApk(androidVersion, appSelected.getId(), channelSelected.getId()); + HashMap apk = this.findApk(androidVersion, appSelected.getId(), channelSelected.getId(), forceUpdate.get()); if (apk != null) { logger.debug("结果:{}", $.json.toJsonString(apk)); return ServiceResult.ok(apk); @@ -125,7 +132,7 @@ public ServiceResult findNewestVersion(String tenantAppId, String version, Strin } } if (officialChannel != null) { - HashMap apk = this.findApk(androidVersion, appSelected.getId(), officialChannel.getId()); + HashMap apk = this.findApk(androidVersion, appSelected.getId(), officialChannel.getId(), forceUpdate.get()); if (apk != null) { logger.debug("结果:{}", $.json.toJsonString(apk)); return ServiceResult.ok(apk); @@ -234,7 +241,7 @@ private ServiceResult loopSelectAndroidVersions(List list, int a return null; } - private HashMap findApk(AndroidVersion androidVersion, int appId, int channelId) { + private HashMap findApk(AndroidVersion androidVersion, int appId, int channelId, boolean forceUpdate) { int versionId = androidVersion.getId(); Apk apk = new Apk(); apk.setAppId(appId); @@ -250,7 +257,7 @@ private HashMap findApk(AndroidVersion androidVersion, int appId map.put("allowLowestVersion", androidVersion.getAllowLowestVersion()); map.put("downloadUrl", "/v/download/" + apkSelected.getId()); map.put("description", androidVersion.getVersionDescription()); - map.put("forceUpdate", androidVersion.getUpdateType()); + map.put("forceUpdate", forceUpdate ? 0 : androidVersion.getUpdateType()); map.put("version", androidVersion.getAppVersion()); return map; } diff --git a/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/IosVersionServiceImpl.java b/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/IosVersionServiceImpl.java index b281d8a..0678cf3 100644 --- a/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/IosVersionServiceImpl.java +++ b/modules/app-version-rest/src/main/java/com/tairanchina/csp/avm/service/impl/IosVersionServiceImpl.java @@ -19,6 +19,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; /** * Created by hzlizx on 2018/6/21 0021 @@ -54,6 +55,8 @@ public ServiceResult findNewestVersion(String tenantAppId, String version) { } // 将查询结果再次进行筛选,选出大于传入version的版本,然后再找出最新版本 List iosVersionsResult = new LinkedList<>(); + //是否强制更新 + AtomicBoolean forceUpdate = new AtomicBoolean(false); iosVersionsResult.addAll(iosVersions); iosVersions.forEach(iosVersion -> logger.debug(iosVersion.getAppVersion())); if (VersionCompareUtils.compareVersion(version, iosVersions.get(iosVersions.size() - 1).getAppVersion()) > 0) { @@ -71,7 +74,11 @@ public ServiceResult findNewestVersion(String tenantAppId, String version) { } logger.debug("查询到的版本:"); iosVersionsResult.forEach(iosVersion -> logger.debug(iosVersion.getAppVersion())); - + iosVersionsResult.forEach(iosVersion -> { + if(iosVersion.getUpdateType().equals(0)) { + forceUpdate.set(true); + } + }); IosVersion iosVersion = iosVersionsResult.get(0); logger.debug("当前最新版本为:{}", iosVersion.getAppVersion()); @@ -80,7 +87,7 @@ public ServiceResult findNewestVersion(String tenantAppId, String version) { map.put("allowLowestVersion", iosVersion.getAllowLowestVersion()); map.put("appStoreUrl", iosVersion.getAppStoreUrl()); map.put("description", iosVersion.getVersionDescription()); - map.put("forceUpdate", iosVersion.getUpdateType()); + map.put("forceUpdate", forceUpdate.get() ? 0 : iosVersion.getUpdateType()); map.put("version", iosVersion.getAppVersion()); ServiceResult ok = ServiceResult.ok(map); logger.debug("结果:{}", $.json.toJsonString(ok));