基本优惠券抢购功能
This commit is contained in:
parent
bb80b6da7a
commit
12e6c4e1b7
@ -1 +1 @@
|
||||
14688
|
||||
45680
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hmdp.controller;
|
||||
|
||||
|
||||
import com.hmdp.dto.Result;
|
||||
import com.hmdp.service.impl.VoucherOrderServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -18,8 +20,12 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
@RequestMapping("/voucher-order")
|
||||
public class VoucherOrderController {
|
||||
|
||||
@Autowired
|
||||
private VoucherOrderServiceImpl voucherOrderService;
|
||||
|
||||
@PostMapping("seckill/{id}")
|
||||
public Result seckillVoucher(@PathVariable("id") Long voucherId) {
|
||||
return Result.fail("功能未完成");
|
||||
return voucherOrderService.seckillVoucher(voucherId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hmdp.service;
|
||||
|
||||
import com.hmdp.dto.Result;
|
||||
import com.hmdp.entity.VoucherOrder;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
*/
|
||||
public interface IVoucherOrderService extends IService<VoucherOrder> {
|
||||
|
||||
Result seckillVoucher(Long voucherId);
|
||||
}
|
||||
|
||||
@ -1,11 +1,22 @@
|
||||
package com.hmdp.service.impl;
|
||||
|
||||
import cn.hutool.db.handler.RsHandler;
|
||||
import com.hmdp.dto.Result;
|
||||
import com.hmdp.entity.SeckillVoucher;
|
||||
import com.hmdp.entity.Voucher;
|
||||
import com.hmdp.entity.VoucherOrder;
|
||||
import com.hmdp.mapper.VoucherOrderMapper;
|
||||
import com.hmdp.service.ISeckillVoucherService;
|
||||
import com.hmdp.service.IVoucherOrderService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hmdp.service.IVoucherService;
|
||||
import com.hmdp.utils.RedisIdWorker;
|
||||
import com.hmdp.utils.UserHolder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
@ -16,5 +27,38 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {
|
||||
|
||||
@Autowired
|
||||
private ISeckillVoucherService iSeckillVoucherService;
|
||||
@Autowired
|
||||
private RedisIdWorker redisIdWorker;
|
||||
@Override
|
||||
public Result seckillVoucher(Long voucherId) {
|
||||
// 根据vorcherId查询优惠券
|
||||
SeckillVoucher seckillVoucher = iSeckillVoucherService.getById(voucherId);
|
||||
// 判断秒杀功能是否已经开始或结束
|
||||
if (seckillVoucher.getBeginTime().isAfter(LocalDateTime.now())) {
|
||||
return Result.fail("秒杀功能还未开始");
|
||||
} else if (seckillVoucher.getEndTime().isBefore(LocalDateTime.now())) {
|
||||
return Result.fail("秒杀功能已经结束");
|
||||
}
|
||||
// 判断库存是否充足
|
||||
if(seckillVoucher.getStock()<1){
|
||||
return Result.fail("库存不足");
|
||||
}
|
||||
// 扣减库存
|
||||
boolean succed = iSeckillVoucherService.update().setSql("stock = stock-1").eq("voucher_id",voucherId).update();
|
||||
if(!succed){
|
||||
return Result.fail("失败");
|
||||
}
|
||||
// 创建一个新的voucherOrder订单
|
||||
VoucherOrder voucherOrder = new VoucherOrder();
|
||||
long orderId = redisIdWorker.nextId("order");
|
||||
voucherOrder.setId(orderId);
|
||||
Long userID = UserHolder.getUser().getId();
|
||||
voucherOrder.setUserId(userID);
|
||||
voucherOrder.setVoucherId(voucherId);
|
||||
save(voucherOrder);
|
||||
// 返回订单id
|
||||
return Result.ok(orderId);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user