diff --git a/nginx-1.18.0/logs/nginx.pid b/nginx-1.18.0/logs/nginx.pid index 441c537..8175f50 100644 --- a/nginx-1.18.0/logs/nginx.pid +++ b/nginx-1.18.0/logs/nginx.pid @@ -1 +1 @@ -14688 +45680 diff --git a/src/main/java/com/hmdp/controller/VoucherOrderController.java b/src/main/java/com/hmdp/controller/VoucherOrderController.java index 2bfdee9..945ca03 100644 --- a/src/main/java/com/hmdp/controller/VoucherOrderController.java +++ b/src/main/java/com/hmdp/controller/VoucherOrderController.java @@ -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); } } diff --git a/src/main/java/com/hmdp/service/IVoucherOrderService.java b/src/main/java/com/hmdp/service/IVoucherOrderService.java index 218cc13..37fb99b 100644 --- a/src/main/java/com/hmdp/service/IVoucherOrderService.java +++ b/src/main/java/com/hmdp/service/IVoucherOrderService.java @@ -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 { + Result seckillVoucher(Long voucherId); } diff --git a/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java index 8e1750d..f8b2e62 100644 --- a/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java +++ b/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java @@ -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; + /** *

* 服务实现类 @@ -16,5 +27,38 @@ import org.springframework.stereotype.Service; */ @Service public class VoucherOrderServiceImpl extends ServiceImpl 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); + } }