6c
2025-05-07 eb8a211f814360b6aa2da9cefd924d355bbb5972
Merge branch 'dev' of http://nonxin.cn:8090/r/product/product-server-mobile-core/V2.0.0 into dev

# Conflicts:
# src/main/java/com/product/mobile/core/config/MobileCoreCode.java
已添加2个文件
已修改2个文件
196 ■■■■■ 文件已修改
src/main/java/com/product/mobile/app/controller/AppAdminController.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/app/service/AppAdminService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/config/MobileCoreCode.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/core/config/MobileCoreConst.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/mobile/app/controller/AppAdminController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
package com.product.mobile.app.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.product.admin.service.PublicService;
import com.product.common.lang.StringUtils;
import com.product.core.config.CoreConst;
import com.product.core.controller.support.AbstractBaseController;
import com.product.core.entity.FieldSetEntity;
import com.product.core.entity.RequestParameterEntity;
import com.product.core.exception.BaseException;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.mobile.app.service.AppAdminService;
import com.product.mobile.core.config.MobileCoreCode;
import com.product.mobile.core.config.MobileCoreConst;
import com.product.module.sys.version.ApiVersion;
/**
 *  æ‰‹æœºç«¯é€šç”¨æŸ¥è¯¢
 *
 * @author shicf
 */
@RequestMapping("/api/mobile/app")
@RestController
public class AppAdminController extends AbstractBaseController {
    @Autowired
    AppAdminService appAdminService;
    /**
     * æ­¤æŽ¥å£éœ€è¦åŠ å…¥ç™½åå•
     *
     * @param request
     * @return
     */
    @RequestMapping(value = "/version-check/{version}", method = RequestMethod.GET)
    @ApiVersion(2)
    public String versionCheck2(HttpServletRequest request) {
        FieldSetEntity fse = null;
        Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
        if (bean != null) {
            RequestParameterEntity reqp = (RequestParameterEntity) bean;
            fse = reqp.getFormData();
        }
        if (bean == null || fse == null) {
            SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(),
                    MobileCoreCode.SYSTEM_FORM_NODATA.getText());
            return this.error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(),
                    MobileCoreCode.SYSTEM_FORM_NODATA.getText());
        }
        String version=fse.getString(MobileCoreConst.APP_VERSION);
        if(StringUtils.isEmpty(version)) {
            return this.error(MobileCoreCode.APP_ADMIN_VERSION_CHECK_NOT_CODE);
        }
        try {
            FieldSetEntity f=appAdminService.checkVersion(version);
            if(fse.getObject("type")!=null) {
                JSONObject result = new JSONObject();
                result.put("Code", 0);//0代表请求成功,非0代表失败
                result.put("UpdateStatus", f.getInteger("upgrade")); //0代表不更新,1代表有版本更新,不需要强制升级,2代表有版本更新,需要强制升级
                result.put("VersionCode", f.getInteger("version_code"));
                result.put("VersionName", f.getString("min_version"));
                result.put("ModifyContent", f.getString("app_detail"));
                result.put("DownloadUrl", fse.getString("url")+"?uuid="+f.getString("min_version_file")+"&needOnlineView=0");///由前端上传地址
                result.put("ApkSize", 66389);
//                result.put("ApkMd5", "0"); //md5值没有的话,就无法保证apk是否完整,每次都会重新下载。框架默认使用的是md5加密。
                System.out.println(result.toJSONString());
                return result.toJSONString();
            }else {
                return this.OK_List(f);
            }
        } catch (BaseException e) {
            return this.error(e);
        } catch (Exception e) {
            return this.error(MobileCoreCode.GET_DATA_FAIL);
        }
    }
    /**
     * æ­¤æŽ¥å£éœ€è¦åŠ å…¥ç™½åå•
     *
     * @param request
     * @return
     */
    @RequestMapping(value = "/version-check/{version}", method = RequestMethod.POST)
    @ApiVersion(1)
    public String versionCheck(HttpServletRequest request) {
        FieldSetEntity fse = null;
        Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
        if (bean != null) {
            RequestParameterEntity reqp = (RequestParameterEntity) bean;
            fse = reqp.getFormData();
        }
        if (bean == null || fse == null) {
            SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(),
                    MobileCoreCode.SYSTEM_FORM_NODATA.getText());
            return this.error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(),
                    MobileCoreCode.SYSTEM_FORM_NODATA.getText());
        }
        String version=fse.getString(MobileCoreConst.APP_VERSION);
        if(StringUtils.isEmpty(version)) {
            return this.error(MobileCoreCode.APP_ADMIN_VERSION_CHECK_NOT_CODE);
        }
        try {
            FieldSetEntity f=appAdminService.checkVersion(version);
            if(fse.getObject("type")!=null) {
                JSONObject result = new JSONObject();
                result.put("Code", "0");//0代表请求成功,非0代表失败
                result.put("UpdateStatus", f.getInteger("upgrade")); //0代表不更新,1代表有版本更新,不需要强制升级,2代表有版本更新,需要强制升级
                result.put("VersionCode", "1");
                result.put("VersionName", f.getString("min_version"));
                result.put("ModifyContent", f.getString("app_detail"));
                result.put("DownloadUrl", fse.getString("url")+"&uuid="+f.getString("min_version_file")+"&needOnlineView=0");///由前端上传地址
                result.put("ApkSize", "0");
                result.put("ApkMd5", "0"); //md5值没有的话,就无法保证apk是否完整,每次都会重新下载。框架默认使用的是md5加密。
                return result.toJSONString();
            }else {
                return this.OK_List(f);
            }
        } catch (BaseException e) {
            return this.error(e);
        } catch (Exception e) {
            return this.error(MobileCoreCode.GET_DATA_FAIL);
        }
    }
}
src/main/java/com/product/mobile/app/service/AppAdminService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.product.mobile.app.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
import com.product.core.exception.BaseException;
import com.product.core.service.support.AbstractBaseService;
import com.product.mobile.core.config.MobileCoreConst;
import com.product.util.BaseUtil;
/**
 * æ‰‹æœºç«¯ï¼ŒèŽ·å–ç”¨æˆ·æ‰€æœ‰åº”ç”¨
 * @author Administrator
 *
 */
