|
@@ -1,6 +1,5 @@
|
|
|
package com.iamberry.rst.controllers.mq;
|
|
|
|
|
|
-import com.alibaba.dubbo.common.json.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.iamberry.redis.RedisUtils;
|
|
@@ -26,11 +25,11 @@ import com.taobao.api.TaobaoClient;
|
|
|
import com.taobao.api.domain.Order;
|
|
|
import com.taobao.api.domain.Trade;
|
|
|
import com.taobao.api.internal.util.StringUtils;
|
|
|
+import com.taobao.api.request.TopOaidDecryptRequest;
|
|
|
import com.taobao.api.request.TradeFullinfoGetRequest;
|
|
|
-import com.taobao.api.request.TradesSoldGetRequest;
|
|
|
import com.taobao.api.request.TradesSoldIncrementGetRequest;
|
|
|
+import com.taobao.api.response.TopOaidDecryptResponse;
|
|
|
import com.taobao.api.response.TradeFullinfoGetResponse;
|
|
|
-import com.taobao.api.response.TradesSoldGetResponse;
|
|
|
import com.taobao.api.response.TradesSoldIncrementGetResponse;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -38,8 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
-
|
|
|
-import java.text.DecimalFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
@@ -184,7 +181,7 @@ public class TaobaoTask {
|
|
|
}
|
|
|
TaobaoClient detailsClient = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
|
|
|
TradeFullinfoGetRequest req = new TradeFullinfoGetRequest();
|
|
|
- req.setFields("tid,pay_time,seller_memo,buyer_memo,type,status,price,discount_fee,total_fee,payment,orders,receiver_name,receiver_state,receiver_address,receiver_zip,receiver_mobile,receiver_phone,receiver_town,receiver_city,receiver_district");
|
|
|
+ req.setFields("created,tid,pay_time,seller_memo,buyer_memo,type,status,price,discount_fee,total_fee,payment,orders,receiver_name,receiver_state,receiver_address,receiver_zip,receiver_mobile,receiver_phone,receiver_town,receiver_city,receiver_district");
|
|
|
req.setTid(tid);
|
|
|
req.setIncludeOaid("true");
|
|
|
TradeFullinfoGetResponse rsp = null;
|
|
@@ -221,6 +218,7 @@ public class TaobaoTask {
|
|
|
trade.setStatus(data.getString("status"));
|
|
|
trade.setSellerMemo(data.getString("seller_memo"));
|
|
|
trade.setBuyerMemo(data.getString("buyer_memo"));
|
|
|
+ trade.setOaid(data.getString("oaid"));
|
|
|
JSONObject temp = data.getJSONObject("orders");
|
|
|
JSONArray orders = temp.getJSONArray("order");
|
|
|
trade.setOrders(new ArrayList<>(orders.size()));
|
|
@@ -246,6 +244,68 @@ public class TaobaoTask {
|
|
|
order.setTotalFee(t.getString("total_fee"));
|
|
|
trade.getOrders().add(order);
|
|
|
}
|
|
|
+ // 缓存订单信息的OAID
|
|
|
+ if (trade.getOaid() != null && trade.getReceiverMobile().contains("*")) {
|
|
|
+ String oaidKey = "OAID_" + trade.getTidStr();
|
|
|
+ RedisUtils.put(oaidKey, trade.getOaid());
|
|
|
+ RedisUtils.expire(oaidKey, DateTimeUtil.addDay(new Date(), 3));
|
|
|
+ // 查询地址数据是否已经被获取解密
|
|
|
+ String addrKey = "ADDR_" + trade.getTidStr();
|
|
|
+ String addr = RedisUtils.get(addrKey);
|
|
|
+ if (addr != null) {
|
|
|
+ // 从缓存数据库获取解密数据
|
|
|
+ TopOaidDecryptResponse.Receiver receiver = JSONObject.parseObject(addr, TopOaidDecryptResponse.Receiver.class);
|
|
|
+ trade.setReceiverName(receiver.getName());
|
|
|
+ trade.setReceiverMobile(receiver.getMobile());
|
|
|
+ trade.setReceiverAddress(receiver.getAddressDetail());
|
|
|
+ trade.setReceiverTown(receiver.getTown());
|
|
|
+ trade.setReceiverDistrict(receiver.getDistrict());
|
|
|
+ trade.setReceiverCity(receiver.getCity());
|
|
|
+ trade.setReceiverState(receiver.getState());
|
|
|
+ } else {
|
|
|
+ // 发起解密请求
|
|
|
+ TaobaoClient client = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
|
|
|
+ TopOaidDecryptRequest req = new TopOaidDecryptRequest();
|
|
|
+ List<TopOaidDecryptRequest.ReceiverQuery> list2 = new ArrayList<TopOaidDecryptRequest.ReceiverQuery>();
|
|
|
+ TopOaidDecryptRequest.ReceiverQuery obj3 = new TopOaidDecryptRequest.ReceiverQuery();
|
|
|
+ list2.add(obj3);
|
|
|
+ obj3.setOaid(trade.getOaid());
|
|
|
+ obj3.setTid(trade.getTid().toString());
|
|
|
+ obj3.setScene("1005");
|
|
|
+ req.setQueryList(list2);
|
|
|
+ TopOaidDecryptResponse rsp = null;
|
|
|
+ try {
|
|
|
+ rsp = client.execute(req, (String) AdminTaobaoAuthController.getToken().get("token"));
|
|
|
+ logger.info("请求解密后的数据:{}", rsp.getBody());
|
|
|
+ JSONObject body = JSONObject.parseObject(rsp.getBody());
|
|
|
+ JSONObject topOaidDecryptResponse = body.getJSONObject("top_oaid_decrypt_response");
|
|
|
+ JSONObject receiverList = topOaidDecryptResponse.getJSONObject("receiver_list");
|
|
|
+ JSONArray receiver1 = receiverList.getJSONArray("receiver");
|
|
|
+ JSONObject rece = receiver1.getJSONObject(0);
|
|
|
+ TopOaidDecryptResponse.Receiver receiver = JSONObject.parseObject(rece.toJSONString(), TopOaidDecryptResponse.Receiver.class);
|
|
|
+ /** 解密数据赋值 */
|
|
|
+ // 姓名
|
|
|
+ trade.setReceiverName(receiver.getName());
|
|
|
+ // 电话
|
|
|
+ trade.setReceiverMobile(receiver.getMobile());
|
|
|
+ // 省份
|
|
|
+ trade.setReceiverState(receiver.getState());
|
|
|
+ // 城市
|
|
|
+ trade.setReceiverCity(receiver.getCity());
|
|
|
+ // 区域
|
|
|
+ trade.setReceiverDistrict(receiver.getDistrict());
|
|
|
+ // 街道
|
|
|
+ trade.setReceiverTown(receiver.getTown());
|
|
|
+ // 详细地址
|
|
|
+ trade.setReceiverAddress(rece.getString("address_detail"));
|
|
|
+ // 缓存数据
|
|
|
+ RedisUtils.put(addrKey, rece.toJSONString());
|
|
|
+ RedisUtils.expire(addrKey, DateTimeUtil.addDay(new Date(), 10));
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return trade;
|
|
|
}
|
|
|
|