From cc9598187f7edf6c56e22ff7d9a2ca3813414d2e Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 15 Aug 2023 09:34:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8D=A0=E6=A1=A9=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/api/uniapp/PayController.java | 44 +++++++++++++++++++ .../pile/service/OrderPileOccupyService.java | 5 +++ 2 files changed, 49 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index ca8b9e331..49acd90f5 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -312,4 +312,48 @@ public class PayController extends BaseController { } } + /** + * 支付占桩订单 + */ + @PostMapping("/payOccupyPileOrder") + public RestApiResponse payOccupyPileOrder(HttpServletRequest request, @RequestBody PayOrderDTO dto) { + logger.info("wechatpay支付订单 param:{}", dto.toString()); + RestApiResponse response; + + // 支付订单加锁 + String lockKey = "pay_order_" + dto.getOrderCode(); + String lockValue = IdUtils.fastUUID(); + try { + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR); + } + if (dto.getPayAmount() == null) { + throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + dto.setMemberId(memberId); + dto.setLockValue(lockValue); + // redis锁 + Boolean isLock = redisCache.lock(lockKey, lockValue, 60); + Map map = null; + if (isLock) { + map = orderService.payOrder(dto); + } + response = new RestApiResponse<>(map); + } catch (BusinessException e) { + logger.warn("wechatpay支付订单 warn param:{}", dto.toString(), e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("wechatpay支付订单 error param:{}", dto.toString(), e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_ORDER_PAY_ERROR); + } finally { + // 支付订单解锁 + if (lockValue.equals(redisCache.getCacheObject(lockKey).toString())) { + redisCache.unLock(lockKey); + } + } + logger.info("wechatpay支付订单 result:{}", JSONObject.toJSONString(response)); + return response; + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java index 668cbaa71..a6b5fc2f5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java @@ -36,6 +36,11 @@ public interface OrderPileOccupyService{ */ void generateOccupyPileOrder(String memberId, String pileSn, String connectorCode); + /** + * 停止并计算占桩订单 + * @param pileSn + * @param connectorCode + */ void stopOccupyPileOrder(String pileSn, String connectorCode); }