预订单-提交
This commit is contained in:
parent
1d8ac90291
commit
002d561364
|
|
@ -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);
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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> {
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue