Newer
Older
gas-app / src / main / java / com / casic / util / OAuthUtil.java
casic_zt on 6 Sep 2023 4 KB first commit
package com.casic.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jczbo.rjxqykt.common.http.ReponseResult;
import com.jczbo.rjxqykt.module.services.impl.YktAppServiceImpl;
import lombok.Data;
import org.springframework.stereotype.Component;

import java.util.Map;


@Component
public class OAuthUtil {

    public static String Appkey = "hfjikjij";
    private static String AppSecret = "a49489773b1ae7fe6b2302faf2ab3737";
    private static String code = "";
    private static String AccessToken = "";
    private static YktAppServiceImpl yktAppServiceImpl = new YktAppServiceImpl();


    //生成Code
    public static String getAccessToken() {
        String CodeResult = yktAppServiceImpl.appCode(Appkey, AppSecret);
        ReponseResult reponseResultCode = JSONObject.parseObject(CodeResult, ReponseResult.class);
        if (reponseResultCode.isSuccess()) {
            //从Data中解析code
            Map<String, String> map = null;
            try {
//              map = (HashMap<String,String>)reponseResultCode.getData();
                Object obj = reponseResultCode.getData();
                if (obj instanceof JSONObject) {
                    map = JSONObject.toJavaObject((JSONObject) obj, Map.class);
                    code = map.get("code");
                }
                System.out.println("code:" + code);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            //获取code失败
            System.out.println("获取code失败");
        }

        //生成AccessToken
//        String AccessTokenResult= null;
        String AccessTokenResult = null;
        try {
            AccessTokenResult = yktAppServiceImpl.appAccessToken(Appkey, AppSecret, code);
        } catch (Exception e) {
            e.printStackTrace();
        }
        ReponseResult reponseResultAccessToken = JSONObject.parseObject(AccessTokenResult, ReponseResult.class);
        if (reponseResultAccessToken.isSuccess()) {
            //从Data中解析AccessTokenResult
            Map<String, String> map = null;
            try {
                Object obj = reponseResultAccessToken.getData();
                map = JSONObject.toJavaObject((JSONObject) obj, Map.class);
                if (obj instanceof JSONObject) {
                    map = JSONObject.toJavaObject((JSONObject) obj, Map.class);
                    AccessToken = map.get("AccessToken");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            //获取AccessToken失败
            System.out.println("获取AccessToken失败");
        }
        return AccessToken;
    }

    public static boolean checkAccessToken(String accessTokenSession) {
        //校验AccessToken
        String AccessToken = accessTokenSession;
        String VerigyTokenResult = yktAppServiceImpl.VerifyAccessToken(Appkey, AccessToken);
        ReponseResult reponseResultVerifyToken = JSONObject.parseObject(VerigyTokenResult, ReponseResult.class);
        if (reponseResultVerifyToken.isSuccess()) {
            reponseResultVerifyToken.getMessage();
            //从Data中解析AccessTokenResult是否有效
            return true;
        } else {
            //验证AccessToken失败
            return false;
        }
    }

    public String getPhone(String accesstoken, String code) throws Exception {
        String param = "";
        //封装参数
        param = "https://yikatong.erongjiang.com/sto/yktApp/getUserPhoneNum/v2?" + "AppKey=" + OAuthUtil.Appkey + "&AccessToken=" + accesstoken + "&code=" + code;
        //向一卡通接口发送请求获取手机号
        System.out.println(param);
        String getUserPhoneNum = HttpUtils.doPost(param, "");
        if (getUserPhoneNum.isEmpty()) {
            return null;
        }

        JSONObject jsonObject = JSON.parseObject(getUserPhoneNum);

        System.out.println(jsonObject);
        System.out.println(jsonObject.get("success"));
        System.out.println();
        Boolean result = (Boolean) jsonObject.get("success");
        if (result) {
            System.out.println(jsonObject.get("data"));
            JSONObject json = (JSONObject) jsonObject.get("data");
            System.out.println((String) json.get("userPhoneNum"));
            return (String) json.get("userPhoneNum");
        } else {
            System.out.println("获取手机号失败");
            return null;
        }
    }

}