From cdf00d4c6792208a3cadaa65b264c7d0e3b9b811 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 30 Aug 2023 10:13:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=20=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=B5=8B=E8=AF=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/SpringBootTestController.java | 133 +++++++++++++++--- .../jsowell/pile/dto/GenerateOrderDTO.java | 5 + .../pile/service/IOrderBasicInfoService.java | 2 + .../impl/OrderBasicInfoServiceImpl.java | 2 +- 4 files changed, 124 insertions(+), 18 deletions(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index c02a1c4b4..7486a10d2 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -28,6 +28,7 @@ import com.jsowell.common.core.domain.entity.SysDictData; import com.jsowell.common.core.domain.ykc.LoginRequestData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.enums.AcquirerEnum; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; @@ -54,6 +55,8 @@ import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.SnUtils; import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.SendMessageVO; import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.OrderListVO; @@ -217,40 +220,136 @@ public class SpringBootTestController { @Autowired private TransactionService transactionService; + @Autowired + private OrderPayRecordService orderPayRecordService; + /** * 单元测试,测试订单流程 */ @Test - public void testTheOrderProcess() { + public void testTheOrderProcess() throws Exception { // 生成订单 - OrderBasicInfo orderBasicInfo = generateAnOrder(); - + // OrderBasicInfo orderBasicInfo = generateAnOrder(); + // System.out.println(orderBasicInfo); // 支付订单 - PayOrderDTO dto = new PayOrderDTO(); - - payOrder(dto); - + // int a = payOrder(orderBasicInfo); + // System.out.println(a); // 结算订单 - + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode("C65033300551"); + settleOrder(orderBasicInfo); // 订单退款 + } - private OrderBasicInfo generateAnOrder() { - OrderBasicInfo orderBasicInfo = new OrderBasicInfo(); - OrderDetail detail = new OrderDetail(); + private OrderBasicInfo generateAnOrder() throws ParseException { + GenerateOrderDTO dto = new GenerateOrderDTO(); + PileConnectorDetailVO vo = new PileConnectorDetailVO(); + vo.setStationId("2"); + dto.setPileConnector(vo); + dto.setMemberId("67945248"); + dto.setStartMode("1"); + dto.setPayMode("4"); + dto.setPileSn("88000000000001"); + dto.setConnectorCode("01"); + dto.setChargeAmount(new BigDecimal("10")); + // 查询充电桩的计费模板 + BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(dto.getPileSn()); + dto.setBillingTemplate(billingTemplateVO); + OrderBasicInfo orderBasicInfo = orderBasicInfoService.saveOrder2Database(dto); - OrderTransactionDTO dto = new OrderTransactionDTO(); - dto.setOrderBasicInfo(orderBasicInfo); - dto.setOrderDetail(detail); - transactionService.doCreateOrder(dto); return orderBasicInfo; } - private OrderBasicInfo payOrder(PayOrderDTO dto) { - return null; + private int payOrder(OrderBasicInfo orderBasicInfo) throws Exception { + // PayOrderDTO dto = new PayOrderDTO(); + // dto.setMemberId(orderBasicInfo.getMemberId()); + // dto.setOrderCode(orderBasicInfo.getOrderCode()); + // dto.setStartMode(orderBasicInfo.getStartMode()); + // dto.setPayMode(orderBasicInfo.getPayMode()); + // dto.setPayAmount(orderBasicInfo.getPayAmount()); + // + // Map map = orderBasicInfoService.payOrder(dto); + // return map; + String paymentId = "test01"; + BigDecimal amount = orderBasicInfo.getPayAmount(); + String orderCode = orderBasicInfo.getOrderCode(); + + JSONObject json = new JSONObject(); + json.put("paymentId", paymentId); + json.put("amount", amount); + + // 记录订单支付流水 + OrderPayRecord orderPayRecord = OrderPayRecord.builder() + .orderCode(orderCode) + .payMode(OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue()) + .payAmount(amount) + .acquirer(AcquirerEnum.ADAPAY.getValue()) + .deductionRecord(json.toJSONString()) + .createBy(null) + .build(); + orderPayRecordService.batchInsert(Lists.newArrayList(orderPayRecord)); + + // 更新冻结金额 支付成功后全部冻结 + memberAdapayRecordService.updateFreezeAmount(paymentId, amount); + + // 支付订单成功 + PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() + .orderCode(orderCode) + .payAmount(amount) + .payMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) + .acquirer(AcquirerEnum.ADAPAY.getValue()) + .build(); + // 订单支付成功 支付回调 + // orderBasicInfoService.payOrderSuccessCallback(callbackDTO); + OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(callbackDTO.getOrderCode()); + + // 修改订单 + orderInfo.setPayMode(callbackDTO.getPayMode()); + orderInfo.setPayStatus(Constants.ONE); + orderInfo.setPayAmount(callbackDTO.getPayAmount()); + orderInfo.setPayTime(new Date()); + orderInfo.setChargeStartTime(new Date()); + orderInfo.setOrderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue()); + return orderBasicInfoService.updateOrderBasicInfo(orderInfo); + } + + private void settleOrder(OrderBasicInfo orderBasicInfo) { + TransactionRecordsData data = TransactionRecordsData.builder() + .transactionCode(orderBasicInfo.getTransactionCode()) + .pileSn(orderBasicInfo.getPileSn()) + .connectorCode(orderBasicInfo.getConnectorCode()) + .startTime("2023-03-10 17:10:24") + .endTime("2023-03-10 17:10:46") + .sharpPrice("1.10000") + .sharpUsedElectricity("2.0000") + .sharpAmount("2.2000") + .peakPrice("1.20000") + .peakUsedElectricity("0") + .peakAmount("0") + .flatPrice("1.30000") + .flatUsedElectricity("0") + .flatAmount("0") + .valleyPrice("1.40000") + .valleyUsedElectricity("0") + .valleyAmount("0") + .totalElectricity("2") + .consumptionAmount("5.3000") + .vinCode("\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000") + .transactionIdentifier("01") + .transactionTime("2023-03-10 17:10:46") + .stopReasonMsg("结束充电,APP远程停止") + .logicCard("0") + .createTime(new Date()) + + .build(); + + orderBasicInfoService.settleOrder(data, orderBasicInfo); + } + + /** * 测试多笔支付情况,解冻部分金额 */ 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 0c0cd0169..f52b51753 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 @@ -78,4 +78,9 @@ public class GenerateOrderDTO extends BasicPileDTO{ * 车牌号码 */ private String plateNumber; + + /** + * 站点id + */ + private String stationId; } 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 55bb94214..486089c2c 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 @@ -58,6 +58,8 @@ public interface IOrderBasicInfoService { */ List selectChargingOrder(String pileSn); + public OrderBasicInfo saveOrder2Database(GenerateOrderDTO dto) throws ParseException; + /** * 修改订单 * 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 f12774f21..dd0c9d1b2 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 @@ -3250,7 +3250,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * @param dto * @return */ - private OrderBasicInfo saveOrder2Database(GenerateOrderDTO dto) throws ParseException { + public OrderBasicInfo saveOrder2Database(GenerateOrderDTO dto) throws ParseException { String orderCode = generateNewOrderCode(); String transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode());