package com.yeshi.fanli.util.taobao;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.yeshi.fanli.dto.order.OrderQuery;
|
import com.yeshi.fanli.dto.taobao.WeiQuanOrderResult;
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoPunishOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
|
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TaoBaoConstant;
|
import com.yeshi.fanli.util.TimeUtil;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
//淘宝客API接口
|
public class TaoKeOrderApiUtil {
|
|
public static int TK_STATUS_ALL = 1;
|
public static int TK_STATUS_SETTLEMENT = 3;
|
public static int TK_STATUS_PAY = 12;
|
public static int TK_STATUS_SUCCESS = 14;
|
public static int TK_STATUS_INVALID = 13;
|
|
/**
|
* 获取会员订单
|
*
|
* @param startTime-开始时间
|
* @param page-页码
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
private static List<TaoBaoOrder> getTaoBaoSpecialOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderScene = 3;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
orderQuery.span = span;
|
orderQuery.orderQueryType = "create_time";
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
/**
|
* 获取第三方会员订单
|
*
|
* @param startTime
|
* @param page
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
private static List<TaoBaoOrder> getTaoBaoSpecialThirdOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderQueryType = "create_time";
|
orderQuery.orderScene = 3;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
orderQuery.span = span;
|
orderQuery.orderCountType = 2;
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
/**
|
* 获取渠道订单
|
*
|
* @param startTime
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
private static List<TaoBaoOrder> getTaoBaoRelationOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.span = span;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderQueryType = "create_time";
|
orderQuery.orderScene = 2;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
/**
|
* 第三方渠道订单
|
*
|
* @param startTime
|
* @param page
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
private static List<TaoBaoOrder> getTaoBaoRelationThirdOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.span = span;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderQueryType = "create_time";
|
orderQuery.orderScene = 2;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
orderQuery.orderCountType = 2;
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
/**
|
* 获取所有的订单(不带渠道信息与会员信息)
|
*
|
* @param startTime
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
public static List<TaoBaoOrder> getTaoBaoAllOrder(String startTime, String appKey, String appSecret) {
|
|
return getTaoBaoAllOrder(startTime, 1200, 1, appKey, appSecret);
|
}
|
|
public static List<TaoBaoOrder> getTaoBaoAllOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.span = span;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderQueryType = "create_time";
|
orderQuery.orderScene = 1;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
orderQuery.orderCountType = 1;
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
/**
|
* 获取第三方订单
|
*
|
* @param startTime
|
* @param span
|
* @param page
|
* @param appKey
|
* @param appSecret
|
* @return
|
*/
|
public static List<TaoBaoOrder> getTaoBaoThirdAllOrder(String startTime, int span, int page, String appKey,
|
String appSecret) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.startTime = startTime;
|
orderQuery.span = span;
|
orderQuery.tkStatus = 1;
|
orderQuery.orderQueryType = "create_time";
|
orderQuery.orderScene = 1;
|
orderQuery.pageNo = page;
|
orderQuery.pageSize = 100;
|
orderQuery.orderCountType = 2;
|
return queryTaoBaoOrder(orderQuery, appKey, appSecret);
|
}
|
|
private static TaoBaoPunishOrder parsePunishOrder(JSONObject data) {
|
TaoBaoPunishOrder order = new TaoBaoPunishOrder();
|
order.setPunishStatus(data.optString("punish_status"));
|
order.setRelationId(data.optString("relation_id"));
|
order.setSettleMonth(data.optString("settle_month"));
|
order.setSpecialId(data.optString("special_id"));
|
order.setTbTradeId(data.optString("tb_trade_id"));
|
order.setTbTradeParentId(data.optString("tb_trade_parent_id"));
|
order.setTkAdzoneId(data.optString("tk_adzone_id"));
|
order.setTkPubId(data.optString("tk_pub_id"));
|
order.setTkSiteId(data.optString("tk_site_id"));
|
order.setTkTradeCreateTime(data.optString("tk_trade_create_time"));
|
order.setViolationType(data.optString("violation_type"));
|
return order;
|
}
|
|
public static List<TaoBaoPunishOrder> getPunishOrderList(Long startTime, Long endTime) {
|
List<TaoBaoPunishOrder> resultList = new ArrayList<>();
|
TaoKeAppInfo app = new TaoKeAppInfo();
|
app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
Map<String, String> map = new HashMap<>();
|
map.put("method", "taobao.tbk.dg.punish.order.get");
|
JSONObject data = new JSONObject();
|
data.put("page_no", 1);
|
data.put("page_size", 100);
|
int sub = (int) ((endTime - startTime) / 1000);
|
int span = 1800;
|
int count = sub % span == 0 ? sub / span : sub / span + 1;
|
for (int i = 0; i < count; i++) {
|
int totalSpanOrderCount = 0;
|
List<TaoBaoPunishOrder> spanOrderList = new ArrayList<>();
|
long startT = startTime + i * span * 1000;
|
data.put("start_time", TimeUtil.getGernalTime(startT, "yyyy-MM-dd HH:mm:ss"));
|
data.put("span", 1800 + "");
|
map.put("af_order_option", data.toString());
|
try {
|
JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
JSONObject dataJson = json.optJSONObject("tbk_dg_punish_order_get_response").optJSONObject("result")
|
.optJSONObject("data");
|
JSONArray array = dataJson.optJSONObject("results").optJSONArray("result");
|
if (array != null)
|
for (int n = 0; n < array.size(); n++) {
|
spanOrderList.add(parsePunishOrder(array.optJSONObject(n)));
|
}
|
totalSpanOrderCount = dataJson.optInt("total_count");
|
int page = 2;
|
while (totalSpanOrderCount > spanOrderList.size())// 存在下一页
|
{
|
data.put("page_no", page++);
|
map.put("af_order_option", data.toString());
|
json = TaoKeBaseUtil.baseRequest(map, app);
|
dataJson = json.optJSONObject("tbk_dg_punish_order_get_response").optJSONObject("data");
|
array = dataJson.optJSONArray("results");
|
if (array != null)
|
for (int n = 0; n < array.size(); n++) {
|
spanOrderList.add(parsePunishOrder(array.optJSONObject(n)));
|
}
|
totalSpanOrderCount = dataJson.optInt("total_count");
|
}
|
resultList.addAll(spanOrderList);
|
System.out.println(json);
|
} catch (TaoKeApiException e) {
|
e.printStackTrace();
|
}
|
}
|
return resultList;
|
}
|
|
private static List<TaoBaoOrder> queryTaoBaoOrder(OrderQuery orderQuery, String appKey, String appSecret) {
|
|
Map<String, String> map = new HashMap<>();
|
map.put("method", "taobao.tbk.order.get");
|
map.put("fields",
|
"tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk_status,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,relation_id,tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,special_id,click_time,relation_id,special_id");
|
if (orderQuery.startTime != null)
|
map.put("start_time", orderQuery.startTime);
|
if (orderQuery.span != null)
|
map.put("span", orderQuery.span + "");
|
map.put("page_no", orderQuery.pageNo + "");
|
map.put("page_size", orderQuery.pageSize + "");
|
|
if (orderQuery.tkStatus != null)
|
map.put("tk_status", orderQuery.tkStatus + "");
|
if (orderQuery.orderQueryType != null)
|
map.put("order_query_type", orderQuery.orderQueryType);
|
if (orderQuery.orderScene != null)
|
map.put("order_scene", orderQuery.orderScene + "");
|
|
if (orderQuery.orderCountType != null)
|
map.put("order_count_type", orderQuery.orderCountType + "");
|
|
TaoKeAppInfo app = new TaoKeAppInfo();
|
app.setAppKey(appKey);
|
app.setAppSecret(appSecret);
|
try {
|
JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
return parseTaoBaoOrder(json.toString());
|
} catch (TaoKeApiException e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
|
private static List<TaoBaoOrder> parseTaoBaoOrder(String response) {
|
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
|
JSONObject data = JSONObject.fromObject(response);
|
if (data.optJSONObject("tbk_order_get_response") == null)
|
return orderList;
|
if (data.optJSONObject("tbk_order_get_response").optJSONObject("results") == null)
|
return orderList;
|
if (data.optJSONObject("tbk_order_get_response").optJSONObject("results").optJSONArray("n_tbk_order") == null)
|
return orderList;
|
|
JSONArray array = data.optJSONObject("tbk_order_get_response").optJSONObject("results")
|
.optJSONArray("n_tbk_order");
|
for (int i = 0; i < array.size(); i++) {
|
|
JSONObject item = array.optJSONObject(i);
|
try {
|
TaoBaoOrder taoBaoOrder = new TaoBaoOrder();
|
taoBaoOrder.setAdPositionId(item.optString("adzone_id"));
|
taoBaoOrder.setAdPositionName(item.optString("adzone_name"));
|
taoBaoOrder.setAuctionId(item.optLong("num_iid"));
|
taoBaoOrder.setClassName(item.optString("auction_category"));
|
taoBaoOrder.setClickTime(item.optString("click_time"));
|
taoBaoOrder.setCount(item.optInt("item_num"));
|
taoBaoOrder.setCreateTime(item.optString("create_time"));
|
if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
|
taoBaoOrder.seteIncome(new BigDecimal(item.optString("total_commission_fee")));
|
else
|
taoBaoOrder.seteIncome(new BigDecimal(0));
|
|
if (!StringUtil.isNullOrEmpty(item.optString("pub_share_pre_fee")))
|
taoBaoOrder.setEstimate(new BigDecimal(item.optString("pub_share_pre_fee")));
|
else
|
taoBaoOrder.setEstimate(new BigDecimal(0));
|
taoBaoOrder.setiRatio(new BigDecimal(item.optString("income_rate")).multiply(new BigDecimal(100)));
|
taoBaoOrder.setLatestUpdateTime(null);
|
taoBaoOrder.setManagerWangWang(null);
|
taoBaoOrder.setOrderBy(null);
|
taoBaoOrder.setOrderId(item.optString("trade_parent_id"));
|
if (item.optInt("tk_status") == 12)
|
taoBaoOrder.setOrderState("订单付款");
|
else if (item.optInt("tk_status") == 3)
|
taoBaoOrder.setOrderState("订单结算");
|
else if (item.optInt("tk_status") == 13)
|
taoBaoOrder.setOrderState("订单失效");
|
else if (item.optInt("tk_status") == 14)
|
taoBaoOrder.setOrderState("订单成功");
|
|
taoBaoOrder.setOrderType(item.optString("order_type"));
|
if (!StringUtil.isNullOrEmpty(item.optString("alipay_total_price")))
|
taoBaoOrder.setPayment(new BigDecimal(item.optString("alipay_total_price")));
|
else
|
taoBaoOrder.setPayment(new BigDecimal(0));
|
taoBaoOrder.setPrice(new BigDecimal(item.optString("price")));
|
if (!StringUtil.isNullOrEmpty(item.optString("pay_price")))
|
taoBaoOrder.setSettlement(new BigDecimal(item.optString("pay_price")));
|
else
|
taoBaoOrder.setSettlement(new BigDecimal(0));
|
taoBaoOrder.setSettlementTime(item.optString("earning_time"));
|
taoBaoOrder.setShop(item.optString("seller_shop_title"));
|
taoBaoOrder.setSourceMediaId(item.optString("site_id"));
|
taoBaoOrder.setSourceMediaName(item.optString("site_name"));
|
taoBaoOrder.setsRatio(null);
|
if (!StringUtil.isNullOrEmpty(item.optString("subsidy_fee")))// 补贴金额
|
taoBaoOrder.setSubsidy(new BigDecimal(item.optString("subsidy_fee")));
|
if (!StringUtil.isNullOrEmpty(item.optString("subsidy_rate")))
|
taoBaoOrder.setSubsidyRatio(
|
new BigDecimal(item.optString("subsidy_rate")).multiply(new BigDecimal(100)));
|
taoBaoOrder.setSubsidyType(item.optString("subsidy_type"));
|
taoBaoOrder.setTechnologySupportPercent(null);
|
taoBaoOrder.setThirdService(null);
|
taoBaoOrder.setTitle(item.optString("item_title"));
|
if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
|
taoBaoOrder.setTkMoney(new BigDecimal(item.optString("total_commission_fee")));
|
else
|
taoBaoOrder.setTkMoney(new BigDecimal(0));
|
if (!StringUtil.isNullOrEmpty(item.optString("commission_rate")))
|
taoBaoOrder
|
.setTkRate(new BigDecimal(item.optString("commission_rate")).multiply(new BigDecimal(100)));
|
else if (!StringUtil.isNullOrEmpty(item.optString("total_commission_rate")))
|
taoBaoOrder.setTkRate(
|
new BigDecimal(item.optString("total_commission_rate")).multiply(new BigDecimal(100)));
|
taoBaoOrder.setTransactionPlatform(item.optString("terminal_type"));
|
taoBaoOrder.setRelationId(item.optString("relation_id"));
|
taoBaoOrder.setSpecialId(item.optString("special_id"));
|
taoBaoOrder.setTradeId(item.optString("trade_id"));
|
orderList.add(taoBaoOrder);
|
} catch (Exception e) {
|
try {
|
LogHelper.errorDetailInfo(e, "订单号信息:" + item.toString(), "订单解析出错");
|
} catch (Exception e1) {
|
}
|
}
|
}
|
|
return orderList;
|
}
|
|
private static List<TaoBaoOrder> getSpecialOrder(long startTime, int span) {
|
int page = 1;
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = getTaoBaoSpecialOrder(startTimeStr, span, page, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
|
TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
while (orderList.size() == 100 * page) {
|
page++;
|
List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取第三方普通订单
|
*
|
* @param startTime
|
* @param span
|
* @return
|
*/
|
private static List<TaoBaoOrder> getThirdTSpecialOrder(long startTime, int span) {
|
int page = 1;
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = getTaoBaoSpecialThirdOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
while (orderList.size() == 100 * page) {
|
page++;
|
List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialThirdOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
private static List<TaoBaoOrder> getRelationOrder(long startTime, int span) {
|
int page = 1;
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = getTaoBaoRelationOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
while (orderList.size() == 100 * page) {
|
page++;
|
List<TaoBaoOrder> tempOrderList = getTaoBaoRelationOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
private static List<TaoBaoOrder> getThirdRelationOrder(long startTime, int span) {
|
int page = 1;
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
List<TaoBaoOrder> orderList = getTaoBaoRelationThirdOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
while (orderList.size() == 100 * page) {
|
page++;
|
List<TaoBaoOrder> tempOrderList = getTaoBaoRelationThirdOrder(startTimeStr, span, page,
|
TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取某个区间的会员订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
public static List<TaoBaoOrder> getSpecialOrder(long startTime, long endTime) {
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
|
int count = (int) (span / 1200);
|
if (span % 1200 != 0)
|
count++;
|
for (int i = 0; i < count; i++) {
|
long startT = startTime + i * 1200 * 1000L;
|
int s = 1200;
|
if (endTime < startT + 1200 * 1000L) {
|
s = (int) ((endTime - startT) / 1000) + 1;
|
if (s < 60)
|
s = 60;
|
}
|
List<TaoBaoOrder> tempOrderList = getSpecialOrder(startT, s);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取某个区间的第三方会员订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
public static List<TaoBaoOrder> getThirdSpecialOrder(long startTime, long endTime) {
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
|
int count = (int) (span / 1200);
|
if (span % 1200 != 0)
|
count++;
|
for (int i = 0; i < count; i++) {
|
long startT = startTime + i * 1200 * 1000L;
|
int s = 1200;
|
if (endTime < startT + 1200 * 1000L) {
|
s = (int) ((endTime - startT) / 1000) + 1;
|
if (s < 60)
|
s = 60;
|
}
|
List<TaoBaoOrder> tempOrderList = getThirdTSpecialOrder(startT, s);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取渠道订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
public static List<TaoBaoOrder> getRelationOrder(long startTime, long endTime) {
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
|
int count = (int) (span / 1200);
|
if (span % 1200 != 0)
|
count++;
|
for (int i = 0; i < count; i++) {
|
long startT = startTime + i * 1200 * 1000L;
|
int s = 1200;
|
if (endTime < startT + 1200 * 1000L) {
|
s = (int) ((endTime - startT) / 1000) + 1;
|
if (s < 60)
|
s = 60;
|
}
|
List<TaoBaoOrder> tempOrderList = getRelationOrder(startT, s);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取某个区间的第三方渠道订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
public static List<TaoBaoOrder> getThirdRelationOrder(long startTime, long endTime) {
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
|
int count = (int) (span / 1200);
|
if (span % 1200 != 0)
|
count++;
|
for (int i = 0; i < count; i++) {
|
long startT = startTime + i * 1200 * 1000L;
|
int s = 1200;
|
if (endTime < startT + 1200 * 1000L) {
|
s = (int) ((endTime - startT) / 1000) + 1;
|
if (s < 60)
|
s = 60;
|
}
|
List<TaoBaoOrder> tempOrderList = getThirdRelationOrder(startT, s);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
private static List<TaoBaoOrder> getTaoBaoSettleOrders(long startTime, int span, boolean third) {
|
OrderQuery orderQuery = new OrderQuery();
|
orderQuery.span = span;
|
orderQuery.orderQueryType = "settle_time";
|
orderQuery.orderScene = 1;
|
orderQuery.pageSize = 100;
|
int page = 1;
|
orderQuery.pageNo = page;
|
if (third)
|
orderQuery.orderCountType = 2;
|
else
|
orderQuery.orderCountType = 1;
|
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
orderQuery.startTime = startTimeStr;
|
List<TaoBaoOrder> orderList = queryTaoBaoOrder(orderQuery, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
|
TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
while (orderList.size() == 100 * page) {
|
page++;
|
orderQuery.pageNo = page;
|
List<TaoBaoOrder> tempOrderList = queryTaoBaoOrder(orderQuery, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
|
TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
}
|
return orderList;
|
}
|
|
/**
|
* 获取结算订单
|
*
|
* @param startTime
|
* @param endTime
|
* @param third
|
* -是否为第三方订单
|
* @return
|
*/
|
public static List<TaoBaoOrder> getTaoBaoSettleOrders(long startTime, long endTime, boolean third) {
|
List<TaoBaoOrder> orderList = new ArrayList<>();
|
long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
|
int count = (int) (span / 1200);
|
if (span % 1200 != 0)
|
count++;
|
for (int i = 0; i < count; i++) {
|
long startT = startTime + i * 1200 * 1000L;
|
int s = 1200;
|
if (endTime < startT + 1200 * 1000L) {
|
s = (int) ((endTime - startT) / 1000) + 1;
|
if (s < 60)
|
s = 60;
|
}
|
List<TaoBaoOrder> tempOrderList = getTaoBaoSettleOrders(startT, s, third);
|
if (tempOrderList != null && tempOrderList.size() > 0)
|
orderList.addAll(tempOrderList);
|
|
try {
|
Thread.sleep(1000 * 10);// 加个延时,防止API请求频率限制
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
return orderList;
|
}
|
|
public static WeiQuanOrderResult getTaoBaoRelationWeiQuanOrderList(Date startTime, int page, boolean third) {
|
|
return getRelationAndSpecialWeiQuanOrderList(startTime, page, third, 1);
|
}
|
|
public static WeiQuanOrderResult getTaoBaoSpecialWeiQuanOrderList(Date startTime, int page, boolean third) {
|
|
return getRelationAndSpecialWeiQuanOrderList(startTime, page, third, 2);
|
}
|
|
private static WeiQuanOrderResult getRelationAndSpecialWeiQuanOrderList(Date startTime, int page, boolean third,
|
int bizType) {
|
WeiQuanOrderResult finalResult = new WeiQuanOrderResult();
|
|
List<TaoBaoWeiQuanOrder> list = new ArrayList<>();
|
finalResult.orderList = list;
|
Map<String, String> map = new HashMap<>();
|
map.put("method", "taobao.tbk.relation.refund");
|
|
JSONObject option = new JSONObject();
|
option.put("search_type", 2);
|
option.put("refund_type", third ? 2 : 1);
|
option.put("start_time", TimeUtil.getGernalTime(startTime.getTime(), "yyyy-MM-dd HH:mm:ss"));
|
option.put("page_no", page);
|
option.put("page_size", 100);
|
option.put("biz_type", bizType);
|
map.put("search_option", option.toString());
|
|
TaoKeAppInfo app = new TaoKeAppInfo();
|
app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
try {
|
JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
JSONObject results = json.optJSONObject("tbk_relation_refund_response").optJSONObject("result")
|
.optJSONObject("data").optJSONObject("results");
|
if (results == null)
|
return finalResult;
|
|
int count = results.optInt("total_count");
|
finalResult.totalCount = count;
|
JSONArray array = results.optJSONArray("result");
|
if (array != null)
|
for (int i = 0; i < array.size(); i++) {
|
JSONObject item = array.optJSONObject(i);
|
TaoBaoWeiQuanOrder order = new TaoBaoWeiQuanOrder();
|
order.setGoodsName(item.optString("tb_auction_title"));
|
BigDecimal fanMoney = new BigDecimal(0);
|
if (!StringUtil.isNullOrEmpty(item.optString("tk_subsidy_fee_refund3rd_pub"))) {
|
fanMoney= fanMoney.add(new BigDecimal(item.optString("tk_subsidy_fee_refund3rd_pub")));
|
}
|
if (!StringUtil.isNullOrEmpty(item.optString("tk_commission_fee_refund3rd_pub"))) {
|
fanMoney= fanMoney.add(new BigDecimal(item.optString("tk_commission_fee_refund3rd_pub")));
|
}
|
if (!StringUtil.isNullOrEmpty(item.optString("tk_subsidy_fee_refund_pub"))) {
|
fanMoney= fanMoney.add(new BigDecimal(item.optString("tk_subsidy_fee_refund_pub")));
|
}
|
if (!StringUtil.isNullOrEmpty(item.optString("tk_commission_fee_refund_pub"))) {
|
fanMoney= fanMoney.add(new BigDecimal(item.optString("tk_commission_fee_refund_pub")));
|
}
|
|
if (fanMoney.compareTo(new BigDecimal(0)) == 0)
|
fanMoney = null;
|
|
order.setFanMoney(fanMoney);
|
order.setJieSuanTime(new Date(
|
TimeUtil.convertToTimeTemp(item.optString("earning_time"), "yyyy-MM-dd HH:mm:ss")));
|
if (!StringUtil.isNullOrEmpty(item.optString("refund_fee")))
|
order.setMoney(new BigDecimal(item.optString("refund_fee")));
|
order.setOrderId(item.optString("tb_trade_parent_id"));
|
order.setOrderItemId(item.optString("tb_trade_id"));
|
int state = item.optInt("refund_status");
|
if (state == 4)
|
order.setState("维权创建");
|
else if (state == 2)
|
order.setState("维权成功");
|
else if (state == 3)
|
order.setState("维权失败");
|
|
if (!StringUtil.isNullOrEmpty(item.optString("tk_refund_suit_time")))
|
order.setWeiQuanFinishTime(new Date(TimeUtil
|
.convertToTimeTemp(item.optString("tk_refund_suit_time"), "yyyy-MM-dd HH:mm:ss")));
|
order.setWeiQuanTime(new Date(
|
TimeUtil.convertToTimeTemp(item.optString("tk_refund_time"), "yyyy-MM-dd HH:mm:ss")));
|
list.add(order);
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return finalResult;
|
}
|
}
|