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 c93f0612a..37b3e4877 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 @@ -36,6 +36,9 @@ public class CacheConstants { // 缓存时间 30天 public static final int cache_expire_time_30d = cache_expire_time_1d * 30; + // 保存order_monitor_data + public static final String INSERT_ORDER_MONITOR_DATA = "insert_order_monitor_data:"; + public static final String PUSH_STATION_CONNECTOR = "push_station_connector"; // 支付确认列表 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderMonitorDataServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderMonitorDataServiceImpl.java index a3dbad930..15c56eb6a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderMonitorDataServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderMonitorDataServiceImpl.java @@ -2,14 +2,17 @@ package com.jsowell.pile.service.impl; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.OrderMonitorData; import com.jsowell.pile.mapper.OrderMonitorDataMapper; import com.jsowell.pile.service.OrderMonitorDataService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +@Slf4j @Service public class OrderMonitorDataServiceImpl implements OrderMonitorDataService { @@ -26,8 +29,30 @@ public class OrderMonitorDataServiceImpl implements OrderMonitorDataService { @Override public int insertSelective(OrderMonitorData record) { - // 防止重复入库 - return orderMonitorDataMapper.insertSelective(record); + int i = 0; + // 获取锁 + String key = CacheConstants.INSERT_ORDER_MONITOR_DATA + record.getOrderCode(); + try { + Boolean setnx = redisCache.setnx(key, IdUtils.fastSimpleUUID(), 30); + if (!setnx) { + return i; + } + // 防止重复入库 + OrderMonitorData orderMonitorData = selectByOrderCode(record.getOrderCode()); + if (orderMonitorData != null) { + return i; + } + + i = orderMonitorDataMapper.insertSelective(record); + if (i > 0) { + setRedisCache(record); + } + } catch (Exception e) { + log.error("保存OrderMonitorData异常", e); + } finally { + redisCache.deleteObject(key); + } + return i; } @Override @@ -43,9 +68,10 @@ public class OrderMonitorDataServiceImpl implements OrderMonitorDataService { orderMonitorData = orderMonitorDataMapper.selectByOrderCode(orderCode); if (orderMonitorData != null) { // 放缓存 - redisCache.setCacheObject(redisKey, orderMonitorData, CacheConstants.cache_expire_time_12h); - String redisKey2 = CacheConstants.ORDER_MONITOR_DATA_BY_TRANSACTION_CODE + orderMonitorData.getTransactionCode(); - redisCache.setCacheObject(redisKey2, orderMonitorData, CacheConstants.cache_expire_time_12h); + setRedisCache(orderMonitorData); + // redisCache.setCacheObject(redisKey, orderMonitorData, CacheConstants.cache_expire_time_12h); + // String redisKey2 = CacheConstants.ORDER_MONITOR_DATA_BY_TRANSACTION_CODE + orderMonitorData.getTransactionCode(); + // redisCache.setCacheObject(redisKey2, orderMonitorData, CacheConstants.cache_expire_time_12h); } } return orderMonitorData; @@ -59,12 +85,24 @@ public class OrderMonitorDataServiceImpl implements OrderMonitorDataService { orderMonitorData = orderMonitorDataMapper.selectByTransactionCode(transactionCode); if (orderMonitorData != null) { // 放缓存 - redisCache.setCacheObject(redisKey, orderMonitorData, CacheConstants.cache_expire_time_12h); - String redisKey2 = CacheConstants.ORDER_MONITOR_DATA_BY_ORDER_CODE + orderMonitorData.getOrderCode(); - redisCache.setCacheObject(redisKey2, orderMonitorData, CacheConstants.cache_expire_time_12h); + setRedisCache(orderMonitorData); + // redisCache.setCacheObject(redisKey, orderMonitorData, CacheConstants.cache_expire_time_12h); + // String redisKey2 = CacheConstants.ORDER_MONITOR_DATA_BY_ORDER_CODE + orderMonitorData.getOrderCode(); + // redisCache.setCacheObject(redisKey2, orderMonitorData, CacheConstants.cache_expire_time_12h); } } return orderMonitorData; } + // 放缓存 + private void setRedisCache(OrderMonitorData orderMonitorData) { + if (orderMonitorData == null) { + return; + } + String redisKey = CacheConstants.ORDER_MONITOR_DATA_BY_ORDER_CODE + orderMonitorData.getOrderCode(); + redisCache.setCacheObject(redisKey, orderMonitorData, CacheConstants.cache_expire_time_12h); + String redisKey2 = CacheConstants.ORDER_MONITOR_DATA_BY_TRANSACTION_CODE + orderMonitorData.getTransactionCode(); + redisCache.setCacheObject(redisKey2, orderMonitorData, CacheConstants.cache_expire_time_12h); + } + }