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); }