开发者学堂课程【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("订单取消失败");
}
这就是关于订单取消的处理,也就是回退库存、回退优惠券、回退余额和取消订单就实现了,剩下就是测试了。