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 7464933df..0af0b208f 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -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.TransactionRecordsData; 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.ykc.ActionTypeEnum; import com.jsowell.common.enums.ykc.OrderPayModeEnum; @@ -82,6 +83,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -125,6 +127,9 @@ public class OrderService { @Autowired private IPileStationInfoService pileStationInfoService; + @Autowired + private RedisCache redisCache; + /** * 生成订单 * @@ -164,7 +169,8 @@ public class OrderService { balancePayOrder(dto); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { // 微信支付 - Map weixinMap = wechatPayOrder(dto, orderInfo); + dto.setOrderBasicInfo(orderInfo); + Map weixinMap = wechatPayOrder(dto); // 返回微信支付参数 resultMap.put("weixinMap", weixinMap); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付 @@ -195,11 +201,20 @@ public class OrderService { /** * 微信支付订单逻辑 获取支付参数 * @param dto - * @param orderInfo * @return * @throws Exception */ - private Map wechatPayOrder(PayOrderDTO dto, OrderBasicInfo orderInfo) throws Exception { + private Map wechatPayOrder(PayOrderDTO dto) throws Exception { + String redisKey = "WECHAT_PAY_ORDER_PARAM:" + dto.getOrderCode(); + Map 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()); if (StringUtils.isBlank(openId)) { throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR); @@ -215,7 +230,12 @@ public class OrderService { .build(); weixinPayDTO.setAttach(JSONObject.toJSONString(paymentScenarioDTO)); weixinPayDTO.setDescription("充电费用"); - return this.weixinPayV3(weixinPayDTO); + Map payV3 = this.weixinPayV3(weixinPayDTO); + if (payV3 != null) { + // 表示已经获取到支付参数了,后续再有支付请求就拒绝 + redisCache.setCacheObject(redisKey, payV3, 15, TimeUnit.MINUTES); + } + return payV3; } /** diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java index 6480100a6..a668e9a69 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java @@ -440,8 +440,8 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { startIndex += length; length = 8; byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); - String logicCard = BytesUtil.binary(logicCardNum, 16); + // byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); + String logicCard = BytesUtil.binary(cardNumByteArr, 16); log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " + "峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " + diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java index 83f301573..d82957fa5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java @@ -1,5 +1,6 @@ package com.jsowell.pile.dto; +import com.jsowell.pile.domain.OrderBasicInfo; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -42,6 +43,8 @@ public class PayOrderDTO { */ private String lockValue; + private OrderBasicInfo orderBasicInfo; + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)