JAVA全系列 教程
3762个小节阅读:7095k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
我们之前已经编写过支付宝支付的功能,此处不进行功能的重复编写。我们不调用支付宝支付,直接点击支付按钮,完成假支付即可。
支付秒杀订单时需要删除redis中的订单数据,并将订单保存到数据库中
在秒杀实现类重写支付秒杀订单方法
xxxxxxxxxx
@Override
public Orders pay(String orderId) {
// 1.查询订单,设置数据
Orders orders = (Orders) redisTemplate.opsForValue().get(orderId);
if (orders == null) {
throw new BusException(CodeEnum.ORDER_EXPIRED_ERROR); // 订单过期
}
orders.setStatus(2);
orders.setPaymentTime(new Date());
orders.setPaymentType(2); // 支付宝支付
// 2.从redis删除订单数据
redisTemplate.delete(orderId);
// 3.返回订单数据
return orders;
}
编写秒杀控制器
xxxxxxxxxx
/**
* 支付秒杀订单
* @param id 订单id
*/
@GetMapping("/pay")
public BaseResult pay(String id){
// 支付秒杀订单
Orders orders = seckillService.pay(id);
// 将订单数据存入数据库
ordersService.add(orders);
return BaseResult.ok();
}
修改订单服务的生成订单方法
xxxxxxxxxx
@Override
public Orders add(Orders orders) {
// 订单状态未付款
if (orders.getStatus() == null){
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);
}
return orders;
}