资讯详情

APP版本控制问题

package com.lvtu.service.api.rop.intercept; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.ServletActionContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import com.lvmama.allin.common.services.updateversion.UpgradeVersionInfoService; import com.lvmama.allin.po.updatedversion.AppVersionBean; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; /** * 强制升级拦截 * iPhone&Android≤V5.3.1 * iPad≤V2.3.0 * WP≤V1.2 * */ public class ForceUpgradeInterceptor extends AbstractInterceptor { private static final Log logger = LogFactory.getLog(ForceUpgradeInterceptor.class); private static final long serialVersionUID = 5281673513519486408L; private static Map<String, Object> upgradeVersionInfoServiceCache = new HashMap<String, Object>(); @Autowired private UpgradeVersionInfoService upgradeVersionInfoService; @Override public String intercept(ActionInvocation invocation) throws Exception { AppVersionBean appVersionBean = getUpgradeInfo(); if(appVersionBean != null) { Map<String,Object> resultMap = new HashMap<String,Object>(); resultMap.put("code","-1"); resultMap.put("errorMessage", appVersionBean.getContent_text()); resultMap.put("message", appVersionBean.getContent_text()); this.sendAjaxResultByJson(resultMap); return null; } return invocation.invoke(); } private AppVersionBean getUpgradeInfo() { String uri = this.getRequest().getRequestURI(); if(StringUtils.isBlank(uri) || !uri.contains("router")){ return null; } String lvversion = this.getRequest().getParameter("lvversion"); String firstChannel = this.getRequest().getParameter("firstChannel"); if(StringUtils.isBlank(lvversion) || StringUtils.isBlank(firstChannel)){ return null; &nsp;    }         @SuppressWarnings("unchecked")         List<AppVersionBean> appVersionBeanList = (List<AppVersionBean>) upgradeVersionInfoServiceCache.get("data");         try {             if(appVersionBeanList == null) {                 appVersionBeanList = upgradeVersionInfoService.selectUpgradeListByParams();                 upgradeVersionInfoServiceCache.put("data", appVersionBeanList);                 upgradeVersionInfoServiceCache.put("date", new Date().getTime());                 logger.debug("强制升级,初始化强制升级信息!");             }             long time = (Long) upgradeVersionInfoServiceCache.get("date");             if(new Date().getTime() > 1000*60 + time) {                 appVersionBeanList = upgradeVersionInfoService.selectUpgradeListByParams();                 upgradeVersionInfoServiceCache.put("data", appVersionBeanList);                 upgradeVersionInfoServiceCache.put("date", new Date().getTime());                 logger.debug("强制升级,缓存到期,刷新缓存!");             }         } catch (Exception e) {             logger.error(e.getMessage(), e);             return null;         }         if(CollectionUtils.isEmpty(appVersionBeanList)) {             logger.debug("强制升级,从CMS获取数据为空,不进行强制升级校验");             return null;         }         int version = Integer.valueOf(lvversion.replace(".", "").trim());         for (AppVersionBean appVersionBean : appVersionBeanList) {             if(logger.isDebugEnabled()) {                 logger.debug("强制升级,UpgradeStatus: " + appVersionBean.getUpgrade_status() + " FirstChannel: " + appVersionBean.getFirst_channel() + " LvVersion: " + appVersionBean.getLv_version());             }             // 需要升级的版本             int upgradeVersion = Integer.valueOf(appVersionBean.getLv_version().replace(".", "").trim());             if("Y".equals(appVersionBean.getUpgrade_status())) {                 if(firstChannel.equalsIgnoreCase(appVersionBean.getFirst_channel()) && upgradeVersion >= version) {                     return appVersionBean;                 }             }         }         return null;     }          /**      * 发送Ajax请求结果json      *      * @throws ServletException      * @throws IOException      */     public void sendAjaxResultByJson(Map<String,Object> resultMap) {         this.getResponse().setContentType("application/json;charset=UTF-8");         this.getResponse().setCharacterEncoding("UTF-8");         try {             PrintWriter out = this.getResponse().getWriter();             JSONObject jsonObj = JSONObject.fromObject(resultMap);             out.write(jsonObj.toString());             out.flush();             out.close();         } catch (Exception e) {             e.printStackTrace();         }     }          /**      * 获取HttpRequest      *      * @return      */     private HttpServletRequest getRequest() {         return ServletActionContext.getRequest();     }          private HttpServletResponse getResponse() {         return ServletActionContext.getResponse();     } }

package com.lvtu.csa.framework.utils.version; import org.springframework.util.Assert; /**  * 版本判断辅助类  */ public class VersionHelper {     public static boolean gt(EnumVersion left, EnumVersion right) {         Assert.notNull(left, "版本号判断左边参数为空");         Assert.notNull(right, "版本号判断右边参数为空");         return left.getCode() > right.getCode();     }     public static boolean lt(EnumVersion left, EnumVersion right) {         Assert.notNull(left, "版本号判断左边参数为空");         Assert.notNull(right, "版本号判断右边参数为空");         return left.getCode() < right.getCode();     }     public static boolean gte(EnumVersion left, EnumVersion right) {         Assert.notNull(left, "版本号判断左边参数为空");         Assert.notNull(right, "版本号判断右边参数为空");         return left.getCode() >= right.getCode();     }     public static boolean lte(EnumVersion left, EnumVersion right) {         Assert.notNull(left, "版本号判断左边参数为空");         Assert.notNull(right, "版本号判断右边参数为空");         return left.getCode() <= right.getCode();     }     public static boolean eq(EnumVersion left, EnumVersion right) {         Assert.notNull(left, "版本号判断左边参数为空");         Assert.notNull(right, "版本号判断右边参数为空");         return left.getCode() == right.getCode();     }     public static void main(String[] args) {         System.out.println(VersionHelper.gte(EnumVersion.V132, EnumVersion.UNKNOWN));         System.out.println(VersionHelper.lt(EnumVersion.V793, EnumVersion.INFINITY));         System.out.println(VersionHelper.lte(EnumVersion.V780, EnumVersion.V782));         System.out.println(VersionHelper.lte(EnumVersion.V784, EnumVersion.V784));         System.out.println(VersionHelper.gte(EnumVersion.V790, EnumVersion.V790));         System.out.println(VersionHelper.gt(EnumVersion.V792, EnumVersion.V790));     } }

package com.lvtu.csa.framework.utils.version; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; /**  * APP版本  */ public enum EnumVersion {     UNKNOWN(0),     V100(10000), V110(10100), V120(10200), V130(10300), V131(10301), V132(10302),     V200(20000), V210(20100),     V300(30000),     V400(40000),     V500(50000), V510(50100), V520(50200), V521(50201), V530(50300), V531(50301),     V600(60000), V610(60100), V611(60101), V620(60200), V630(60300), V631(60301), V632(60302),     V700(70000), V701(70001), V710(70100), V715(70105), V720(70200), V730(70300), V731(70301), V732(70302), V740(70400), V741(70401), V742(70402),     V750(70500), V760(70600), V761(70601), V762(70602), V763(70603),     V770(70700), V771(70701), V772(70702), V773(70703),     V780(70800), V781(70801), V782(70802), V783(70803), V784(70804), V785(70805),     V790(70900), V791(70901), V792(70902), V793(70903), V794(70904), V795(70905),     INFINITY(Integer.MAX_VALUE);     private final int code;     EnumVersion(int code) {         this.code = code;     }     public int getCode() {         return code;     }     public static EnumVersion create(String lvversion) {         if (StringUtils.isBlank(lvversion)) {             return EnumVersion.UNKNOWN;         }         String[] split = lvversion.split("\\.");         int code = 0;         int level = 2;         for (String term : split) {             if (!NumberUtils.isDigits(term)) {                 return EnumVersion.UNKNOWN;             }             if (level < 0) break;             code += Integer.parseInt(term) * Math.pow(100, level);             level--;         }         EnumVersion version = getByCode(code);         if (version == null) {             return EnumVersion.UNKNOWN;         }         return version;     }     private static EnumVersion getByCode(int code) {         for (EnumVersion version : EnumVersion.values()) {             if (code == version.getCode()) {                 return version;             }         }         return null;     }     public static void main(String[] args) {         System.out.println(EnumVersion.create("7.8.4").toString());     } }

标签: 1100v720uf电容器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台