ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/SeckillActivityInfoClientFallbackFactory.java
@@ -22,6 +22,11 @@ public R<SeckillActivityInfo> getSeckillActivityInfoById(Integer id) { return R.fail("根据id获取秒杀活动失败:" + cause.getMessage()); } @Override public R<SeckillActivityInfo> getSeckillActivityInfoByGoodsId(Integer goodsId) { return R.fail(); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/SeckillActivityInfoClient.java
@@ -7,6 +7,7 @@ import com.ruoyi.other.api.factory.SeckillActivityInfoClientFallbackFactory; import com.ruoyi.other.api.vo.GetSeckillActivityInfo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -35,4 +36,7 @@ */ @PostMapping("/seckill-activity-info/getSeckillActivityInfoById") R<SeckillActivityInfo> getSeckillActivityInfoById(@RequestParam("id") Integer id); @GetMapping("/seckill-activity-info/getSeckillActivityInfoByGoodsId") public R<SeckillActivityInfo> getSeckillActivityInfoByGoodsId(@RequestParam("goodsId") Integer goodsId); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -337,7 +337,20 @@ .eq(ShoppingCart::getAppUserId, userid)); goodsSaleNum += count; Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData(); if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && (goodsSaleNum + shoppingCart.getNumber()) > goods.getPurchaseLimit()){ Integer maxNum = 0; if(shoppingCart.getType() == 2){ R<SeckillActivityInfo> r = seckillActivityInfoClient.getSeckillActivityInfoByGoodsId(shoppingCart.getGoodsId()); if (R.isError(r)){ throw new ServiceException("获取秒杀商品失败!"); } SeckillActivityInfo seckillActivityInfo = r.getData(); maxNum = seckillActivityInfo.getMaxNum(); }else { maxNum = goods.getPurchaseLimit(); } if(null != goods.getPurchaseLimit() && -1 != maxNum && (goodsSaleNum + shoppingCart.getNumber()) > maxNum){ throw new ServiceException("超出购买数量限制"); } ShoppingCart one = this.getOne(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid) ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java
@@ -186,6 +186,16 @@ return R.ok(); } @GetMapping("/getSeckillActivityInfoByGoodsId") public R<SeckillActivityInfo> getSeckillActivityInfoByGoodsId(@RequestParam("goodsId") Integer goodsId){ SeckillActivityInfo seckillActivityInfo = seckillActivityInfoService.getOne(new LambdaQueryWrapper<SeckillActivityInfo>() .eq(SeckillActivityInfo::getGoodId, goodsId) .eq(SeckillActivityInfo::getDelFlag, 0) .eq(SeckillActivityInfo::getIsShelves, 1) .last(" and now() between start_time and end_time")); return R.ok(seckillActivityInfo); } /** * 修改秒杀活动 */