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 3e38ed279..4c7a67a9a 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -146,8 +146,11 @@ public class OrderService { // // 保存订单到数据库 saveOrder2Database // String orderCode = saveOrder2Database(dto); - String orderCode = orderBasicInfoService.generateOrder(dto); - return orderCode; + OrderBasicInfo basicInfo = orderBasicInfoService.generateOrder(dto); + if (basicInfo != null) { + return basicInfo.getOrderCode(); + } + return null; } /** diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java index d684de61a..e2c6ed729 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java @@ -146,21 +146,13 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{ dto.setPileSn(pileSn); dto.setConnectorCode(connectorCode); dto.setStartMode(StartModeEnum.AUTH_CARD.getValue()); + dto.setMemberId(pileAuthCardInfo.getMemberId()); Map map = orderBasicInfoService.generateOrderByCard(dto); if (map != null) { transactionCode = (String) map.get("transactionCode"); accountBalanceByteArr = YKCUtils.getPriceByte(String.valueOf(map.get("accountBalance")), 2); // 鉴权成功标识 0x00 失败 0x01 成功 authenticationFlagByteArr = Constants.oneByteArray; - - // 推送小程序启动充电消息 - // 通过memberId查询openId - MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(pileAuthCardInfo.getMemberId()); - WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO(); - sendMsgDTO.setOpenId(memberBasicInfo.getOpenId()); - sendMsgDTO.setOrderCode((String) map.get("orderCode")); - - wxAppletRemoteService.startChargingSendMsg(sendMsgDTO); }else { throw new BusinessException("", "生成刷卡订单失败"); } @@ -200,21 +192,13 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{ dto.setPileSn(pileSn); dto.setConnectorCode(connectorCode); dto.setStartMode(StartModeEnum.VIN_CODE.getValue()); + dto.setMemberId(plateInfo.getMemberId()); Map map = orderBasicInfoService.generateOrderByCard(dto); if (map != null) { transactionCode = (String) map.get("transactionCode"); accountBalanceByteArr = YKCUtils.getPriceByte(String.valueOf(map.get("accountBalance")), 2); // 鉴权成功标识 0x00 失败 0x01 成功 authenticationFlagByteArr = Constants.oneByteArray; - - // 推送小程序启动充电消息 - // 通过memberId查询openId - MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(plateInfo.getMemberId()); - WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO(); - sendMsgDTO.setOpenId(memberBasicInfo.getOpenId()); - sendMsgDTO.setOrderCode((String) map.get("orderCode")); - - wxAppletRemoteService.startChargingSendMsg(sendMsgDTO); }else { throw new BusinessException("", "生成vin订单失败"); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index e9bf71412..ed007cee1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -233,7 +233,7 @@ public interface IOrderBasicInfoService { List getAppointmentOrder(LocalDateTime dateTime); - Map generateOrderByCard(GenerateOrderDTO dto); + Map generateOrderByCard(GenerateOrderDTO dto) throws Exception; /** * 联联平台 获取累计数据用 @@ -284,7 +284,7 @@ public interface IOrderBasicInfoService { * @param dto * @return */ - String generateOrder(GenerateOrderDTO dto) throws ParseException; + OrderBasicInfo generateOrder(GenerateOrderDTO dto) throws ParseException; void analysisPileParameter(BasicPileDTO dto); 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 c96a685eb..009d30656 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 @@ -1577,7 +1577,79 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * @return */ @Override - public Map generateOrderByCard(GenerateOrderDTO dto) { + public Map generateOrderByCard(GenerateOrderDTO dto) throws Exception { + // 通过memberId获取账户余额 + MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); + if (memberVO == null) { + throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); + } + BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + if (totalAccountAmount.compareTo(BigDecimal.ZERO) <= 0) { + throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); + } + + dto.setChargeAmount(totalAccountAmount); // 充电金额 + dto.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); // 1-余额支付 + 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码改成启动锁定 + dto.getMemberPlateNumberRelation().setVinStatus("2"); + memberPlateNumberRelationService.updateMemberPlateNumberRelation(dto.getMemberPlateNumberRelation()); + } + + // 组装结果集 + Map map = Maps.newHashMap(); + map.put("orderCode", basicInfo.getOrderCode()); + map.put("transactionCode", basicInfo.getTransactionCode()); + map.put("accountBalance", totalAccountAmount); + + logger.info("生成订单 result:{}", JSON.toJSONString(map)); + + // 支付订单 + PayOrderDTO payOrderDTO = new PayOrderDTO(); + payOrderDTO.setOrderCode(basicInfo.getOrderCode()); + payOrderDTO.setPayAmount(totalAccountAmount); + payOrderDTO.setPayMode(dto.getPayMode()); + payOrderDTO.setMemberId(dto.getMemberId()); + // payOrderDTO.setCode(); + // payOrderDTO.setLockValue(); + payOrderDTO.setOrderBasicInfo(basicInfo); + + payOrder(payOrderDTO); + + // 推送小程序启动充电消息 + // 通过memberId查询openId + MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(dto.getMemberId()); + WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO(); + sendMsgDTO.setOpenId(memberBasicInfo.getOpenId()); + sendMsgDTO.setOrderCode(basicInfo.getOrderCode()); + + wxAppletRemoteService.startChargingSendMsg(sendMsgDTO); + + // return map; + + + + + + + + + + + + String pileSn = dto.getPileSn(); String connectorCode = dto.getConnectorCode(); String startMode = dto.getStartMode(); @@ -1600,14 +1672,14 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { vinCode = relation.getVinCode(); } // 通过memberId获取账户余额 - MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(memberId); - if (memberVO == null) { - throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); - } - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); - if (totalAccountAmount.compareTo(BigDecimal.ZERO) <= 0) { - throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); - } + // MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(memberId); + // if (memberVO == null) { + // throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); + // } + // BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + // if (totalAccountAmount.compareTo(BigDecimal.ZERO) <= 0) { + // throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); + // } String transactionCode = IdUtils.generateTransactionCode(pileSn, connectorCode); // 通过桩号查询所属站点 @@ -2011,7 +2083,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } @Override - public String generateOrder(GenerateOrderDTO dto) throws ParseException { + public OrderBasicInfo generateOrder(GenerateOrderDTO dto) throws ParseException { logger.info("generateOrder param:{}", JSONObject.toJSONString(dto)); // 处理前端传的参数 analysisPileParameter(dto); @@ -2020,9 +2092,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { checkPileInfo(dto); // 保存订单到数据库 saveOrder2Database - String orderCode = saveOrder2Database(dto); + OrderBasicInfo basicInfo = saveOrder2Database(dto); - return orderCode; + return basicInfo; } /** @@ -2400,7 +2472,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * @param dto * @return */ - private String saveOrder2Database(GenerateOrderDTO dto) throws ParseException { + private OrderBasicInfo saveOrder2Database(GenerateOrderDTO dto) throws ParseException { String orderCode = IdUtils.getOrderCode(); String transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode()); @@ -2433,6 +2505,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { .settleAmount(BigDecimal.ZERO) .startType(dto.getStartType()) .build(); + if (StringUtils.equals(dto.getStartMode(), StartModeEnum.AUTH_CARD.getValue())) { + // 鉴权卡启动 + orderBasicInfo.setLogicCard(dto.getPileAuthCardInfo().getLogicCard()); + } + if (StringUtils.equals(dto.getStartMode(), StartModeEnum.VIN_CODE.getValue())) { + // vin启动 + orderBasicInfo.setVinCode(dto.getMemberPlateNumberRelation().getVinCode()); + } + if (StringUtils.equals(dto.getStartType(), StartTypeEnum.APPOINTMENT.getValue())) { orderBasicInfo.setAppointmentTime(DateUtils.parseDate(dto.getAppointmentTime(), DateUtils.YYYY_MM_DD_HH_MM_SS)); } @@ -2470,6 +2551,6 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { .orderDetail(orderDetail) .build(); pileTransactionService.doCreateOrder(createOrderTransactionDTO); - return orderCode; + return orderBasicInfo; } }