| | |
| | | package com.yeshi.fanli.util.taobao;
|
| | |
|
| | | 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.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import javax.annotation.PostConstruct;
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | 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 com.yeshi.fanli.entity.bus.user.Order;
|
| | | import com.yeshi.fanli.entity.bus.user.OrderItem;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.taobao.PidOrder;
|
| | | 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.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.order.OrderItemServcie;
|
| | | import com.yeshi.fanli.service.inter.order.OrderService;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import org.yeshi.utils.HttpUtil;
|
| | |
|
| | | import jxl.Sheet;
|
| | | import jxl.Workbook;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Component
|
| | | public class TaoBaoOrderUtil {
|
| | |
|
| | | private final static String CACHENAME = "tbCookie";
|
| | |
|
| | | private static final String ORDERFAILURE = "订单失效";
|
| | | private static final String ORDERPAYMENT = "订单付款";
|
| | | private static final String ORDERSETTLEMENT = "订单结算";
|
| | | private static final String ORDERSUCCESS = "订单成功";
|
| | |
|
| | | @Resource
|
| | | private OrderService orderService;
|
| | | @Resource
|
| | | private HongBaoService hongBaoService;
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private OrderItemServcie orderItemServcie;
|
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | |
|
| | | private static TaoBaoOrderUtil taoBaoOrderUtil;
|
| | |
|
| | | @PostConstruct
|
| | | public void init() {
|
| | | taoBaoOrderUtil = this;
|
| | | taoBaoOrderUtil.orderService = this.orderService;
|
| | | taoBaoOrderUtil.hongBaoService = this.hongBaoService;
|
| | | taoBaoOrderUtil.configService = this.configService;
|
| | | taoBaoOrderUtil.hongBaoManageService = this.hongBaoManageService;
|
| | | taoBaoOrderUtil.orderItemServcie = this.orderItemServcie;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取淘宝联盟的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);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取维权成功订单
|
| | | * |
| | | * @param startTime
|
| | | * @param endTime
|
| | | * @return
|
| | | */
|
| | | public static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(long startTime, long endTime, TaoBaoUnionConfig config) {
|
| | | String cookie = getTaoBaoCookie(config.getAccount());
|
| | | return getWeiQuanOrders(cookie, startTime, endTime);
|
| | | }
|
| | |
|
| | | 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=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);
|
| | |
|
| | | 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<PidOrder> parsePidOrder(InputStream in) {
|
| | | List<TaoBaoOrder> orderList = parseOrder(in);
|
| | | if (orderList != null && orderList.size() > 0) {
|
| | | List<PidOrder> pidOrderList = new ArrayList<>();
|
| | | for (TaoBaoOrder order : orderList) {
|
| | | pidOrderList.add(convertToPidOrder(order));
|
| | | }
|
| | | return pidOrderList;
|
| | | }
|
| | | return new ArrayList<PidOrder>();
|
| | | }
|
| | |
|
| | | /**
|
| | | * 解析维权订单
|
| | | * |
| | | * @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://
|
| | | orderRecord.setOrderId(content);
|
| | | break;
|
| | | case 1://
|
| | | orderRecord.setOrderItemId(content);
|
| | | break;
|
| | | case 2://
|
| | | orderRecord.setGoodsName(content);
|
| | | break;
|
| | | case 3:
|
| | | orderRecord.setMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
|
| | | break;
|
| | | case 4:
|
| | | orderRecord.setFanMoney(StringUtil.isNullOrEmpty(content) ? null : new BigDecimal(content));
|
| | | break;
|
| | | case 5://
|
| | | orderRecord.setState(content);
|
| | | break;
|
| | | case 6://
|
| | | orderRecord.setJieSuanTime(content);
|
| | | break;
|
| | | case 7://
|
| | | orderRecord.setWeiQuanTime(content);
|
| | | break;
|
| | | case 8://
|
| | | orderRecord.setWeiQuanFinishTime(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));
|
| | | orderItem.setFanMoney(MoneyBigDecimalUtil.mul(rate.divide(BigDecimal.valueOf(100)), tbo.getEstimate()));
|
| | | 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;
|
| | | }
|
| | |
|
| | | public static List<PidOrder> getPidOrderList(int day, TaoBaoUnionConfig config) {
|
| | | String cookie1 = getTaoBaoCookie(config.getAccount());
|
| | |
|
| | | LogHelper.cookieLog("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
| | |
|
| | | String[] cookies = new String[] { cookie1 };
|
| | | List<PidOrder> list = new ArrayList<PidOrder>();
|
| | | 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(parsePidOrder(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 orderList
|
| | | * @return
|
| | | */
|
| | | public static Map<String, List<TaoBaoOrder>> classifyTaoBaoOrderByOrderId(List<TaoBaoOrder> orderList) {
|
| | | Map<String, List<TaoBaoOrder>> map = new HashMap<>();
|
| | | for (TaoBaoOrder order : orderList) {
|
| | | if (map.get(order.getOrderId()) == null)
|
| | | map.put(order.getOrderId(), new ArrayList<>());
|
| | | map.get(order.getOrderId()).add(order);
|
| | | }
|
| | | return map;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 订单转换
|
| | | * |
| | | * @param taoBaoOrder
|
| | | * @return
|
| | | */
|
| | | public static PidOrder convertToPidOrder(TaoBaoOrder taoBaoOrder) {
|
| | | PidOrder pidOrder = new PidOrder();
|
| | | pidOrder.setOrderCreateTime(new Date(TimeUtil.convertDateToTemp2(taoBaoOrder.getCreateTime())));
|
| | | pidOrder.setGoodsTitle(taoBaoOrder.getTitle());
|
| | | pidOrder.setAuctionId(taoBaoOrder.getAuctionId());
|
| | | pidOrder.setGoodsNum(taoBaoOrder.getCount());
|
| | | pidOrder.setPrice(taoBaoOrder.getPrice());
|
| | | pidOrder.setState(taoBaoOrder.getOrderState());
|
| | | pidOrder.setOrderType(taoBaoOrder.getOrderType());
|
| | | pidOrder.setRate(taoBaoOrder.getiRatio());
|
| | | pidOrder.setPayMoney(taoBaoOrder.getPayment());
|
| | | pidOrder.setPreMoney(taoBaoOrder.getEstimate());
|
| | | pidOrder.setFinalMoney(taoBaoOrder.getSettlement());
|
| | | if (!StringUtil.isNullOrEmpty(taoBaoOrder.getSettlementTime()))
|
| | | pidOrder.setBalanceTime(new Date(TimeUtil.convertDateToTemp2(taoBaoOrder.getSettlementTime())));
|
| | | pidOrder.setOrderId(taoBaoOrder.getOrderId());
|
| | | pidOrder.setTypeName(taoBaoOrder.getClassName());
|
| | | pidOrder.setSrcMediaId(taoBaoOrder.getSourceMediaId());
|
| | | pidOrder.setAdzoneId(taoBaoOrder.getAdPositionId());
|
| | | return pidOrder;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 计算邀请赚的返利时间
|
| | | * |
| | | * @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");
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.util.taobao; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | 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.taobao.TaoBaoOrder; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; |
| | | import com.yeshi.fanli.exception.order.TaoBaoOrderException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import org.yeshi.utils.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.error("上报成功!"); |
| | | return; |
| | | } |
| | | LogHelper.error("上报失败!"); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | LogHelper.error("上报失败!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 按天数爬取淘宝联盟的返利订单 |
| | | * |
| | | * @param day |
| | | * @return |
| | | */ |
| | | public static List<TaoBaoOrder> getOrderList(int day, TaoBaoUnionConfig config) { |
| | | String cookie1 = getTaoBaoCookie(config.getAccount()); |
| | | |
| | | LogHelper.error("账号为:" + 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.error("账号为:" + 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(InputStream input) { |
| | | return parseWeiQuanOrder(input); |
| | | } |
| | | |
| | | 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(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(taoBaoOrder.getOrderId() + "-订单的orderBy超过8位:" + orderByStr); |
| | | } |
| | | 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"); |
| | | } |
| | | |
| | | /** |
| | | * 获取一组订单的hash值 |
| | | * |
| | | * @param list |
| | | * @return |
| | | */ |
| | | public static String getOrderDataHashCode(List<TaoBaoOrder> list) { |
| | | List<TaoBaoOrder> orderList = new ArrayList<>(); |
| | | orderList.addAll(list); |
| | | Comparator<TaoBaoOrder> orderCM = new Comparator<TaoBaoOrder>() { |
| | | |
| | | @Override |
| | | public int compare(TaoBaoOrder o1, TaoBaoOrder o2) { |
| | | return Long.parseLong(o1.getTradeId()) - Long.parseLong(o2.getTradeId()) > 0 ? 1 : -1; |
| | | } |
| | | }; |
| | | Collections.sort(orderList, orderCM); |
| | | String sts = ""; |
| | | for (TaoBaoOrder order : orderList) { |
| | | sts += (order.getTradeId() + "-" + order.getSpecialId() + "-" + order.getRelationId()); |
| | | } |
| | | return StringUtil.Md5(sts); |
| | | } |
| | | } |