diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ConfirmStartChargingRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ConfirmStartChargingRequestHandler.java index 483de0cb5..1c7cc7cae 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ConfirmStartChargingRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ConfirmStartChargingRequestHandler.java @@ -360,6 +360,9 @@ public class ConfirmStartChargingRequestHandler extends AbstractYkcHandler { log.info("充电桩主动申请充电逻辑, param:{}", JSON.toJSONString(confirmStartChargingData)); Map resultMap = new HashMap<>(); + // 生成订单DTO + GenerateOrderDTO dto = new GenerateOrderDTO(); + String pileSn = confirmStartChargingData.getPileSn(); String connectorCode = confirmStartChargingData.getConnectorCode(); @@ -371,10 +374,12 @@ public class ConfirmStartChargingRequestHandler extends AbstractYkcHandler { String startMode = confirmStartChargingData.getStartMode(); if (StringUtils.equals("01", startMode)) { String physicsCard = confirmStartChargingData.getPhysicsCard(); + dto.setLogicCard(physicsCard); memberWalletVO = memberBasicInfoService.queryMemberInfoByCardCode(physicsCard, pileBasicInfo.getMerchantId() + "", pileBasicInfo.getStationId() + ""); log.info("根据卡号:{},查询会员信息:{}", physicsCard, JSON.toJSONString(memberWalletVO)); } else if (StringUtils.equals("03", startMode)) { String vinCode = confirmStartChargingData.getVinCode(); + dto.setVinCode(vinCode); memberWalletVO = memberBasicInfoService.queryByVinCode(vinCode, pileBasicInfo.getMerchantId() + "", pileBasicInfo.getStationId() + ""); log.info("根据vin码:{},查询会员信息:{}", vinCode, JSON.toJSONString(memberWalletVO)); } @@ -423,7 +428,7 @@ public class ConfirmStartChargingRequestHandler extends AbstractYkcHandler { resultMap.put("accountBalance", accountBalance); // 异步创建订单 - GenerateOrderDTO dto = new GenerateOrderDTO(); + // GenerateOrderDTO dto = new GenerateOrderDTO(); dto.setPileSn(pileSn); dto.setConnectorCode(connectorCode); dto.setTransactionCode(transactionCode); @@ -431,10 +436,11 @@ public class ConfirmStartChargingRequestHandler extends AbstractYkcHandler { dto.setPayMode(payMode); dto.setStartMode(StringUtils.equals("01", startMode) ? "2" : "5"); dto.setMemberId(memberWalletVO.getMemberId()); + dto.setMerchantId(pileBasicInfo.getMerchantId() + ""); CompletableFuture.runAsync(() -> { try { - Map map = orderBasicInfoService.generateOrderByCard(dto); + Map map = orderBasicInfoService.generateOrderByCardV2(dto); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java index 83041f79e..6ef66d1bf 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java @@ -41,6 +41,10 @@ public class GenerateOrderDTO extends BasicPileDTO{ */ private String startMode; + private String vinCode; + + private String logicCard; + /** * 支付方式 1-余额支付;3-白名单支付;4-微信支付;5-支付宝支付 */ @@ -127,4 +131,9 @@ public class GenerateOrderDTO extends BasicPileDTO{ * 启动时soc */ private String startSoc; + + /** + * 运营商id + */ + private String merchantId; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index 3f03c2afb..ca23f3685 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -345,6 +345,8 @@ public interface OrderBasicInfoService{ Map generateOrderByCard(GenerateOrderDTO dto) throws Exception; + Map generateOrderByCardV2(GenerateOrderDTO dto) throws Exception; + /** * 联联平台 获取累计数据用 * @param dto @@ -577,4 +579,6 @@ public interface OrderBasicInfoService{ Map verifyMergeChargeOrder(VerifyMergeChargeOrderDTO dto) throws Exception; List getOrderBasicInfoByTimeInterval(List stationIds, String startTime, String endTime); + + } 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 fe14725b5..5da942a5d 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 @@ -3513,6 +3513,82 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return map; } + /** + * 生成订单 返回交易流水号 + * + * @param dto + * @return + */ + @Override + public Map generateOrderByCardV2(GenerateOrderDTO dto) throws Exception { + logger.info("充电桩主动申请启动充电生成订单 param:{}", JSON.toJSONString(dto)); + BigDecimal accountBalance = dto.getChargeAmount(); + String payMode = dto.getPayMode(); + // 判断当前用户是否为平台测试员 + // PlatformTesterVO platformTesterVO = memberBasicInfoService.selectPlatformTesterStatus(dto.getMemberId()); + // PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn()); + // PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId()); + + // 运营商id + String merchantId = dto.getMerchantId(); + + dto.setChargeAmount(accountBalance); + dto.setPayMode(payMode); + /* + 生成订单 + */ + OrderBasicInfo basicInfo = generateOrder(dto); + if (basicInfo == null) { + return null; + } + if (StringUtils.equals(StartModeEnum.AUTH_CARD.getValue(), dto.getStartMode())) { + // 将卡状态改为启动锁定 + PileAuthCard pileAuthCard = PileAuthCard.builder() + .id(dto.getPileAuthCardInfo().getId()) + .logicCard(dto.getPileAuthCardInfo().getLogicCard()) + .status("2") + .build(); + pileAuthCardService.updatePileAuthCard(pileAuthCard); + } else if (StringUtils.equals(StartModeEnum.VIN_CODE.getValue(), dto.getStartMode())) { + // 将vin码改成启动锁定 2023.11.4 站点白名单和测试员不需要锁定 + if (!StringUtils.equals(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue(), dto.getPayMode())) { + dto.getMemberPlateNumberRelation().setVinStatus("2"); + } + } + + // 组装结果集 + Map map = Maps.newHashMap(); + map.put("orderCode", basicInfo.getOrderCode()); + map.put("transactionCode", basicInfo.getTransactionCode()); + map.put("accountBalance", accountBalance); + + logger.info("生成订单 result:{}", JSON.toJSONString(map)); + + // 支付订单 + PayOrderDTO payOrderDTO = PayOrderDTO.builder() + .orderCode(basicInfo.getOrderCode()) + .payAmount(accountBalance) + .payMode(dto.getPayMode()) + .memberId(dto.getMemberId()) + .startMode(dto.getStartMode()) + .build(); + + String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId); + // 获取处理逻辑 + AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); + orderLogic.payOrder(payOrderDTO); // 充电桩主动申请启动充电生成订单 使用支付 + + /* + 推送小程序启动充电消息 + 通过memberId查询openId + */ + if (StringUtils.isNotBlank(dto.getMemberId())) { + wxAppletRemoteService.startChargingSendMsg(dto.getMemberId(), basicInfo.getOrderCode()); + } + + return map; + } + /** * 联联平台 获取累计数据用 * @@ -4684,7 +4760,12 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { } if (StringUtils.equals(dto.getStartMode(), StartModeEnum.AUTH_CARD.getValue())) { // 鉴权卡启动 - orderBasicInfo.setLogicCard(dto.getPileAuthCardInfo().getLogicCard()); + if (dto.getPileAuthCardInfo() != null) { + orderBasicInfo.setLogicCard(dto.getPileAuthCardInfo().getLogicCard()); + } + if (StringUtils.isNotBlank(dto.getLogicCard())) { + orderBasicInfo.setLogicCard(dto.getLogicCard()); + } } if (StringUtils.equals(dto.getStartMode(), StartModeEnum.VIN_CODE.getValue())) { // vin启动 @@ -4697,10 +4778,13 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { orderBasicInfo.setPlateNumber(memberPlateNumberRelation.getLicensePlateNumber()); } } - if (StringUtils.isNotBlank(dto.getStartSoc())) { - orderBasicInfo.setStartSoc(dto.getStartSoc()); + if (StringUtils.isNotBlank(dto.getVinCode())) { + orderBasicInfo.setVinCode(dto.getVinCode()); } } + if (StringUtils.isNotBlank(dto.getStartSoc())) { + orderBasicInfo.setStartSoc(dto.getStartSoc()); + } /** * 预约时间 @@ -4753,6 +4837,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { .orderDetail(orderDetail) .build(); pileTransactionService.doCreateOrder(createOrderTransactionDTO); + logger.info("订单保存成功-orderCode:{}, transactionCode:{}", orderCode, transactionCode); return orderBasicInfo; }