调整mq消息, 处理支付问题
This commit is contained in:
parent
f51c0df5f7
commit
c4271768e1
@ -46,7 +46,7 @@ public class MqttResponse<T> implements Serializable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public MqttResponse<T> success(T data){
|
||||
public MqttResponse<T> success(T dataBody){
|
||||
this.code=SUCCESS;
|
||||
this.msg="成功";
|
||||
this.data=data;
|
||||
|
||||
@ -18,7 +18,7 @@ public class OrderStatusData {
|
||||
private Integer soc;
|
||||
|
||||
@Schema(description = "租借电池包仓位")
|
||||
private Integer rentBatNo;
|
||||
private String rentBatNo;
|
||||
|
||||
@Schema(description = "租用电池包编码")
|
||||
private String rentBatCode;
|
||||
@ -30,7 +30,7 @@ public class OrderStatusData {
|
||||
private String returnBatCode;
|
||||
|
||||
@Schema(description = "归还电池包仓位")
|
||||
private Integer returnBatNo;
|
||||
private String returnBatNo;
|
||||
|
||||
@Schema(description = "归还电池包SOC")
|
||||
private Integer returnBatSoc;
|
||||
|
||||
@ -80,7 +80,19 @@ public class MessageUtilService {
|
||||
public void publishRSAMessage(MessageTopic topic, String msg, String stationPublicKey) {
|
||||
RSA rsa = SecureUtil.rsa(null, stationPublicKey);
|
||||
String encrypt = rsa.encryptBase64(msg, KeyType.PublicKey);
|
||||
publishMessage.publish(encrypt, topic.toString());
|
||||
|
||||
// 3. 发送MQTT消息
|
||||
try {
|
||||
MqttMessage mqttMessage = publishMessage.publish(encrypt, topic.toString());
|
||||
try {
|
||||
addMqttMessage(topic, mqttMessage.getId()+"", mqttMessage.getQos(), JSONUtil.parseObj(msg));
|
||||
} catch (Exception e) {
|
||||
log.error("MQTT->>>>>>>>>>>>>记录mqtt消息 发送RSA加密消息 出现了错误{},topic:{}; data:{}; message:{}",e.getMessage(),JSONUtil.toJsonStr(topic),JSONUtil.toJsonStr(msg), JSONUtil.toJsonStr(mqttMessage));
|
||||
throw new RuntimeException("记录mqtt消息出现了错误"+e.getMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("MQTT->>>>>>>>>>>>>发送站端mqtt消息 发送RSA加密消息 出现异常{},topic:{}; data:{}",e.getMessage(),JSONUtil.toJsonStr(topic),JSONUtil.toJsonStr(msg));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -103,8 +115,8 @@ public class MessageUtilService {
|
||||
try {
|
||||
MqttMessage mqttMessage = publishMessage.publish(encrypt, topic.toString());
|
||||
try {
|
||||
dataBody.set("header", JSONUtil.toJsonStr(header));
|
||||
addMqttMessage(topic, mqttMessage.getId()+"", mqttMessage.getQos(), dataBody);
|
||||
//dataBody.set("header", JSONUtil.toJsonStr(header));
|
||||
addMqttMessage(topic, mqttMessage.getId()+"", mqttMessage.getQos(), JSONUtil.parseObj(message));
|
||||
} catch (Exception e) {
|
||||
log.error("MQTT->>>>>>>>>>>>>记录mqtt消息出现了错误{},topic:{}; header:{}, data:{}; message:{}",e.getMessage(),JSONUtil.toJsonStr(topic),JSONUtil.toJsonStr(header),JSONUtil.toJsonStr(dataBody), JSONUtil.toJsonStr(mqttMessage));
|
||||
throw new RuntimeException("记录mqtt消息出现了错误"+e.getMessage());
|
||||
|
||||
@ -52,6 +52,9 @@ public class MqttMessageHandleService {
|
||||
// 3.1.2 保存MQTT消息
|
||||
MqttMessageHeader header = messageUtilService.addMqttMessage(topic, message.getId()+"", message.getQos(), jo);
|
||||
JSONObject dataBody = jo.getJSONObject("dataBody");
|
||||
if(dataBody == null){
|
||||
dataBody = jo.getJSONObject("data");
|
||||
}
|
||||
// 3.2 分类处理
|
||||
// 3.2.1 state
|
||||
if (MqttMessageTypeEnum.STATE.getType().equals(topic.getMessageType())) {
|
||||
|
||||
@ -2,8 +2,6 @@ package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.event;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.evotech.hd.cloud.mqtt.enums.EventFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
@ -11,26 +9,11 @@ import com.evotech.hd.cloud.mqtt.message.dto.newer.confirm.SwapCompleteConfirm;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.event.SwapComplete;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
import com.evotech.hd.cloud.service.*;
|
||||
import com.evotech.hd.cloud.service.rpc.WechatService;
|
||||
import com.evotech.hd.cloud.utils.ParamServiceUtils;
|
||||
import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationDc;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryTrace;
|
||||
import com.evotech.hd.common.core.entity.cloud.VehicleInfo;
|
||||
import com.evotech.hd.common.core.entity.order.Order;
|
||||
import com.evotech.hd.common.core.entity.order.OrderDetail;
|
||||
import com.evotech.hd.common.core.enums.SwapBatteryStepEnum;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 换电完成事件数据
|
||||
*
|
||||
@ -46,18 +29,18 @@ public class MqttEventSwapCompleteExchangeProcessorImpl implements MqttStrategyE
|
||||
|
||||
@Resource
|
||||
OrderService orderService;
|
||||
@Resource
|
||||
OrderDetailService orderDetailService;
|
||||
@Resource
|
||||
private SwapOrderBasicFeeComponent orderBasicFeeComponent;
|
||||
@Resource
|
||||
private OrderSwapBatteryStepService orderSwapBatteryStepService;
|
||||
@Resource
|
||||
private VehicleService vehicleService;
|
||||
@Resource
|
||||
BatteryStationDcService batteryStationDcService;
|
||||
@Resource
|
||||
WechatService wechatService;
|
||||
// @Resource
|
||||
// OrderDetailService orderDetailService;
|
||||
// @Resource
|
||||
// private SwapOrderBasicFeeComponent orderBasicFeeComponent;
|
||||
// @Resource
|
||||
// private OrderSwapBatteryStepService orderSwapBatteryStepService;
|
||||
// @Resource
|
||||
// private VehicleService vehicleService;
|
||||
// @Resource
|
||||
// BatteryStationDcService batteryStationDcService;
|
||||
// @Resource
|
||||
// WechatService wechatService;
|
||||
|
||||
@Override
|
||||
public boolean accept(String functionName) {
|
||||
@ -73,7 +56,7 @@ public class MqttEventSwapCompleteExchangeProcessorImpl implements MqttStrategyE
|
||||
SwapCompleteConfirm swapRecordConfirm = new SwapCompleteConfirm();
|
||||
try {
|
||||
// 订单状态更新处理
|
||||
handleOrderStatus(orderStatus, statusData);
|
||||
orderService.handleOrderStatus(orderStatus, statusData);
|
||||
response.setCode(MqttResponse.PUBLIC_SUCCESS);
|
||||
swapRecordConfirm.setAckStatus(MqttResponse.PUBLIC_SUCCESS);
|
||||
swapRecordConfirm.setOrderNo(orderStatus.getOrderNo());
|
||||
@ -87,145 +70,147 @@ public class MqttEventSwapCompleteExchangeProcessorImpl implements MqttStrategyE
|
||||
swapRecordConfirm.setError(e.getMessage());
|
||||
}
|
||||
response.setData(swapRecordConfirm);
|
||||
sendAESMessage(topic, header, EventFunctionTypesEnum.FUN_ORDEREVENT, response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 订单最终状态的更新
|
||||
* @param orderStatus
|
||||
* @param statusData
|
||||
*/
|
||||
private void handleOrderStatus(SwapComplete orderStatus, OrderStatusData statusData) {
|
||||
|
||||
Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderStatus.getOrderNo()));
|
||||
if(ObjectUtils.isEmpty(order)){
|
||||
throw new RuntimeException("未找到订单信息");
|
||||
}
|
||||
//更新订单状态
|
||||
order.setStatus(orderStatus.getStatus());
|
||||
orderService.updateById(order);
|
||||
//修改订单状态及金额
|
||||
alterOrderStatus(order, statusData);
|
||||
//记录电池信息 or 记录最后的换电步骤
|
||||
alterSwapBatteryStep(orderStatus, statusData, order);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改订单状态方法
|
||||
* @param order
|
||||
* @param statusData
|
||||
* @return
|
||||
*/
|
||||
private void alterOrderStatus(Order order, OrderStatusData statusData) {
|
||||
if (order.getStatus() == 3 || order.getStatus() == 5) {
|
||||
//如果订单是完成. 查询订单详情
|
||||
OrderDetail orderDetail = orderDetailService.getOne(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getPkId()));
|
||||
orderDetail.setFeeType(ParamServiceUtils.getSettlementType());
|
||||
orderDetail.setOrderTimeEnd(new Date());
|
||||
orderDetail.setServiceTimeEnd(new Date());
|
||||
//copy属性
|
||||
BeanUtils.copyProperties(statusData, orderDetail);
|
||||
orderDetail.setRentBatSoc(Double.valueOf(statusData.getRentBatSoc()));
|
||||
orderDetail.setReturnBatSoc(Double.valueOf(statusData.getReturnBatSoc()));
|
||||
switch (orderDetail.getFeeType()){
|
||||
case HDConstant.OrderConstant.FEE_TYPE_DL:
|
||||
orderDetail.setElectricityQuantity(statusData.getElectAmount().doubleValue());
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_ODO:
|
||||
// orderDetail.setElectricityQuantity(new BigDecimal(statusData.getSoc()).doubleValue());
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_SOC:
|
||||
default:
|
||||
orderDetail.setElectricityQuantity(new BigDecimal(statusData.getRentBatSoc()).subtract(new BigDecimal(statusData.getReturnBatSoc())).doubleValue());
|
||||
break;
|
||||
}
|
||||
//计算费用方式
|
||||
log.info("\r\n=====>>>订单状态更新处理订单状态开始结算:{},{}",order.getOrderNo(),order.getStatus() );
|
||||
//计算费用信息
|
||||
orderBasicFeeComponent.orderBasicFee(order, orderDetail);
|
||||
//发送换电完成推送
|
||||
wechatService.sendGzhSwapOrderSuccessMessage(order);
|
||||
orderService.calculateCost(order);
|
||||
if(header != null){
|
||||
sendAESMessage(topic, header, EventFunctionTypesEnum.FUN_ORDEREVENT, response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改订单费用
|
||||
* @param order
|
||||
* @param statusData
|
||||
* @return
|
||||
*/
|
||||
private void alterSwapBatteryStep(SwapComplete orderStatus, OrderStatusData statusData, Order order) {
|
||||
if (orderStatus.getStatus() == 3 || orderStatus.getStatus() == 5){
|
||||
//生成步骤
|
||||
orderSwapBatteryStepService.addOrderSwapBatteryStepBySwapComplete(orderStatus.getOrderNo(), SwapBatteryStepEnum.COMPLETED.getKey(), orderStatus.getStatusTime());
|
||||
// 修改车上电池编码
|
||||
vehicleService.update(new UpdateWrapper<VehicleInfo>()
|
||||
.set("bat_code", statusData.getRentBatCode())
|
||||
.set("bat_soc", statusData.getRentBatSoc())
|
||||
.eq("plate_num", order.getPlateNum()));
|
||||
//出租电池信息维护
|
||||
batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
.set("status", HDConstant.DcConstant.STATUS_CZ)
|
||||
.set("source_from", HDConstant.DcConstant.SOURCE_FROM_STATION)
|
||||
.set("point_type", HDConstant.DcConstant.POINT_TYPE_CAR)
|
||||
.set("point_code", order.getPlateNum())
|
||||
.set("point_name", order.getPlateNum())
|
||||
.set("dcc_no", 0)
|
||||
.eq("bat_code", statusData.getRentBatCode()));
|
||||
//归还电池信息维护
|
||||
batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
.set("status", HDConstant.DcConstant.STATUS_CD)
|
||||
.set("source_from", HDConstant.DcConstant.SOURCE_FROM_CAR)
|
||||
.set("point_type", HDConstant.DcConstant.POINT_TYPE_STATION)
|
||||
.set("point_code", order.getPlateNum())
|
||||
.set("point_name", order.getPlateNum())
|
||||
.set("soc", statusData.getReturnBatSoc())
|
||||
.set("dcc_no", statusData.getReturnBatNo())
|
||||
.eq("bat_code", statusData.getReturnBatCode()));
|
||||
// 添加2块电池的溯源记录
|
||||
addBatteryTrace(orderStatus, statusData, order);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加电池轨迹记录
|
||||
*
|
||||
* @param orderStatus
|
||||
* @param statusData
|
||||
* @param osb
|
||||
*/
|
||||
private void addBatteryTrace(SwapComplete orderStatus, OrderStatusData statusData, Order osb) {
|
||||
BatteryTrace bt1 = new BatteryTrace();
|
||||
bt1.setOrderNo(orderStatus.getOrderNo());
|
||||
bt1.setBatCode(statusData.getRentBatCode());
|
||||
bt1.setSoc(statusData.getRentBatSoc());
|
||||
bt1.setBeginTime(orderStatus.getStatusTime());
|
||||
bt1.setPointType(2);
|
||||
bt1.setPointCode(osb.getPlateNum());
|
||||
bt1.setPointName(osb.getPlateNum());
|
||||
bt1.setCreater("SYS");
|
||||
BatteryTrace bt2 = new BatteryTrace();
|
||||
BeanUtils.copyProperties(bt1, bt2);
|
||||
bt2.setBatCode(statusData.getReturnBatCode());
|
||||
bt2.setSoc(statusData.getRentBatSoc());
|
||||
bt2.setPointType(1);
|
||||
bt2.setPointCode(osb.getStationCode());
|
||||
bt2.setPointName(osb.getStationName());
|
||||
batteryStationDcService.addTrace(bt1);
|
||||
batteryStationDcService.addTrace(bt2);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 订单最终状态的更新
|
||||
// * @param orderStatus
|
||||
// * @param statusData
|
||||
// */
|
||||
// private void handleOrderStatus(SwapComplete orderStatus, OrderStatusData statusData) {
|
||||
//
|
||||
// Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderStatus.getOrderNo()));
|
||||
// if(ObjectUtils.isEmpty(order)){
|
||||
// throw new RuntimeException("未找到订单信息");
|
||||
// }
|
||||
// //更新订单状态
|
||||
// order.setStatus(orderStatus.getStatus());
|
||||
// orderService.updateById(order);
|
||||
// //修改订单状态及金额
|
||||
// alterOrderStatus(order, statusData);
|
||||
// //记录电池信息 or 记录最后的换电步骤
|
||||
// alterSwapBatteryStep(orderStatus, statusData, order);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 修改订单状态方法
|
||||
// * @param order
|
||||
// * @param statusData
|
||||
// * @return
|
||||
// */
|
||||
// private void alterOrderStatus(Order order, OrderStatusData statusData) {
|
||||
// if (order.getStatus() == 3 || order.getStatus() == 5) {
|
||||
// //如果订单是完成. 查询订单详情
|
||||
// OrderDetail orderDetail = orderDetailService.getOne(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getPkId()));
|
||||
// orderDetail.setFeeType(ParamServiceUtils.getSettlementType());
|
||||
// orderDetail.setOrderTimeEnd(new Date());
|
||||
// orderDetail.setServiceTimeEnd(new Date());
|
||||
// //copy属性
|
||||
// BeanUtils.copyProperties(statusData, orderDetail);
|
||||
// orderDetail.setRentBatSoc(Double.valueOf(statusData.getRentBatSoc()));
|
||||
// orderDetail.setReturnBatSoc(Double.valueOf(statusData.getReturnBatSoc()));
|
||||
// switch (orderDetail.getFeeType()){
|
||||
// case HDConstant.OrderConstant.FEE_TYPE_DL:
|
||||
// orderDetail.setElectricityQuantity(statusData.getElectAmount().doubleValue());
|
||||
// break;
|
||||
// case HDConstant.OrderConstant.FEE_TYPE_ODO:
|
||||
//// orderDetail.setElectricityQuantity(new BigDecimal(statusData.getSoc()).doubleValue());
|
||||
// break;
|
||||
// case HDConstant.OrderConstant.FEE_TYPE_SOC:
|
||||
// default:
|
||||
// orderDetail.setElectricityQuantity(new BigDecimal(statusData.getRentBatSoc()).subtract(new BigDecimal(statusData.getReturnBatSoc())).doubleValue());
|
||||
// break;
|
||||
// }
|
||||
// //计算费用方式
|
||||
// log.info("\r\n=====>>>订单状态更新处理订单状态开始结算:{},{}",order.getOrderNo(),order.getStatus() );
|
||||
// //计算费用信息
|
||||
// orderBasicFeeComponent.orderBasicFee(order, orderDetail);
|
||||
// //发送换电完成推送
|
||||
// wechatService.sendGzhSwapOrderSuccessMessage(order);
|
||||
// orderService.calculateCost(order);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 修改订单费用
|
||||
// * @param order
|
||||
// * @param statusData
|
||||
// * @return
|
||||
// */
|
||||
// private void alterSwapBatteryStep(SwapComplete orderStatus, OrderStatusData statusData, Order order) {
|
||||
// if (orderStatus.getStatus() == 3 || orderStatus.getStatus() == 5){
|
||||
// //生成步骤
|
||||
// orderSwapBatteryStepService.addOrderSwapBatteryStepBySwapComplete(orderStatus.getOrderNo(), SwapBatteryStepEnum.COMPLETED.getKey(), orderStatus.getStatusTime());
|
||||
// // 修改车上电池编码
|
||||
// vehicleService.update(new UpdateWrapper<VehicleInfo>()
|
||||
// .set("bat_code", statusData.getRentBatCode())
|
||||
// .set("bat_soc", statusData.getRentBatSoc())
|
||||
// .eq("plate_num", order.getPlateNum()));
|
||||
// //出租电池信息维护
|
||||
// batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
// .set("status", HDConstant.DcConstant.STATUS_CZ)
|
||||
// .set("source_from", HDConstant.DcConstant.SOURCE_FROM_STATION)
|
||||
// .set("point_type", HDConstant.DcConstant.POINT_TYPE_CAR)
|
||||
// .set("point_code", order.getPlateNum())
|
||||
// .set("point_name", order.getPlateNum())
|
||||
// .set("dcc_no", 0)
|
||||
// .eq("bat_code", statusData.getRentBatCode()));
|
||||
// //归还电池信息维护
|
||||
// batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
// .set("status", HDConstant.DcConstant.STATUS_CD)
|
||||
// .set("source_from", HDConstant.DcConstant.SOURCE_FROM_CAR)
|
||||
// .set("point_type", HDConstant.DcConstant.POINT_TYPE_STATION)
|
||||
// .set("point_code", order.getPlateNum())
|
||||
// .set("point_name", order.getPlateNum())
|
||||
// .set("soc", statusData.getReturnBatSoc())
|
||||
// .set("dcc_no", statusData.getReturnBatNo())
|
||||
// .eq("bat_code", statusData.getReturnBatCode()));
|
||||
// // 添加2块电池的溯源记录
|
||||
// addBatteryTrace(orderStatus, statusData, order);
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 添加电池轨迹记录
|
||||
// *
|
||||
// * @param orderStatus
|
||||
// * @param statusData
|
||||
// * @param osb
|
||||
// */
|
||||
// private void addBatteryTrace(SwapComplete orderStatus, OrderStatusData statusData, Order osb) {
|
||||
// BatteryTrace bt1 = new BatteryTrace();
|
||||
// bt1.setOrderNo(orderStatus.getOrderNo());
|
||||
// bt1.setBatCode(statusData.getRentBatCode());
|
||||
// bt1.setSoc(statusData.getRentBatSoc());
|
||||
// bt1.setBeginTime(orderStatus.getStatusTime());
|
||||
// bt1.setPointType(2);
|
||||
// bt1.setPointCode(osb.getPlateNum());
|
||||
// bt1.setPointName(osb.getPlateNum());
|
||||
// bt1.setCreater("SYS");
|
||||
// BatteryTrace bt2 = new BatteryTrace();
|
||||
// BeanUtils.copyProperties(bt1, bt2);
|
||||
// bt2.setBatCode(statusData.getReturnBatCode());
|
||||
// bt2.setSoc(statusData.getRentBatSoc());
|
||||
// bt2.setPointType(1);
|
||||
// bt2.setPointCode(osb.getStationCode());
|
||||
// bt2.setPointName(osb.getStationName());
|
||||
// batteryStationDcService.addTrace(bt1);
|
||||
// batteryStationDcService.addTrace(bt2);
|
||||
// }
|
||||
//
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@ public interface MqttStrategyEventExchangeProcessor extends MqttStrategyExchange
|
||||
|
||||
|
||||
default void sendAESMessage(MessageTopic topic, MqttMessageHeader header, EventFunctionTypesEnum typesEnum, MqttResponse response){
|
||||
topic.setMessageType(MqttMessageTypeEnum.EVENT.getType());
|
||||
topic.setMessageType(MqttMessageTypeEnum.CONFIRM.getType());
|
||||
header.setFunction(typesEnum.getReFunction());
|
||||
logger.info("\r\n=====>>>回复站端的EVENT消息--MQTT发送到消息主题:{},头部信息:{},message:{}", topic,header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
sendAESMessage(topic, header, response);
|
||||
|
||||
@ -13,15 +13,12 @@ import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.cloud.service.rpc.WechatService;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
|
||||
import com.evotech.hd.common.core.entity.order.Order;
|
||||
import com.evotech.hd.common.core.entity.order.OrderDetail;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import com.evotech.hd.common.redis.utils.RedisServiceUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 换电信息--站端回复开始换电通知信息类
|
||||
*
|
||||
@ -67,11 +64,7 @@ public class MqttRequestBatterySwapExchangeProcessorImpl implements MqttStrategy
|
||||
Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
|
||||
//如果是成功, 创建订单详情
|
||||
if(MqttResponse.PUBLIC_SUCCESS.equals(battery.getCode())){
|
||||
OrderDetail detail = new OrderDetail();
|
||||
detail.setOrderId(order.getPkId());
|
||||
detail.setServiceTimeBegin(new Date());
|
||||
detail.setOrderTimeBegin(new Date());
|
||||
orderDetailService.save(detail);
|
||||
orderDetailService.addOrderDetailByOrder(order.getPkId());
|
||||
}else{
|
||||
wechatService.sendClientMessage(order.getPreWechatId(), JSON.toJSONString(Collections.asMap("code",0, "msg", battery.getMsg())));
|
||||
}
|
||||
|
||||
@ -4,6 +4,9 @@ import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.event.SwapComplete;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.event.MqttEventSwapCompleteExchangeProcessorImpl;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state.MqttStateSwapStepDataExchangeProcessor;
|
||||
import com.evotech.hd.cloud.open.processor.StationMessageStrategyExchangeProcessor;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
@ -41,7 +44,8 @@ public class OrderSwapProcessor implements StationMessageStrategyExchangeProcess
|
||||
private OrderSwapBatteryStepService orderSwapBatteryStepService;
|
||||
@Resource
|
||||
private MqttStateSwapStepDataExchangeProcessor mqttStateSwapStepDataExchangeProcessor;
|
||||
|
||||
@Resource
|
||||
private MqttEventSwapCompleteExchangeProcessorImpl mqttEventSwapCompleteExchangeProcessorImpl;
|
||||
/***
|
||||
* 新增换电单 禁止删除, 反射调用
|
||||
* @param json
|
||||
@ -82,7 +86,7 @@ public class OrderSwapProcessor implements StationMessageStrategyExchangeProcess
|
||||
*/
|
||||
public Result arrivalSignal(JSONObject json){
|
||||
try {
|
||||
Order order = orderService.getById(json.getInteger("preId"));
|
||||
Order order = orderService.getById(json.getInteger("pkId"));
|
||||
json.put("orderNo", order.getOrderNo());
|
||||
mqttStateSwapStepDataExchangeProcessor.exchange(new MessageTopic(json.getString("stationCode")+"_WEB站推送", "http"), null, JSONUtil.parseObj(json.toJSONString()));
|
||||
return Result.getInstance().build(Boolean.class).success(true);
|
||||
@ -90,6 +94,32 @@ public class OrderSwapProcessor implements StationMessageStrategyExchangeProcess
|
||||
e.printStackTrace();;
|
||||
return Result.getInstance().build(Boolean.class).error(e.getMessage(), null);
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* 车辆换电完成
|
||||
* @param json
|
||||
* @return
|
||||
*/
|
||||
public Result orderCompleted(JSONObject json){
|
||||
try {
|
||||
Order order = orderService.getById(json.getInteger("pkId"));
|
||||
|
||||
OrderStatusData statusData = JSONUtil.toBean(json.toJSONString(), OrderStatusData.class);
|
||||
SwapComplete orderStatus = new SwapComplete();
|
||||
orderStatus.setOrderNo(order.getOrderNo());
|
||||
orderStatus.setStatus(3);
|
||||
orderStatus.setStatusTime(new Date());
|
||||
orderStatus.setStatusData(statusData);
|
||||
// 订单状态更新处理
|
||||
orderService.handleOrderStatus(orderStatus, statusData);
|
||||
//再次查询数据信息
|
||||
order = orderService.getById(json.getInteger("pkId"));
|
||||
return Result.getInstance().build(JSONObject.class).success((JSONObject)JSONObject.toJSON(order));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return Result.getInstance().build(JSONObject.class).error(e.getMessage(), null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,4 +13,7 @@ import com.evotech.hd.common.core.entity.order.OrderDetail;
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface OrderDetailService extends IService<OrderDetail> {
|
||||
|
||||
|
||||
public OrderDetail addOrderDetailByOrder(Integer orderId);
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package com.evotech.hd.cloud.service;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.evotech.hd.cloud.entity.vo.NativePayVO;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.event.SwapComplete;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.order.OrderBillListVo;
|
||||
import com.evotech.hd.common.core.Dto.order.OrderDetailVo;
|
||||
@ -81,4 +83,6 @@ public interface OrderService extends IService<Order> {
|
||||
Result<List<OrderBillListVo>> billList(String companyCode, String orderTimeEnd);
|
||||
|
||||
void excelBillList(String companyCode, String orderTimeEnd);
|
||||
|
||||
void handleOrderStatus(SwapComplete orderStatus, OrderStatusData statusData);
|
||||
}
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evotech.hd.cloud.service.OrderDetailService;
|
||||
import com.evotech.hd.common.core.dao.cloud.OrderDetailDao;
|
||||
import com.evotech.hd.common.core.entity.order.OrderDetail;
|
||||
import com.evotech.hd.cloud.service.OrderDetailService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 订单详情实现类
|
||||
*
|
||||
@ -21,6 +24,18 @@ import org.springframework.stereotype.Service;
|
||||
@Slf4j
|
||||
public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailDao, OrderDetail> implements OrderDetailService {
|
||||
|
||||
@Override
|
||||
public OrderDetail addOrderDetailByOrder(Integer orderId) {
|
||||
OrderDetail orderDetail = getOne(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, orderId), false);
|
||||
if(orderDetail == null){
|
||||
orderDetail = new OrderDetail();
|
||||
orderDetail.setOrderId(orderId);
|
||||
orderDetail.setServiceTimeBegin(new Date());
|
||||
orderDetail.setOrderTimeBegin(new Date());
|
||||
save(orderDetail);
|
||||
}
|
||||
return orderDetail;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evotech.hd.cloud.dao.OrderSwapBatteryPreDao;
|
||||
@ -21,12 +22,11 @@ import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum;
|
||||
import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.event.SwapComplete;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatterySwapReq;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.cloud.service.TaxPointService;
|
||||
import com.evotech.hd.cloud.service.TradeService;
|
||||
import com.evotech.hd.cloud.service.WalletAccountService;
|
||||
import com.evotech.hd.cloud.service.*;
|
||||
import com.evotech.hd.cloud.service.rpc.WechatService;
|
||||
import com.evotech.hd.cloud.utils.CommonUtil;
|
||||
import com.evotech.hd.cloud.utils.ExcelUtil;
|
||||
@ -45,10 +45,7 @@ import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
import com.evotech.hd.common.core.entity.order.Order;
|
||||
import com.evotech.hd.common.core.entity.order.OrderDetail;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
import com.evotech.hd.common.core.enums.OrderStatusEnums;
|
||||
import com.evotech.hd.common.core.enums.PayTypeEnums;
|
||||
import com.evotech.hd.common.core.enums.TradeTypeEnums;
|
||||
import com.evotech.hd.common.core.enums.*;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import com.evotech.hd.common.core.utils.DataUtils;
|
||||
import com.evotech.hd.common.permission.util.RedisPermissionUtils;
|
||||
@ -60,6 +57,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -104,10 +102,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
|
||||
private OrderSwapBatteryPreDao orderSwapBatteryPreDao;
|
||||
@Resource
|
||||
private MessageUtilService messageUtilService;
|
||||
@Autowired
|
||||
private BatteryStationDcService batteryStationDcService;
|
||||
@Autowired
|
||||
private OrderSwapBatteryStepService orderSwapBatteryStepService;
|
||||
@Autowired
|
||||
private OrderDetailService orderDetailService;
|
||||
|
||||
|
||||
|
||||
public static OrderListVo convertOrderListVo(Order order){
|
||||
public static OrderListVo convertOrderListVo(Order order){
|
||||
OrderListVo vo = new OrderListVo();
|
||||
BeanUtils.copyProperties(order, vo);
|
||||
vo.setAmount(order.getOrderAmount());
|
||||
@ -216,8 +219,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
|
||||
order.setStationName(orderSwapBatteryPre.getStationName());
|
||||
order.setDelFlag(HDConstant.DELETE_NO);
|
||||
// TODO 查询换电站信息,拿到计费方式,计费信息在充电结束时, 计算
|
||||
Boolean saveResult = save(order);
|
||||
if(saveResult){
|
||||
try {
|
||||
orderDetailService.addOrderDetailByOrder(order.getPkId());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("生成换电订单详情出错",e);
|
||||
}
|
||||
}
|
||||
// osb = orderBasicFeeComponent.orderBasicFee(osb);
|
||||
return (save(order) ? new Result<Order>().success(order) : new Result<Order>().error("订单生成异常", null));
|
||||
return (saveResult ? new Result<Order>().success(order) : new Result<Order>().error("订单生成异常", null));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -234,6 +246,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
|
||||
return new Result<Boolean>().error("未找到符合条件的订单");
|
||||
}
|
||||
|
||||
try {
|
||||
orderDetailService.addOrderDetailByOrder(order.getPkId());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("生成换电订单详情出错",e);
|
||||
}
|
||||
|
||||
try {
|
||||
log.info("开始处理换电请求, 订单编号: {}, 用户ID: {}", order.getOrderNo(), wuid);
|
||||
// 构建换电请求消息
|
||||
@ -620,6 +639,142 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
|
||||
updateById(order);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 订单最终状态的更新
|
||||
* @param orderStatus
|
||||
* @param statusData
|
||||
*/
|
||||
@Override
|
||||
public void handleOrderStatus(SwapComplete orderStatus, OrderStatusData statusData) {
|
||||
|
||||
Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderStatus.getOrderNo()));
|
||||
if(ObjectUtils.isEmpty(order)){
|
||||
throw new RuntimeException("未找到订单信息");
|
||||
}
|
||||
//更新订单状态
|
||||
order.setStatus(orderStatus.getStatus());
|
||||
updateById(order);
|
||||
//修改订单状态及金额
|
||||
alterOrderStatus(order, statusData);
|
||||
//记录电池信息 or 记录最后的换电步骤
|
||||
alterSwapBatteryStep(orderStatus, statusData, order);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改订单状态方法
|
||||
* @param order
|
||||
* @param statusData
|
||||
* @return
|
||||
*/
|
||||
private void alterOrderStatus(Order order, OrderStatusData statusData) {
|
||||
if (order.getStatus() == 3 || order.getStatus() == 5) {
|
||||
//如果订单是完成. 查询订单详情
|
||||
OrderDetail orderDetail = orderDetailService.addOrderDetailByOrder(order.getPkId());
|
||||
orderDetail.setFeeType(ParamServiceUtils.getSettlementType());
|
||||
orderDetail.setOrderTimeEnd(new Date());
|
||||
orderDetail.setServiceTimeEnd(new Date());
|
||||
//copy属性
|
||||
BeanUtils.copyProperties(statusData, orderDetail);
|
||||
orderDetail.setRentBatSoc(Double.valueOf(statusData.getRentBatSoc()));
|
||||
orderDetail.setReturnBatSoc(Double.valueOf(statusData.getReturnBatSoc()));
|
||||
switch (orderDetail.getFeeType()){
|
||||
case HDConstant.OrderConstant.FEE_TYPE_DL:
|
||||
orderDetail.setElectricityQuantity(statusData.getElectAmount().doubleValue());
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_ODO:
|
||||
// orderDetail.setElectricityQuantity(new BigDecimal(statusData.getSoc()).doubleValue());
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_SOC:
|
||||
default:
|
||||
orderDetail.setElectricityQuantity(new BigDecimal(statusData.getRentBatSoc()).subtract(new BigDecimal(statusData.getReturnBatSoc())).doubleValue());
|
||||
break;
|
||||
}
|
||||
//计算费用方式
|
||||
log.info("\r\n=====>>>订单状态更新处理订单状态开始结算:{},{}",order.getOrderNo(),order.getStatus() );
|
||||
//计算费用信息
|
||||
orderBasicFeeComponent.orderBasicFee(order, orderDetail);
|
||||
//发送换电完成推送
|
||||
wechatService.sendGzhSwapOrderSuccessMessage(order);
|
||||
calculateCost(order);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改订单费用
|
||||
* @param order
|
||||
* @param statusData
|
||||
* @return
|
||||
*/
|
||||
private void alterSwapBatteryStep(SwapComplete orderStatus, OrderStatusData statusData, Order order) {
|
||||
if (orderStatus.getStatus() == 3 || orderStatus.getStatus() == 5){
|
||||
//生成步骤
|
||||
orderSwapBatteryStepService.addOrderSwapBatteryStepBySwapComplete(orderStatus.getOrderNo(), SwapBatteryStepEnum.COMPLETED.getKey(), orderStatus.getStatusTime());
|
||||
// 修改车上电池编码
|
||||
vehicleInfoDao.update(new UpdateWrapper<VehicleInfo>()
|
||||
.set("bat_code", statusData.getRentBatCode())
|
||||
.set("bat_soc", statusData.getRentBatSoc())
|
||||
.eq("plate_num", order.getPlateNum()));
|
||||
//出租电池信息维护
|
||||
batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
.set("status", HDConstant.DcConstant.STATUS_CZ)
|
||||
.set("source_from", HDConstant.DcConstant.SOURCE_FROM_STATION)
|
||||
.set("point_type", HDConstant.DcConstant.POINT_TYPE_CAR)
|
||||
.set("point_code", order.getPlateNum())
|
||||
.set("point_name", order.getPlateNum())
|
||||
.set("dcc_no", 0)
|
||||
.eq("bat_code", statusData.getRentBatCode()));
|
||||
//归还电池信息维护
|
||||
batteryStationDcService.update(new UpdateWrapper<BatteryStationDc>()
|
||||
.set("status", HDConstant.DcConstant.STATUS_CD)
|
||||
.set("source_from", HDConstant.DcConstant.SOURCE_FROM_CAR)
|
||||
.set("point_type", HDConstant.DcConstant.POINT_TYPE_STATION)
|
||||
.set("point_code", order.getPlateNum())
|
||||
.set("point_name", order.getPlateNum())
|
||||
.set("soc", statusData.getReturnBatSoc())
|
||||
.set("dcc_no", statusData.getReturnBatNo())
|
||||
.eq("bat_code", statusData.getReturnBatCode()));
|
||||
// 添加2块电池的溯源记录
|
||||
addBatteryTrace(orderStatus, statusData, order);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加电池轨迹记录
|
||||
*
|
||||
* @param orderStatus
|
||||
* @param statusData
|
||||
* @param osb
|
||||
*/
|
||||
private void addBatteryTrace(SwapComplete orderStatus, OrderStatusData statusData, Order osb) {
|
||||
BatteryTrace bt1 = new BatteryTrace();
|
||||
bt1.setOrderNo(orderStatus.getOrderNo());
|
||||
bt1.setBatCode(statusData.getRentBatCode());
|
||||
bt1.setSoc(statusData.getRentBatSoc());
|
||||
bt1.setBeginTime(orderStatus.getStatusTime());
|
||||
bt1.setPointType(2);
|
||||
bt1.setPointCode(osb.getPlateNum());
|
||||
bt1.setPointName(osb.getPlateNum());
|
||||
bt1.setCreater("SYS");
|
||||
BatteryTrace bt2 = new BatteryTrace();
|
||||
BeanUtils.copyProperties(bt1, bt2);
|
||||
bt2.setBatCode(statusData.getReturnBatCode());
|
||||
bt2.setSoc(statusData.getRentBatSoc());
|
||||
bt2.setPointType(1);
|
||||
bt2.setPointCode(osb.getStationCode());
|
||||
bt2.setPointName(osb.getStationName());
|
||||
batteryStationDcService.addTrace(bt1);
|
||||
batteryStationDcService.addTrace(bt2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -97,10 +97,12 @@ public class LoginServiceImpl implements LoginService {
|
||||
String openid = redisUtil.get(HDConstant.openidPrefix + wuid).toString();
|
||||
String sessionKey = redisUtil.get(HDConstant.sessionKeyPrefix + wuid).toString();
|
||||
HMac hmac = DigestUtil.hmac(HmacAlgorithm.HmacSHA256, sessionKey.getBytes());
|
||||
String res = LoginUtil.checkSessionKey(accessTokenService.getAccessToken(), openid, hmac.digestHex(""));
|
||||
String res = LoginUtil.resetUserSessionKey(accessTokenService.getAccessToken(), openid, hmac.digestHex(""));
|
||||
// String res = LoginUtil.code2Session(xcxProperties.getAppid(), openid, hmac.digestHex(""));
|
||||
JSONObject jo = JSONUtil.parseObj(res);
|
||||
if (jo.getInt("errcode") == 0) {
|
||||
redisUtil.set(HDConstant.openidPrefix + wuid, jo.getStr("openid"), 0);
|
||||
redisUtil.set(HDConstant.sessionKeyPrefix + wuid, jo.getStr("session_key"), 0);
|
||||
Map<String, String> m = tokenBuilder(wuid);
|
||||
return new Result<Map<String, String>>().success(m);
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ public interface PayExchangeProcessor {
|
||||
//交易类型
|
||||
tradeDetail.setTradeType(getAttach().getInt("type"));
|
||||
tradeDetail.setOrderNo(getAttach().getStr("orderNo"));
|
||||
tradeDetail.setOutTradeNo(getAttach().getStr("outTradeNo"));
|
||||
tradeDetail.setOutTradeNo(transaction.getOutTradeNo());
|
||||
tradeDetail.setOrderCount(StringUtils.isNotEmpty(tradeDetail.getOrderNo()) ? tradeDetail.getOrderNo().split(",").length : 0);
|
||||
tradeDetail.setTradeAmount(transaction.getAmount().getPayerTotal());
|
||||
tradeDetail.setPayType(PayTypeEnums.WECHAT.getCode());
|
||||
|
||||
@ -106,11 +106,12 @@ hbyt:
|
||||
-----END PUBLIC KEY-----
|
||||
# 支付回调地址
|
||||
notify_url: http://api.evo-techina.com/wechat/pay/wechatpay/notify
|
||||
#notify_url: http://y865f68d.natappfree.cc/wechat/pay/wechatpay/notify
|
||||
#notify_url: http://wc8b537a.natappfree.cc/wechat/pay/wechatpay/notify
|
||||
# Native支付回调地址
|
||||
native_notify_url: https://api.evo-techina.com/wechat/wechatpay/native/nativeback/msg
|
||||
# 退款回调地址
|
||||
refund_notify_url: http://api.evo-techina.com/wechat/pay/wechatpay/refunds/notify
|
||||
#refund_notify_url: http://wc8b537a.natappfree.cc/wechat/pay/wechatpay/refunds/notify
|
||||
# token缓存时效:小时
|
||||
token_exp_hour: 2
|
||||
# 公众号
|
||||
|
||||
Loading…
Reference in New Issue
Block a user