update 计算订单会员折扣逻辑

This commit is contained in:
2024-01-11 16:14:35 +08:00
parent 2c50f827b1
commit e71ddfb2c8
8 changed files with 104 additions and 56 deletions

View File

@@ -499,9 +499,13 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// settleOrder(data, orderInfo);
// 新逻辑
String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderInfo.getMerchantId());
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
orderLogic.settleOrder(data, orderInfo);
try {
String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderInfo.getMerchantId());
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
orderLogic.settleOrder(data, orderInfo);
} catch (Exception e) {
logger.error("充电桩启动失败,执行退款逻辑发生异常", e);
}
}
/**
@@ -2369,12 +2373,12 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
// 是平台测试员
accountBalance = new BigDecimal("500");
accountBalance = Constants.whitelistDefaultAmount;
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
} else if (pileStationWhitelist != null) {
// 站点白名单
accountBalance = new BigDecimal("500");
accountBalance = Constants.whitelistDefaultAmount;
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
} else {
// 通过memberId获取账户余额
@@ -2384,9 +2388,13 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
}
accountBalance = memberVO.getTotalAccountAmount();
if (accountBalance.compareTo(BigDecimal.ZERO) <= 0) {
logger.info("充电桩主动申请启动充电生成订单 余额不足", JSON.toJSONString(dto));
logger.info("充电桩主动申请启动充电生成订单 余额不足, memberId:{}, MemberVO:{}", dto.getMemberId(), JSON.toJSONString(memberVO));
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
}
BigDecimal defaultAmount = Constants.balancePayMaxAmount;
if (accountBalance.compareTo(defaultAmount) > 0) {
accountBalance = defaultAmount;
}
payMode = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue();
// accountBalance = memberVO.getTotalAccountAmount();
// dto.setChargeAmount(totalAccountAmount); // 充电金额
@@ -2961,7 +2969,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
resultMap.put("weixinMap", weixinMap);
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
// 白名单支付可以直接调支付回调方法
dto.setPayAmount(new BigDecimal("500"));
dto.setPayAmount(Constants.whitelistDefaultAmount);
whiteListPayOrder(dto);
}
return resultMap;

View File

@@ -19,6 +19,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class OrderPayRecordServiceImpl implements OrderPayRecordService {
@@ -50,6 +52,10 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService {
@Override
public int batchInsert(List<OrderPayRecord> payRecordList) {
if (CollectionUtils.isEmpty(payRecordList)) {
return 0;
}
payRecordList = payRecordList.stream().filter(Objects::nonNull).collect(Collectors.toList());
return orderPayRecordMapper.batchInsert(payRecordList);
}