@Component
public class AppAdminService extends AbstractBaseService{
    @Autowired
    public BaseDao baseDao;
    /**
     *     æ˜¯å¦æœ‰æ–°çš„版本号,返回两个版本号:最近一次版本,最新版本
     *  è®©ç”¨æˆ·é€‰æ‹©
     *  ç‰ˆæœ¬:大中小,三个版本号,只能在相同大版号内容更新
     *  å¤§ç‰ˆæœ¬å·éšåŽç«¯çš„大版本号同时升级,即后端有大版本升级,同时移动端也要大版本升级,中版本、小版号可以不一致
     * @return
     * @throws BaseException
     */
    public FieldSetEntity checkVersion(String version) throws BaseException{
        String filter="version>?";
        DataTableEntity dt =baseDao.listTable(MobileCoreConst.TABLE_APP_MANAGER, filter, new String[] {version},"version");
        FieldSetEntity fs=new FieldSetEntity();
        fs.setTableName(MobileCoreConst.TABLE_APP_MANAGER);
        if(DataTableEntity.isEmpty(dt)) {
            fs.setValue("upgrade",0);
        }else {
            fs.setValue("min_version", dt.getString(0,"version"));
            fs.setValue("min_version_file", dt.getString(0,"file"));
            fs.setValue("version_code", dt.getString(0,"version_code"));
            fs.setValue("app_detail", dt.getString(0,"app_detail"));
//            if(dt.getRows()>1) {
//                fs.setValue("max_version", dt.getString(dt.getRows()-1,"version"));
//                fs.setValue("max_version_file", dt.getString(dt.getRows()-1,"file"));
//            }else {
//                fs.setValue("max_version", dt.getString(0,"version"));
//                fs.setValue("max_version_file", dt.getString(0,"file"));
//            }
            fs.setValue("upgrade",1);
        }
        return fs;
    }
}
src/main/java/com/product/mobile/core/config/MobileCoreCode.java
@@ -34,6 +34,7 @@
    SIGN_IN_FAIL("考勤打卡失败", "011"),
    GET_DATA_FAIL("获取数据失败", "012"),
    GET_MVC_PAGE_INFO_FAIL("获取页面信息失败", "013"),
    APP_ADMIN_VERSION_CHECK_NOT_CODE("未获取到APP版本号", "014"),
    ;
    MobileCoreCode(String text, String code) {
src/main/java/com/product/mobile/core/config/MobileCoreConst.java
@@ -30,6 +30,7 @@
    public static final String TABLE_PUNCH_RECORD = "product_oa_punch_record";
    public static final String TABLE_PUNCH_SITE = "product_oa_punch_site";
    public static final String TABLE_PUNCH_TIME = "product_oa_punch_time";
    public static final String TABLE_APP_MANAGER = "product_sys_app_version";
    //打卡:手机打卡
    public static final String FIELD_PUNCH_TYPE = "punch_type";
@@ -44,5 +45,6 @@
    public static final String NAV_BAR_NAME = "nav_bar_name";
    public static final String NAV_BAR_IMG = "nav_bar_img";
    public static final String PATH = "path";
    public static final String APP_VERSION = "version";
}