puzhibing
2023-05-18 c54be562403989ae722ce4e12b640d4a44b5dcb3
UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
@@ -1,214 +1,214 @@
package com.stylefeng.guns.modular.system.util;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import com.stylefeng.guns.core.qr.ImgQrTool;
import com.stylefeng.guns.core.qr.QrImage;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.MD5Util;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * 中国移动工具类
 */
@Component
public class ChinaMobileUtil {
    private static String APIKey = "LTAI4G1BpRaihVRZp1RS8Stn";
    private static String SecretKey = "PDR7uUEGNf0wIPPVCPCVdySgTwCr90";
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 绑定小号
     * @param phoneA
     * @param phoneB
     * @param areaCode
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{
        Map<String, String> map1 = new HashMap<>();
        map1.put("code", "-1");
        map1.put("msg", "");
        map1.put("telX", "");
        map1.put("bindId", "");
        return map1;
        //暂时屏蔽-后期放开
        /*DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("BindAxb");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        request.putQueryParameter("Expiration", DateUtil.format(new Date(new Date().getTime()+7 * 24 * 60 * 60*1000L),"yyyy-MM-dd HH:mm:ss"));
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // AXB中的B号码
        request.putQueryParameter("PhoneNoB", phoneB);
        // AXB中的A号码
        request.putQueryParameter("PhoneNoA", phoneA);
        // 指定城市进行X号码的选号。
        request.putQueryParameter("ExpectCity", "北京");
        // 是否需要针对该绑定关系产生的所有通话录制通话录音。
        request.putQueryParameter("IsRecordingEnabled", "false");
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
                map1.put("telX", jsonObject.getJSONObject("SecretBindDTO").getString("SecretNo"));
                map1.put("bindId", jsonObject.getJSONObject("SecretBindDTO").getString("SubsId"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;*/
    }
    /**
     * 解绑小号关系
     * @param bindId    绑定关系id
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbUnBindSend(String bindId,String secretNo) throws Exception{
        //组装请求对象-具体描述见开发文档-订单小号-AXB接口规范部分内容
        /*Map<String, Object> request = new HashMap<>();
        //绑定关系ID
        request.put("APPID", APIKey);
        request.put("bindId", bindId);
        Map<String, String> header = new HashMap<String, String>(3);
        header.put("Authorization", "Basic " + new String(Base64.encodeBase64((APIKey + ":" + SecretKey).getBytes())));
        header.put("Content-Type", "application/json;charset=utf-8");
        String post = httpClientUtil.pushHttpRequset("POST", "https://ct.open.10086.cn/ordernumber/v1/unbinding", request, header, "json");
        JSONObject jsonObject = JSONObject.parseObject(post);
        Map<String, String> map1 = new HashMap<>();
        if(jsonObject.getString("code").equals("0000")){
            map1.put("code", "200");
            map1.put("msg", jsonObject.getString("message"));
        }else{
            map1.put("code", jsonObject.getString("code"));
            map1.put("msg", jsonObject.getString("message"));
        }
        return map1;*/
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("UnbindSubscription");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // 隐私号码。调用BindAXG等号码绑定接口时指定或自动分配的X号码。
        request.putQueryParameter("SecretNo", secretNo);
        // 绑定关系ID。
        //
        //可以在控制台的号码管理 > 号码详情中查看绑定关系ID,或者在调用BindAxb等号码绑定API时查看返回参数中的SubsId。
        request.putQueryParameter("SubsId", bindId);
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;
    }
    public static  void main(String[] args) throws IOException {
        try{
            //System.out.println(midAxbBindSend("18380476116","13688394165",null));
            System.out.println(midAxbUnBindSend("1000028383491415","17150195840"));
        }catch (Exception e){
        }
    }
    public Map<String, String> HeaderUtils(String APIKey, String SecretKey) throws Exception{
        Map<String, String> header = new HashMap<>();
        long time = System.currentTimeMillis();
        String signStr = MD5Util.encrypt(APIKey + SecretKey + time);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("apiKey", APIKey);
        jsonObject.put("time", time);
        jsonObject.put("sign", signStr);
        Base64 base64 = new Base64();
        String s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("header", s);
        jsonObject = new JSONObject();
        jsonObject.put("platformId", "");
        jsonObject.put("secret", "");
        s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("accessCode", s);
        return header;
    }
}
//package com.stylefeng.guns.modular.system.util;
//
//import com.alibaba.fastjson.JSONObject;
//import com.aliyuncs.CommonRequest;
//import com.aliyuncs.CommonResponse;
//import com.aliyuncs.DefaultAcsClient;
//import com.aliyuncs.IAcsClient;
//import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest;
//import com.aliyuncs.exceptions.ClientException;
//import com.aliyuncs.exceptions.ServerException;
//import com.aliyuncs.http.MethodType;
//import com.aliyuncs.profile.DefaultProfile;
//import com.google.gson.Gson;
//import com.stylefeng.guns.core.qr.ImgQrTool;
//import com.stylefeng.guns.core.qr.QrImage;
//import com.stylefeng.guns.core.util.DateUtil;
//import com.stylefeng.guns.core.util.MD5Util;
//import org.apache.commons.codec.binary.Base64;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 中国移动工具类
// */
//@Component
//public class ChinaMobileUtil {
//
//    private static String APIKey = "1111";
//
//    private static String SecretKey = "111";
//
//    @Autowired
//    private HttpClientUtil httpClientUtil;
//
//
//    /**
//     * 绑定小号
//     * @param phoneA
//     * @param phoneB
//     * @param areaCode
//     * @return
//     * @throws Exception
//     */
//    public static Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{
//        Map<String, String> map1 = new HashMap<>();
//        map1.put("code", "-1");
//        map1.put("msg", "");
//        map1.put("telX", "");
//        map1.put("bindId", "");
//        return map1;
//        //暂时屏蔽-后期放开
//        /*DefaultProfile profile = DefaultProfile.getProfile(
//                "cn-hangzhou",            // 地域ID
//                APIKey,        // 您的AccessKey ID
//                SecretKey );  // 您的AccessKey Secret
//        IAcsClient client = new DefaultAcsClient(profile);
//
//        CommonRequest request = new CommonRequest();
//        request.setMethod(MethodType.POST);
//        request.setDomain("dyplsapi.aliyuncs.com");
//        request.setVersion("2017-05-25");
//        request.setAction("BindAxb");
//        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
//        request.putQueryParameter("Expiration", DateUtil.format(new Date(new Date().getTime()+7 * 24 * 60 * 60*1000L),"yyyy-MM-dd HH:mm:ss"));
//        // 号码池Key
//        request.putQueryParameter("PoolKey", "FC100000119206151");
//        // AXB中的B号码
//        request.putQueryParameter("PhoneNoB", phoneB);
//        // AXB中的A号码
//        request.putQueryParameter("PhoneNoA", phoneA);
//        // 指定城市进行X号码的选号。
//        request.putQueryParameter("ExpectCity", "北京");
//        // 是否需要针对该绑定关系产生的所有通话录制通话录音。
//        request.putQueryParameter("IsRecordingEnabled", "false");
//        Map<String, String> map1 = new HashMap<>();
//        try {
//            CommonResponse response = client.getCommonResponse(request);
//            // 处理请求结果
//            System.out.println(response.getData());
//            JSONObject jsonObject = JSONObject.parseObject(response.getData());
//            if(jsonObject.getString("Code").equals("OK")){
//                map1.put("code", "200");
//                map1.put("msg", jsonObject.getString("Message"));
//                map1.put("telX", jsonObject.getJSONObject("SecretBindDTO").getString("SecretNo"));
//                map1.put("bindId", jsonObject.getJSONObject("SecretBindDTO").getString("SubsId"));
//            }else{
//                map1.put("code", jsonObject.getString("Code"));
//                map1.put("msg", jsonObject.getString("Message"));
//            }
//        } catch (ServerException e) {
//            e.printStackTrace();
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        } catch (ClientException e) {
//            System.out.println("ErrCode:" + e.getErrCode());
//            System.out.println("ErrMsg:" + e.getErrMsg());
//            System.out.println("RequestId:" + e.getRequestId());
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        }
//        return map1;*/
//    }
//
//
//    /**
//     * 解绑小号关系
//     * @param bindId    绑定关系id
//     * @return
//     * @throws Exception
//     */
//    public static Map<String, String> midAxbUnBindSend(String bindId,String secretNo) throws Exception{
//        //组装请求对象-具体描述见开发文档-订单小号-AXB接口规范部分内容
//        /*Map<String, Object> request = new HashMap<>();
//        //绑定关系ID
//        request.put("APPID", APIKey);
//        request.put("bindId", bindId);
//
//        Map<String, String> header = new HashMap<String, String>(3);
//        header.put("Authorization", "Basic " + new String(Base64.encodeBase64((APIKey + ":" + SecretKey).getBytes())));
//        header.put("Content-Type", "application/json;charset=utf-8");
//        String post = httpClientUtil.pushHttpRequset("POST", "https://ct.open.10086.cn/ordernumber/v1/unbinding", request, header, "json");
//        JSONObject jsonObject = JSONObject.parseObject(post);
//        Map<String, String> map1 = new HashMap<>();
//        if(jsonObject.getString("code").equals("0000")){
//            map1.put("code", "200");
//            map1.put("msg", jsonObject.getString("message"));
//        }else{
//            map1.put("code", jsonObject.getString("code"));
//            map1.put("msg", jsonObject.getString("message"));
//        }
//        return map1;*/
//        DefaultProfile profile = DefaultProfile.getProfile(
//                "cn-hangzhou",            // 地域ID
//                APIKey,        // 您的AccessKey ID
//                SecretKey );  // 您的AccessKey Secret
//        IAcsClient client = new DefaultAcsClient(profile);
//
//        CommonRequest request = new CommonRequest();
//        request.setMethod(MethodType.POST);
//        request.setDomain("dyplsapi.aliyuncs.com");
//        request.setVersion("2017-05-25");
//        request.setAction("UnbindSubscription");
//        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
//        // 号码池Key
//        request.putQueryParameter("PoolKey", "FC100000119206151");
//        // 隐私号码。调用BindAXG等号码绑定接口时指定或自动分配的X号码。
//        request.putQueryParameter("SecretNo", secretNo);
//        // 绑定关系ID。
//        //
//        //可以在控制台的号码管理 > 号码详情中查看绑定关系ID,或者在调用BindAxb等号码绑定API时查看返回参数中的SubsId。
//        request.putQueryParameter("SubsId", bindId);
//        Map<String, String> map1 = new HashMap<>();
//        try {
//            CommonResponse response = client.getCommonResponse(request);
//            // 处理请求结果
//            System.out.println(response.getData());
//            JSONObject jsonObject = JSONObject.parseObject(response.getData());
//            if(jsonObject.getString("Code").equals("OK")){
//                map1.put("code", "200");
//                map1.put("msg", jsonObject.getString("Message"));
//            }else{
//                map1.put("code", jsonObject.getString("Code"));
//                map1.put("msg", jsonObject.getString("Message"));
//            }
//        } catch (ServerException e) {
//            e.printStackTrace();
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        } catch (ClientException e) {
//            System.out.println("ErrCode:" + e.getErrCode());
//            System.out.println("ErrMsg:" + e.getErrMsg());
//            System.out.println("RequestId:" + e.getRequestId());
//            map1.put("code", "-1");
//            map1.put("msg", e.getErrMsg());
//        }
//        return map1;
//    }
//
//    public static  void main(String[] args) throws IOException {
//        try{
//            //System.out.println(midAxbBindSend("18380476116","13688394165",null));
//            System.out.println(midAxbUnBindSend("1000028383491415","17150195840"));
//        }catch (Exception e){
//
//        }
//
//    }
//
//
//    public Map<String, String> HeaderUtils(String APIKey, String SecretKey) throws Exception{
//        Map<String, String> header = new HashMap<>();
//        long time = System.currentTimeMillis();
//        String signStr = MD5Util.encrypt(APIKey + SecretKey + time);
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("apiKey", APIKey);
//        jsonObject.put("time", time);
//        jsonObject.put("sign", signStr);
//        Base64 base64 = new Base64();
//        String s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
//        header.put("header", s);
//
//        jsonObject = new JSONObject();
//        jsonObject.put("platformId", "");
//        jsonObject.put("secret", "");
//        s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
//        header.put("accessCode", s);
//        return header;
//    }
//}