package com.yeshi.fanli.util.taobao;
|
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
import jxl.Sheet;
|
import jxl.Workbook;
|
import jxl.read.biff.BiffException;
|
|
import org.apache.commons.httpclient.HttpClient;
|
import org.apache.commons.httpclient.HttpException;
|
import org.apache.commons.httpclient.methods.GetMethod;
|
import org.apache.commons.httpclient.params.HttpClientParams;
|
|
import com.yeshi.fanli.entity.taobao.TaoBaoCoupon;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
|
public class TaoBaoCouponUtil {
|
|
private final static String CAT = "天猫";
|
private final static String TAOBAO = "淘宝";
|
|
public static Set<TaoBaoCoupon> getTaoBaoCouponList(TaoBaoUnionConfig config) {
|
String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
|
if (com.yeshi.fanli.util.StringUtil.isNullOrEmpty(cookie)) {
|
return null;
|
}
|
HttpClient client = new HttpClient();
|
|
String siteId = config.getDefaultPid().split("_")[2];
|
String adzoneId = config.getDefaultPid().split("_")[3];
|
|
String url = "http://pub.alimama.com/coupon/qq/export.json?adzoneId=" + adzoneId + "&siteId=" + siteId;
|
GetMethod method = new GetMethod(url);
|
method.setRequestHeader("Cookie", cookie);
|
method.setRequestHeader("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");
|
method.setRequestHeader("Referer", "http://pub.alimama.com/myunion.htm");
|
client.setParams(new HttpClientParams());
|
InputStream inputStream = null;
|
try {
|
client.executeMethod(method);
|
if (method.getStatusCode() == 200) {
|
System.out.println(method.getResponseHeader("Content-Type").getValue());
|
if (!method.getResponseHeader("Content-Type").getValue().contains("excel")) {
|
TaoBaoOrderUtil.reportCookieInvalid(config.getAccount());
|
return null;
|
}
|
|
inputStream = method.getResponseBodyAsStream();
|
return parseTaoBaoCoupon(inputStream);
|
}
|
} catch (HttpException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
if (inputStream != null) {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
return null;
|
}
|
|
private static Set<TaoBaoCoupon> parseTaoBaoCoupon(InputStream inputStream) {
|
jxl.Workbook rwb = null;
|
try {
|
rwb = Workbook.getWorkbook(inputStream);
|
} catch (BiffException e) {
|
return null;
|
} catch (IOException e) {
|
return null;
|
}
|
Sheet sheet = rwb.getSheet(0);
|
Set<TaoBaoCoupon> set = new HashSet<TaoBaoCoupon>();
|
TaoBaoCoupon taoBaoCoupon = null;
|
int rows = sheet.getRows();
|
for (int r = 1; r < rows; r++) {
|
taoBaoCoupon = new TaoBaoCoupon();
|
taoBaoCoupon.setAuctionId(sheet.getCell(0, r).getContents().trim());
|
taoBaoCoupon.setTitle(sheet.getCell(1, r).getContents().trim());
|
taoBaoCoupon.setPictUrl(sheet.getCell(2, r).getContents().trim());
|
taoBaoCoupon.setAuctionUrl(sheet.getCell(3, r).getContents().trim());
|
taoBaoCoupon.setClassNames(sheet.getCell(4, r).getContents().trim());
|
// taoBaoCoupon.setTaobaokeUrl(sheet.getCell(5,
|
// r).getContents().trim());
|
String zkStr = sheet.getCell(6, r).getContents().trim();
|
String bizStr = sheet.getCell(7, r).getContents().trim();
|
taoBaoCoupon.setShopWangWang(sheet.getCell(10, r).getContents().trim());
|
taoBaoCoupon.setShopTitle(sheet.getCell(12, r).getContents().trim());
|
String typeStr = sheet.getCell(13, r).getContents().trim();
|
int type = 0;
|
if (TAOBAO.equals(typeStr)) {
|
type = 1;
|
} else if (CAT.equals(typeStr)) {
|
type = 2;
|
}
|
taoBaoCoupon.setShopType(type);
|
taoBaoCoupon.setCouponId(sheet.getCell(14, r).getContents().trim());
|
|
String info = sheet.getCell(17, r).getContents().trim();
|
List<BigDecimal> arr = getCouponInfo(info);
|
taoBaoCoupon.setCouponinfo(info);
|
taoBaoCoupon.setCouponStartFee(arr.get(0));
|
taoBaoCoupon.setCouponAmount(arr.get(1));
|
|
taoBaoCoupon.setCouponBegin(sheet.getCell(18, r).getContents().trim());
|
taoBaoCoupon.setCouponEnd(sheet.getCell(19, r).getContents().trim());
|
taoBaoCoupon.setCouponLink(sheet.getCell(20, r).getContents().trim());
|
// taoBaoCoupon.setGeneralizeUrl(sheet.getCell(21,
|
// r).getContents().trim());
|
taoBaoCoupon.setCreatetime(System.currentTimeMillis());
|
|
try {
|
taoBaoCoupon.setZkPrice(new BigDecimal(zkStr));
|
taoBaoCoupon.setBiz30day(Integer.parseInt(bizStr));
|
taoBaoCoupon.setTkRate(Double.parseDouble(sheet.getCell(8, r).getContents().trim()));
|
taoBaoCoupon.setBrokerage(new BigDecimal(sheet.getCell(9, r).getContents().trim()));
|
taoBaoCoupon.setSellerId(Long.parseLong(sheet.getCell(11, r).getContents().trim()));
|
taoBaoCoupon.setCouponSum(Integer.parseInt(sheet.getCell(15, r).getContents().trim()));
|
taoBaoCoupon.setCouponCount(Integer.parseInt(sheet.getCell(16, r).getContents().trim()));
|
} catch (NumberFormatException e) {
|
e.printStackTrace();
|
continue;
|
}
|
if (MoneyBigDecimalUtil.sub(taoBaoCoupon.getZkPrice(), taoBaoCoupon.getCouponStartFee())
|
.doubleValue() >= 0) {
|
taoBaoCoupon.setQuanPrice(
|
MoneyBigDecimalUtil.sub(taoBaoCoupon.getZkPrice(), taoBaoCoupon.getCouponAmount()));
|
taoBaoCoupon.setShowType(3);
|
} else {
|
taoBaoCoupon.setQuanPrice(taoBaoCoupon.getZkPrice());
|
taoBaoCoupon.setShowType(2);
|
}
|
taoBaoCoupon.setOrderby(10000);
|
set.add(taoBaoCoupon);
|
}
|
return set;
|
}
|
|
public static List<BigDecimal> getCouponInfo(String info) {
|
Pattern p = Pattern.compile("满\\d+(\\.\\d+)?元减\\d+(\\.\\d+)?元");
|
Matcher matcher = p.matcher(info);
|
Pattern p2 = Pattern.compile("\\d+元无条件券");
|
Matcher matcher2 = p2.matcher(info);
|
List<BigDecimal> list = new ArrayList<BigDecimal>();
|
if (matcher.matches()) {
|
String[] sts = info.split("元减");
|
list.add(new BigDecimal(sts[0].replace("满", "").trim()));
|
list.add(new BigDecimal(sts[1].replace("元", "").trim()));
|
} else if (matcher2.matches()) {
|
String[] split = info.split("元无条件券");
|
list.add(new BigDecimal(0));
|
list.add(new BigDecimal(split[0]));
|
} else {
|
list.add(new BigDecimal(0));
|
list.add(new BigDecimal(0));
|
}
|
return list;
|
}
|
|
/**
|
* 获取领券链接
|
*
|
* @return
|
*/
|
public static String getCoupleUrl(String activityId, String pid, String auctionId) {
|
if (!StringUtil.isNullOrEmpty(pid))
|
return String.format("https://uland.taobao.com/coupon/edetail?activityId=%s&pid=%s&itemId=%s", activityId,
|
pid, auctionId);
|
else
|
return String.format("https://uland.taobao.com/coupon/edetail?activityId=%s&itemId=%s", activityId,
|
auctionId);
|
}
|
|
}
|