| | |
| | | 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.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.OrderItem;
|
| | | 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.exception.order.TaoBaoOrderException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | |
| | | String as = gm.getResponseBodyAsString();
|
| | | JSONObject root = JSONObject.fromObject(as);
|
| | | if (root.optInt("code") == 0) {// 上报成功
|
| | | LogHelper.cookieLog("上报成功!");
|
| | | LogHelper.error("上报成功!");
|
| | | return;
|
| | | }
|
| | | LogHelper.cookieLog("上报失败!");
|
| | | LogHelper.error("上报失败!");
|
| | |
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | LogHelper.cookieLog("上报失败!");
|
| | | LogHelper.error("上报失败!");
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | public static List<TaoBaoOrder> getOrderList(int day, TaoBaoUnionConfig config) {
|
| | | String cookie1 = getTaoBaoCookie(config.getAccount());
|
| | |
|
| | | LogHelper.cookieLog("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
| | | LogHelper.error("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
| | |
|
| | | String[] cookies = new String[] { cookie1 };
|
| | | List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
|
| | |
| | | private static List<TaoBaoOrder> downLoadOrderFromTaoBao(String url, TaoBaoUnionConfig config)
|
| | | throws TaoBaoOrderException {
|
| | | String cookie1 = getTaoBaoCookie(config.getAccount());
|
| | | LogHelper.cookieLog("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
| | | LogHelper.error("账号为:" + config.getAccount() + ",cookie为:" + cookie1);
|
| | | String[] cookies = new String[] { cookie1 };
|
| | | List<TaoBaoOrder> list = new ArrayList<TaoBaoOrder>();
|
| | | int i = 0;
|
| | |
| | | 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);
|
| | | public static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(InputStream input) {
|
| | | return parseWeiQuanOrder(input);
|
| | | }
|
| | |
|
| | | private static List<TaoBaoWeiQuanOrder> getWeiQuanOrders(String cookies, long startTime, long endTime) {
|
| | |
| | | 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://
|
| | | if (!StringUtil.isNullOrEmpty(content))
|
| | | orderRecord.setJieSuanTime(
|
| | | new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
|
| | | break;
|
| | | case 7://
|
| | | case 0:// 维权时间
|
| | | if (!StringUtil.isNullOrEmpty(content))
|
| | | orderRecord.setWeiQuanTime(
|
| | | new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd HH:mm:ss")));
|
| | | break;
|
| | | case 8://
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | 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位:" + taoBaoOrder.getOrderBy());
|
| | | }
|
| | | int orderBy = Integer.parseInt(orderByStr);
|
| | | // taoBaoOrder.setOrderBy(orderBy);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | CommonOrder commonOrder = new CommonOrder();
|
| | | commonOrder.setCount(taoBaoOrder.getCount());
|
| | | commonOrder.setCreateTime(new Date());
|
| | | commonOrder.seteIncome(taoBaoOrder.geteIncome());
|
| | | 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.setThirdCreateTime(
|
| | | new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
|
| | | commonOrder.setUpdateTime(new Date());
|
| | | commonOrder.setTradeId(taoBaoOrder.getTradeId());
|
| | |
|
| | | return commonOrder;
|
| | |
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取一组订单的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);
|
| | | }
|
| | | }
|