JAVA全系列 教程
3762个小节阅读:7091.1k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
修改新增订单方法,新增订单后发送延迟消息
xxxxxxxxxx
@DubboService
public class OrderServiceImpl implements OrdersService {
@Autowired
private OrdersMapper ordersMapper;
@Autowired
private CartGoodsMapper cartGoodsMapper;
@Autowired
private RocketMQTemplate rocketMQTemplate;
private final String CHECK_ORDERS_QUEUE= "check_orders_queue";
@Override
public Orders add(Orders orders) {
// 订单状态未付款
orders.setStatus(1);
// 订单创建时间
orders.setCreateTime(new Date());
// 计算订单价格,遍历订单所有商品
List<CartGoods> cartGoods = orders.getCartGoods();
BigDecimal sum = BigDecimal.ZERO;
for (CartGoods cartGood : cartGoods) {
// 数量
BigDecimal num = new BigDecimal(cartGood.getNum());
// 单价
BigDecimal price = cartGood.getPrice();
// 数量 * 单价
BigDecimal multiply = num.multiply(price);
sum = sum.add(multiply);
}
orders.setPayment(sum);
// 保存订单
ordersMapper.insert(orders);
// 保存订单商品
for (CartGoods cartGood : cartGoods) {
cartGood.setOrderId(orders.getId());
cartGoodsMapper.insert(cartGood);
}
//发送延时消息,30m后判断订单是否支付
//延时等级1到16分别表示 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
rocketMQTemplate.syncSend(CHECK_ORDERS_QUEUE, MessageBuilder.withPayload(orders.getId()).build(),15000,4);
return orders;
}
}