许鹏程
6 天以前 585da4b632706e41e37dfaef833c41be371a8a91
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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);
        }
    }
}