mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-12 11:19:52 +08:00
配置充电停车优惠
This commit is contained in:
@@ -3,7 +3,6 @@ package com.jsowell.mq;
|
|||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
import com.jsowell.common.constant.RabbitConstants;
|
import com.jsowell.common.constant.RabbitConstants;
|
||||||
import com.jsowell.common.util.YKCUtils;
|
|
||||||
import com.jsowell.pile.dto.AfterSettleOrderDTO;
|
import com.jsowell.pile.dto.AfterSettleOrderDTO;
|
||||||
import com.jsowell.pile.service.OrderBasicInfoService;
|
import com.jsowell.pile.service.OrderBasicInfoService;
|
||||||
import com.rabbitmq.client.Channel;
|
import com.rabbitmq.client.Channel;
|
||||||
@@ -14,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监听RabbitMQ消息 订单
|
* 监听RabbitMQ消息 订单
|
||||||
@@ -33,10 +31,11 @@ public class OrderRabbitListener {
|
|||||||
public void receiveChargeOrderData(AfterSettleOrderDTO afterSettleOrderDTO, Channel channel, Message message) throws IOException {
|
public void receiveChargeOrderData(AfterSettleOrderDTO afterSettleOrderDTO, Channel channel, Message message) throws IOException {
|
||||||
log.info("接收到订单结算数据:{}", JSON.toJSONString(afterSettleOrderDTO));
|
log.info("接收到订单结算数据:{}", JSON.toJSONString(afterSettleOrderDTO));
|
||||||
|
|
||||||
List<String> newLogicStationIdList = YKCUtils.getNewLogicStationIdList();
|
// 2025年2月18日09点18分全部订单改为实时分账
|
||||||
if (!newLogicStationIdList.contains(afterSettleOrderDTO.getStationId())) {
|
// List<String> newLogicStationIdList = YKCUtils.getNewLogicStationIdList();
|
||||||
return;
|
// if (!newLogicStationIdList.contains(afterSettleOrderDTO.getStationId())) {
|
||||||
}
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
log.info("realTimeOrderSplit-订单{}开始执行新分账方法", afterSettleOrderDTO.getOrderCode());
|
log.info("realTimeOrderSplit-订单{}开始执行新分账方法", afterSettleOrderDTO.getOrderCode());
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -17,6 +17,13 @@ public interface StationSplitConfigService {
|
|||||||
// 根据站点id查询站点分账配置信息
|
// 根据站点id查询站点分账配置信息
|
||||||
List<StationSplitConfig> queryByStationId(String stationId);
|
List<StationSplitConfig> queryByStationId(String stationId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据站点id查询站点分账配置信息, 如果没有配置分账用户, 则执行初始化操作
|
||||||
|
* @param stationId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<StationSplitConfig> queryByStationIdWithInit(String stationId);
|
||||||
|
|
||||||
List<SplitConfigVO> querySplitConfigByStationId(String stationId);
|
List<SplitConfigVO> querySplitConfigByStationId(String stationId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -47,10 +47,12 @@ public class ChargeParkingDiscountServiceImpl implements ChargeParkingDiscountSe
|
|||||||
}
|
}
|
||||||
// 查询该站点的停车优惠信息
|
// 查询该站点的停车优惠信息
|
||||||
ChargeParkingDiscountVO discountVO = new ChargeParkingDiscountVO();
|
ChargeParkingDiscountVO discountVO = new ChargeParkingDiscountVO();
|
||||||
|
discountVO.setId(chargeParkingDiscount.getId() + "");
|
||||||
discountVO.setStationId(chargeParkingDiscount.getStationId());
|
discountVO.setStationId(chargeParkingDiscount.getStationId());
|
||||||
discountVO.setConditionType(chargeParkingDiscount.getConditionType());
|
discountVO.setParkingPlatformId(chargeParkingDiscount.getParkingPlatformId());
|
||||||
|
discountVO.setConditionType(Integer.valueOf(chargeParkingDiscount.getConditionType()));
|
||||||
discountVO.setConditionValue(chargeParkingDiscount.getConditionValue());
|
discountVO.setConditionValue(chargeParkingDiscount.getConditionValue());
|
||||||
discountVO.setDiscountType(chargeParkingDiscount.getDiscountType());
|
discountVO.setDiscountType(Integer.valueOf(chargeParkingDiscount.getDiscountType()));
|
||||||
discountVO.setDiscountValue(chargeParkingDiscount.getDiscountValue());
|
discountVO.setDiscountValue(chargeParkingDiscount.getDiscountValue());
|
||||||
discountVO.setStartTime(chargeParkingDiscount.getStartTime());
|
discountVO.setStartTime(chargeParkingDiscount.getStartTime());
|
||||||
discountVO.setEndTime(chargeParkingDiscount.getEndTime());
|
discountVO.setEndTime(chargeParkingDiscount.getEndTime());
|
||||||
|
|||||||
@@ -1839,8 +1839,8 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
}
|
}
|
||||||
// 校验分账
|
// 校验分账
|
||||||
verifyOrderAllAmount(afterSettleOrderDTO);
|
verifyOrderAllAmount(afterSettleOrderDTO);
|
||||||
// 根据站点id查询分账配置
|
// 根据站点id查询分账配置(如果未配置则初始化)
|
||||||
List<StationSplitConfig> stationSplitConfigList = stationSplitConfigService.queryByStationId(afterSettleOrderDTO.getStationId());
|
List<StationSplitConfig> stationSplitConfigList = stationSplitConfigService.queryStationSplitConfigByStationId(afterSettleOrderDTO.getStationId());
|
||||||
// 计算每个参与分账的用户, 应分多少钱
|
// 计算每个参与分账的用户, 应分多少钱
|
||||||
List<SplitData> splitDataList = calculationSplitDataList(stationSplitConfigList, afterSettleOrderDTO);
|
List<SplitData> splitDataList = calculationSplitDataList(stationSplitConfigList, afterSettleOrderDTO);
|
||||||
List<DivMember> divMemberList = transformDivMemberList(splitDataList);
|
List<DivMember> divMemberList = transformDivMemberList(splitDataList);
|
||||||
|
|||||||
@@ -59,6 +59,19 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
|
|||||||
return stationSplitConfigs;
|
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
|
* @param stationId 站点id
|
||||||
@@ -92,15 +105,7 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SplitConfigVO> querySplitConfigByStationId(String stationId) {
|
public List<SplitConfigVO> querySplitConfigByStationId(String stationId) {
|
||||||
List<StationSplitConfig> stationSplitConfigs = this.queryByStationId(stationId);
|
List<StationSplitConfig> stationSplitConfigs = this.queryByStationIdWithInit(stationId);
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(stationSplitConfigs)) {
|
|
||||||
// 如果查询为空初始化数据
|
|
||||||
initSplitConfig(stationId);
|
|
||||||
// 再次查询
|
|
||||||
stationSplitConfigs = this.queryByStationId(stationId);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<SplitConfigVO> resultList = Lists.newArrayList();
|
List<SplitConfigVO> resultList = Lists.newArrayList();
|
||||||
for (StationSplitConfig stationSplitConfig : stationSplitConfigs) {
|
for (StationSplitConfig stationSplitConfig : stationSplitConfigs) {
|
||||||
SplitConfigVO vo = new SplitConfigVO();
|
SplitConfigVO vo = new SplitConfigVO();
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import com.jsowell.common.exception.BusinessException;
|
|||||||
import com.jsowell.common.util.AdapayUtil;
|
import com.jsowell.common.util.AdapayUtil;
|
||||||
import com.jsowell.common.util.DateUtils;
|
import com.jsowell.common.util.DateUtils;
|
||||||
import com.jsowell.common.util.StringUtils;
|
import com.jsowell.common.util.StringUtils;
|
||||||
import com.jsowell.common.util.YKCUtils;
|
|
||||||
import com.jsowell.common.util.id.SnowflakeIdWorker;
|
import com.jsowell.common.util.id.SnowflakeIdWorker;
|
||||||
import com.jsowell.pile.domain.*;
|
import com.jsowell.pile.domain.*;
|
||||||
import com.jsowell.pile.domain.ebike.deviceupload.EBikeMessageCmd03;
|
import com.jsowell.pile.domain.ebike.deviceupload.EBikeMessageCmd03;
|
||||||
@@ -480,10 +479,11 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
transactionService.doUpdateOrder(dto);
|
transactionService.doUpdateOrder(dto);
|
||||||
|
|
||||||
// 不在新分账逻辑站点列表中的, 可以走退款逻辑
|
// 不在新分账逻辑站点列表中的, 可以走退款逻辑
|
||||||
if (!YKCUtils.getNewLogicStationIdList().contains(orderBasicInfo.getStationId())) {
|
// 2025年2月18日09点17分 全部订单改为实时分账
|
||||||
// 订单退款
|
// if (!YKCUtils.getNewLogicStationIdList().contains(orderBasicInfo.getStationId())) {
|
||||||
refundOrder(orderBasicInfo);
|
// // 订单退款
|
||||||
}
|
// refundOrder(orderBasicInfo);
|
||||||
|
// }
|
||||||
|
|
||||||
// 订单退款
|
// 订单退款
|
||||||
// refundOrder(orderBasicInfo);
|
// refundOrder(orderBasicInfo);
|
||||||
|
|||||||
@@ -9,15 +9,25 @@ import java.time.LocalTime;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ChargeParkingDiscountVO {
|
public class ChargeParkingDiscountVO {
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点id
|
* 站点id
|
||||||
*/
|
*/
|
||||||
private String stationId;
|
private String stationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 停车平台id
|
||||||
|
*/
|
||||||
|
private Integer parkingPlatformId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门槛类型 1-固定电量;2-固定时长
|
* 门槛类型 1-固定电量;2-固定时长
|
||||||
*/
|
*/
|
||||||
private String conditionType;
|
private Integer conditionType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门槛值
|
* 门槛值
|
||||||
@@ -29,7 +39,7 @@ public class ChargeParkingDiscountVO {
|
|||||||
* 1-减时间单位分钟
|
* 1-减时间单位分钟
|
||||||
* 2-减金额单位元
|
* 2-减金额单位元
|
||||||
*/
|
*/
|
||||||
private String discountType;
|
private Integer discountType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠值
|
* 优惠值
|
||||||
|
|||||||
@@ -697,7 +697,7 @@ public class CommonService {
|
|||||||
// 是否满足发券条件
|
// 是否满足发券条件
|
||||||
String sumChargingTime = realTimeMonitorData.getSumChargingTime(); // 充电时长
|
String sumChargingTime = realTimeMonitorData.getSumChargingTime(); // 充电时长
|
||||||
String chargingDegree = realTimeMonitorData.getChargingDegree(); // 充电度数
|
String chargingDegree = realTimeMonitorData.getChargingDegree(); // 充电度数
|
||||||
String conditionType = chargeParkingDiscount.getConditionType();
|
String conditionType = String.valueOf(chargeParkingDiscount.getConditionType());
|
||||||
// 如果conditionType为1判断充电度数, 如果为2判断充电时长
|
// 如果conditionType为1判断充电度数, 如果为2判断充电时长
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
if (StringUtils.equals(conditionType, Constants.ONE)) {
|
if (StringUtils.equals(conditionType, Constants.ONE)) {
|
||||||
|
|||||||
@@ -205,8 +205,8 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="条件类型:" prop="conditionType">
|
<el-form-item label="条件类型:" prop="conditionType">
|
||||||
<el-radio-group v-model="chargeParkingDiscount.conditionType">
|
<el-radio-group v-model="chargeParkingDiscount.conditionType">
|
||||||
<el-radio label="1">固定电量</el-radio>
|
<el-radio :label="1">固定电量</el-radio>
|
||||||
<el-radio label="2">固定时长</el-radio>
|
<el-radio :label="2">固定时长</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
<el-form-item label="条件值:" prop="conditionValue">
|
<el-form-item label="条件值:" prop="conditionValue">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="chargeParkingDiscount.conditionValue"
|
v-model="chargeParkingDiscount.conditionValue"
|
||||||
placeholder="请输入数值"
|
placeholder="请输入门槛电量或者门槛时长"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
/>
|
/>
|
||||||
@@ -227,8 +227,8 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="优惠类型:" prop="discountType">
|
<el-form-item label="优惠类型:" prop="discountType">
|
||||||
<el-radio-group v-model="chargeParkingDiscount.discountType">
|
<el-radio-group v-model="chargeParkingDiscount.discountType">
|
||||||
<el-radio label="1">减时间(分钟)</el-radio>
|
<el-radio :label="1">减时间(分钟)</el-radio>
|
||||||
<el-radio label="2">减金额(元)</el-radio>
|
<el-radio :label="2">减金额(元)</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -237,7 +237,7 @@
|
|||||||
<el-form-item label="优惠值:" prop="discountValue">
|
<el-form-item label="优惠值:" prop="discountValue">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="chargeParkingDiscount.discountValue"
|
v-model="chargeParkingDiscount.discountValue"
|
||||||
placeholder="请输入数值"
|
placeholder="请输入优惠时间或者优惠金额"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
/>
|
/>
|
||||||
@@ -246,7 +246,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="12">
|
||||||
<el-form-item label="生效时间:" prop="timeRange">
|
<el-form-item label="生效时间:" prop="timeRange">
|
||||||
<!-- 开始时间 -->
|
<!-- 开始时间 -->
|
||||||
<el-time-select
|
<el-time-select
|
||||||
@@ -277,6 +277,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="停车平台类型:" prop="parkingPlatformId">
|
||||||
|
<el-input
|
||||||
|
v-model="chargeParkingDiscount.parkingPlatformId"
|
||||||
|
placeholder="请输入停车平台类型(1-路通云停; 2-软杰; 3-深圳qcyun)"
|
||||||
|
type="number"
|
||||||
|
min="0"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
@@ -394,10 +405,12 @@ export default {
|
|||||||
},
|
},
|
||||||
parkingInfo: {},
|
parkingInfo: {},
|
||||||
chargeParkingDiscount:{
|
chargeParkingDiscount:{
|
||||||
|
id: "",
|
||||||
stationId: "",
|
stationId: "",
|
||||||
conditionType: "",
|
parkingPlatformId: 0,
|
||||||
|
conditionType: 0,
|
||||||
conditionValue: "",
|
conditionValue: "",
|
||||||
discountType: "",
|
discountType: 0,
|
||||||
discountValue: "",
|
discountValue: "",
|
||||||
startTime: "",
|
startTime: "",
|
||||||
endTime: ""
|
endTime: ""
|
||||||
@@ -624,7 +637,13 @@ export default {
|
|||||||
getChargeParkingDiscount() {
|
getChargeParkingDiscount() {
|
||||||
getChargeParkingDiscount(this.stationId).then((response) => {
|
getChargeParkingDiscount(this.stationId).then((response) => {
|
||||||
console.log("getChargeParkingDiscount.response", response);
|
console.log("getChargeParkingDiscount.response", response);
|
||||||
this.chargeParkingDiscount = response.data;
|
// 如果存在数据,则赋值给chargeParkingDiscount
|
||||||
|
if (response.data !== undefined) {
|
||||||
|
// 将response.data中的时间转换为分钟数
|
||||||
|
this.chargeParkingDiscount = response.data;
|
||||||
|
// response.data.startTime = this.timeToMinutes(response.data.startTime);
|
||||||
|
// response.data.endTime = this.timeToMinutes(response.data.endTime);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user