开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):回退优惠券】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12430
回退优惠券
分析思路
优惠卷状态回退,本质上做更新的状态,将 coupon 数据的 order_id,is_used,used_time 进行修改,没有添加新的数据,只是将状态进行修改,所以在优惠卷的密动性上进行简单的处理,即使有重复消息,对业务并不会产生影响。
@Slf4j
@Autowired
private TradeCouponMapper couponMapper;
@Override
public void onMessage (MessageExt message)
{
try
{
//1. 解析消息内容
String body = new String(message. getBody(),charsetName: "UTF-8");
转换成对象,从mqEntity拿到实体类的对象
MQEntity mqEntity = JSON. parseObject(body, MQEntity.class);
Log. info("
接收到消息
");
//2.查询优惠卷信息,根据优惠卷的id查询出优惠卷的数据
TradeCoupon coupon = couponMapper.
selectByPrimaryKey(mqEntity. getCouponId());
//3.更改优惠卷状态
coupon.setUsedTime(null);
coupon.setIsUsed(ShopCode.ShopCode.SHOP_COUPON_ UNUSED.getcode());未使用
coupon. setOrderId(null);
couponMapper . updateByPrimaryKey( coupon);
Log . info("回退优惠券成功");
}
catch (UnsupportedEncodingException e)
{
е. printStackTrace();
Log. error("回退优惠卷失败");
}
}
}