From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java | 382 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 246 insertions(+), 136 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java b/fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java index 72a9576..6469172 100644 --- a/fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java +++ b/fanli/src/main/java/com/yeshi/fanli/job/order/vipshop/UpdateVipShopOrderJob.java @@ -1,136 +1,246 @@ -package com.yeshi.fanli.job.order.vipshop; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Component; - -import com.xxl.job.core.biz.model.ReturnT; -import com.xxl.job.core.handler.annotation.XxlJob; -import com.yeshi.fanli.dto.vipshop.VipShopOrderQueryModel; -import com.yeshi.fanli.dto.vipshop.VipShopQueryOrderResultDTO; -import com.yeshi.fanli.entity.vipshop.VipShopOrder; -import com.yeshi.fanli.exception.vipshop.VipShopOrderException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.order.vipshop.VipShopOrderService; -import com.yeshi.fanli.util.RedisKeyEnum; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.cmq.order.VipShopOrderCMQManager; -import com.yeshi.fanli.util.vipshop.VipShopApiUtil; - -//浠庢窐瀹濈埇鍘昏鍗曟洿鏂� -@Component -public class UpdateVipShopOrderJob { - - @Resource - private VipShopOrderService vipShopOrderService; - - @Resource - private RedisManager redisManager; - - /** - * 淇濆瓨璁㈠崟 - * - * @param VipShopOrderList - */ - public void saveVipShopOrders(List<VipShopOrder> vipShopOrderList) { - for (VipShopOrder order : vipShopOrderList) { - try { - vipShopOrderService.addOrder(order); - /** - * 鍋氶鐜囬檺鍒� - */ - String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.VIPShopOrder, order.getOrderSn() + ""); - String result = redisManager.getCommonString(key); - // 鍒ゆ柇 -// if (StringUtil.isNullOrEmpty(result)) { - VipShopOrderCMQManager.getInstance().addVipShopOrder(order.getOrderSn() + ""); - redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂� - LogHelper.test("鍞搧浼氳鍗曟秷鎭彂閫佹垚鍔�"); -// }else{ -// LogHelper.test("鍞搧浼氳鍗曢鐜囬檺鍒�"); -// } - } catch (VipShopOrderException e) { - e.printStackTrace(); - LogHelper.errorDetailInfo(e); - } - } - } - - /** - * 蹇�熻鍗曟洿鏂帮紙鐖彇鏈皬鏃跺唴鐨勫崟,姣忓垎閽熶竴娆★級 - */ - @XxlJob("updateVipShopOrderHandler") - public ReturnT<String> updateVipShopSoonOrder(String param) throws Exception { - LogHelper.test("updateVipShopOrderHandler:"+param); - long endTime = System.currentTimeMillis(); - if ("1hour".equalsIgnoreCase(param)) {// 鏇存柊1灏忔椂鍐呯殑璁㈠崟 - updateByOrderTime(endTime - 1000 * 60 * 60 * 1L, endTime); - updateByUpdateTime(endTime - 1000 * 60 * 60 * 1L, endTime); - } else if ("1day".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�1澶╂洿鏂扮殑鏁版嵁 - updateByOrderTime(endTime - 1000 * 60 * 60 * 24L, endTime); - updateByUpdateTime(endTime - 1000 * 60 * 60 * 24L, endTime); - } - /* - * else if ("3day".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�3澶╂洿鏂扮殑鏁版嵁 - * updateByOrderTime(endTime - 1000 * 60 * 60 * 24 * 3L, endTime); - * updateByUpdateTime(endTime - 1000 * 60 * 60 * 24 * 3L, endTime); } - */ - return ReturnT.SUCCESS; - } - - /** - * 鎸変笅鍗曟椂闂存洿鏂� - * @Title: updateByOrderTime - * @Description: - * @param startTime - * @param endTime - * void 杩斿洖绫诲瀷 - * @throws - */ - - public void updateByOrderTime(long startTime, long endTime) { - List<VipShopOrder> vipShopOrderList = new ArrayList<>(); - int page = 1; - VipShopQueryOrderResultDTO result = VipShopApiUtil - .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); - - while (result != null && result.getOrderList().size() > 0) { - page++; - vipShopOrderList.addAll(result.getOrderList()); - result = VipShopApiUtil - .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); - } - - saveVipShopOrders(vipShopOrderList); - } - - /** - * 鎸夋洿鏂版椂闂存洿鏂� - * @Title: updateByOrderTime - * @Description: - * @param startTime - * @param endTime - * void 杩斿洖绫诲瀷 - * @throws - */ - - public void updateByUpdateTime(long startTime, long endTime) { - List<VipShopOrder> vipShopOrderList = new ArrayList<>(); - int page = 1; - VipShopQueryOrderResultDTO result = VipShopApiUtil - .getOrderList(VipShopOrderQueryModel.createUpdateTime(startTime, endTime, null, page)); - - while (result != null && result.getOrderList().size() > 0) { - page++; - vipShopOrderList.addAll(result.getOrderList()); - result = VipShopApiUtil - .getOrderList(VipShopOrderQueryModel.createUpdateTime(startTime, endTime, null, page)); - } - saveVipShopOrders(vipShopOrderList); - } - -} +package com.yeshi.fanli.job.order.vipshop; + +import java.util.*; + +import javax.annotation.Resource; + +import com.yeshi.fanli.dao.mybatis.vipshop.VipShopOrderMapper; +import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg; +import com.yeshi.fanli.entity.order.CommonOrder; +import com.yeshi.fanli.service.inter.order.CommonOrderService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager; +import com.yeshi.fanli.util.mq.rabbit.RabbitmqManager; +import com.yeshi.fanli.util.vipshop.DingDanXiaApiUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.yeshi.fanli.dto.vipshop.VipShopOrderQueryModel; +import com.yeshi.fanli.dto.vipshop.VipShopQueryOrderResultDTO; +import com.yeshi.fanli.entity.vipshop.VipShopOrder; +import com.yeshi.fanli.exception.vipshop.VipShopOrderException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.order.vipshop.VipShopOrderService; +import com.yeshi.fanli.util.RedisKeyEnum; +import com.yeshi.fanli.util.RedisManager; + +//浠庢窐瀹濈埇鍘昏鍗曟洿鏂� +@Component +public class UpdateVipShopOrderJob { + + private Logger logger = LoggerFactory.getLogger("debugLog"); + + @Resource + private VipShopOrderService vipShopOrderService; + + @Resource + private RedisManager redisManager; + @Resource + private VipShopOrderMapper vipShopOrderMapper; + + @Resource + private OrdersCMQManager ordersCMQManager; + + /** + * 淇濆瓨璁㈠崟 + * + * @param vipShopOrderList + */ + public void saveVipShopOrders(List<VipShopOrder> vipShopOrderList) { + //5鍒嗛挓涓嶆洿鏂板氨鎶ヨ + try { + redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_VIP, "1", 60 * 5); + } catch (Exception e) { + } + for (VipShopOrder order : vipShopOrderList) { + try { + vipShopOrderService.addOrder(order); + /** + * 鍋氶鐜囬檺鍒� + */ + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.VIPShopOrder, order.getOrderSn() + ""); + String result = redisManager.getCommonString(key); + // 鍒ゆ柇 +// if (StringUtil.isNullOrEmpty(result)) { + ordersCMQManager.addOrder(new CommonOrderMQMsg(order.getOrderSn() + "", Constant.SOURCE_TYPE_VIP)); + redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂� + LogHelper.test("鍞搧浼氳鍗曟秷鎭彂閫佹垚鍔�"); +// }else{ +// LogHelper.test("鍞搧浼氳鍗曢鐜囬檺鍒�"); +// } + } catch (VipShopOrderException e) { + e.printStackTrace(); + LogHelper.errorDetailInfo(e); + } + } + } + + /** + * 蹇�熻鍗曟洿鏂帮紙鐖彇鏈皬鏃跺唴鐨勫崟,姣忓垎閽熶竴娆★級 + */ + @XxlJob("updateVipShopOrderHandler") + public ReturnT<String> updateVipShopSoonOrder(String param) throws Exception { + LogHelper.test("updateVipShopOrderHandler:" + param); + logger.info("鍞搧浼氳鍗曟洿鏂板紑濮嬶細updateVipShopSoonOrder 鍙傛暟锛�"+param); + try { + long endTime = System.currentTimeMillis(); + if ("1hour".equalsIgnoreCase(param)) {// 鏇存柊1灏忔椂鍐呯殑璁㈠崟 + updateByOrderTime(endTime - 1000 * 60 * 60 * 1L, endTime); + updateByUpdateTime(endTime - 1000 * 60 * 60 * 1L, endTime); + } else if ("1day".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�1澶╂洿鏂扮殑鏁版嵁 + Long startT = endTime - 1000 * 60 * 60 * 24L; + for (long start = startT; start < startT + 1000 * 60 * 60 * 24L; start += 1000 * 60 * 60) { + updateByOrderTime(start, start + 1000 * 60 * 60); + updateByUpdateTime(start, start + 1000 * 60 * 60); + } + } else if ("1month".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�1涓湀鐨勬暟鎹� + for (int i = 0; i < 30; i++) { + Long startT = endTime - 1000 * 60 * 60 * 24L * (i + 1); + for (long start = startT; start < startT + 1000 * 60 * 60 * 24L; start += 1000 * 60 * 60) { + updateByOrderTime(start, start + 1000 * 60 * 60); + updateByUpdateTime(start, start + 1000 * 60 * 60); + } + } + } + /* + * else if ("3day".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�3澶╂洿鏂扮殑鏁版嵁 + * updateByOrderTime(endTime - 1000 * 60 * 60 * 24 * 3L, endTime); + * updateByUpdateTime(endTime - 1000 * 60 * 60 * 24 * 3L, endTime); } + */ + }catch(Exception e){ + logger.error("鍞搧浼氳鍗曟洿鏂板紓甯革細",e); + }finally { + logger.info("鍞搧浼氳鍗曟洿鏂扮粨鏉燂細updateVipShopSoonOrder 鍙傛暟锛�"+ param); + } + + return ReturnT.SUCCESS; + } + + + //鏍规嵁璁㈠崟鍙锋洿鏂� + @XxlJob("order-vip-updateByOrderSn") + public ReturnT<String> updateByOrderSn(String param) throws Exception { + logger.info(String.format("鍞搧浼氳鍗曟洿鏂帮細%s", param)); + try { + String[] ps = param.split(","); + for (String p : ps) { + List<VipShopOrder> orders = vipShopOrderService.listByOrderSn(p); + if (orders == null || orders.size() == 0) { + // 璇锋眰璁㈠崟璇︽儏 + saveVipShopOrders(Arrays.asList(new VipShopOrder[]{DingDanXiaApiUtil.getOrderDetail(p)})); + } else { + Thread.sleep(1000); + VipShopOrder vipShopOrder = DingDanXiaApiUtil.getOrderDetail(p); + if (vipShopOrder != null) { + List<VipShopOrder> vipShopOrderList = new ArrayList<>(); + vipShopOrderList.add(vipShopOrder); + saveVipShopOrders(vipShopOrderList); + } + } + } + logger.info("鍞搧浼氳鍗曟洿鏂版垚鍔�"); + }catch(Exception e){ + logger.info(String.format("鍞搧浼氳鍗曟洿鏂板け璐ワ細%s", e.getMessage())); + } + return ReturnT.SUCCESS; + } + + + /** + * 鏇存柊闀挎椂闂存湭鏇存柊鐨勮鍗曞彿 + * + * @param param + * @return + * @throws Exception + */ + @Resource + private CommonOrderService commonOrderService; + + @XxlJob("order-vip-updateByLongTimeNoUpdate") + public ReturnT<String> updateByLongTimeNoUpdate(String param) throws Exception { + + List<CommonOrder> commonOrders = commonOrderService.listPayStateOrder(Constant.SOURCE_TYPE_VIP, new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 60), new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 10), 1, 200); + if (commonOrders == null || commonOrders.size() == 0) { + throw new Exception("娌℃湁闇�瑕佹洿鏂扮殑璁㈠崟"); + } + Set<String> orderIds = new HashSet<>(); + for (CommonOrder commonOrder : commonOrders) { + orderIds.add(commonOrder.getOrderNo()); + } + for (String orderId : orderIds) { + updateByOrderSn(orderId); + } + + return ReturnT.SUCCESS; + } + + /** + * 鎸変笅鍗曟椂闂存洿鏂� + * + * @param startTime + * @param endTime void 杩斿洖绫诲瀷 + * @throws + * @Title: updateByOrderTime + * @Description: + */ + + public void updateByOrderTime(long startTime, long endTime) { + List<VipShopOrder> vipShopOrderList = new ArrayList<>(); + int page = 1; + VipShopQueryOrderResultDTO result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); + + while (result != null && result.getOrderList().size() > 0) { + page++; + vipShopOrderList.addAll(result.getOrderList()); + result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); + } + + saveVipShopOrders(vipShopOrderList); + + //璁㈠崟渚犵殑鎺ュ彛 + page = 1; + result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); + + while (result != null && result.getOrderList().size() > 0) { + page++; + vipShopOrderList.addAll(result.getOrderList()); + result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createOrderTime(startTime, endTime, null, page)); + } + + saveVipShopOrders(vipShopOrderList); + } + + /** + * 鎸夋洿鏂版椂闂存洿鏂� + * + * @param startTime + * @param endTime void 杩斿洖绫诲瀷 + * @throws + * @Title: updateByOrderTime + * @Description: + */ + + public void updateByUpdateTime(long startTime, long endTime) { + List<VipShopOrder> vipShopOrderList = new ArrayList<>(); + int page = 1; + VipShopQueryOrderResultDTO result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createUpdateTime(startTime, endTime, null, page)); + + while (result != null && result.getOrderList().size() > 0) { + page++; + vipShopOrderList.addAll(result.getOrderList()); + result = DingDanXiaApiUtil + .getOrderList(VipShopOrderQueryModel.createUpdateTime(startTime, endTime, null, page)); + } + saveVipShopOrders(vipShopOrderList); + } + + +} -- Gitblit v1.8.0