预订单-提交

This commit is contained in:
gaowdong 2025-02-24 11:01:25 +08:00
parent 1d8ac90291
commit 002d561364
9 changed files with 704 additions and 2 deletions

View File

@ -3,7 +3,9 @@ package com.bonus.core.order.common.business;
import com.bonus.core.order.common.model.OrderDetail; import com.bonus.core.order.common.model.OrderDetail;
import com.bonus.core.order.common.model.OrderInfo; import com.bonus.core.order.common.model.OrderInfo;
import com.bonus.core.order.mq.po.OrderPlacedPO;
import com.bonus.core.pay.api.vo.UnifyPaySelectVO; import com.bonus.core.pay.api.vo.UnifyPaySelectVO;
import com.bonus.core.pay.common.po.PayResultPO;
import java.util.List; import java.util.List;
@ -11,8 +13,8 @@ public interface OrderResultBusiness {
UnifyPaySelectVO reSyncOrderPayResult(Long orderId); UnifyPaySelectVO reSyncOrderPayResult(Long orderId);
// UnifyRefundSelectVO reSyncOrderRefundResult(Long orderRefundId); // UnifyRefundSelectVO reSyncOrderRefundResult(Long orderRefundId);
//
// String asyncPayResultHandler(PayResultPO payResultPO); String asyncPayResultHandler(PayResultPO payResultPO);
// //
// void asyncRefundResultHandler(RefundResultPO refundResultPO); // void asyncRefundResultHandler(RefundResultPO refundResultPO);
// //

View File

@ -0,0 +1,24 @@
package com.bonus.core.order.common.constants;
public enum OrderErrorStateEnum {
CREATED(1, "已创建"),
FIXED(2, "已处理"),
NOT_FIX(3, "暂不处理");
private final Integer key;
private final String desc;
private OrderErrorStateEnum(Integer key, String desc) {
this.key = key;
this.desc = desc;
}
public Integer getKey() {
return this.key;
}
public String getDesc() {
return this.desc;
}
}

View File

@ -0,0 +1,28 @@
package com.bonus.core.order.common.constants;
public enum OrderErrorTypeEnum {
MQ_MAC_ASYNC_SAVE(1, "设备异步保存 MQ"),
MQ_MAC_ASYNC_QUERY(2, "订单定时取消 MQ"),
MQ_ORDER_PAY_RESULT(3, "支付结果回调处理 MQ"),
MQ_ORDER_CANCEL(4, "订单定时取消 MQ"),
OFFLINE_ORDER(5, "离线订单上传"),
WEIGHT_ORDER_PAY(6, "自助餐结算"),
MQ_ORDER_REFUND_RESULT(7, "退款结果回调处理 MQ");
private final Integer key;
private final String desc;
private OrderErrorTypeEnum(Integer key, String desc) {
this.key = key;
this.desc = desc;
}
public Integer getKey() {
return this.key;
}
public String getDesc() {
return this.desc;
}
}

View File

@ -0,0 +1,11 @@
package com.bonus.core.order.common.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bonus.core.order.common.model.OrderErrorLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
@InterceptorIgnore
public interface OrderErrorLogMapper extends BaseMapper<OrderErrorLog> {
}

View File

@ -0,0 +1,113 @@
package com.bonus.core.order.common.model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@TableName("order_error_log")
public class OrderErrorLog {
@TableId
private Long logId;
private Long relatedId;
private String traceId;
private Integer orderErrorType;
private Integer orderErrorState;
private String msg;
private String data;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
private LocalDateTime crtime;
@DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
private LocalDateTime uptime;
public Long getLogId() {
return this.logId;
}
public Long getRelatedId() {
return this.relatedId;
}
public String getTraceId() {
return this.traceId;
}
public Integer getOrderErrorType() {
return this.orderErrorType;
}
public Integer getOrderErrorState() {
return this.orderErrorState;
}
public String getMsg() {
return this.msg;
}
public String getData() {
return this.data;
}
public LocalDateTime getCrtime() {
return this.crtime;
}
public LocalDateTime getUptime() {
return this.uptime;
}
public void setLogId(final Long logId) {
this.logId = logId;
}
public void setRelatedId(final Long relatedId) {
this.relatedId = relatedId;
}
public void setTraceId(final String traceId) {
this.traceId = traceId;
}
public void setOrderErrorType(final Integer orderErrorType) {
this.orderErrorType = orderErrorType;
}
public void setOrderErrorState(final Integer orderErrorState) {
this.orderErrorState = orderErrorState;
}
public void setMsg(final String msg) {
this.msg = msg;
}
public void setData(final String data) {
this.data = data;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
public void setCrtime(final LocalDateTime crtime) {
this.crtime = crtime;
}
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
public void setUptime(final LocalDateTime uptime) {
this.uptime = uptime;
}
}

View File

@ -0,0 +1,8 @@
package com.bonus.core.order.common.service;
import com.bonus.core.order.common.constants.OrderErrorTypeEnum;
public interface OrderErrorLogService {
void saveError(Long relatedId, String traceId, OrderErrorTypeEnum typeEnum, String msg, String data);
}

View File

@ -0,0 +1,25 @@
package com.bonus.core.order.common.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.core.order.common.constants.OrderErrorStateEnum;
import com.bonus.core.order.common.constants.OrderErrorTypeEnum;
import com.bonus.core.order.common.mapper.OrderErrorLogMapper;
import com.bonus.core.order.common.model.OrderErrorLog;
import com.bonus.core.order.common.service.OrderErrorLogService;
import com.bonus.utils.id.Id;
import org.springframework.stereotype.Service;
@Service
public class OrderErrorLogServiceImpl extends ServiceImpl<OrderErrorLogMapper, OrderErrorLog> implements OrderErrorLogService {
public void saveError(Long relatedId, String traceId, OrderErrorTypeEnum typeEnum, String msg, String data) {
OrderErrorLog orderErrorLog = new OrderErrorLog();
orderErrorLog.setLogId(Id.next());
orderErrorLog.setRelatedId(relatedId);
orderErrorLog.setTraceId(traceId);
orderErrorLog.setOrderErrorType(typeEnum.getKey());
orderErrorLog.setOrderErrorState(OrderErrorStateEnum.CREATED.getKey());
orderErrorLog.setMsg(msg);
orderErrorLog.setData(data);
((OrderErrorLogMapper)this.baseMapper).insert(orderErrorLog);
}
}

View File

@ -0,0 +1,465 @@
package com.bonus.core.order.mq.listener;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bonus.core.common.constant.LeMqConstant;
import com.bonus.core.common.redis.RedisUtil;
import com.bonus.core.common.utils.JacksonUtil;
import com.bonus.core.common.utils.LogUtil;
import com.bonus.core.common.utils.TenantContextHolder;
import com.bonus.core.data.dataset.Executors;
import com.bonus.core.order.common.business.OrderPlaceBusiness;
import com.bonus.core.order.common.business.OrderResultBusiness;
import com.bonus.core.order.common.constants.DishesStateEnum;
import com.bonus.core.order.common.constants.OrderCacheConstants;
import com.bonus.core.order.common.constants.OrderErrorTypeEnum;
import com.bonus.core.order.common.model.OrderInfo;
import com.bonus.core.order.common.service.OrderErrorLogService;
import com.bonus.core.order.common.service.OrderInfoService;
import com.bonus.core.order.mq.MqPayload;
import com.bonus.core.order.mq.MqUtil;
import com.bonus.core.order.mq.po.*;
import com.bonus.core.pay.common.constants.PayStateEnum;
import com.bonus.core.pay.common.constants.TradeTypeEnum;
import com.bonus.core.pay.common.po.PayResultPO;
import com.bonus.core.pay.common.po.RefundResultPO;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.function.BiConsumer;
@Service
public class OrderMqHandler {
private static final Logger log = LoggerFactory.getLogger(OrderMqHandler.class);
@Lazy
@Autowired
private OrderPlaceBusiness orderPlaceBusiness;
@Lazy
@Autowired
private OrderResultBusiness orderResultBusiness;
@Lazy
@Autowired
protected OrderInfoService orderInfoService;
// @Lazy
// @Autowired
// protected OrderPhotoService orderPhotoService;
@Lazy
@Autowired
protected OrderErrorLogService orderErrorLogService;
// @Lazy
// @Autowired
// protected OrderDeviceApi orderDeviceApi;
// @Lazy
// @Autowired
// protected MacWeighBindService macWeighBindService;
// @Lazy
// @Autowired
// private OrderWeightBusiness orderWeightBusiness;
// @Lazy
// @Autowired
// private OrderPayApi orderPayApi;
public <T> void handleMessage(MqPayload<String> payload, Class<T> clz, BiConsumer<OrderMqHandler, T> handleFunc) {
try {
log.info("[订单消息]收到消息 {}", payload);
T payloadData = JacksonUtil.readValue((String)payload.getData(), clz);
if (payloadData != null) {
Executors.doInTenant(payload.getTenantId(), (s) -> {
handleFunc.accept(this, payloadData);
});
} else {
log.error("[订单消息]解析失败");
}
} catch (Exception var5) {
log.error("[订单消息]处理异常", var5);
}
}
// public void orderAsyncSave(OrderSavePO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCacheSaveLockKey(payload.getMacOrderId()));
// lock.lock();
//
// try {
// log.info("[订单异步保存]MQ消费开始");
// if (CollUtil.isNotEmpty(payload.getOrderInfoList()) && this.orderInfoService.existOrderId(((OrderInfo)payload.getOrderInfoList().get(0)).getOrderId(), ((OrderInfo)payload.getOrderInfoList().get(0)).getOrderDate())) {
// log.warn("[订单异步保存]MQ消费订单已存在不再保存{}", payload.getMacOrderId());
// } else {
// this.orderResultBusiness.asyncSaveHandler(payload);
// }
//
// log.info("[订单异步保存]MQ消费消息消费完成");
// } catch (Exception var12) {
// log.info("[订单异步保存]MQ消费处理异常", var12);
// this.orderErrorLogService.saveError(payload.getPayVO().getTradeId(), payload.getTraceId(), OrderErrorTypeEnum.MQ_MAC_ASYNC_SAVE, var12.getMessage(), JacksonUtil.writeValueAsString(payload));
// } finally {
// if (CharSequenceUtil.isNotBlank(payload.getMacOrderId())) {
// this.orderPlaceBusiness.orderHandlerUnLock(payload.getMacOrderId());
// }
//
// try {
// if (lock.isHeldByCurrentThread() && lock.isLocked()) {
// lock.unlock();
// }
// } catch (Exception var11) {
// log.error("解锁异常", var11);
// }
//
// }
//
// }
//
// public void orderAsyncSaveWeight(OrderSaveWeightPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCacheSaveLockKey(payload.getMacOrderId()));
// lock.lock();
//
// try {
// log.info("[订单异步保存自助餐]MQ消费开始");
// String cacheStr = (String)Executors.readInTenant(payload.getTenantId(), () -> {
// return RedisUtil.getString(OrderCacheConstants.orderCacheKey(payload.getMacOrderId()));
// });
// if (CharSequenceUtil.isEmpty(cacheStr)) {
// throw new LeException("未查询到缓存 " + payload.getMacOrderId());
// }
//
// OrderSavePO orderSavePO = (OrderSavePO)JacksonUtil.readValue(cacheStr, OrderSavePO.class);
// if (orderSavePO == null) {
// throw new LeException("[订单异步保存自助餐]缓存解析错误: " + cacheStr);
// }
//
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.asyncSaveHandler(orderSavePO);
// });
// log.info("[订单异步保存自助餐]MQ消费消息消费完成");
// } catch (Exception var13) {
// log.error("[订单异步保存自助餐]MQ消费处理异常", var13);
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderErrorLogService.saveError((Long)null, payload.getTraceId(), OrderErrorTypeEnum.MQ_MAC_ASYNC_SAVE, var13.getMessage(), JacksonUtil.writeValueAsString(payload));
// });
// } finally {
// try {
// if (lock.isHeldByCurrentThread() && lock.isLocked()) {
// lock.unlock();
// }
// } catch (Exception var12) {
// log.error("解锁异常", var12);
// }
//
// }
//
// }
public void orderAsyncPayResult(PayResultPO payload) {
if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
LogUtil.putLogTraceId(payload.getTraceId());
} else {
LogUtil.generateNewLogTraceId();
}
if (!TradeTypeEnum.isConsumeType(payload.getTradeType())) {
log.info("[订单异步支付结果]MQ消费非消费类型交易不处理");
} else {
RLock lock = RedisUtil.getLock(OrderCacheConstants.orderAsyncPayResultLockKey(payload.getTradeId().toString()));
lock.lock();
String macOrderId = null;
try {
log.info("[订单异步支付结果]MQ消费开始");
macOrderId = (String)Executors.readInTenant(payload.getMerchantId(), () -> {
return this.orderResultBusiness.asyncPayResultHandler(payload);
});
log.info("[订单异步支付结果]MQ消费消息消费完成");
} catch (Exception var13) {
log.error("[订单异步支付结果]MQ消费处理异常", var13);
Executors.doInTenant(payload.getMerchantId(), (s) -> {
this.orderErrorLogService.saveError(payload.getTradeId(), payload.getTraceId(), OrderErrorTypeEnum.MQ_ORDER_PAY_RESULT, var13.getMessage(), JacksonUtil.writeValueAsString(payload));
});
} finally {
if (CharSequenceUtil.isNotEmpty(macOrderId) && PayStateEnum.isFinishedState(payload.getTradeState())) {
this.orderPlaceBusiness.orderHandlerUnLock(macOrderId);
}
try {
if (lock.isHeldByCurrentThread() && lock.isLocked()) {
lock.unlock();
}
} catch (Exception var12) {
log.error("解锁异常", var12);
}
}
}
}
//
// public void orderTimeout(OrderCancelPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单异步超时]MQ消费开始");
// Executors.doInTenant(payload.getMerchantId(), (s) -> {
// this.orderResultBusiness.asyncTradeTimeoutHandler(payload);
// });
// log.info("[订单异步超时]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单异步超时]MQ消费处理异常", var3);
// Executors.doInTenant(payload.getMerchantId(), (s) -> {
// this.orderErrorLogService.saveError(payload.getTradeId(), payload.getTraceId(), OrderErrorTypeEnum.MQ_ORDER_CANCEL, var3.getMessage(), JacksonUtil.writeValueAsString(payload));
// });
// }
//
// }
//
// public void updateOrderImage(OrderImagePO payload) {
// LogUtil.generateNewLogTraceId();
//
// try {
// log.info("[订单图片MQ]-数据:{}", payload);
// TenantContextHolder.setTenantId(payload.getMerchantId());
// Executors.doInTenant(payload.getMerchantId(), (transactionStatus) -> {
// this.orderPhotoService.saveOrUpdatePhoto(payload.getSaveList());
// });
// } catch (Exception var3) {
// log.error("[订单图片MQ]MQ消费处理异常", var3);
// }
//
// }
// public void orderPlaced(OrderPlacedPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单已下单]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderPlacedHandler(payload);
// });
// log.info("[订单已下单]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单已下单]MQ消费处理异常", var3);
// }
//
// }
//
// public void orderCanceled(OrderCanceledPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单已取消]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderCanceledHandler(payload);
// });
// log.info("[订单已取消]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单已取消]MQ消费处理异常", var3);
// }
//
// }
//
// public void orderRefunded(OrderRefundPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单已退款]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderRefundedHandler(payload);
// });
// log.info("[订单已退款]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单已退款]MQ消费处理异常", var3);
// }
//
// }
//
// public void orderStateUpdated(OrderDishesStateUpdatePO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单更新制作配送状态]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderDishesStateUpdateHandler(payload);
// });
// log.info("[订单更新制作配送状态]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单更新制作配送状态]MQ消费处理异常", var3);
// }
//
// }
//
// public void orderDishesAdd(OrderDishesEditPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单加菜]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderAddDishesHandler(payload);
// });
// log.info("[订单加菜]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单加菜]MQ消费处理异常", var3);
// }
//
// }
//
// public void orderDishesRemove(OrderDishesEditPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// try {
// log.info("[订单减菜]MQ消费开始");
// Executors.doInTenant(payload.getTenantId(), (s) -> {
// this.orderResultBusiness.orderRemoveDishesHandler(payload);
// });
// log.info("[订单减菜]MQ消费消息消费完成");
// } catch (Exception var3) {
// log.error("[订单减菜]MQ消费处理异常", var3);
// }
//
// }
//
// public void DcPushUser(JSONObject content) {
// try {
// log.info(content.toJSONString());
// Long ordId = content.getLong("ordId");
// OrderChangePO orderChangePO = this.orderDeviceApi.getOrderInfoById(ordId);
// OrderInfo orderInfo = orderChangePO.getOrderInfo();
// if (DishesStateEnum.WAIT_TAKE.getKey().equals(orderInfo.getDishesState())) {
// Integer cleanType = content.getInteger("clean");
// if (cleanType == 2) {
// String sendTimeStr = content.getString("sendTime");
// if (sendTimeStr != null) {
// LocalDateTime sendTime = LocalDateTime.parse(sendTimeStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// orderChangePO.setTimeoutClean(sendTime);
// }
// }
//
// orderChangePO.setCleanType(cleanType);
// MqUtil.send(JSON.toJSONString(orderChangePO), LeMqConstant.Topic.ORDER_CHANGE);
// }
// } catch (Exception var8) {
// log.error("[取餐柜超时]MQ消费处理异常", var8);
// }
//
// }
//
// public void buffetPay(BuffetBindPayDto payload) {
// LogUtil.generateNewLogTraceId();
//
// try {
// log.info("[计量主机支付]MQ入参:{}", payload);
// Executors.doInTenant(payload.getMerchantId(), (s) -> {
// String version = RedisUtil.getString(String.format("yunshitang:%s:payversion:%s", payload.getMerchantId(), payload.getMacOrdId()));
// if ((!ObjectUtil.isEmpty(payload.getPayversion()) || !ObjectUtil.isNotEmpty(version)) && (!ObjectUtil.isNotEmpty(payload.getPayversion()) || payload.getPayversion().equals(version))) {
// OrderWeightPayDTO orderWeightPayDTO = new OrderWeightPayDTO();
// orderWeightPayDTO.setMacOrderId(payload.getMacOrdId());
// orderWeightPayDTO.setWeightBindType(payload.getBindType());
// orderWeightPayDTO.setOpenid(payload.getOpenId());
// AliMacWeightBindVO bindVO = this.orderPayApi.getAliMacWeightBindByMacOrdId(payload.getMacOrdId());
// if (bindVO != null) {
// orderWeightPayDTO.setAliSign(bindVO.getAliSign());
// orderWeightPayDTO.setAlifToken(bindVO.getAlifToken());
// }
//
// OrderWeightPayVO orderWeightPayVO = this.orderWeightBusiness.pay(orderWeightPayDTO);
// if (!orderWeightPayVO.weightPaySuccess() && (ObjectUtil.isEmpty(payload.getPayNum()) ? 2 : payload.getPayNum()) < 4) {
// payload.setPayNum(ObjectUtil.isEmpty(payload.getPayNum()) ? 2 : payload.getPayNum() + 1);
// BuffetBindSend.bindPaySend(payload);
// }
//
// if (ObjectUtil.isEmpty(payload.getPayNum()) || payload.getPayNum() < 2) {
// this.macWeighBindService.cleanAfterOrderPaid(payload.getMacOrdId(), payload.getPlateSerialNum());
// }
//
// }
// });
// } catch (Exception var3) {
// log.error("[计量主机支付]:处理异常", var3);
// }
//
// }
//
// public void orderAsyncRefundResult(RefundResultPO payload) {
// if (CharSequenceUtil.isNotEmpty(payload.getTraceId())) {
// LogUtil.putLogTraceId(payload.getTraceId());
// } else {
// LogUtil.generateNewLogTraceId();
// }
//
// if (!TradeTypeEnum.isConsumeRefundType(payload.getTradeType())) {
// log.info("[订单异步支付结果]MQ消费非消费退款类型交易不处理");
// } else {
// RLock lock = RedisUtil.getLock(OrderCacheConstants.orderAsyncPayResultLockKey(payload.getRefundTradeId().toString()));
// lock.lock();
//
// try {
// log.info("[订单异步退款结果]MQ消费开始");
// Executors.doInTenant(payload.getMerchantId(), (s) -> {
// this.orderResultBusiness.asyncRefundResultHandler(payload);
// });
// log.info("[订单异步退款结果]MQ消费消息消费完成");
// } catch (Exception var12) {
// log.error("[订单异步退款结果]MQ消费处理异常", var12);
// Executors.doInTenant(payload.getMerchantId(), (s) -> {
// this.orderErrorLogService.saveError(payload.getRefundTradeId(), payload.getTraceId(), OrderErrorTypeEnum.MQ_ORDER_REFUND_RESULT, var12.getMessage(), JacksonUtil.writeValueAsString(payload));
// });
// } finally {
// try {
// if (lock.isHeldByCurrentThread() && lock.isLocked()) {
// lock.unlock();
// }
// } catch (Exception var11) {
// log.error("解锁异常", var11);
// }
//
// }
//
// }
// }
}

View File

@ -0,0 +1,26 @@
package com.bonus.core.order.mq.listener;
import com.bonus.core.order.mq.MqPayload;
import com.bonus.core.pay.common.po.PayResultPO;
import com.bonus.mq.MQListener;
import com.bonus.mq.MQMessageListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@MQMessageListener(
group = "order-order-v3-async-pay-result",
topic = "order",
tag = "order-v3-async-pay-result"
)
public class OrderMqListenerAsyncPayResult implements MQListener<MqPayload<String>> {
private static final Logger log = LoggerFactory.getLogger(OrderMqListenerAsyncPayResult.class);
@Autowired
@Lazy
private OrderMqHandler orderMqHandler;
public void onMessage(MqPayload<String> payload) {
this.orderMqHandler.handleMessage(payload, PayResultPO.class, OrderMqHandler::orderAsyncPayResult);
}
}