From 59f70d9b19408d36f40ee0f418bf98232c40fb33 Mon Sep 17 00:00:00 2001 From: yanghb <yanghb> Date: 星期五, 21 四月 2023 09:41:42 +0800 Subject: [PATCH] 代码调整 --- DispatchTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java | 156 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 91 insertions(+), 65 deletions(-) diff --git a/DispatchTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java b/DispatchTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java index 37b568a..5ef83bd 100644 --- a/DispatchTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java +++ b/DispatchTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java @@ -1,14 +1,11 @@ package com.stylefeng.guns.modular.system.util; -import com.aliyun.dyplsapi20170525.models.BindAxbRequest; -import com.aliyun.dyplsapi20170525.models.BindAxbResponse; -import com.aliyun.dyplsapi20170525.models.UpdateSubscriptionRequest; -import com.aliyun.dyplsapi20170525.models.UpdateSubscriptionResponse; -import com.aliyun.teaopenapi.models.Config; +import com.alibaba.fastjson.JSONObject; +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.text.SimpleDateFormat; -import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -18,85 +15,114 @@ @Component public class ChinaMobileUtil { - private String accessKeyId = "LTAI5tCeHnZXREQBcVf3NHLB"; + private String APIKey = "zj42494b1bdd416b9762229af6b5cbbd"; - private String accessKeySecret = "OEX6AtRb3qOCyp53xOFdDEYgBjzZzS"; + private String SecretKey = "30323561316534653735613230316339"; - private String poolKey = "FC100000145494178";//号码池KEY - - - - /** - * 使用AK&SK初始化账号Client - * @return Client - * @throws Exception - */ - public com.aliyun.dyplsapi20170525.Client createClient() throws Exception { - Config config = new Config() - // 您的AccessKey ID - .setAccessKeyId(accessKeyId) - // 您的AccessKey Secret - .setAccessKeySecret(accessKeySecret); - // 访问的域名 - config.endpoint = "dyplsapi.aliyuncs.com"; - return new com.aliyun.dyplsapi20170525.Client(config); - } + @Autowired + private HttpClientUtil httpClientUtil; /** - * 绑定隐私号 + * 绑定小号 * @param phoneA * @param phoneB - * @param expiration "2021-12-14 12:00:00" + * @param areaCode * @return * @throws Exception */ - public Map<String, String> midAxbBindSend(String phoneA, String phoneB, Long expiration) throws Exception{ - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - com.aliyun.dyplsapi20170525.Client client = createClient(); - BindAxbRequest bindAxbRequest = new BindAxbRequest() - .setPhoneNoA(phoneA) - .setExpiration(sdf.format(new Date(expiration))) - .setPoolKey(poolKey) - .setPhoneNoB(phoneB); - // 复制代码运行请自行打印 API 的返回值 - BindAxbResponse bindAxbResponse = client.bindAxb(bindAxbRequest); - Map<String, String> map = new HashMap<>(); - if(!bindAxbResponse.getBody().getCode().equals("OK")){ - map.put("code", "-1"); + public Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{ + //组装请求对象-具体描述见开发文档-订单小号-AXB接口规范部分内容 + Map<String, Object> request = new HashMap<>(); + request.put("APPID", APIKey); + request.put("bindtype", "AXB"); + request.put("requestId", UUIDUtil.getRandomCode(16)); + request.put("record", "0"); + //用户号码,必填,格式遵循国际电信联盟定义的E.164标准 + request.put("telA", "86" + phoneA); + //用户号码B,必填,格式遵循国际电信联盟定义的E.164标准 + request.put("telB", "86" + phoneB); + //需要选择的小号所属区号,当telX不写时必填,例如:杭州(571) + request.put("areaCode", 571); + //订单小号,非必填,当指定小号绑定时填写,格式遵循国际电信联盟定义的E.164标准 +// request.setTelX("8618867110000"); + //绑定关系过期失效时间,秒,取值必须大于0且最大值不超过4294967296 + request.put("expiration", Integer.valueOf(7 * 24 * 60 * 60)); + + 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/binding", request, header, "json"); + Map<String, String> map1 = new HashMap<>(); + if(post.indexOf("0000") != -1){ + JSONObject jsonObject = JSONObject.parseObject(post); + if(jsonObject.getString("code").equals("0000")){ + map1.put("code", "200"); + map1.put("msg", jsonObject.getString("message")); + map1.put("telX", jsonObject.getString("x_no").substring(2)); + map1.put("bindId", jsonObject.getString("bindId")); + }else{ + map1.put("code", jsonObject.getString("code")); + map1.put("msg", jsonObject.getString("message")); + } }else{ - map.put("code", "200"); - map.put("telX", bindAxbResponse.getBody().getSecretBindDTO().getSecretNo()); - map.put("bindId", bindAxbResponse.getBody().getSecretBindDTO().getSubsId()); + map1.put("code", "-1"); + map1.put("msg", post); } - return map; + + return map1; } /** - * 修改绑定关系 + * 解绑小号关系 * @param bindId 绑定关系id - * @param phone 隐私号 * @return * @throws Exception */ - public Map<String, String> midAxbUnBindSend(String bindId, String phone, Long expiration) throws Exception{ - com.aliyun.dyplsapi20170525.Client client = createClient(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - UpdateSubscriptionRequest updateSubscriptionRequest = new UpdateSubscriptionRequest() - .setPoolKey(poolKey) - .setSubsId(bindId) - .setPhoneNoX(phone) - .setOperateType("updateExpire") - .setExpiration(sdf.format(new Date(expiration))); - // 复制代码运行请自行打印 API 的返回值 - UpdateSubscriptionResponse updateSubscriptionResponse = client.updateSubscription(updateSubscriptionRequest); - Map<String, String> map = new HashMap<>(); - if(!updateSubscriptionResponse.getBody().getCode().equals("OK")){ - map.put("code", "-1"); + public Map<String, String> midAxbUnBindSend(String bindId) 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{ - map.put("code", "200"); + map1.put("code", jsonObject.getString("code")); + map1.put("msg", jsonObject.getString("message")); } - return map; + return map1; + } + + + + + 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; } } -- Gitblit v1.7.1