update 华为平台生成订单、结算订单方法

This commit is contained in:
Lemon
2024-03-20 10:36:36 +08:00
parent f76b436c03
commit a0e4272100
9 changed files with 172 additions and 18 deletions

View File

@@ -69,4 +69,10 @@ public class QueryStartChargeDTO {
* 司机在合作公司的唯一标识(手机号),方便维护订单信息
*/
private String driverId;
/**
* 支付方式(1-余额支付3-白名单支付4-微信支付5-支付宝支付)
*/
private String payMode;
}

View File

@@ -64,4 +64,9 @@ public class HWQueryStartChargeDTO {
private String operatorId;
/**
* 支付方式(1-余额支付3-白名单支付4-微信支付5-支付宝支付)
*/
private String payMode;
}

View File

@@ -2564,13 +2564,16 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.payStatus(Constants.ONE)
.payAmount(dto.getAccountBalance()) // 支付金额
.payTime(new Date())
// .payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue()) // 支付方式
// .payMode() // 支付方式
.orderAmount(BigDecimal.ZERO)
.build();
if (StringUtils.isNotBlank(dto.getPlateNum())) {
// 车牌号
orderBasicInfo.setPlateNumber(dto.getPlateNum());
}
if (StringUtils.isNotBlank(dto.getPayMode())) {
orderBasicInfo.setPayMode(dto.getPayMode());
}
// 根据桩编码查询当前计费模板
BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(pileSn);
// 订单详情

View File

@@ -144,6 +144,13 @@ public abstract class AbstractProgramLogic implements InitializingBean {
*/
public abstract void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo);
/**
* 第三方平台结算订单(目前给华为用)
* @param data
* @param orderBasicInfo
*/
public abstract void settleOrderForThirdParty(TransactionRecordsData data, OrderBasicInfo orderBasicInfo);
/**
* 订单退款
*/
@@ -546,6 +553,30 @@ public abstract class AbstractProgramLogic implements InitializingBean {
return orderDetail;
}
/**
* 获取更新数据后的orderDetail对象(给第三方平台结算订单用)
* @param orderBasicInfo
* @param data
* @return
*/
protected OrderDetail returnUpdateOrderDetailForThirdParty(OrderBasicInfo orderBasicInfo, TransactionRecordsData data){
String orderCode = orderBasicInfo.getOrderCode();
BigDecimal orderAmount = orderBasicInfo.getOrderAmount();
// 更新订单详情 查询订单详情 修改订单数据
OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode);
// 总用电量
orderDetail.setTotalUsedElectricity(new BigDecimal(data.getTotalElectricity()));
// 总电费
orderDetail.setTotalElectricityAmount(new BigDecimal(data.getTotalElectricityAmount()));
// 总服务费
orderDetail.setTotalServiceAmount(new BigDecimal(data.getTotalServiceAmount()));
// 总订单金额
orderDetail.setTotalOrderAmount(orderAmount);
return orderDetail;
}
/**
* 余额支付 计算需要退回的金额
* 【公共方法】

View File

@@ -406,6 +406,45 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSON.toJSONString(dto));
}
/**
* 第三方平台结算订单(目前给华为用)
* @param data
* @param orderBasicInfo
*/
public void settleOrderForThirdParty(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) {
logger.info("第三方平台结算订单start data:{}, orderBasicInfo:{}", data.toString(), JSON.toJSONString(orderBasicInfo));
// 判断订单状态
if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode());
return;
}
// 获取更新数据后的orderBasicInfo对象
returnUpdateOrderBasicInfo(orderBasicInfo, data);
// 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据
OrderDetail orderDetail = returnUpdateOrderDetailForThirdParty(orderBasicInfo, data);
// 计算订单折扣
// calculateOrderDiscountsV2(orderBasicInfo, orderDetail);
// 更新数据库
OrderTransactionDTO dto = new OrderTransactionDTO();
dto.setOrderBasicInfo(orderBasicInfo);
dto.setOrderDetail(orderDetail);
transactionService.doUpdateOrder(dto);
// 订单退款
refundOrder(orderBasicInfo);
// 发送停止充电订阅消息
sendMsg(orderBasicInfo);
// 从redis中取出实时记录保存到表中
realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSON.toJSONString(dto));
}
// uniApp 发送停止充电订阅消息
private void sendMsg(OrderBasicInfo orderBasicInfo) {
try {

View File

@@ -413,6 +413,46 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic {
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSON.toJSONString(dto));
}
/**
* 第三方平台结算订单(目前给华为用)
* @param data
* @param orderBasicInfo
*/
@Override
public void settleOrderForThirdParty(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) {
logger.info("第三方平台结算订单start data:{}, orderBasicInfo:{}", data.toString(), JSON.toJSONString(orderBasicInfo));
// 判断订单状态
if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode());
return;
}
// 获取更新数据后的orderBasicInfo对象
returnUpdateOrderBasicInfo(orderBasicInfo, data);
// 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据
OrderDetail orderDetail = returnUpdateOrderDetailForThirdParty(orderBasicInfo, data);
// 计算订单折扣
// calculateOrderDiscountsV2(orderBasicInfo, orderDetail);
// 更新数据库
OrderTransactionDTO dto = new OrderTransactionDTO();
dto.setOrderBasicInfo(orderBasicInfo);
dto.setOrderDetail(orderDetail);
transactionService.doUpdateOrder(dto);
// 订单退款
refundOrder(orderBasicInfo);
// 发送停止充电订阅消息
sendMsg(orderBasicInfo);
// 从redis中取出实时记录保存到表中
realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSON.toJSONString(dto));
}
@Override
public void refundOrder(OrderBasicInfo orderBasicInfo) {
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();