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 bde85189b..7f36ba338 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 @@ -2041,6 +2041,36 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { // 根据站点id查询分账配置(如果未配置则初始化) List stationSplitConfigList = stationSplitConfigService.queryByStationIdWithInit(stationId); + // 查字典是否开启收取平台支持服务费 + String dictValue = DictUtils.getDictValue("platform_service_flag", "status"); + if (StringUtils.equals(dictValue, Constants.ONE)) { // 开启收取平台支持服务费 + // 根据站点id查询平台支持服务费率 + PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(Long.parseLong(stationId)); + // 如果是否对接高德为1, 并且支持服务费率大于0, 则收取平台支持服务费 + if (pileStationInfo != null + && StringUtils.equals(pileStationInfo.getAMapFlag(), Constants.ONE) + && pileStationInfo.getServiceRate().compareTo(BigDecimal.ZERO) > 0) { + // 获取平台支持服务费率 + BigDecimal serviceRate = pileStationInfo.getServiceRate(); + // 取出stationSplitConfigList中手续费承担方, 并把电费分成比例和服务费分成比例减去serviceRate + for (StationSplitConfig stationSplitConfig : stationSplitConfigList) { + if (Constants.ONE.equals(stationSplitConfig.getFeeFlag())) { + stationSplitConfig.setElectricitySplitRatio(stationSplitConfig.getElectricitySplitRatio().subtract(serviceRate)); + stationSplitConfig.setServiceSplitRatio(stationSplitConfig.getServiceSplitRatio().subtract(serviceRate)); + } + } + // 添加一个账户, adapayMemberId为0, 电费分成比例为serviceRate, 服务费分成比例为serviceRate + stationSplitConfigList.add(StationSplitConfig.builder() + .adapayMemberId(Constants.ZERO) + .electricitySplitRatio(serviceRate) + .serviceSplitRatio(serviceRate) + .build() + ); + logger.info("realTimeOrderSplit-订单:{}, 收取平台支持服务费, 平台分成比例为:{}, stationSplitConfigList:{}", + orderCode, serviceRate, JSON.toJSONString(stationSplitConfigList)); + } + } + // 计算每个参与分账的用户, 应分多少钱 List splitDataList = calculationSplitDataList(stationSplitConfigList, afterSettleOrderDTO); List divMemberList = transformDivMemberList(splitDataList);