Browse Source

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

zouxuan 11 months ago
parent
commit
5484f33ca3

+ 14 - 3
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/AppVersionInfoController.java

@@ -9,6 +9,8 @@ import com.yonge.toolset.base.page.PageInfo;
 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;
@@ -37,10 +39,19 @@ public class AppVersionInfoController extends BaseController {
 	@ApiOperation("根据app客户端查询对象")
 	@ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType = "path")
 	@GetMapping(value = "/queryByPlatform")
-	public HttpResponseResult<AppVersionInfo> queryByPlatform(String platform) {
+	public HttpResponseResult<AppVersionInfo> queryByPlatform(String platform,String localVersion) {
 		List<AppVersionInfo> list = appVersionInfoService.queryNewestByPlatform(platform);
-		if (list.size() > 0) {
-			return succeed(list.get(0));
+		if (CollectionUtils.isNotEmpty(list)) {
+			AppVersionInfo appVersionInfo = 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();
 	}

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java

@@ -26,4 +26,6 @@ public interface AppVersionInfoDao extends BaseDAO<Long, AppVersionInfo> {
 	AppVersionInfo selectAppVersionInfo(@Param("platform") String platform, @Param("version") String version);
 
 	List<AppVersionInfo> queryLatestByPlatform(@Param("platform") String platform, @Param("status") String status);
+
+    AppVersionInfo checkForceUpdate(@Param("platform") String platform, @Param("localVersion") String localVersion);
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java

@@ -33,4 +33,6 @@ public interface AppVersionInfoService extends BaseService<Long, AppVersionInfo>
 	YesOrNoEnum getAppAuditVersion(String platform, String version);
 
     List<AppVersionInfo> queryLatestByPlatform(String platform, String appStatus);
+
+    AppVersionInfo checkForceUpdate(String platform, String localVersion);
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AppVersionInfoServiceImpl.java

@@ -78,4 +78,9 @@ public class AppVersionInfoServiceImpl extends BaseServiceImpl<Long, AppVersionI
     public List<AppVersionInfo> queryLatestByPlatform(String platform, String appStatus) {
 		return appVersionInfoDao.queryLatestByPlatform(platform, appStatus);
 	}
+
+    @Override
+    public AppVersionInfo checkForceUpdate(String platform, String localVersion) {
+        return appVersionInfoDao.checkForceUpdate(platform, localVersion);
+    }
 }

+ 3 - 0
cooleshow-user/user-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>