package com.yeshi.fanli.util.taobao;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import org.apache.commons.httpclient.HttpClient;
|
import org.apache.commons.httpclient.HttpException;
|
import org.apache.commons.httpclient.methods.GetMethod;
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.HttpUtil;
|
|
import com.yeshi.fanli.dto.order.OrderItem;
|
import com.yeshi.fanli.entity.bus.user.Order;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.order.CommonOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
import com.yeshi.fanli.exception.TaoBaoOrderException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
|
import jxl.Sheet;
|
import jxl.Workbook;
|
import net.sf.json.JSONObject;
|
|
@Component
|
public class TaoBaoOrderUtil {
|
|
private static final String ORDERFAILURE = "订单失效";
|
private static final String ORDERPAYMENT = "订单付款";
|
private static final String ORDERSETTLEMENT = "订单结算";
|
private static final String ORDERSUCCESS = "订单成功";
|
|
/**
|
* 获取淘宝联盟的Cookie
|
*
|
* @param account
|
* @return
|
*/
|
public static String getTaoBaoCookie(String account) {
|
HttpClient client = new HttpClient();
|
try {
|
GetMethod gm = new GetMethod(String.format("http://193.112.35.168:8091/tb/cookie/getcookie?account=%s",
|
URLEncoder.encode(account, "UTF-8")));
|
client.executeMethod(gm);
|
String as = gm.getResponseBodyAsString();
|
JSONObject root = JSONObject.fromObject(as);
|
if (root.optInt("code") == 0) {
|
// EhcacheUtil.removeCache(account);
|
String cookie = root.optString("cookie");
|
return cookie;
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
// Cache cache = EhcacheUtil.getCache(account);
|
// if(cache==null){
|
// EhcacheUtil.addCahae(EhcacheUtil.getMyPubCacheConfig(account));
|
// String title="cookie失效提醒";
|
// String content="淘宝联盟账号["+account+"],已经失效了!";
|
// String emails = taoBaoOrderUtil.configService.get("send_email");
|
// if(emails != null && !"".equals(emails.trim())){
|
// String[] addr = emails.split(",");
|
// for (String email : addr) {
|
// MailSenderUtil.sendEmail(email, title, content);
|
// }
|
// }
|
// }
|
return "";
|
}
|
|
/**
|
* 上报联盟的Cookie无效
|
*
|
* @param account
|
*/
|
public static void reportCookieInvalid(String account) {
|
if (1 > 0)
|
return;
|
HttpClient client = new HttpClient();
|
try {
|
GetMethod gm = new GetMethod(String.format("http://193.112.35.168:8091/tb/cookie/reportinvalid?account=%s",
|
URLEncoder.encode(account, "UTF-8")));
|
client.executeMethod(gm);
|
String as = gm.getResponseBodyAsString();
|
JSONObject root = JSONObject.fromObject(as);
|
if (root.optInt("code") == 0) {// 上报成功
|
LogHelper.cookieLog("上报成功!");
|
return;
|
}
|
LogHelper.cookieLog("上报失败!");
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
LogHelper.cookieLog("上报失败!");
|
}
|
}
|
|
/**
|
* 按天数爬取淘宝联盟的返利订单
|
*
|
* @param day
|
* @return
|
*/
|
public static List<TaoBaoOrder> getOrderList(int day, TaoBaoUnionConfig config) {
|
String cookie1 = getTaoBaoCookie(config.getAccount());
|
|
LogHelper.cookieLog("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
|
String[] cookies = new String[] { cookie1 };
|
List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
|
int i = 0;
|
for (String cookie : cookies) {
|
if (com.yeshi.fanli.util.StringUtil.isNullOrEmpty(cookie)) {
|
i++;
|
continue;
|
}
|
// 原始为30
|
String startTime = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24L * day,
|
"yyyy-MM-dd");
|
String endTime = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd");
|
|
String url = String.format(
|
"http://pub.alimama.com/report/getTbkPaymentDetails.json?spm=a219t.7664554.1998457203.85.9pFBtK&queryType=1&payStatus=&DownloadID=DOWNLOAD_REPORT_INCOME_NEW&startTime=%s&endTime=%s",
|
startTime, endTime);
|
HttpClient client = new HttpClient();
|
// client.getHostConfiguration().setProxy("192.168.1.200", 8888);
|
GetMethod gm = new GetMethod(url);
|
gm.setRequestHeader("Cookie", cookie);
|
gm.setRequestHeader("User-Agent",
|
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
|
InputStream inputStream = null;
|
try {
|
client.executeMethod(gm);
|
System.out.println(gm.getStatusCode());
|
if (gm.getStatusCode() == 200) {
|
System.out.println(gm.getResponseHeader("Content-Type").getValue());
|
if (!gm.getResponseHeader("Content-Type").getValue().contains("excel")) {
|
if (i == 0) {
|
reportCookieInvalid(config.getAccount());
|
}
|
continue;
|
}
|
inputStream = gm.getResponseBodyAsStream();
|
list.addAll(parseOrder(inputStream));
|
|
// String path =
|
// TaoBaoOrderUtil.class.getClassLoader().getResource("/").getPath();
|
// String yyyyMMddHHmmss =
|
// TimeUtil.yyyyMMddHHmmss(System.currentTimeMillis());
|
// FileUtils.copyInputStreamToFile(inputStream, new
|
// File(path+"/excel/"+yyyyMMddHHmmss+"."+"xls"));
|
}
|
} catch (HttpException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
i++;
|
if (inputStream != null) {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
return list;
|
}
|
|
/**
|
* 根据链接下载淘宝订单
|
*
|
* @param url
|
* @return
|
*/
|
private static List<TaoBaoOrder> downLoadOrderFromTaoBao(String url, TaoBaoUnionConfig config)
|
throws TaoBaoOrderException {
|
String cookie1 = getTaoBaoCookie(config.getAccount());
|
LogHelper.cookieLog("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
String[] cookies = new String[] { cookie1 };
|
List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
|
int i = 0;
|
for (String cookie : cookies) {
|
if (com.yeshi.fanli.util.StringUtil.isNullOrEmpty(cookie)) {
|
i++;
|
continue;
|
}
|
// 原始为30
|
|
HttpClient client = new HttpClient();
|
// client.getHostConfiguration().setProxy("192.168.1.122", 8888);
|
GetMethod gm = new GetMethod(url);
|
gm.setRequestHeader("Cookie", cookie);
|
gm.setRequestHeader("User-Agent",
|
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
|
gm.setRequestHeader("Referer", "http://pub.alimama.com/myunion.htm");
|
gm.setRequestHeader("Accept",
|
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
gm.setRequestHeader("Upgrade-Insecure-Requests", "1");
|
gm.setRequestHeader("Accept-Encoding", "gzip, deflate");
|
gm.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
|
InputStream inputStream = null;
|
try {
|
client.executeMethod(gm);
|
System.out.println(gm.getStatusCode());
|
if (gm.getStatusCode() == 200) {
|
System.out.println(gm.getResponseHeader("Content-Type").getValue());
|
if (!gm.getResponseHeader("Content-Type").getValue().contains("excel")) {
|
if (i == 0) {
|
throw new TaoBaoOrderException(gm.getStatusCode(), "返回的内容异常");
|
}
|
continue;
|
}
|
inputStream = gm.getResponseBodyAsStream();
|
list.addAll(parseOrder(inputStream));
|
|
// String path =
|
// TaoBaoOrderUtil.class.getClassLoader().getResource("/").getPath();
|
// String yyyyMMddHHmmss =
|
// TimeUtil.yyyyMMddHHmmss(System.currentTimeMillis());
|
// FileUtils.copyInputStreamToFile(inputStream, new
|
// File(path+"/excel/"+yyyyMMddHHmmss+"."+"xls"));
|
} else {
|
throw new TaoBaoOrderException(gm.getStatusCode(), gm.getResponseHeader("Location").getValue());
|
}
|
} catch (HttpException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
i++;
|
if (inputStream != null) {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 按时间戳爬取淘宝联盟的返利订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
@SuppressWarnings("deprecation")
|
public static List<TaoBaoOrder> getOrderList(long startTime, long endTime, TaoBaoUnionConfig config)
|
throws TaoBaoOrderException {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
String endTimeStr = TimeUtil.getGernalTime(endTime, "yyyy-MM-dd HH:mm:ss");
|
|
String url = String.format(
|
"http://pub.alimama.com/report/getTbkPaymentDetails.json?spm=a219t.7664554.1998457203.10.7a7835d9UJKaiP&queryType=1&payStatus=&DownloadID=DOWNLOAD_REPORT_INCOME_NEW&startTime=%s&endTime=%s",
|
URLEncoder.encode(startTimeStr), URLEncoder.encode(endTimeStr));
|
|
return downLoadOrderFromTaoBao(url, config);
|
}
|
|
/**
|
* 爬取第三方服务商推广订单
|
*
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
@SuppressWarnings("deprecation")
|
public static List<TaoBaoOrder> getThirdServiceOrderList(long startTime, long endTime, TaoBaoUnionConfig config)
|
throws TaoBaoOrderException {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
|
String endTimeStr = TimeUtil.getGernalTime(endTime, "yyyy-MM-dd HH:mm:ss");
|
String url = String.format(
|
"http://pub.alimama.com/report/getTbkThirdPaymentDetails.json?spm=a219t.7664554.1998457203.10.7a7835d9UJKaiP&queryType=2&payStatus=&DownloadID=DOWNLOAD_REPORT_TK3_PUB&startTime=%s&endTime=%s",
|
URLEncoder.encode(startTimeStr), URLEncoder.encode(endTimeStr));
|
return downLoadOrderFromTaoBao(url, config);
|
}
|
|
/**
|
* 爬取最近30天的订单
|
*
|
* @return
|
*/
|
public static List<TaoBaoOrder> getOrderList(TaoBaoUnionConfig config) {
|
return getOrderList(30, config);
|
}
|
|
|
|
public static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(String excelPath) {
|
try {
|
return parseWeiQuanOrder(new FileInputStream(new File(excelPath)));
|
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
private static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(String cookies, long startTime, long endTime) {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd");
|
String endTimeStr = TimeUtil.getGernalTime(endTime, "yyyy-MM-dd");
|
String url = String.format(
|
"http://pub.alimama.com/report/getNewTbkRefundPaymentDetails.json?spm=a219t.7664554.1998457203.105.49cc35d9eDSunp&refundType=1&searchType=1&DownloadID=DOWNLOAD_EXPORT_CPSPAYMENT_REFUND_OVERVIEW&startTime=%s&endTime=%s",
|
startTimeStr, endTimeStr);
|
Map<String, String> headers = new HashMap<>();
|
headers.put("User-Agent",
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
|
headers.put("Cookie", cookies);
|
headers.put("Referer", "http://pub.alimama.com/myunion.htm");
|
headers.put("Upgrade-Insecure-Requests", "1");
|
InputStream in = HttpUtil.getAsInputStream(url, headers);
|
|
List<TaoBaoWeiQuanOrder> list = new ArrayList<>();
|
list = parseWeiQuanOrder(in);
|
|
list.addAll(getThirdWeiQuanOrders(cookies, startTime, endTime));
|
|
// if (list != null)
|
// for (int i = 0; i < list.size(); i++) {
|
// if (!list.get(i).getState().equalsIgnoreCase("维权成功")) {
|
// list.remove(i);
|
// i--;
|
// }
|
// }
|
return list;
|
}
|
|
// 第三方订单维权
|
private static List<TaoBaoWeiQuanOrder> getThirdWeiQuanOrders(String cookies, long startTime, long endTime) {
|
String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd");
|
String endTimeStr = TimeUtil.getGernalTime(endTime, "yyyy-MM-dd");
|
String url = String.format(
|
"http://pub.alimama.com/report/getNewTbkRefundPaymentDetails.json?spm=a219t.7664554.1998457203.163.158a35d9r0bV0O&refundType=2&searchType=3&DownloadID=DOWNLOAD_EXPORT_CPSPAYMENT_REFUND_OVERVIEW&startTime=%s&endTime=%s",
|
startTimeStr, endTimeStr);
|
Map<String, String> headers = new HashMap<>();
|
headers.put("User-Agent",
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
|
headers.put("Cookie", cookies);
|
headers.put("Referer", "http://pub.alimama.com/myunion.htm");
|
headers.put("Upgrade-Insecure-Requests", "1");
|
InputStream in = HttpUtil.getAsInputStream(url, headers);
|
return parseWeiQuanOrder(in);
|
}
|
|
/**
|
* 从excel文件解析订单
|
*
|
* @param in
|
* @return
|
*/
|
public static List<TaoBaoOrder> parseOrder(InputStream in) {
|
try {
|
jxl.Workbook rwb = Workbook.getWorkbook(in);
|
Sheet sheet = rwb.getSheet(0);
|
List<TaoBaoOrder> orderRecordList = new ArrayList<TaoBaoOrder>();
|
int createtimeColumn = 0;
|
int clickTimeColumn = 0;// 点击时间
|
int titleColumn = 0;// 商品名称
|
int auctionIdColumn = 0;// 商品ID
|
int managerWangWangColumn = 0;// 掌柜旺旺
|
int shopColumn = 0;// 所属店铺
|
int countColumn = 0;// 商品数
|
int priceColumn = 0;// 商品单价
|
int orderStateColumn = 0; // 订单状态
|
int orderTypeColumn = 0; // 订单类型
|
int iRatioColumn = 0;// 收入比率
|
int sRatioColumn = 0;// 分成比率
|
|
int paymentColumn = 0; // 付款金额
|
int estimateColumn = 0;// 效果预估
|
int settlementColumn = 0; // 结算金额
|
int incomeColumn = 0;// 预估收入
|
int settlementTimeColumn = 0;// 结算时间
|
|
int tkRateColumn = 0;// 佣金比率
|
int tkMoneyColumn = 0;// 佣金金额
|
|
int technologySupportPercentColumn = 0;// 技术服务费
|
int subsidyRatioColumn = 0;// 补贴比率
|
int subsidyColumn = 0;// 补贴金额
|
int subsidyTypeColumn = 0;// 补贴类型
|
int transactionPlatformColumn = 0;// 成交平台
|
int thirdServiceColumn = 0;// 第三方服务来源
|
|
int orderIdColumn = 0;// 订单编号
|
int classNameColumn = 0; // 分类名称
|
int sourceMediaIdColumn = 0; // 媒体ID
|
int sourceMediaNameColumn = 0;// 来源媒体名称
|
int adPositionIdColumn = 0; // 广告位ID
|
int adPositionNameColumn = 0;// 广告位名称
|
|
for (int c = 0; c < sheet.getColumns(); c++) {
|
String content = sheet.getCell(c, 0).getContents().trim();
|
if ("创建时间".equalsIgnoreCase(content))
|
createtimeColumn = c;
|
else if ("点击时间".equalsIgnoreCase(content))
|
clickTimeColumn = c;
|
else if ("商品信息".equalsIgnoreCase(content))
|
titleColumn = c;
|
else if ("商品ID".equalsIgnoreCase(content))
|
auctionIdColumn = c;
|
else if ("掌柜旺旺".equalsIgnoreCase(content))
|
managerWangWangColumn = c;
|
else if ("所属店铺".equalsIgnoreCase(content))
|
shopColumn = c;
|
else if ("商品数".equalsIgnoreCase(content))
|
countColumn = c;
|
else if ("商品单价".equalsIgnoreCase(content))
|
priceColumn = c;
|
else if ("订单状态".equalsIgnoreCase(content))
|
orderStateColumn = c;
|
else if ("订单类型".equalsIgnoreCase(content))
|
orderTypeColumn = c;
|
else if ("收入比率".equalsIgnoreCase(content))
|
iRatioColumn = c;
|
else if ("分成比率".equalsIgnoreCase(content))
|
sRatioColumn = c;
|
else if ("付款金额".equalsIgnoreCase(content))
|
paymentColumn = c;
|
else if ("效果预估".equalsIgnoreCase(content))
|
estimateColumn = c;
|
else if ("结算金额".equalsIgnoreCase(content))
|
settlementColumn = c;
|
else if ("预估收入".equalsIgnoreCase(content))
|
incomeColumn = c;
|
else if ("结算时间".equalsIgnoreCase(content))
|
settlementTimeColumn = c;
|
else if ("佣金比率".equalsIgnoreCase(content))
|
tkRateColumn = c;
|
else if ("佣金金额".equalsIgnoreCase(content))
|
tkMoneyColumn = c;
|
else if ("技术服务费比率".equalsIgnoreCase(content))
|
technologySupportPercentColumn = c;
|
else if ("补贴比率".equalsIgnoreCase(content))
|
subsidyRatioColumn = c;
|
else if ("补贴金额".equalsIgnoreCase(content))
|
subsidyColumn = c;
|
else if ("补贴类型".equalsIgnoreCase(content))
|
subsidyTypeColumn = c;
|
else if ("成交平台".equalsIgnoreCase(content))
|
transactionPlatformColumn = c;
|
else if ("第三方服务来源".equalsIgnoreCase(content))
|
thirdServiceColumn = c;
|
else if ("订单编号".equalsIgnoreCase(content))
|
orderIdColumn = c;
|
else if ("类目名称".equalsIgnoreCase(content))
|
classNameColumn = c;
|
else if ("来源媒体ID".equalsIgnoreCase(content))
|
sourceMediaIdColumn = c;
|
else if ("来源媒体名称".equalsIgnoreCase(content))
|
sourceMediaNameColumn = c;
|
else if ("广告位ID".equalsIgnoreCase(content))
|
adPositionIdColumn = c;
|
else if ("广告位名称".equalsIgnoreCase(content))
|
adPositionNameColumn = c;
|
}
|
|
for (int r = 1; r < sheet.getRows(); r++) {
|
TaoBaoOrder orderRecord = new TaoBaoOrder();
|
for (int c = 0; c < sheet.getColumns(); c++) {
|
String content = sheet.getCell(c, r).getContents().trim();
|
if (c == createtimeColumn)
|
orderRecord.setCreateTime(content);
|
else if (c == clickTimeColumn)
|
orderRecord.setClickTime(content);
|
else if (c == titleColumn)
|
orderRecord.setTitle(content);
|
else if (c == auctionIdColumn)
|
orderRecord.setAuctionId(Long.parseLong(content));
|
else if (c == managerWangWangColumn)
|
orderRecord.setManagerWangWang(content);
|
else if (c == shopColumn)
|
orderRecord.setShop(content);
|
else if (c == countColumn)
|
orderRecord.setCount(Integer.parseInt(content));
|
else if (c == priceColumn)
|
orderRecord.setPrice(new BigDecimal(content));
|
else if (c == orderStateColumn)
|
orderRecord.setOrderState(content);
|
else if (c == orderTypeColumn)
|
orderRecord.setOrderType(content);
|
else if (c == iRatioColumn)
|
orderRecord.setiRatio(new BigDecimal(content.replace("%", "").trim()));
|
else if (c == sRatioColumn)
|
orderRecord.setsRatio(new BigDecimal(content.replace("%", "").trim()));
|
else if (c == paymentColumn)
|
orderRecord.setPayment(new BigDecimal(content));
|
else if (c == estimateColumn)
|
orderRecord.setEstimate(new BigDecimal(content));
|
else if (c == settlementColumn)
|
orderRecord.setSettlement(new BigDecimal(content));
|
else if (c == incomeColumn)
|
orderRecord.seteIncome(new BigDecimal(content));
|
else if (c == settlementTimeColumn)
|
orderRecord.setSettlementTime(content);
|
else if (c == tkRateColumn)
|
orderRecord.setTkRate(new BigDecimal(content.replace("%", "").trim()));
|
else if (c == tkMoneyColumn)
|
orderRecord.setTkMoney(new BigDecimal(content));
|
else if (c == technologySupportPercentColumn)
|
orderRecord.setTechnologySupportPercent(StringUtil.isNullOrEmpty(content) ? null
|
: new BigDecimal(content.replace("%", "").trim()));
|
else if (c == subsidyRatioColumn)
|
orderRecord.setSubsidyRatio(new BigDecimal(content.replace("%", "").trim()));
|
else if (c == subsidyColumn)
|
orderRecord.setSubsidy(new BigDecimal(content));
|
else if (c == subsidyTypeColumn)
|
orderRecord.setSubsidyType(content);
|
else if (c == transactionPlatformColumn)
|
orderRecord.setTransactionPlatform(content);
|
else if (c == thirdServiceColumn)
|
orderRecord.setThirdService(content);
|
else if (c == orderIdColumn)
|
orderRecord.setOrderId(content);
|
else if (c == classNameColumn)
|
orderRecord.setClassName(content);
|
else if (c == sourceMediaIdColumn)
|
orderRecord.setSourceMediaId(content);
|
else if (c == sourceMediaNameColumn)
|
orderRecord.setSourceMediaName(content);
|
else if (c == adPositionIdColumn)
|
orderRecord.setAdPositionId(content);
|
else if (c == adPositionNameColumn)
|
orderRecord.setAdPositionName(content);
|
}
|
|
if (!StringUtil.isNullOrEmpty(orderRecord.getAuctionId() + ""))
|
orderRecordList.add(orderRecord);
|
}
|
return orderRecordList;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return new ArrayList<TaoBaoOrder>();
|
|
}
|
|
/**
|
* 解析维权订单
|
*
|
* @param in
|
* @return
|
*/
|
public static List<TaoBaoWeiQuanOrder> parseWeiQuanOrder(InputStream in) {
|
try {
|
jxl.Workbook rwb = Workbook.getWorkbook(in);
|
Sheet sheet = rwb.getSheet(0);
|
List<TaoBaoWeiQuanOrder> orderRecordList = new ArrayList<TaoBaoWeiQuanOrder>();
|
for (int r = 1; r < sheet.getRows(); r++) {
|
TaoBaoWeiQuanOrder orderRecord = new TaoBaoWeiQuanOrder();
|
for (int c = 0; c < sheet.getColumns(); c++) {
|
String content = sheet.getCell(c, r).getContents().trim();
|
switch (c) {
|
case 0://维权时间
|
if (!StringUtil.isNullOrEmpty(content))
|
orderRecord.setWeiQuanTime(
|
new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
|
break;
|
case 1://维权完成时间
|
if (!StringUtil.isNullOrEmpty(content))
|
orderRecord.setWeiQuanFinishTime(
|
new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
|
break;
|
case 2://结算时间
|
if (!StringUtil.isNullOrEmpty(content))
|
orderRecord.setJieSuanTime(
|
new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
|
break;
|
case 3://商品名称
|
orderRecord.setGoodsName(content);
|
break;
|
case 5://淘宝订单号
|
orderRecord.setOrderId(content);
|
break;
|
case 6://淘宝子订单号
|
orderRecord.setOrderItemId(content);
|
break;
|
case 7://维权状态
|
orderRecord.setState(content);
|
break;
|
case 8://结算金额
|
|
break;
|
case 9://退款金额
|
orderRecord.setMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
|
break;
|
|
case 10://返还商家金额
|
orderRecord.setFanMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
|
break;
|
}
|
}
|
if (!StringUtil.isNullOrEmpty(orderRecord.getOrderId()))
|
orderRecordList.add(orderRecord);
|
}
|
return orderRecordList;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return new ArrayList<TaoBaoWeiQuanOrder>();
|
}
|
|
public static OrderItem convert(TaoBaoOrder tbo, Order order, BigDecimal rate, List<String> tbImgList) {
|
OrderItem orderItem = new OrderItem();
|
orderItem.setFanTime(0L);
|
orderItem.setIsGift(false);
|
orderItem.setRefundTime(0L);
|
orderItem.setSettlementTime(0L);
|
String createTime = tbo.getCreateTime();
|
orderItem.setCreateTime(TimeUtil.convertDateToTemp2(createTime));
|
if ("订单结算".equalsIgnoreCase(tbo.getOrderState()))
|
orderItem.setFanMoney(MoneyBigDecimalUtil.mul(rate.divide(BigDecimal.valueOf(100)), tbo.geteIncome()));
|
else
|
orderItem.setFanMoney(MoneyBigDecimalUtil.mul(rate.divide(BigDecimal.valueOf(100)), tbo.getEstimate()));
|
if ("订单结算".equalsIgnoreCase(tbo.getOrderState()))
|
orderItem.setPayMoney(tbo.getSettlement());
|
else
|
orderItem.setPayMoney(tbo.getPayment());
|
|
orderItem.setOrder(order);
|
orderItem.setOrderId(tbo.getOrderId());
|
|
if (tbImgList != null && tbImgList.size() > 0) {
|
orderItem.setPicture(tbImgList.get(0));
|
} else {
|
orderItem.setPicture("");
|
}
|
if (ORDERFAILURE.equals(tbo.getOrderState())) {
|
orderItem.setState(-1);
|
} else if (ORDERPAYMENT.equals(tbo.getOrderState())) {
|
orderItem.setState(1);
|
} else if (ORDERSETTLEMENT.equals(tbo.getOrderState())) {
|
orderItem.setState(2);
|
orderItem.setSettlementTime(TimeUtil.convertDateToTemp2(tbo.getSettlementTime()));
|
} else if (ORDERSUCCESS.equals(tbo.getOrderState())) // 其他值
|
{
|
orderItem.setState(2);
|
orderItem.setSettlementTime(TimeUtil.convertDateToTemp2(tbo.getSettlementTime()));
|
}
|
orderItem.setTitle(tbo.getTitle());
|
orderItem.setType(1);
|
UserInfo userInfo = order.getUserInfo();
|
orderItem.setUserInfo(userInfo);
|
orderItem.setAuctionId(tbo.getAuctionId());
|
orderItem.setVersion(order.getVersion());
|
orderItem.setPrePayMoney(new BigDecimal(tbo.getCount()).multiply(tbo.getPrice()));
|
// orderItem.setGoodsPrice(tbo.getPrice());
|
// orderItem.setGoodsNum(tbo.getCount());
|
return orderItem;
|
}
|
|
/**
|
* 将淘宝订单按照订单号归类
|
*
|
* @param orderList
|
* @return
|
*/
|
public static Map<String, List<TaoBaoOrder>> classifyTaoBaoOrderByOrderId(List<TaoBaoOrder> orderList) {
|
Map<String, List<TaoBaoOrder>> map = new ConcurrentHashMap<>();
|
for (TaoBaoOrder order : orderList) {
|
if (map.get(order.getOrderId()) == null)
|
map.put(order.getOrderId(), new ArrayList<>());
|
// 设置排序值,从1开始
|
order.setOrderBy(map.get(order.getOrderId()).size() + 1);
|
map.get(order.getOrderId()).add(order);
|
}
|
|
// 订单排序值灰度测试
|
try {
|
for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
|
String orderId = its.next();
|
try {
|
setOrderBy(map.get(orderId));
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e, "订单号:" + orderId, "订单排序值灰度测试");
|
}
|
}
|
} catch (Exception e) {
|
}
|
|
return map;
|
}
|
|
public static void setOrderBy(List<TaoBaoOrder> orderList) {// 提取一样的
|
if (orderList == null || orderList.size() == 1)
|
return;
|
int len = orderList.get(0).getTradeId().length();
|
int startIndex = 0;
|
for (int i = 0; i < len; i++) {
|
boolean isSame = true;
|
for (int j = 0; j < orderList.size() - 1; j++) {
|
if (orderList.get(j).getTradeId().charAt(i) != orderList.get(j + 1).getTradeId().charAt(i)) {
|
isSame = false;
|
break;
|
}
|
}
|
if (!isSame) {
|
startIndex = i;
|
break;
|
}
|
}
|
int endIndex = 0;
|
|
for (int i = len - 1; i >= 0; i--) {
|
boolean isSame = true;
|
for (int j = 0; j < orderList.size() - 1; j++) {
|
if (orderList.get(j).getTradeId().charAt(i) != orderList.get(j + 1).getTradeId().charAt(i)) {
|
isSame = false;
|
break;
|
}
|
}
|
if (!isSame) {
|
endIndex = i;
|
break;
|
}
|
}
|
for (TaoBaoOrder taoBaoOrder : orderList) {
|
String tradeId = taoBaoOrder.getTradeId();
|
String orderByStr = tradeId.substring(startIndex, endIndex + 1);
|
if (orderByStr.length() > 8) {
|
LogHelper.error("订单的orderBy超过8位:" + taoBaoOrder.getOrderBy());
|
}
|
int orderBy = Integer.parseInt(orderByStr);
|
// taoBaoOrder.setOrderBy(orderBy);
|
}
|
}
|
|
/**
|
* 计算邀请赚的返利时间
|
*
|
* @param balanceTime
|
* @return
|
*/
|
public static long computeInviteFanLiTime(long balanceTime) {
|
int month = Integer.parseInt(TimeUtil.getGernalTime(balanceTime, "M"));
|
int year = Integer.parseInt(TimeUtil.getGernalTime(balanceTime, "yyyy"));
|
String time = "";
|
if (month == 12) {
|
time = (year + 1) + "-1";
|
} else {
|
time = year + "-" + (month + 1);
|
}
|
time += "-25";
|
// 设为25日凌晨到账
|
time += " 00:00:00";
|
// TimeUtil.getGernalTime(balanceTime, "HH:mm:ss");
|
return TimeUtil.convertToTimeTemp(time, "yyyy-M-dd HH:mm:ss");
|
}
|
|
public static CommonOrder convert(TaoBaoOrder taoBaoOrder) {
|
CommonOrder commonOrder = new CommonOrder();
|
commonOrder.setCount(taoBaoOrder.getCount());
|
commonOrder.setCreateTime(new Date());
|
if (taoBaoOrder.geteIncome() != null && taoBaoOrder.getSubsidy() != null)
|
commonOrder.seteIncome(taoBaoOrder.geteIncome().add(taoBaoOrder.getSubsidy()));
|
else
|
commonOrder.seteIncome(taoBaoOrder.geteIncome());
|
commonOrder.setEstimate(taoBaoOrder.getEstimate());
|
commonOrder.setOrderNo(taoBaoOrder.getOrderId());
|
commonOrder.setPayment(taoBaoOrder.getPayment());
|
commonOrder.setSettlement(taoBaoOrder.getSettlement());
|
if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
|
commonOrder.setSettleTime(
|
new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getSettlementTime(), "yyyy-MM-dd HH:mm:ss")));
|
commonOrder.setSourcePosition(String.format("mm_%s_%s_%s", "124933865", taoBaoOrder.getSourceMediaId(),
|
taoBaoOrder.getAdPositionId()));
|
commonOrder.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
|
int state = 0;
|
if ("订单付款".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
|
state = CommonOrder.STATE_FK;
|
} else if ("订单成功".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
|
state = CommonOrder.STATE_FK;
|
} else if ("订单失效".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
|
state = CommonOrder.STATE_SX;
|
} else if ("订单结算".equalsIgnoreCase(taoBaoOrder.getOrderState())) {
|
state = CommonOrder.STATE_JS;
|
}
|
commonOrder.setOrderBy(taoBaoOrder.getOrderBy());
|
commonOrder.setState(state);
|
commonOrder.setThirdCreateTime(
|
new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
|
commonOrder.setUpdateTime(new Date());
|
commonOrder.setTradeId(taoBaoOrder.getTradeId());
|
|
return commonOrder;
|
|
}
|
}
|