package com.YuyeTech.TPlat.controller;

import com.YuyeTech.TPlat.VO.ResultVO;
import com.YuyeTech.TPlat.dataobject.VersionInfo;
import com.YuyeTech.TPlat.enums.ResultEnum;
import com.YuyeTech.TPlat.service.VersionInfoService;
import com.YuyeTech.TPlat.utils.ResultVOUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

import static com.YuyeTech.TPlat.enums.ResultEnum.NO_UPDATE;

/**
 * app 部分控制
 * 版本升级控制
 */
@RestController
@RequestMapping("/app")
public class AppController {

    @Autowired
    private VersionInfoService versionInfoService;
    /**
     * 请求数据：
     * {
     *     "appid": plus.runtime.appid,
     *     "version": plus.runtime.version
     * }
     * 响应数据:
     * {
     *     "status":1,//升级标志，1：需要升级；0：无需升级
     *     "note": "修复bug1；\n修复bug2;",//release notes
     *     "url": "http://www.example.com/uniapp.apk" //更新包下载地址
     * }
     * @param appid
     * @param version
     * @return
     */
    @GetMapping("/version_update")
    public ResultVO VersionUpdate(
            @RequestParam(value = "appid") String appid,
            @RequestParam(value = "version") String version,
            @RequestParam(value = "versionCode") String versionCode,
            @RequestParam(value = "platform") String platform){

        //获取最新的版本信息 version status = 1;
        VersionInfo versionInfo = versionInfoService.findByVersionStatus(1);

        if(StringUtils.isEmpty(versionInfo)){
            return  ResultVOUtil.error(NO_UPDATE.getCode(),NO_UPDATE.getMessage());
        }
        //校验appid
        if(!versionInfo.getVersionAppid().equals(appid)){
            return  ResultVOUtil.error(ResultEnum.NO_VERSION_APPID.getCode(),ResultEnum.NO_VERSION_APPID.getMessage());
        }
        Map _back = new HashMap();
        //版本code大于app ，以及版本 不相等，可更新
        if(Integer.parseInt(versionInfo.getVersionCode())>Integer.parseInt(versionCode)
        && !versionInfo.getVersionNumber().equals(version)){
            _back.put("status",1);
            _back.put("note",versionInfo.getVersionNote());
            //如果是两个平台的，放入不同的连接到url
            if(platform.equals("android")){
                _back.put("url",versionInfo.getApk());
            }else{
                _back.put("url",versionInfo.getIos());
            }
            _back.put("platform",platform);

            return  ResultVOUtil.success(_back);
        }else{
            //不需要更新
            _back.put("status",0);
            _back.put("platform",platform);
            return  ResultVOUtil.success(_back);
        }
    }

}
