This commit is contained in:
2024-01-09 14:22:40 +08:00
parent 2764a267ae
commit 9ad40a7717
4 changed files with 891 additions and 259 deletions

View File

@@ -128,12 +128,10 @@ public interface OrderBasicInfoService{
/**
* 根据交易记录结算订单
* @param data 交易记录数据
* @param orderBasicInfo
* @deprecated 该方法废弃 {@link AbstractProgramLogic#settleOrder(TransactionRecordsData, OrderBasicInfo)} instead.
*/
@Deprecated
void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo);
// void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo);
/**
* 关闭15分钟未支付订单

View File

@@ -729,61 +729,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return queryChargingByPileSnAndConnectorCode(pileSn, connectorCode);
}
/**
* 结算订单逻辑/订单结算逻辑
*
* @param data 交易记录数据
* @param orderBasicInfo 订单主表信息,由调用方传过来
*/
@Override
public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) {
logger.info("结算订单start data:{}, orderBasicInfo:{}", data.toString(), orderBasicInfo.toString());
// 判断订单状态
if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) {
logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode());
return;
}
// 获取更新数据后的orderBasicInfo对象
returnUpdateOrderBasicInfo(orderBasicInfo, data);
// 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据
OrderDetail orderDetail = returnUpdateOrderDetail(orderBasicInfo, data);
// 更新数据库
OrderTransactionDTO dto = new OrderTransactionDTO();
dto.setOrderBasicInfo(orderBasicInfo);
dto.setOrderDetail(orderDetail);
transactionService.doUpdateOrder(dto);
// 订单支付结算and退款, delay商户部分解冻并退款, 非delay商户全部解冻并退款
orderPaymentSettlementAndRefund(orderBasicInfo);
// 将卡/vin状态解锁
if (!StringUtils.equals("0000000000000000", data.getLogicCard())) {
cardStatusUnlocked(orderBasicInfo.getLogicCard());
}
// 如果是vin启动将启动锁定状态改为正常
if (StringUtils.equals(data.getTransactionIdentifier(), "05")) {
vinStatusUnlocked(data.getVinCode());
}
// 发送停止充电订阅消息
sendMsg(orderBasicInfo);
// 从redis中取出实时记录保存到表中
realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode());
// TODO 如果该站点的停车场优惠券信息配置不为空,则需绑定一张优惠券
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSONObject.toJSONString(dto));
}
/**
* 记账
*/
// private void doUpdateClearingBill(OrderSettleResult orderSettleResult) {
// logger.info("orderSettleResult:{}", JSON.toJSONString(orderSettleResult));
// }
/**
* 订单分账逻辑
* 订单结算完成就执行清分and退款
@@ -3085,6 +3030,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
/**
* 计算启动金额
* 2024年1月9日10点24分 下发金额不变,由结算时计算优惠金额
*/
private BigDecimal computeChargeAmount(String merchantId, String stationId, String memberId, BigDecimal payAmount) {
// 默认折扣100%

View File

@@ -438,7 +438,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
}
/**
* 订单结算
* 订单结算/结算订单逻辑/订单结算逻辑
*/
@Override
public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) {
@@ -452,6 +452,8 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
returnUpdateOrderBasicInfo(orderBasicInfo, data);
// 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据
OrderDetail orderDetail = returnUpdateOrderDetail(orderBasicInfo, data);
// 计算订单折扣 calculateOrderDiscounts
calculateOrderDiscounts(orderBasicInfo, orderDetail);
// 更新数据库
OrderTransactionDTO dto = new OrderTransactionDTO();
dto.setOrderBasicInfo(orderBasicInfo);
@@ -480,6 +482,15 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSONObject.toJSONString(dto));
}
/**
* 计算订单折扣
* @param orderBasicInfo 订单主表
* @param orderDetail 订单详情
*/
private void calculateOrderDiscounts(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) {
}
// uniApp 发送停止充电订阅消息
private void sendMsg(OrderBasicInfo orderBasicInfo) {
try {