APP版本自動更新一直是我們研發人員必須要面對的一個問題,對於java后台管理如何實現一個高規格、持久可用、完善版本迭代的本本自動更新模塊呢?
我們帶着這個問題走進《APP版本自動更新從入門到精通》
實體類
/** * Title: VersionController.java * Description: * Copyright: Copyright (c) 2018-2019 * Company: 四川金口碑網絡科技有限公司 * @author zhaoxuehong * @date 2018年12月14日上午9:35:55 * @version 2.0.0 */ package com.tgb.web; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.tgb.entity.Version; import com.tgb.manager.VersionManager; import com.tgb.util.DateTime; import com.tgb.util.Json; /** * Title: VersionController * Description: APP版本管理模塊(WEB-PC) * @author zhaoxuehong * @date 2018年12月14日上午9:35:55 */ @Controller @RequestMapping(value="web") public class VersionController { @Resource(name="versionManager") private VersionManager versionManager; /** * 添加一個APP版本 * @param version * @return */ @RequestMapping(value="addVersion",method={RequestMethod.POST,RequestMethod.GET}) @ResponseBody public Map<String, Object> addVersion(Version version,HttpServletResponse response) { if (version.getAppName()!=null&&version.getServerVersion()!=null&&version.getUpdateUrl()!=null&&version.getUpgradeInfo()!=null) { String creatTime=new DateTime().getDataTime(); version.setCreatTime(creatTime); version.setLastTime(creatTime); versionManager.addVersion(version); return new Json().getJsonWeb("200", "您已經成功添加一個版本!!!", 0, ""); } return new Json().getJsonWeb("201", "添加失敗", 0, ""); } @RequestMapping(value="getVersionAll",method={RequestMethod.POST,RequestMethod.GET}) @ResponseBody public Map<String, Object> getVersionAll(HttpServletResponse response) { int startIndex=0; int pageSize=10; List<Version> data=versionManager.getVersionAll(startIndex, pageSize); return new Json().getJsonWeb("201", "添加失敗", data.size(), data); } }
數據持久層
/** * Title: VersionDaoImol.java * Description: * Copyright: Copyright (c) 2018-2019 * Company: 四川金口碑網絡科技有限公司 * @author zhaoxuehong * @date 2018年12月13日下午7:06:18 * @version 2.0.0 */ package com.tgb.dao; import java.util.List; import org.hibernate.Query; import org.hibernate.SessionFactory; import com.tgb.entity.Version; /** * Title: VersionDaoImol * Description: * @author zhaoxuehong * @date 2018年12月13日下午7:06:18 */ public class VersionDaoImpl implements VersionDao { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * Description: * @param startIndex * @param pageSize * @return */ @Override public List<Version> getVersionAll(String platform,int startIndex, int pageSize) { // TODO Auto-generated method stub String hql="from Version v where v.platform=:platform order by v.creatTime desc"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setString("platform", platform); return query.list(); } /** * Description: * @param version * @return */ @Override public boolean updateVersion(Version version) { // TODO Auto-generated method stub String hql = "update Version v set v.appName=?,v.serverVersion=?,v.creatTime=?,v.lastTime=?,v.serverFlag=?," +"v.lastForce=?,v.updateUrl=?,v.upgradeInfo=? where v.vid=?"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setString(0, version.getAppName()); query.setString(1, version.getServerVersion()); query.setString(2, version.getCreatTime()); query.setString(3, version.getLastTime()); query.setString(4, version.getServerFlag()); query.setString(5, version.getLastForce()); query.setString(6, version.getUpdateUrl()); query.setString(7, version.getUpgradeInfo()); query.setString(8, version.getVid()); return (query.executeUpdate() > 0); } /** * Description: * @param vid * @return */ @Override public boolean deleteVersion(String vid) { // TODO Auto-generated method stub String hql = "delete Version u where u.vid = ?"; Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setString(0, vid); return (query.executeUpdate() > 0); } /** * Description: * @param version */ @Override public void addVersion(Version version) { // TODO Auto-generated method stub sessionFactory.getCurrentSession().save(version); } /** * Description: * @param startIndex * @param pageSize * @return */ @Override public List<Version> getVersionAll(int startIndex, int pageSize) { // TODO Auto-generated method stub String hql="from Version v order by v.creatTime desc"; Query query = sessionFactory.getCurrentSession().createQuery(hql); return query.list(); } }
接口代理
/** * Title: VersionManagerImpl.java * Description: * Copyright: Copyright (c) 2018-2019 * Company: 四川金口碑網絡科技有限公司 * @author zhaoxuehong * @date 2018年12月14日上午9:32:22 * @version 2.0.0 */ package com.tgb.manager; import java.util.List; import com.tgb.dao.VersionDao; import com.tgb.entity.Version; /** * Title: VersionManagerImpl * Description: * @author zhaoxuehong * @date 2018年12月14日上午9:32:22 */ public class VersionManagerImpl implements VersionManager{ private VersionDao versionDao; public VersionDao getVersionDao() { return versionDao; } public void setVersionDao(VersionDao versionDao) { this.versionDao = versionDao; } /** * Description: * @param startIndex * @param pageSize * @return */ @Override public List<Version> getVersionAll(String platform,int startIndex, int pageSize) { // TODO Auto-generated method stub return versionDao.getVersionAll(platform, startIndex, pageSize); } /** * Description: * @param version * @return */ @Override public boolean updateVersion(Version version) { // TODO Auto-generated method stub return versionDao.updateVersion(version); } /** * Description: * @param vid * @return */ @Override public boolean deleteVersion(String vid) { // TODO Auto-generated method stub return versionDao.deleteVersion(vid); } /** * Description: * @param version */ @Override public void addVersion(Version version) { // TODO Auto-generated method stub versionDao.addVersion(version); } /** * Description: * @param startIndex * @param pageSize * @return */ @Override public List<Version> getVersionAll(int startIndex, int pageSize) { // TODO Auto-generated method stub return versionDao.getVersionAll( startIndex, pageSize); } }
接口層
/** * Title: VersionController.java * Description: * Copyright: Copyright (c) 2018-2019 * Company: 四川金口碑網絡科技有限公司 * @author zhaoxuehong * @date 2018年12月14日上午9:35:55 * @version 2.0.0 */ package com.tgb.api; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.tgb.entity.Version; import com.tgb.manager.VersionManager; import com.tgb.util.DateTime; import com.tgb.util.Json; /** * Title: VersionController * Description: APP版本信息模塊((IOS、Android)) * @author zhaoxuehong * @date 2018年12月14日上午9:35:55 */ @Controller @RequestMapping(value="api") public class VersionAppController { @Resource(name="versionManager") private VersionManager versionManager; /** * 獲取版本列表 * @param response * @return */ @RequestMapping(value="getVersionAll",method={RequestMethod.POST,RequestMethod.GET}) @ResponseBody public Map<String, Object> getVersionAll(HttpServletResponse response,HttpServletRequest request) { String platform=request.getParameter("platform"); int startIndex=0; int pageSize=10; List<Version> data=versionManager.getVersionAll(platform, startIndex, pageSize); return new Json().getJson("200", "成功獲取版本列表",data.get(0)); } }