微信支付参数放缓存

This commit is contained in:
2023-03-30 16:18:09 +08:00
parent b4c1c8e4eb
commit 310d08336f
3 changed files with 29 additions and 6 deletions

View File

@@ -10,6 +10,7 @@ import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.MemberWalletEnum; import com.jsowell.common.enums.MemberWalletEnum;
import com.jsowell.common.enums.ykc.ActionTypeEnum; import com.jsowell.common.enums.ykc.ActionTypeEnum;
import com.jsowell.common.enums.ykc.OrderPayModeEnum; import com.jsowell.common.enums.ykc.OrderPayModeEnum;
@@ -82,6 +83,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -125,6 +127,9 @@ public class OrderService {
@Autowired @Autowired
private IPileStationInfoService pileStationInfoService; private IPileStationInfoService pileStationInfoService;
@Autowired
private RedisCache redisCache;
/** /**
* 生成订单 * 生成订单
* *
@@ -164,7 +169,8 @@ public class OrderService {
balancePayOrder(dto); balancePayOrder(dto);
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
// 微信支付 // 微信支付
Map<String, Object> weixinMap = wechatPayOrder(dto, orderInfo); dto.setOrderBasicInfo(orderInfo);
Map<String, Object> weixinMap = wechatPayOrder(dto);
// 返回微信支付参数 // 返回微信支付参数
resultMap.put("weixinMap", weixinMap); resultMap.put("weixinMap", weixinMap);
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付 } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付
@@ -195,11 +201,20 @@ public class OrderService {
/** /**
* 微信支付订单逻辑 获取支付参数 * 微信支付订单逻辑 获取支付参数
* @param dto * @param dto
* @param orderInfo
* @return * @return
* @throws Exception * @throws Exception
*/ */
private Map<String, Object> wechatPayOrder(PayOrderDTO dto, OrderBasicInfo orderInfo) throws Exception { private Map<String, Object> wechatPayOrder(PayOrderDTO dto) throws Exception {
String redisKey = "WECHAT_PAY_ORDER_PARAM:" + dto.getOrderCode();
Map<String, Object> cacheObject = redisCache.getCacheObject(redisKey);
if (cacheObject != null) {
return cacheObject;
}
OrderBasicInfo orderInfo = dto.getOrderBasicInfo();
if (orderInfo == null) {
orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode());
}
String openId = memberService.getOpenIdByCode(dto.getCode()); String openId = memberService.getOpenIdByCode(dto.getCode());
if (StringUtils.isBlank(openId)) { if (StringUtils.isBlank(openId)) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR); throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
@@ -215,7 +230,12 @@ public class OrderService {
.build(); .build();
weixinPayDTO.setAttach(JSONObject.toJSONString(paymentScenarioDTO)); weixinPayDTO.setAttach(JSONObject.toJSONString(paymentScenarioDTO));
weixinPayDTO.setDescription("充电费用"); weixinPayDTO.setDescription("充电费用");
return this.weixinPayV3(weixinPayDTO); Map<String, Object> payV3 = this.weixinPayV3(weixinPayDTO);
if (payV3 != null) {
// 表示已经获取到支付参数了,后续再有支付请求就拒绝
redisCache.setCacheObject(redisKey, payV3, 15, TimeUnit.MINUTES);
}
return payV3;
} }
/** /**

View File

@@ -440,8 +440,8 @@ public class TransactionRecordsRequestHandler extends AbstractHandler {
startIndex += length; startIndex += length;
length = 8; length = 8;
byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); // byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16);
String logicCard = BytesUtil.binary(logicCardNum, 16); String logicCard = BytesUtil.binary(cardNumByteArr, 16);
log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " + log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " +
"峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " + "峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " +

View File

@@ -1,5 +1,6 @@
package com.jsowell.pile.dto; package com.jsowell.pile.dto;
import com.jsowell.pile.domain.OrderBasicInfo;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
@@ -42,6 +43,8 @@ public class PayOrderDTO {
*/ */
private String lockValue; private String lockValue;
private OrderBasicInfo orderBasicInfo;
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)