取消订单和延迟订单关闭后如何正确处理数据
接收订单延迟关闭消息
com.damai.service.delayconsumer.DelayOrderCancelConsumer#execute
@Slf4j
@Component
public class DelayOrderCancelConsumer implements ConsumerTask {
@Autowired
private OrderService orderService;
@Override
public void execute(String content) {
log.info("延迟订单取消消息进行消费 content : {}", content);
if (StringUtil.isEmpty(content)) {
log.error("延迟队列消息不存在");
return;
}
DelayOrderCancelDto delayOrderCancelDto = JSON.parseObject(content, DelayOrderCancelDto.class);
//取消订单
OrderCancelDto orderCancelDto = new OrderCancelDto();
orderCancelDto.setOrderNumber(delayOrderCancelDto.getOrderNumber());
boolean cancel = orderService.cancel(orderCancelDto);
if (cancel) {
log.info("延迟订单取消成功 orderCancelDto : {}",content);
}else {
log.error("延迟订单取消失败 orderCancelDto : {}",content);
}
}
@Override
public String topic() {
return SpringUtil.getPrefixDistinctionName() + "-" + DELAY_ORDER_CANCEL_TOPIC;
}
}
service层执行取消订单
com.damai.service.OrderService#cancel
@RepeatExecuteLimit(name = CANCEL_PROGRAM_ORDER,keys = {"#orderCancelDto.orderNumber"})
@ServiceLock(name = UPDATE_ORDER_STATUS_LOCK,keys = {"#orderCancelDto.orderNumber"})
@Transactional(rollbackFor = Exception.class)
public boolean cancel(OrderCancelDto orderCancelDto){
updateOrderRelatedData(orderCancelDto.getOrderNumber(),OrderStatus.CANCEL);
return true;
}
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的550+详细文档
- 讲解视频:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
