配置充电停车优惠

This commit is contained in:
Guoqs
2025-02-18 09:42:37 +08:00
parent afdebd9dc6
commit 154a7f35b6
9 changed files with 79 additions and 37 deletions

View File

@@ -3,7 +3,6 @@ package com.jsowell.mq;
import com.alibaba.fastjson2.JSON;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.jsowell.common.constant.RabbitConstants;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.pile.dto.AfterSettleOrderDTO;
import com.jsowell.pile.service.OrderBasicInfoService;
import com.rabbitmq.client.Channel;
@@ -14,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;
/**
* 监听RabbitMQ消息 订单
@@ -33,10 +31,11 @@ public class OrderRabbitListener {
public void receiveChargeOrderData(AfterSettleOrderDTO afterSettleOrderDTO, Channel channel, Message message) throws IOException {
log.info("接收到订单结算数据:{}", JSON.toJSONString(afterSettleOrderDTO));
List<String> newLogicStationIdList = YKCUtils.getNewLogicStationIdList();
if (!newLogicStationIdList.contains(afterSettleOrderDTO.getStationId())) {
return;
}
// 2025年2月18日09点18分全部订单改为实时分账
// List<String> newLogicStationIdList = YKCUtils.getNewLogicStationIdList();
// if (!newLogicStationIdList.contains(afterSettleOrderDTO.getStationId())) {
// return;
// }
log.info("realTimeOrderSplit-订单{}开始执行新分账方法", afterSettleOrderDTO.getOrderCode());
try {

View File

@@ -17,6 +17,13 @@ public interface StationSplitConfigService {
// 根据站点id查询站点分账配置信息
List<StationSplitConfig> queryByStationId(String stationId);
/**
* 根据站点id查询站点分账配置信息, 如果没有配置分账用户, 则执行初始化操作
* @param stationId
* @return
*/
List<StationSplitConfig> queryByStationIdWithInit(String stationId);
List<SplitConfigVO> querySplitConfigByStationId(String stationId);
/**

View File

@@ -47,10 +47,12 @@ public class ChargeParkingDiscountServiceImpl implements ChargeParkingDiscountSe
}
// 查询该站点的停车优惠信息
ChargeParkingDiscountVO discountVO = new ChargeParkingDiscountVO();
discountVO.setId(chargeParkingDiscount.getId() + "");
discountVO.setStationId(chargeParkingDiscount.getStationId());
discountVO.setConditionType(chargeParkingDiscount.getConditionType());
discountVO.setParkingPlatformId(chargeParkingDiscount.getParkingPlatformId());
discountVO.setConditionType(Integer.valueOf(chargeParkingDiscount.getConditionType()));
discountVO.setConditionValue(chargeParkingDiscount.getConditionValue());
discountVO.setDiscountType(chargeParkingDiscount.getDiscountType());
discountVO.setDiscountType(Integer.valueOf(chargeParkingDiscount.getDiscountType()));
discountVO.setDiscountValue(chargeParkingDiscount.getDiscountValue());
discountVO.setStartTime(chargeParkingDiscount.getStartTime());
discountVO.setEndTime(chargeParkingDiscount.getEndTime());

View File

@@ -1839,8 +1839,8 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
}
// 校验分账
verifyOrderAllAmount(afterSettleOrderDTO);
// 根据站点id查询分账配置
List<StationSplitConfig> stationSplitConfigList = stationSplitConfigService.queryByStationId(afterSettleOrderDTO.getStationId());
// 根据站点id查询分账配置(如果未配置则初始化)
List<StationSplitConfig> stationSplitConfigList = stationSplitConfigService.queryStationSplitConfigByStationId(afterSettleOrderDTO.getStationId());
// 计算每个参与分账的用户, 应分多少钱
List<SplitData> splitDataList = calculationSplitDataList(stationSplitConfigList, afterSettleOrderDTO);
List<DivMember> divMemberList = transformDivMemberList(splitDataList);

View File

@@ -59,6 +59,19 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
return stationSplitConfigs;
}
@Override
public List<StationSplitConfig> queryByStationIdWithInit(String stationId) {
// 查询站点分账配置
List<StationSplitConfig> stationSplitConfigs = this.queryByStationId(stationId);
if (CollectionUtils.isEmpty(stationSplitConfigs)) {
// 初始化
this.initSplitConfig(stationId);
// 再次查询
stationSplitConfigs = this.queryByStationId(stationId);
}
return stationSplitConfigs;
}
/**
* 初始化站点分账配置
* @param stationId 站点id
@@ -92,15 +105,7 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
@Override
public List<SplitConfigVO> querySplitConfigByStationId(String stationId) {
List<StationSplitConfig> stationSplitConfigs = this.queryByStationId(stationId);
if (CollectionUtils.isEmpty(stationSplitConfigs)) {
// 如果查询为空初始化数据
initSplitConfig(stationId);
// 再次查询
stationSplitConfigs = this.queryByStationId(stationId);
}
List<StationSplitConfig> stationSplitConfigs = this.queryByStationIdWithInit(stationId);
List<SplitConfigVO> resultList = Lists.newArrayList();
for (StationSplitConfig stationSplitConfig : stationSplitConfigs) {
SplitConfigVO vo = new SplitConfigVO();

View File

@@ -27,7 +27,6 @@ import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.AdapayUtil;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.common.util.id.SnowflakeIdWorker;
import com.jsowell.pile.domain.*;
import com.jsowell.pile.domain.ebike.deviceupload.EBikeMessageCmd03;
@@ -480,10 +479,11 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
transactionService.doUpdateOrder(dto);
// 不在新分账逻辑站点列表中的, 可以走退款逻辑
if (!YKCUtils.getNewLogicStationIdList().contains(orderBasicInfo.getStationId())) {
// 订单退款
refundOrder(orderBasicInfo);
}
// 2025年2月18日09点17分 全部订单改为实时分账
// if (!YKCUtils.getNewLogicStationIdList().contains(orderBasicInfo.getStationId())) {
// // 订单退款
// refundOrder(orderBasicInfo);
// }
// 订单退款
// refundOrder(orderBasicInfo);

View File

@@ -9,15 +9,25 @@ import java.time.LocalTime;
*/
@Data
public class ChargeParkingDiscountVO {
/**
* 主键
*/
private String id;
/**
* 站点id
*/
private String stationId;
/**
* 停车平台id
*/
private Integer parkingPlatformId;
/**
* 门槛类型 1-固定电量2-固定时长
*/
private String conditionType;
private Integer conditionType;
/**
* 门槛值
@@ -29,7 +39,7 @@ public class ChargeParkingDiscountVO {
* 1-减时间单位分钟
* 2-减金额单位元
*/
private String discountType;
private Integer discountType;
/**
* 优惠值