diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java index babf27661..9187b17df 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/CacheConstants.java @@ -217,6 +217,11 @@ public class CacheConstants { */ public static final String AUTHORIZER_REFRESH_TOKEN = "authorizer_refresh_token:"; + /** + * 车辆绑定优惠券 + */ + public static final String CAR_BIND_COUPON_BY_ORDER_CODE = "car_bind_coupon_by_order_code:"; + /** * 路通云停系统 通过appid获取的接口调用令牌 */ diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java index 6de05e42b..a861c9ba7 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java @@ -2,6 +2,7 @@ package com.jsowell.netty.handler.yunkuaichong; import com.alibaba.fastjson2.JSON; import com.google.common.primitives.Bytes; +import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.domain.ykc.YKCDataProtocol; @@ -645,14 +646,20 @@ public class TransactionRecordsRequestHandler extends AbstractYkcHandler { // 异步绑定第三方平台优惠券 OrderBasicInfo finalOrderBasicInfo = orderBasicInfo; - CompletableFuture.runAsync(() -> { - try { - String bindResult = commonService.bindCoupon(finalOrderBasicInfo); - log.info("绑定优惠券 订单信息:{}, result:{}", finalOrderBasicInfo, bindResult); - } catch (Exception e) { - log.error("绑定优惠券 error,", e); - } - }, executor); + String redisKey = CacheConstants.CAR_BIND_COUPON_BY_ORDER_CODE + orderBasicInfo.getOrderCode(); + Object cacheObject = redisCache.getCacheObject(redisKey); + if (cacheObject == null) { + CompletableFuture.runAsync(() -> { + try { + String bindResult = commonService.bindCoupon(finalOrderBasicInfo); + log.info("绑定优惠券 订单信息:{}, result:{}", finalOrderBasicInfo, bindResult); + // 删除绑定优惠券缓存 + redisCache.deleteObject(redisKey); + } catch (Exception e) { + log.error("绑定优惠券 error,", e); + } + }, executor); + } // // 给车辆绑定优惠券 // try { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java index 7988c4e0b..f716a8c5d 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java @@ -323,6 +323,21 @@ public class UploadRealTimeMonitorHandler extends AbstractYkcHandler { if (saveRedisFlag) { pileBasicInfoService.saveRealTimeMonitorData2Redis(realTimeMonitorData); } + // 判断该订单是否需要下发优惠券 + String redisKey = CacheConstants.CAR_BIND_COUPON_BY_ORDER_CODE + orderInfo.getOrderCode(); + Object cacheObject = redisCache.getCacheObject(redisKey); + if (cacheObject == null && sumChargingTime >= 10) { + // 异步绑定优惠券并设置缓存 + CompletableFuture.runAsync(() -> { + try { + commonService.bindCoupon(orderInfo); + redisCache.setCacheObject(redisKey, Boolean.TRUE); + } catch (Exception e) { + log.error("异步绑定车辆优惠券 error,", e); + } + }, executor); + } + } // 异步推送第三方平台实时数据