Bladeren bron

应用版本跨多个版本时若其中任何一个版本有强制更新,返回字段标记为强制更新

zouxuan 1 jaar geleden
bovenliggende
commit
d53469330a

+ 14 - 4
mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java

@@ -10,6 +10,8 @@ import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -38,16 +40,24 @@ public class AppVersionInfoController extends BaseController {
 	@ApiOperation("根据app客户端查询对象")
 	@ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType = "path")
 	@GetMapping(value = "/queryByPlatform")
-	public Object queryByPlatform(String platform) {
+	public Object queryByPlatform(String platform,String localVersion) {
 		List<AppVersionInfo> list = appVersionInfoService.queryNewestByPlatform(platform);
-		if (list.size() > 0) {
+		if (CollectionUtils.isNotEmpty(list)) {
 			AppVersionInfo appVersionInfo = list.get(0);
-			if(appVersionInfo.getVersion().equals("2.0.9") && appVersionInfo.getPlatform().equals("android-education")){
+			if("2.0.9".equals(appVersionInfo.getVersion()) && "android-education".equals(appVersionInfo.getPlatform())){
 				AppVersionInfoBak appVersionInfoBak = JSONObject.parseObject(JSONObject.toJSONString(appVersionInfo),AppVersionInfoBak.class);
 				appVersionInfoBak.setDownloadUrl(new String(appVersionInfo.getDownloadUrl()));
 				return succeed(appVersionInfoBak);
 			}
-			return succeed(list.get(0));
+			//如果应用版本跨多个版本时若其中任何一个版本有强制更新,返回字段标记为强制更新
+			if(!appVersionInfo.getIsForceUpdate() && StringUtils.isNotEmpty(localVersion)){
+				//是否需要强制更新
+				AppVersionInfo forceUpdate = appVersionInfoService.checkForceUpdate(platform,localVersion);
+				if(forceUpdate != null){
+					appVersionInfo.setIsForceUpdate(true);
+				}
+			}
+			return succeed(appVersionInfo);
 		}
 		return failed();
 	}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/AppVersionInfoDao.java

@@ -18,4 +18,5 @@ public interface AppVersionInfoDao extends BaseDAO<Integer, AppVersionInfo> {
 
 	List<AppVersionInfo> queryLatestByPlatform(@Param("platform") String platform, @Param("status") String status);
 
+    AppVersionInfo checkForceUpdate(@Param("platform") String platform, @Param("localVersion") String localVersion);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/AppVersionInfoService.java

@@ -18,4 +18,6 @@ public interface AppVersionInfoService extends BaseService<Integer, AppVersionIn
     List<AppVersionInfo> queryLatestByPlatform(String platform, String appStatus);
 
 	PageInfo<AppVersionInfo> queryPage(AppVersionInfoWrapper.AppVersionInfoQuery queryInfo);
+
+    AppVersionInfo checkForceUpdate(String platform, String localVersion);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppVersionInfoServiceImpl.java

@@ -85,4 +85,9 @@ public class AppVersionInfoServiceImpl extends BaseServiceImpl<Integer, AppVersi
 		return pageInfo;
 	}
 
+	@Override
+	public AppVersionInfo checkForceUpdate(String platform, String localVersion) {
+		return appVersionInfoDao.checkForceUpdate(platform, localVersion);
+	}
+
 }

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml

@@ -141,4 +141,7 @@
 		order by version_ desc, status_='newest' desc, id_ desc
 		limit 1
 	</select>
+	<select id="checkForceUpdate" resultMap="AppVersionInfo">
+		select * from app_version_info where version_ > #{localVersion} and platform_ = #{platform} AND is_force_update_ = 1 limit 1
+	</select>
 </mapper>