取消订单|学习笔记

简介: 快速学习取消订单

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)学习取消订单】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12432


取消订单

对于订单的处理,如果确认订单失败之后,就把订单,也就是预订单的状态改为取消就可以,这个操作也是比较容易的。

接下来写一下注释,第一步是解析消息内容,要更改订单状态,要先查询订单,然后更新订单的状态为取消。

接下来去获得消息的内容,注意不要选错,然后在代码的基础上接收一下 body。

代码如下:

String body=New string(messageExt.getBody(),charsetName:"UTF-8"

如果发现它有异常,就去处理一下,然后把三个步骤放到里面去。

查询之前,先把 body 解析为 MQN 的点,把它先进行一个转换,然后再查询订单,把 ordermapper 拿过来,再根据这个去查询,MQN 里就有订单ID。拿到订单ID 以后就更新订单状态,状态设置为取消之后就可以对数据库进行更新了。

在这依然是在上面打印一个日志,在这个地方设置一下接收消息成功。

代码如下:

//1.解消息内容

string body=new String(messageExt.getBody(),

charsetName:"UTF-8); MQEntity

mgEntity=JSONparseObject(bodyMQEntityclass);

Log.info("接受消息成功");

接收消息成功以后设置订单状态为取消。

代码如下:

order.setorderstatus(ShopCode.SHOPORDERMESSAGESTATUSCANCELgetCode());

orderMapper.updateByPrimaryKey(order); Log.info("订单状态设置为取消");

如果出现异常,就是订单取消失败。

代码如下:

@Autowired

private TradeOrderMapper orderMapper;

@Override

public void onMessage(MessageExt messageExt){

try {

//1.解析消息内容

string body=new string(messageExtgetBody(),

charsetName:"UTF-8"); MQEntitymqEntity=JSONparseObject(body,MQEntity.class); Log.info("接收消息成功");

//2.查询订单

TradeOrder

order=orderMapperselectByPrimaryKey(mqEntitygetorderId())

//3.更新订单状态为取消

order.setorderstatus(ShopCodeSHOP ORDER MESSAGE STATUSCANCELgetCode());

orderMapperupdateByPrimaryKey(order); log.info("订单状态设置为取消");

}catch(UnsupportedEncodingExceptione){

E.printstackTrace();

log.info("订单取消失败");

}

这就是关于订单取消的处理,也就是回退库存、回退优惠券、回退余额和取消订单就实现了,剩下就是测试了。

相关文章
|
6月前
|
消息中间件 NoSQL Kafka
订单超时取消的11种方式(非常详细清楚)
订单超时取消的11种方式(非常详细清楚)
2810 1
订单超时取消的11种方式(非常详细清楚)
|
4月前
|
数据安全/隐私保护
支付系统37----------用户取消订单
支付系统37----------用户取消订单
支付系统42----支付宝支付-定时查单-订单已支付,如果我们在定时查单的状态中,我们明明已经支付的订单,却在本地状态中显示没有支付,这是因我们的异步通知因为种种原因没有接受到,支付宝端成功,本地失败
支付系统42----支付宝支付-定时查单-订单已支付,如果我们在定时查单的状态中,我们明明已经支付的订单,却在本地状态中显示没有支付,这是因我们的异步通知因为种种原因没有接受到,支付宝端成功,本地失败
支付系统34----支付成功异步通知,处理重复通知,我们在我们程序当中找到处理订单的processOrder方法,我们要在更新订单状态和记录日志之前,先处理重复通知
支付系统34----支付成功异步通知,处理重复通知,我们在我们程序当中找到处理订单的processOrder方法,我们要在更新订单状态和记录日志之前,先处理重复通知
|
4月前
|
JSON 数据格式
支付系统41----定时查单-订单未支付
支付系统41----定时查单-订单未支付
|
11月前
|
消息中间件 NoSQL Java
订单超时取消的11种方法(上)
大家好,我是三友~~ 延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。 所以本篇文章就来从实现到原理来盘点延迟任务的11种实现方式,这些方式并没有绝对的好坏之分,只是适用场景
订单超时取消的11种方法(上)
|
11月前
|
NoSQL Java 调度
订单超时取消的11种方法(下)
大家好,我是三友~~ 延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。 所以本篇文章就来从实现到原理来盘点延迟任务的11种实现方式,这些方式并没有绝对的好坏之分,只是适用场景的不大相同。
订单超时取消的11种方法(下)
|
消息中间件 NoSQL 数据库
订单超时未支付自动取消--实现简述
订单超时未支付自动取消--实现简述
230 0
筛选拆单后订单状态全部为已取消状态的订单有哪些
筛选拆单后订单状态全部为已取消状态的订单有哪些
77 0
|
消息中间件 Java 程序员
订单支付超时,自动关闭订单实现
今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。
419 0
订单支付超时,自动关闭订单实现