From df24a07538521071ca0d0baf893bcf3de0e51985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Mon, 11 Nov 2024 16:50:13 +0800 Subject: [PATCH] 1 --- pom.xml | 5 + .../java/cn/van/business/util/JDUtils.java | 260 +++++++++--------- 2 files changed, 135 insertions(+), 130 deletions(-) diff --git a/pom.xml b/pom.xml index 499900d..7778b51 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,11 @@ lombok provided + + cn.van + open-api-sdk + 2.0-2024-10-21 + diff --git a/src/main/java/cn/van/business/util/JDUtils.java b/src/main/java/cn/van/business/util/JDUtils.java index b75252a..96df487 100644 --- a/src/main/java/cn/van/business/util/JDUtils.java +++ b/src/main/java/cn/van/business/util/JDUtils.java @@ -7,6 +7,7 @@ import cn.van.business.model.jd.OrderRow; import cn.van.business.repository.OrderRowRepository; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.util.DateUtils; + import com.jd.open.api.sdk.DefaultJdClient; import com.jd.open.api.sdk.JdClient; import com.jd.open.api.sdk.domain.kplunion.OrderService.request.query.OrderRowReq; @@ -67,99 +68,10 @@ public class JDUtils { @Autowired private WXUtil wxUtil; - /** - * 将 响应参数转化为 OrderRow,并返回 - */ - private static OrderRow createOrderRow(OrderRowResp orderRowResp) { - OrderRow orderRow = new OrderRow(); - orderRow.setOrderId(orderRowResp.getOrderId()); - orderRow.setSkuId(orderRowResp.getSkuId()); - orderRow.setSkuName(orderRowResp.getSkuName()); - orderRow.setItemId(orderRowResp.getItemId()); - orderRow.setSkuNum(orderRowResp.getSkuNum()); - orderRow.setPrice(orderRowResp.getPrice()); - orderRow.setActualCosPrice(orderRowResp.getActualCosPrice()); - orderRow.setActualFee(orderRowResp.getActualFee()); - orderRow.setEstimateCosPrice(orderRowResp.getEstimateCosPrice()); - orderRow.setEstimateFee(orderRowResp.getEstimateFee()); - orderRow.setSubSideRate(orderRowResp.getSubSideRate()); - orderRow.setSubsidyRate(orderRowResp.getSubsidyRate()); - orderRow.setCommissionRate(orderRowResp.getCommissionRate()); - orderRow.setFinalRate(orderRowResp.getFinalRate()); - orderRow.setOrderTime(DateUtils.parseDate(orderRowResp.getOrderTime())); - orderRow.setFinishTime(DateUtils.parseDate(orderRowResp.getFinishTime())); - orderRow.setOrderTag(orderRowResp.getOrderTag()); - orderRow.setOrderEmt(orderRowResp.getOrderEmt()); - orderRow.setUnionId(orderRowResp.getUnionId()); - orderRow.setUnionRole(orderRowResp.getUnionRole()); - orderRow.setUnionAlias(orderRowResp.getUnionAlias()); - orderRow.setUnionTag(orderRowResp.getUnionTag()); - orderRow.setTraceType(orderRowResp.getTraceType()); - orderRow.setValidCode(orderRowResp.getValidCode()); - orderRow.setPayMonth(orderRowResp.getPayMonth()); - orderRow.setSiteId(orderRowResp.getSiteId()); - orderRow.setParentId(orderRowResp.getParentId()); - GoodsInfo goodsInfo = orderRowResp.getGoodsInfo(); - GoodsInfoVO goodsInfoVO = new GoodsInfoVO(); - goodsInfoVO.setShopId(String.valueOf(goodsInfo.getShopId())); - goodsInfoVO.setShopName(goodsInfo.getShopName()); - goodsInfoVO.setOwner(goodsInfo.getOwner()); - goodsInfoVO.setProductId(String.valueOf(goodsInfo.getProductId())); - goodsInfoVO.setImageUrl(goodsInfo.getImageUrl()); - orderRow.setGoodsInfo(goodsInfoVO); - orderRow.setCallerItemId(orderRowResp.getCallerItemId()); - orderRow.setPid(orderRowResp.getPid()); - orderRow.setCid1(orderRowResp.getCid1()); - orderRow.setCid2(orderRowResp.getCid2()); - orderRow.setCid3(orderRowResp.getCid3()); - orderRow.setChannelId(orderRowResp.getChannelId()); - orderRow.setProPriceAmount(orderRowResp.getProPriceAmount()); - orderRow.setSkuFrozenNum(orderRowResp.getSkuFrozenNum()); - orderRow.setSkuReturnNum(orderRowResp.getSkuReturnNum()); - orderRow.setSkuTag(orderRowResp.getSkuTag()); - orderRow.setPositionId(orderRowResp.getPositionId()); - orderRow.setPopId(orderRowResp.getPopId()); - orderRow.setRid(orderRowResp.getRid()); - orderRow.setPlus(orderRowResp.getPlus()); - orderRow.setCpActId(orderRowResp.getCpActId()); - orderRow.setGiftCouponKey(orderRowResp.getGiftCouponKey()); - - orderRow.setModifyTime(new Date()); - orderRow.setSign(orderRowResp.getSign()); - orderRow.setBalanceExt(orderRowResp.getBalanceExt()); - orderRow.setExpressStatus(orderRowResp.getExpressStatus()); - orderRow.setExt1(orderRowResp.getExt1()); - orderRow.setSubUnionId(orderRowResp.getSubUnionId()); - orderRow.setGiftCouponOcsAmount(orderRowResp.getGiftCouponOcsAmount()); - orderRow.setTraceType(orderRowResp.getTraceType()); - orderRow.setExpressStatus(orderRowResp.getExpressStatus()); - orderRow.setTraceType(orderRowResp.getTraceType()); - orderRow.setId(orderRowResp.getId()); - orderRow.setValidCode(orderRowResp.getValidCode()); - orderRow.setExpressStatus(orderRowResp.getExpressStatus()); - orderRow.setTraceType(orderRowResp.getTraceType()); - return orderRow; - } - - private static List filterOrdersByDate(List orderRows, int daysBack) { - LocalDate now = LocalDate.now(); - - return orderRows.stream() - .filter(order -> { - // 将 Date 转换为 LocalDate - LocalDate orderDate = order.getOrderTime().toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDate(); - - // 计算是否在给定的天数内 - return !orderDate.isBefore(now.minusDays(daysBack)) && !orderDate.isAfter(now); - }) - .collect(Collectors.toList()); - } /** - * 拉取最新的订单 1440分钟 + * 每分钟拉取最近10分钟的订单 */ @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次 public void fetchLatestOrder() throws Exception { @@ -188,6 +100,43 @@ public class JDUtils { } + // 拉取历史订单 2880 次请求 + @Scheduled(cron = "0 0 8,12,16,20,0 * * ?") + public void fetchHistoricalOrders() throws Exception { + // 从设定的开始日期到昨天的同一时间 + System.out.println("开始拉取历史订单"); + // 拉最近两个月的订单 + // 获取当前时间,并调整为整点开始 + LocalDateTime startDate = LocalDateTime.now().minusMonths(2).truncatedTo(ChronoUnit.HOURS); + + LocalDateTime now = LocalDateTime.now(); + LocalDateTime lastHour = now.minusHours(1).withMinute(0).withSecond(0).withNano(0); + + + while (!startDate.isEqual(lastHour)) { + UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false); // 假的代表历史订单 + startDate = startDate.plusHours(1); + if (response != null) { + int code = response.getQueryResult().getCode(); + if (code == 200) { + if (response.getQueryResult().getCode() == 200) { + OrderRowResp[] orderRowResps = response.getQueryResult().getData(); + if (orderRowResps == null) { + continue; + } + for (OrderRowResp orderRowResp : orderRowResps) { + // 固化到数据库 + OrderRow orderRow = createOrderRow(orderRowResp); + // 订单号不存在就保存,存在就更新订单状态 + orderRowRepository.save(orderRow); + } + } + } + } + sleep(1000); + } + } + @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次 public void sendOrderToWx() { int[] parm = {-1, 17}; @@ -199,7 +148,6 @@ public class JDUtils { } } - /** * 指令 */ @@ -329,7 +277,96 @@ public class JDUtils { } } + /** + * 将 响应参数转化为 OrderRow,并返回 + */ + private static OrderRow createOrderRow(OrderRowResp orderRowResp) { + OrderRow orderRow = new OrderRow(); + orderRow.setOrderId(orderRowResp.getOrderId()); + orderRow.setSkuId(orderRowResp.getSkuId()); + orderRow.setSkuName(orderRowResp.getSkuName()); + orderRow.setItemId(orderRowResp.getItemId()); + orderRow.setSkuNum(orderRowResp.getSkuNum()); + orderRow.setPrice(orderRowResp.getPrice()); + orderRow.setActualCosPrice(orderRowResp.getActualCosPrice()); + orderRow.setActualFee(orderRowResp.getActualFee()); + orderRow.setEstimateCosPrice(orderRowResp.getEstimateCosPrice()); + orderRow.setEstimateFee(orderRowResp.getEstimateFee()); + orderRow.setSubSideRate(orderRowResp.getSubSideRate()); + orderRow.setSubsidyRate(orderRowResp.getSubsidyRate()); + orderRow.setCommissionRate(orderRowResp.getCommissionRate()); + orderRow.setFinalRate(orderRowResp.getFinalRate()); + orderRow.setOrderTime(DateUtils.parseDate(orderRowResp.getOrderTime())); + orderRow.setFinishTime(DateUtils.parseDate(orderRowResp.getFinishTime())); + orderRow.setOrderTag(orderRowResp.getOrderTag()); + orderRow.setOrderEmt(orderRowResp.getOrderEmt()); + orderRow.setUnionId(orderRowResp.getUnionId()); + orderRow.setUnionRole(orderRowResp.getUnionRole()); + orderRow.setUnionAlias(orderRowResp.getUnionAlias()); + orderRow.setUnionTag(orderRowResp.getUnionTag()); + orderRow.setTraceType(orderRowResp.getTraceType()); + orderRow.setValidCode(orderRowResp.getValidCode()); + orderRow.setPayMonth(orderRowResp.getPayMonth()); + orderRow.setSiteId(orderRowResp.getSiteId()); + orderRow.setParentId(orderRowResp.getParentId()); + GoodsInfo goodsInfo = orderRowResp.getGoodsInfo(); + GoodsInfoVO goodsInfoVO = new GoodsInfoVO(); + goodsInfoVO.setShopId(String.valueOf(goodsInfo.getShopId())); + goodsInfoVO.setShopName(goodsInfo.getShopName()); + goodsInfoVO.setOwner(goodsInfo.getOwner()); + goodsInfoVO.setProductId(String.valueOf(goodsInfo.getProductId())); + goodsInfoVO.setImageUrl(goodsInfo.getImageUrl()); + orderRow.setGoodsInfo(goodsInfoVO); + orderRow.setCallerItemId(orderRowResp.getCallerItemId()); + orderRow.setPid(orderRowResp.getPid()); + orderRow.setCid1(orderRowResp.getCid1()); + orderRow.setCid2(orderRowResp.getCid2()); + orderRow.setCid3(orderRowResp.getCid3()); + orderRow.setChannelId(orderRowResp.getChannelId()); + orderRow.setProPriceAmount(orderRowResp.getProPriceAmount()); + orderRow.setSkuFrozenNum(orderRowResp.getSkuFrozenNum()); + orderRow.setSkuReturnNum(orderRowResp.getSkuReturnNum()); + orderRow.setSkuTag(orderRowResp.getSkuTag()); + orderRow.setPositionId(orderRowResp.getPositionId()); + orderRow.setPopId(orderRowResp.getPopId()); + orderRow.setRid(orderRowResp.getRid()); + orderRow.setPlus(orderRowResp.getPlus()); + orderRow.setCpActId(orderRowResp.getCpActId()); + orderRow.setGiftCouponKey(orderRowResp.getGiftCouponKey()); + + orderRow.setModifyTime(new Date()); + orderRow.setSign(orderRowResp.getSign()); + orderRow.setBalanceExt(orderRowResp.getBalanceExt()); + orderRow.setExpressStatus(orderRowResp.getExpressStatus()); + orderRow.setExt1(orderRowResp.getExt1()); + orderRow.setSubUnionId(orderRowResp.getSubUnionId()); + orderRow.setGiftCouponOcsAmount(orderRowResp.getGiftCouponOcsAmount()); + orderRow.setTraceType(orderRowResp.getTraceType()); + orderRow.setExpressStatus(orderRowResp.getExpressStatus()); + orderRow.setTraceType(orderRowResp.getTraceType()); + orderRow.setId(orderRowResp.getId()); + orderRow.setValidCode(orderRowResp.getValidCode()); + orderRow.setExpressStatus(orderRowResp.getExpressStatus()); + orderRow.setTraceType(orderRowResp.getTraceType()); + return orderRow; + } + + private static List filterOrdersByDate(List orderRows, int daysBack) { + LocalDate now = LocalDate.now(); + + return orderRows.stream() + .filter(order -> { + // 将 Date 转换为 LocalDate + LocalDate orderDate = order.getOrderTime().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + // 计算是否在给定的天数内 + return !orderDate.isBefore(now.minusDays(daysBack)) && !orderDate.isAfter(now); + }) + .collect(Collectors.toList()); + } public String getFormattedOrderInfo(OrderRow orderRow) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ValidCodeConverter converter = new ValidCodeConverter(); @@ -379,8 +416,8 @@ public class JDUtils { /** * 获取订单列表 * - * @param startTime 开始时间 - * @param endTime 结束时间 + * @param start 开始时间 + * @param end 结束时间 * @return * @throws Exception */ @@ -449,42 +486,5 @@ public class JDUtils { return response.getGetResult().getData().getClickURL(); } - // 拉取历史订单 2880 次请求 - @Scheduled(cron = "0 0 8,23 * * ?") - public void fetchHistoricalOrders() throws Exception { - // 从设定的开始日期到昨天的同一时间 - System.out.println("开始拉取历史订单"); - // 拉最近两个月的订单 - // 获取当前时间,并调整为整点开始 - LocalDateTime startDate = LocalDateTime.now().minusMonths(2).truncatedTo(ChronoUnit.HOURS); - LocalDateTime now = LocalDateTime.now(); - LocalDateTime lastHour = now.minusHours(1).withMinute(0).withSecond(0).withNano(0); - - - while (!startDate.isEqual(lastHour)) { - UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false); // 假的代表历史订单 - - if (response != null) { - int code = response.getQueryResult().getCode(); - if (code == 200) { - if (response.getQueryResult().getCode() == 200) { - OrderRowResp[] orderRowResps = response.getQueryResult().getData(); - if (orderRowResps == null) { - continue; - } - for (OrderRowResp orderRowResp : orderRowResps) { - // 固化到数据库 - OrderRow orderRow = createOrderRow(orderRowResp); - // 订单号不存在就保存,存在就更新订单状态 - orderRowRepository.save(orderRow); - sleep(1000); - } - } - } - } - startDate = startDate.plusHours(1); - - } - } }