diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 2b351a901..56816bddb 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -16,6 +16,7 @@ import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.core.util.AdapaySign; import com.huifu.adapay.model.Payment; import com.jsowell.adapay.common.CreateAdaPaymentParam; +import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.entity.SysDictData; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; @@ -252,7 +253,7 @@ public class OrderService { private Map adapayPayOrder(PayOrderDTO dto) { log.info("===============使用汇付支付"); // 相同参数重复请求,返回同一个支付对象 - String redisKey = "ADAPAY_ORDER_PARAM:" + dto.getOrderCode(); + String redisKey = CacheConstants.ADAPAY_ORDER_PARAM + dto.getOrderCode(); Map cacheObject = redisCache.getCacheObject(redisKey); if (cacheObject != null) { return cacheObject; @@ -312,7 +313,7 @@ public class OrderService { */ private Map wechatPayOrder(PayOrderDTO dto) throws Exception { // 相同参数重复请求,返回同一个支付对象 - String redisKey = "WECHAT_PAY_ORDER_PARAM:" + dto.getOrderCode(); + String redisKey = CacheConstants.WECHAT_PAY_ORDER_PARAM + dto.getOrderCode(); Map cacheObject = redisCache.getCacheObject(redisKey); if (cacheObject != null) { return cacheObject; 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 1c524592a..a92fcdf29 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 @@ -25,6 +25,14 @@ public class CacheConstants { public static final String PILE_PROGRAM_VERSION = "pile_program_version"; + public static final String QUERY_ORDER_CALLBACK = "query_order_callback:"; + + public static final String ADAPAY_ORDER_PARAM = "adapay_order_param:"; + + public static final String WECHAT_PAY_ORDER_PARAM = "wechat_pay_order_param:"; + + public static final String ACCESS_TOKEN = "AccessToken_"; + /** * 通过订单号查询订单信息Key */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java index 4247e7899..921fa5b44 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java @@ -1,6 +1,8 @@ package com.jsowell.pile.service.impl; -import com.alibaba.fastjson2.JSON; +import com.jsowell.common.constant.CacheConstants; +import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.AdapayCallbackRecord; import com.jsowell.pile.mapper.AdapayCallbackRecordMapper; import com.jsowell.pile.service.AdapayCallbackRecordService; @@ -15,20 +17,39 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ @Autowired private AdapayCallbackRecordMapper adapayCallbackRecordMapper; + @Autowired + private RedisCache redisCache; + @Override public void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord) { adapayCallbackRecordMapper.insert(callbackRecord); } + /** + * 根据订单号查询支付回调信息 + * @param orderCode + * @return + */ @Override public AdapayCallbackRecord selectByOrderCode(String orderCode) { - AdapayCallbackRecord record = null; + if (StringUtils.isBlank(orderCode)) { + return null; + } + String redisKey = CacheConstants.QUERY_ORDER_CALLBACK + orderCode; + AdapayCallbackRecord record = redisCache.getCacheObject(redisKey); + if (record != null) { + return record; + } + // AdapayCallbackRecord record = null; try { record = adapayCallbackRecordMapper.selectByOrderCode(orderCode); + if (record != null) { + redisCache.setCacheObject(redisKey, record, CacheConstants.cache_expire_time_1d); + } } catch (Exception e) { log.error("查询汇付支付回调记录失败", e); } - log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record)); + // log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record)); return record; } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index bd79ef40f..d4535a759 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -169,10 +169,11 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { if (CollectionUtils.isNotEmpty(orderListVOS)) { for (OrderListVO orderListVO : orderListVOS) { // 如果是微信支付,通过订单号查询微信支付单号 + logger.info("如果是微信支付,通过订单号查询微信支付单号 orderListVO:{}", JSON.toJSONString(orderListVO)); if (StringUtils.equals(PaymentInstitutionsEnum.ADAPAY.getValue(), orderListVO.getPaymentInstitutions())) { AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderListVO.getOrderCode()); orderListVO.setOutTradeNo(adapayCallbackRecord.getPaymentId()); - } else { + } else if (StringUtils.equals(PaymentInstitutionsEnum.WECHAT_PAY.getValue(), orderListVO.getPaymentInstitutions())){ WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderListVO.getOrderCode()); orderListVO.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo()); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WxpayCallbackRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WxpayCallbackRecordServiceImpl.java index cb10f7639..d21f37cdc 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WxpayCallbackRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WxpayCallbackRecordServiceImpl.java @@ -1,9 +1,13 @@ package com.jsowell.pile.service.impl; +import com.jsowell.common.constant.CacheConstants; +import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.WxpayCallbackRecord; import com.jsowell.pile.mapper.WxpayCallbackRecordMapper; import com.jsowell.pile.service.WxpayCallbackRecordService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -19,6 +23,9 @@ public class WxpayCallbackRecordServiceImpl implements WxpayCallbackRecordServic @Resource private WxpayCallbackRecordMapper wxpayCallbackRecordMapper; + @Autowired + private RedisCache redisCache; + @Override public int deleteByPrimaryKey(Integer id) { return wxpayCallbackRecordMapper.deleteByPrimaryKey(id); @@ -51,9 +58,20 @@ public class WxpayCallbackRecordServiceImpl implements WxpayCallbackRecordServic @Override public WxpayCallbackRecord selectByOrderCode(String orderCode) { - WxpayCallbackRecord wxpayCallbackRecord = null; + if (StringUtils.isBlank(orderCode)) { + return null; + } + String redisKey = CacheConstants.QUERY_ORDER_CALLBACK + orderCode; + WxpayCallbackRecord wxpayCallbackRecord = redisCache.getCacheObject(redisKey); + if (wxpayCallbackRecord != null) { + return wxpayCallbackRecord; + } + // WxpayCallbackRecord wxpayCallbackRecord = null; try { wxpayCallbackRecord = wxpayCallbackRecordMapper.selectByOrderCode(orderCode); + if (wxpayCallbackRecord != null) { + redisCache.setCacheObject(redisKey, wxpayCallbackRecord, CacheConstants.cache_expire_time_1d); + } } catch (Exception e) { log.error("根据订单号查询微信支付记录:{}", orderCode, e); } diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java index c27cd82e8..6ecdbc8ba 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; +import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.ReturnCodeEnum; @@ -78,7 +79,7 @@ public class WxAppletRemoteService { // secret = properties.getAppSecret(); //查询token是否存在 - String redisKey = "AccessToken_" + appid; + String redisKey = CacheConstants.ACCESS_TOKEN + appid; // 使用缓存先查询AccessToken是否存在 String accessToken = redisCache.getCacheObject(redisKey); // 存在直接返回,不存在重新获取AccessToken