APP版本自动更新-java

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));
    }
}

 

posted @ 2018-12-21 11:20  九眼桥夜店老夫子  阅读(1532)  评论(0编辑  收藏  举报