Commit 1924a25d by 伍思炜

智能平台对接开发

parent 6646cc48
...@@ -120,8 +120,9 @@ ...@@ -120,8 +120,9 @@
<artifactId>spring-test</artifactId> <artifactId>spring-test</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.winsun.framework</groupId> <groupId>com.konghq</groupId>
<artifactId>winsun-core-service</artifactId> <artifactId>unirest-java</artifactId>
<version>3.5.00</version>
</dependency> </dependency>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.github.ulisesbocchio</groupId>--> <!-- <groupId>com.github.ulisesbocchio</groupId>-->
......
...@@ -96,4 +96,9 @@ public class HhrUser implements Serializable{ ...@@ -96,4 +96,9 @@ public class HhrUser implements Serializable{
*/ */
@TableField(exist = false) @TableField(exist = false)
private String name; private String name;
/**
* 代理商账号
*/
private String account;
} }
...@@ -14,12 +14,15 @@ import com.winsun.auth.core.util.DateUtil; ...@@ -14,12 +14,15 @@ import com.winsun.auth.core.util.DateUtil;
import com.winsun.bean.*; import com.winsun.bean.*;
import com.winsun.constant.Constant; import com.winsun.constant.Constant;
import com.winsun.mapper.*; import com.winsun.mapper.*;
import com.winsun.smsUtils.StringUtil;
import com.winsun.utils.*; import com.winsun.utils.*;
import kong.unirest.HttpResponse;
import kong.unirest.JsonNode;
import kong.unirest.Unirest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair; import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.entity.UrlEncodedFormEntity;
...@@ -33,6 +36,7 @@ import org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil; ...@@ -33,6 +36,7 @@ import org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
...@@ -45,6 +49,8 @@ import org.springframework.web.client.ResourceAccessException; ...@@ -45,6 +49,8 @@ import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLHandshakeException;
import java.io.DataInput; import java.io.DataInput;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
...@@ -160,7 +166,7 @@ public class IntelligenceSendOrders { ...@@ -160,7 +166,7 @@ public class IntelligenceSendOrders {
// 3、提交订单到智能平台 // 3、提交订单到智能平台
ResponseEntity<String> submitOrderJsonObject = kong.unirest.HttpResponse<String> submitOrderJsonObject =
getOrderInfo( getOrderInfo(
schoolMap, //宽带订单对应的学校信息 schoolMap, //宽带订单对应的学校信息
orderViewMap, //宽带订单信息 orderViewMap, //宽带订单信息
...@@ -174,22 +180,28 @@ public class IntelligenceSendOrders { ...@@ -174,22 +180,28 @@ public class IntelligenceSendOrders {
0); 0);
log.info( log.info(
"----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:" "----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:"
+ submitOrderJsonObject.getStatusCode() + submitOrderJsonObject.getStatus()
+ " msg:" + " msg:"
+ submitOrderJsonObject.getBody() + submitOrderJsonObject.getParsingError()
+ " orderNum:" + " orderNum:"
+ submitOrderJsonObject.getBody()); + submitOrderJsonObject.getBody());
// 4、查询智能订单是否存在 // 4、查询智能订单是否存在
String orderNum = submitOrderJsonObject.getBody(); String orderNum = submitOrderJsonObject.getBody();
JSONObject queryOrderJsonObject = null; JSONObject queryOrderJsonObject = getQueryOrderInfo(orderNum, 1);
if (StringUtils.isNotBlank(orderNum)) {
queryOrderJsonObject = getQueryOrderInfo(orderNum, currentTimeStr, 0);
log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderJsonObject); log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderJsonObject);
Map<String, Object> map = JSONObject.parseObject(queryOrderJsonObject.getString("data"));
System.out.println(map.get("q"));
List<Object> list = (List<Object>) map.get("q");
Map<String, Object> q = (Map<String, Object>) list.get(0);
Map<String, Object> orderStatus = (Map<String, Object>) q.get("订单状态名称");
if (orderStatus.containsKey("订单当前状态|状态备注")) {
System.out.println(orderStatus.get("订单状态ID"));
//5、更新数据库 //5、更新数据库
String state = queryOrderJsonObject.getString("state"); String state = (String) orderStatus.get("订单状态名称");
// 更新hhr_order // 更新hhr_order
Wrapper<Order> orderWrapper = new EntityWrapper<>(); Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("kd_order_id", orderMap.get("kd_order_id")); orderWrapper.eq("kd_order_id", orderMap.get("kd_order_id"));
...@@ -211,7 +223,7 @@ public class IntelligenceSendOrders { ...@@ -211,7 +223,7 @@ public class IntelligenceSendOrders {
Wrapper<Order> orderWrapper = new EntityWrapper<>(); Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("kd_order_id", orderMap.get("kd_order_id")); orderWrapper.eq("kd_order_id", orderMap.get("kd_order_id"));
Order updateOrder = new Order(); Order updateOrder = new Order();
updateOrder.setMsg(submitOrderJsonObject.getBody()); updateOrder.setMsg((String) orderStatus.get("订单当前状态|状态备注"));
orderMapper.update(updateOrder, orderWrapper); orderMapper.update(updateOrder, orderWrapper);
} }
} else { } else {
...@@ -233,20 +245,21 @@ public class IntelligenceSendOrders { ...@@ -233,20 +245,21 @@ public class IntelligenceSendOrders {
} }
/* /**
* @param schoolMap * @param schoolMap
* @param orderMap * @param orderViewMap
* @param currentTimeStr * @param currentTimeStr
* @param productName
* @param ORDERSEQ * @param ORDERSEQ
* @param UPTRANSEQ * @param UPTRANSEQ
* @param ORDERAMOUNT * @param ORDERAMOUNT
* @param ORDERREQTRANSEQ * @param ORDERREQTRANSEQ
* @param businessType
* @param count * @param count
* @return 新单宽下单接口调用 * @return 新单宽下单接口调用
* @throws Exception * @throws Exception
*/ */
private kong.unirest.HttpResponse<String> getOrderInfo(
private ResponseEntity<String> getOrderInfo(
Map<String, Object> schoolMap, //宽带订单对应的学校信息 Map<String, Object> schoolMap, //宽带订单对应的学校信息
Map<String, Object> orderViewMap, //宽带订单信息 Map<String, Object> orderViewMap, //宽带订单信息
String currentTimeStr, //当前时间 String currentTimeStr, //当前时间
...@@ -323,12 +336,13 @@ public class IntelligenceSendOrders { ...@@ -323,12 +336,13 @@ public class IntelligenceSendOrders {
order_data.put("代理商账号", "hyoujian"); order_data.put("代理商账号", "hyoujian");
order_data.put("使用人姓名", "黄友健"); order_data.put("使用人姓名", "黄友健");
order_data.put("使用人证件号", "'440802199006080830"); order_data.put("使用人证件号", "440802199006080830");
Map<String, Object> customerInformation = new HashMap<>(); //客户信息 Map<String, Object> customerInformation = new HashMap<>(); //客户信息
customerInformation.put("联系人", (String) orderViewMap.get("orderName")); customerInformation.put("联系人", (String) orderViewMap.get("orderName"));
customerInformation.put("客户类型", "普通客户");
customerInformation.put("客户证件号码", (String) orderViewMap.get("orderNumber")); customerInformation.put("客户证件号码", (String) orderViewMap.get("orderNumber"));
customerInformation.put("客户证件姓名", (String) orderViewMap.get("customerName")); customerInformation.put("客户证件姓名", (String) orderViewMap.get("orderName"));
customerInformation.put("联系电话", (String) orderViewMap.get("orderPhone")); customerInformation.put("联系电话", (String) orderViewMap.get("orderPhone"));
//customerInformation.put("客户证件地址", ""); //customerInformation.put("客户证件地址", "");
customerInformation.put("装机联系电话", (String) orderViewMap.get("orderPhone")); customerInformation.put("装机联系电话", (String) orderViewMap.get("orderPhone"));
...@@ -355,16 +369,16 @@ public class IntelligenceSendOrders { ...@@ -355,16 +369,16 @@ public class IntelligenceSendOrders {
school = schoolMapper.selectOne(school); school = schoolMapper.selectOne(school);
Map<String, Object> packageInformation = new HashMap<>(); //揽装信息 Map<String, Object> packageInformation = new HashMap<>(); //揽装信息
packageInformation.put("揽装姓名", school.getLzUser()); packageInformation.put("揽装姓名", school.getLzUser());
//packageInformation.put("三级机构", ""); packageInformation.put("三级机构", "");
//packageInformation.put("一级机构", ""); packageInformation.put("一级机构", "");
//packageInformation.put("企微号码", ""); packageInformation.put("企微号码", "");
//packageInformation.put("揽装人联系电话", ""); packageInformation.put("揽装人联系电话", "");
packageInformation.put("机构ID", addressID); packageInformation.put("机构ID", addressID);
//packageInformation.put("四级机构", ""); packageInformation.put("四级机构", "");
//packageInformation.put("二级机构", ""); packageInformation.put("二级机构", "");
packageInformation.put("揽装工号", /*landId*/"44100621"); packageInformation.put("揽装工号", /*landId*/"4410061561");
//packageInformation.put("协销工号", ""); packageInformation.put("协销工号", "");
//packageInformation.put("五级机构", ""); packageInformation.put("五级机构", "");
order_data.put("揽装信息", packageInformation); order_data.put("揽装信息", packageInformation);
HashMap<String, Object> invoiceInformation = new HashMap<>(); //发票信息 HashMap<String, Object> invoiceInformation = new HashMap<>(); //发票信息
...@@ -549,14 +563,13 @@ public class IntelligenceSendOrders { ...@@ -549,14 +563,13 @@ public class IntelligenceSendOrders {
monthlyFeeItems.put("费用项列表", expenseItemsList); monthlyFeeItems.put("费用项列表", expenseItemsList);
order_data.put("月租费用项", monthlyFeeItems); order_data.put("月租费用项", monthlyFeeItems);
order_data.put("一次性费用项", ""); //order_data.put("一次性费用项", "");
Map<String, Object> map1 = new HashMap<>(); Map<String, Object> map1 = new HashMap<>();
//map1.put("return_data", return_data);
map1.put("order_data", order_data); map1.put("order_data", order_data);
String order_dataJSON = JSONObject.toJSONString(map1); String order_dataJSON = JSONObject.toJSONString(map1);
//String data = "{\"order_data\":{\"代理商账号\":\"代理商账号\",\"使用人姓名\":\"使用人姓名\",\"使用人证件号\":\"使用人证件号\",\"客户信息\":{\"联系人\":\"伍思炜\",\"客户证件号码\":\"44128319990817359X\",\"联系电话\":\"13727264296\",\"客户证件地址\":\"\",\"装机联系电话\":\"13727264296\",\"装机联系人\":\"伍思炜\",\"客户证件类型\":\"身份证\",\"通讯地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\"},\"装机详细地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\",\"订单来源单号\":\"r5bso7k9vgasfgs29tf8\",\"订单备注\":\"\",\"付费类型\":\"\",\"揽装信息\":{\"揽装人联系电话\":\"\",\"揽装姓名\":\"\",\"机构ID\":\"441020000000001023017324\",\"四级机构\":\"\",\"三级机构\":\"\",\"二级机构\":\"\",\"揽装工号\":\"06684262\",\"协销工号\":\"\",\"一级机构\":\"\",\"企微号码\":\"\",\"五级机构\":\"\"},\"发票信息\":{\"发票抬头\":\"\",\"发票投递方式\":\"不需要\",\"电子邮箱\":\"\"},\"接口下单账号\":\"xyzx\",\"订购产品\":{\"产品SKU\":\"\",\"产品名称\":\"校园宽带300元\",\"受理内容\":\"\",\"付费类型\":\"\",\"AI编码\":\"DQ_ADSL_CAMPUS\",\"属性列表\":[{\"属性值\":\"4M\",\"属性名\":\"宽带速率\"},{\"属性值\":\"441020000000001023017324\",\"属性名\":\"地址ID\"},{\"属性值\":\"PC+手机\",\"属性名\":\"允许上网终端类型\"},{\"属性值\":\"学生\",\"属性名\":\"用户类别\"},{},{\"属性值\":\"广州康大教育园\",\"属性名\":\"学校名称\"},{\"属性值\":\"1804050432\",\"属性名\":\"学生证号\"},{\"属性值\":\"校园天翼宽带用户\",\"属性名\":\"用户类型\"},{\"属性值\":\"包月30元\",\"属性名\":\"月租类型\"},{\"属性值\":\"普通\",\"属性名\":\"计费属性\"},{\"属性值\":\"13727264296@SCNUZC.GZ\",\"属性名\":\"多媒体账号\"},{\"属性值\":\"a12345678\",\"属性名\":\"多媒体账号密码\"},{\"属性值\":\"1\",\"属性名\":\"最大在线数\"},{\"属性值\":\"否\",\"属性名\":\"一人一号多终端\"},{\"属性值\":\"否\",\"属性名\":\"是否FTTH+HUB\"},{\"属性值\":\"(FTTB)光缆大楼\",\"属性名\":\"外线方式\"},{\"属性值\":\"首月按天收费\",\"属性名\":\"宽带首月费用类型\"}],\"业务类型\":\"单宽业务\",\"宽带装机\":{\"装机详细地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\",\"省\":\"广东省\",\"市\":\"广州市\",\"区\":\"黄埔区\",\"装机地址ID\":\"441020000000001023017324\"},\"月租费用项\":{\"费用项列表\":[{\"费用项名称\":\"校园宽带300元\",\"费用项金额\":\"300.0000\",\"费用项类型\":\"月租\"}]},\"缴费方式\":\"现金支付\"}}}"; //String data = "{\"order_data\":{\"代理商账号\":\"hyoujian\",\"使用人姓名\":\"黄友健\",\"使用人证件号\":\"440802199006080830\",\"客户信息\":{\"联系人\":\"伍思炜\",\"客户证件号码\":\"44128319990817359X\",\"联系电话\":\"13727264296\",\"客户证件地址\":\"\",\"装机联系电话\":\"13727264296\",\"装机联系人\":\"伍思炜\",\"客户证件类型\":\"身份证\",\"通讯地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\"},\"装机详细地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\",\"订单来源单号\":\"r5bso7k9vgasfgs29tf8\",\"订单备注\":\"\",\"付费类型\":\"\",\"揽装信息\":{\"揽装人联系电话\":\"\",\"揽装姓名\":\"\",\"机构ID\":\"441020000000001023017324\",\"四级机构\":\"\",\"三级机构\":\"\",\"二级机构\":\"\",\"揽装工号\":\"06684262\",\"协销工号\":\"\",\"一级机构\":\"\",\"企微号码\":\"\",\"五级机构\":\"\"},\"发票信息\":{\"发票抬头\":\"\",\"发票投递方式\":\"不需要\",\"电子邮箱\":\"\"},\"接口下单账号\":\"xyzx\",\"订购产品\":{\"产品SKU\":\"\",\"产品名称\":\"校园宽带300元\",\"受理内容\":\"\",\"付费类型\":\"\",\"AI编码\":\"DQ_ADSL_CAMPUS\",\"属性列表\":[{\"属性值\":\"4M\",\"属性名\":\"宽带速率\"},{\"属性值\":\"441020000000001023017324\",\"属性名\":\"地址ID\"},{\"属性值\":\"PC+手机\",\"属性名\":\"允许上网终端类型\"},{\"属性值\":\"学生\",\"属性名\":\"用户类别\"},{},{\"属性值\":\"广州康大教育园\",\"属性名\":\"学校名称\"},{\"属性值\":\"1804050432\",\"属性名\":\"学生证号\"},{\"属性值\":\"校园天翼宽带用户\",\"属性名\":\"用户类型\"},{\"属性值\":\"包月30元\",\"属性名\":\"月租类型\"},{\"属性值\":\"普通\",\"属性名\":\"计费属性\"},{\"属性值\":\"13727264296@SCNUZC.GZ\",\"属性名\":\"多媒体账号\"},{\"属性值\":\"a12345678\",\"属性名\":\"多媒体账号密码\"},{\"属性值\":\"1\",\"属性名\":\"最大在线数\"},{\"属性值\":\"否\",\"属性名\":\"一人一号多终端\"},{\"属性值\":\"否\",\"属性名\":\"是否FTTH+HUB\"},{\"属性值\":\"(FTTB)光缆大楼\",\"属性名\":\"外线方式\"},{\"属性值\":\"首月按天收费\",\"属性名\":\"宽带首月费用类型\"}],\"业务类型\":\"单宽业务\",\"宽带装机\":{\"装机详细地址\":\"广州市黄埔区九龙镇九龙大道206号206号广州商学院思政楼1楼机房\",\"省\":\"广东省\",\"市\":\"广州市\",\"区\":\"黄埔区\",\"装机地址ID\":\"441020000000001023017324\"},\"月租费用项\":{\"费用项列表\":[{\"费用项名称\":\"校园宽带300元\",\"费用项金额\":\"300.0000\",\"费用项类型\":\"月租\"}]},\"缴费方式\":\"现金支付\"}}}";
// 获得md5串 // 获得md5串
String sign = MD5Util.MD5Encode(order_dataJSON, "Utf-8"); String sign = MD5Util.MD5Encode(order_dataJSON, "Utf-8");
// 获得小写md5串 // 获得小写md5串
...@@ -572,17 +585,15 @@ public class IntelligenceSendOrders { ...@@ -572,17 +585,15 @@ public class IntelligenceSendOrders {
log.info("宽带下单接口中的携带的签名:" + sign); log.info("宽带下单接口中的携带的签名:" + sign);
ResponseEntity<String> responese = null; kong.unirest.HttpResponse<String> responese = null;
try { try {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE));
//签名
headers.add("X-Sign", sign);
org.springframework.http.HttpEntity<Object> httpEntity = new org.springframework.http.HttpEntity<>(order_dataJSON, headers);
RestTemplate restTemplate = new RestTemplate();
log.info("提交参数:" + order_dataJSON); log.info("提交参数:" + order_dataJSON);
Constant.trustEveryone(); Constant.trustEveryone();
//responese = restTemplate.postForEntity("https://applet.mini189.cn/dev/generate", httpEntity, String.class); responese = Unirest.post("https://applet.mini189.cn/dev/generate")
.header("Content-Type", "application/json;charset=UTF-8")
.header("X-Sign", sign)
.body(order_dataJSON)
.asString();
log.info("单宽带下单接口,返回信息:" + responese.getBody()); log.info("单宽带下单接口,返回信息:" + responese.getBody());
} catch (ResourceAccessException e) { } catch (ResourceAccessException e) {
count++; count++;
...@@ -643,70 +654,66 @@ public class IntelligenceSendOrders { ...@@ -643,70 +654,66 @@ public class IntelligenceSendOrders {
return schoolMap; return schoolMap;
} }
private JSONObject getQueryOrderInfo( public JSONObject getQueryOrderInfo(String orderNum, int count) throws Exception {
String orderNum, String currentTimeStr, int count) throws Exception { ObjectMapper OBJECT_MAPPER = new ObjectMapper();
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
RequestConfig defaultRequestConfig = Map<String, Object> data = new HashMap<>();
RequestConfig.custom() data.put("route", "代理商订单信息查询");
.setSocketTimeout(50000) data.put("代理商账号", "hyoujian");
.setConnectTimeout(50000) data.put("订单编码", orderNum);
.setConnectionRequestTimeout(50000) data.put("使用人证件号", "440802199006080830");
.build(); data.put("使用人姓名", "黄友健");
CloseableHttpClient httpclient = String bodyJson = JSONObject.toJSONString(data);
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null; String eurl_data = URLEncoder.encode(bodyJson, "UTF-8");
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "query.action"); System.out.println(eurl_data);
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build(); String url_data = "data=" + eurl_data;
httpPost.setConfig(requestConfig); System.out.println(url_data);
// 获得md5串
Map<String, String> signMap = new HashMap<String, String>(); // 待签名参数 String sign = MD5Utils.md5(url_data);
qParams.add(new BasicNameValuePair("service", "query.order.status")); // api标识,必填 // 获得小写md5串
signMap.put("service", "query.order.status"); sign = sign.toLowerCase();
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填 System.out.println(sign);
signMap.put("userName", Constant.ZHENGSHIAUCCON); // RSA加密
qParams.add(new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填 byte[] encodedData = RSAUtils.encryptByPublicKey(sign, publicKey);
signMap.put("timeStamp", currentTimeStr); sign = (new BASE64Encoder()).encodeBuffer(encodedData);
qParams.add(new BasicNameValuePair("orderNumber", orderNum)); // 智能平台订单编号,非必填 System.out.println("签名:" + sign);
signMap.put("outOrderNum", orderNum); //去除换行
// qParams.add(new BasicNameValuePair("outOrderNum","13888888888"));//外部订单编号,非必填 sign = sign.replaceAll("\\r|\\n", "");
// signMap.put("outOrderNum","13888888888"); System.out.println("签名2 :" + sign);
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet()); JSONObject jsonObject = null;
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
JSONObject resultDataJson = null;
try { try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); log.info("提交参数:" + data);
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone(); Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost); kong.unirest.HttpResponse<String> responese = Unirest.get("https://applet.mini189.cn/dev/query/query-order-info?" + url_data)
entity = response.getEntity(); .header("Content-Type", "application/json")
String httpResult = EntityUtils.toString(entity, "UTF-8"); .header("X-Sign", sign)
resultDataJson = JSONObject.parseObject(httpResult); .asString();
} catch (SSLHandshakeException s) { log.info("宽带订单状态查询接口,返回信息:" + responese.getBody());
String body = responese.getBody();
jsonObject = JSONObject.parseObject(body);
Map<String, Object> dataJson = (Map<String, Object>) jsonObject.get("data");
if (StringUtils.isEmpty(JSON.toJSONString(dataJson.get("q")))) {
count++;
if (count < 20) {
getQueryOrderInfo(orderNum, count);
} else {
log.error("单宽订单状态查询接口尝试20次未查询到订单。请重新下单或检查下单接口");
}
}
} catch (ResourceAccessException s) {
count++; count++;
if (count < 20) { if (count < 20) {
resultDataJson = getQueryOrderInfo(orderNum, currentTimeStr, count); getQueryOrderInfo(orderNum, count);
} else { } else {
log.error("单宽下单接口尝试20次失误。请检查接口"); log.error("单宽订单状态查询接口尝试20次失误。请检查接口");
} }
} catch (Exception e) { } catch (Exception e) {
log.error("接口异常 " + e.getMessage()); log.error("接口异常 " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
} finally {
httpPost.releaseConnection();
} }
return resultDataJson; return jsonObject;
} }
public Map<String, Object> setSchoolMap(Map<String, Object> orderMap, Map<String, Object> orderViewMap, Map<String, Object> schoolMap) { public Map<String, Object> setSchoolMap(Map<String, Object> orderMap, Map<String, Object> orderViewMap, Map<String, Object> schoolMap) {
...@@ -812,7 +819,7 @@ public class IntelligenceSendOrders { ...@@ -812,7 +819,7 @@ public class IntelligenceSendOrders {
if (order.getUserType().toString().equals("3")) { if (order.getUserType().toString().equals("3")) {
String productName = "校园融合套餐"; String productName = "校园融合套餐";
// 3、提交订单到智能平台 // 3、提交订单到智能平台
ResponseEntity<String> submitOrderJsonObject = kong.unirest.HttpResponse<String> submitOrderJsonObject =
getOrderInfo( getOrderInfo(
schoolMap, //宽带订单对应的学校信息 schoolMap, //宽带订单对应的学校信息
orderViewMap, //宽带订单信息 orderViewMap, //宽带订单信息
...@@ -824,25 +831,28 @@ public class IntelligenceSendOrders { ...@@ -824,25 +831,28 @@ public class IntelligenceSendOrders {
ORDERREQTRANSEQ, //穗易付订单号 ORDERREQTRANSEQ, //穗易付订单号
3, //下单类型(3:融合业务;5:单宽业务;10:单宽进融) 3, //下单类型(3:融合业务;5:单宽业务;10:单宽进融)
0); 0);
JSONObject body = JSONObject.parseObject(submitOrderJsonObject.getBody());
log.info( log.info(
"----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:" "----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:"
+ submitOrderJsonObject.getStatusCode() + submitOrderJsonObject.getStatus()
+ " msg:" + " msg:"
+ body.get("msg") + submitOrderJsonObject.getParsingError()
+ " orderNum:" + " orderNum:"
+ body.get("orderNum")); + submitOrderJsonObject.getBody());
String orderNum = (String) body.get("orderNumber"); String orderNum = submitOrderJsonObject.getBody();
JSONObject queryOrderJsonObject = null; JSONObject queryOrderInfo = null;
/*if (StringUtils.isNotBlank(orderNum)) { if (StringUtils.isNotBlank(orderNum)) {
queryOrderJsonObject = getQueryOrderInfo(orderNum, currentTimeStr, 0); queryOrderInfo = getQueryOrderInfo(orderNum, 0);
log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderJsonObject); if (StringUtils.isEmpty(String.valueOf(queryOrderInfo))) {
return;
}
log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderInfo);
//5、更新数据库 //5、更新数据库
String state = queryOrderJsonObject.getString("state"); String state = queryOrderInfo.getString("state");
Wrapper<Order> orderWrapper = new EntityWrapper<>(); Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("kd_order_id", orderMap.get("orderSeq").toString()); orderWrapper.eq("kd_order_id", orderMap.get("orderSeq").toString());
...@@ -863,7 +873,7 @@ public class IntelligenceSendOrders { ...@@ -863,7 +873,7 @@ public class IntelligenceSendOrders {
log.info("----------将智能订单状态更新至数据库error:" + state); log.info("----------将智能订单状态更新至数据库error:" + state);
} }
} else { } else {
String msg = (String) body.get("msg"); /*String msg = (String) body.get("msg");
if (StringUtils.isNotBlank(msg) && !msg.equals("订单来源单号已存在,请勿重复下单")) { if (StringUtils.isNotBlank(msg) && !msg.equals("订单来源单号已存在,请勿重复下单")) {
Wrapper<Order> wrapper = new EntityWrapper<>(); Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId()); wrapper.eq("id", order.getId());
...@@ -871,13 +881,13 @@ public class IntelligenceSendOrders { ...@@ -871,13 +881,13 @@ public class IntelligenceSendOrders {
updateOrder.setOrderStatus("异常单"); updateOrder.setOrderStatus("异常单");
updateOrder.setMsg(msg); updateOrder.setMsg(msg);
orderMapper.update(updateOrder, wrapper); orderMapper.update(updateOrder, wrapper);
}
}*/ }*/
}
} else if (order.getUserType().toString().equals("10")) { } else if (order.getUserType().toString().equals("10")) {
String productName = "校园融合宽带提速包"; String productName = "校园融合宽带提速包";
// 3、提交订单到智能平台 // 3、提交订单到智能平台
ResponseEntity<String> submitOrderJsonObject = kong.unirest.HttpResponse<String> submitOrderJsonObject =
getOrderInfo( getOrderInfo(
schoolMap, //宽带订单对应的学校信息 schoolMap, //宽带订单对应的学校信息
orderViewMap, //宽带订单信息 orderViewMap, //宽带订单信息
...@@ -889,24 +899,24 @@ public class IntelligenceSendOrders { ...@@ -889,24 +899,24 @@ public class IntelligenceSendOrders {
ORDERREQTRANSEQ, //穗易付订单号 ORDERREQTRANSEQ, //穗易付订单号
10, //下单类型(3:融合业务;5:单宽业务;10:单宽进融) 10, //下单类型(3:融合业务;5:单宽业务;10:单宽进融)
0); 0);
JSONObject body = JSONObject.parseObject(submitOrderJsonObject.getBody());
log.info( log.info(
"----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:" "----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:"
+ submitOrderJsonObject.getStatusCode() + submitOrderJsonObject.getStatus()
+ " msg:" + " msg:"
+ body.get("msg") + submitOrderJsonObject.getParsingError()
+ " orderNum:" + " orderNum:"
+ body.get("orderNum")); + submitOrderJsonObject.getBody());
String orderNum = (String) body.get("orderNumber");
JSONObject queryOrderJsonObject = null; String orderNum = submitOrderJsonObject.getBody();
/*String orderNum = (String) body.get("orderNumber"); JSONObject queryOrderInfo = null;
net.sf.json.JSONObject queryOrderJsonObject = null;
if (StringUtils.isNotBlank(orderNum)) { if (StringUtils.isNotBlank(orderNum)) {
//5、更新数据库 queryOrderInfo = getQueryOrderInfo(orderNum, 0);
if (StringUtils.isEmpty(String.valueOf(queryOrderInfo))) {
return;
}
//5、更新数据库
Wrapper<Order> wrapper = new EntityWrapper<>(); Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId()); wrapper.eq("id", order.getId());
Order updateOrder = new Order(); Order updateOrder = new Order();
...@@ -920,22 +930,22 @@ public class IntelligenceSendOrders { ...@@ -920,22 +930,22 @@ public class IntelligenceSendOrders {
orderHistory.setStatus("智能平台下单成功" + orderNum); orderHistory.setStatus("智能平台下单成功" + orderNum);
orderHistoryMapper.insert(orderHistory); orderHistoryMapper.insert(orderHistory);
} else { } else {
String msg = (String) body.get("msg"); //String msg = (String) body.get("msg");
if (StringUtils.isNotBlank(msg) && !msg.equals("订单来源单号已存在,请勿重复下单")) { /*if (StringUtils.isNotBlank(msg) && !msg.equals("订单来源单号已存在,请勿重复下单")) {
Wrapper<Order> wrapper = new EntityWrapper<>(); Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId()); wrapper.eq("id", order.getId());
Order updateOrder = new Order(); Order updateOrder = new Order();
updateOrder.setOrderStatus("异常单"); updateOrder.setOrderStatus("异常单");
updateOrder.setMsg(msg); updateOrder.setMsg(msg);
orderMapper.update(updateOrder, wrapper); orderMapper.update(updateOrder, wrapper);
} }*/
OrderHistory orderHistory = new OrderHistory(); OrderHistory orderHistory = new OrderHistory();
orderHistory.setOrderId(order.getId()); orderHistory.setOrderId(order.getId());
orderHistory.setCreateDate(new Date()); orderHistory.setCreateDate(new Date());
orderHistory.setStatus("智能平台下单失败" + orderNum); orderHistory.setStatus("智能平台下单失败" + orderNum);
orderHistoryMapper.insert(orderHistory); orderHistoryMapper.insert(orderHistory);
}*/ }
} }
} }
...@@ -946,55 +956,54 @@ public class IntelligenceSendOrders { ...@@ -946,55 +956,54 @@ public class IntelligenceSendOrders {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public String queryStatus(String orderNum,int need) throws Exception { public String queryStatus(String orderNum) throws Exception {
ObjectMapper OBJECT_MAPPER = new ObjectMapper(); ObjectMapper OBJECT_MAPPER = new ObjectMapper();
Map<String, Object> body = new HashMap<>(); Map<String, Object> data = new HashMap<>();
body.put("Timestamp", ""); data.put("route", "代理商订单信息查询");
Map<String, Object> values = new HashMap<>(); data.put("代理商账号", "hyoujian");
List<Map<String, Object>> data = new ArrayList<>(); data.put("订单编码", orderNum);
Map<String, Object> value = new HashMap<>(); data.put("使用人证件号", "440802199006080830");
value.put("route", "代理商订单信息查询"); data.put("使用人姓名", "黄友健");
value.put("代理商账号", ""); String bodyJson = JSONObject.toJSONString(data);
value.put("订单编码", orderNum);
value.put("使用人证件号", ""); String eurl_data = URLEncoder.encode(bodyJson, "UTF-8");
value.put("使用人姓名", ""); System.out.println(eurl_data);
data.add(value); String url_data = "data=" + eurl_data;
values.put("data", data); System.out.println(url_data);
body.put("values", values); // 获得md5串
String bodyJson = JSONObject.toJSONString(body); String sign = MD5Utils.md5(url_data);
//MD5加密
String sign = MD5Util.MD5Encode(bodyJson, "Utf-8");
// 获得小写md5串 // 获得小写md5串
sign = sign.toLowerCase(); sign = sign.toLowerCase();
log.info("md5签名:" + sign); System.out.println(sign);
// RSA加密 // RSA加密
byte[] encodedData = RSAUtils.encryptByPublicKey(sign, publicKey); byte[] encodedData = RSAUtils.encryptByPublicKey(sign, publicKey);
sign = (new BASE64Encoder()).encodeBuffer(encodedData); sign = (new BASE64Encoder()).encodeBuffer(encodedData);
log.info("RSA签名:" + sign); System.out.println("签名:" + sign);
//去除换行
sign = sign.replaceAll("\\r|\\n", "");
System.out.println("签名2 :" + sign);
ResponseEntity<String> responese = null; kong.unirest.HttpResponse<String> responese = null;
try { try {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE)); headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE));
//签名 //签名
headers.add("X-Sign", sign); headers.add("X-Sign", sign);
org.springframework.http.HttpEntity<Object> httpEntity = new org.springframework.http.HttpEntity<>(bodyJson, headers); org.springframework.http.HttpEntity<Object> httpEntity = new org.springframework.http.HttpEntity<>(data, headers);
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
log.info("提交参数:" + bodyJson); log.info("提交参数:" + data);
Constant.trustEveryone(); Constant.trustEveryone();
responese = restTemplate.postForEntity("http://132.97.20.21/function/applet-query-order-info.dev-fn", httpEntity, String.class); responese = Unirest.get("https://applet.mini189.cn/dev/query/query-order-info?" + url_data)
log.info("智能平台请求状态返回数据:" + responese.getBody()); .header("Content-Type", "application/json")
.header("X-Sign", sign)
.asString();
log.info("宽带订单状态查询接口,返回信息:" + responese.getBody());
JSONObject bodyJsonObject = JSONObject.parseObject(responese.getBody()); JSONObject bodyJsonObject = JSONObject.parseObject(responese.getBody());
Map<String,Object> map = JSONObject.parseObject(bodyJsonObject.getString("data")); Map<String, Object> map = JSONObject.parseObject(bodyJsonObject.getString("data"));
List<Object> list = (List<Object>) map.get("q"); List<Object> list = (List<Object>) map.get("q");
Map<String,Object> map2= (Map<String, Object>) list.get(0); Map<String, Object> map2 = (Map<String, Object>) list.get(0);
Map<String,Object> orderStatus = (Map<String, Object>) map2.get("订单当前状态"); Map<String, Object> orderStatus = (Map<String, Object>) map2.get("订单当前状态");
if (need==1 && "0".equals(orderStatus.get("订单状态ID"))) {
return responese.getBody();
}else if (need == 2 && StringUtils.isEmpty((String) orderStatus.get("订单状态ID"))){
return responese.getBody();
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment