From c87e5c5204b95a59d6ae48629488088d1eb296a8 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 21 五月 2024 19:28:20 +0800 Subject: [PATCH] 提交秒杀商品模块接口 --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 100 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java index 6bd8d67..52c5888 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java @@ -1,10 +1,29 @@ package com.ruoyi.goods.service.impl; -import com.ruoyi.goods.domain.pojo.GoodsSeckill; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.enums.StartStatusEnum; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.BeanUtils; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.goods.controller.management.DTO.GoodsSeckillDTO; +import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery; +import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd; +import com.ruoyi.goods.controller.management.DTO.GoodsSkuInfoDTO; +import com.ruoyi.goods.controller.management.VO.GoodsSeckillVO; +import com.ruoyi.goods.domain.GoodsSeckill; +import com.ruoyi.goods.domain.GoodsSku; import com.ruoyi.goods.mapper.GoodsSeckillMapper; import com.ruoyi.goods.service.IGoodsSeckillService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.goods.service.IGoodsSkuService; +import com.ruoyi.system.api.domain.dto.ListStatusDTO; +import com.ruoyi.system.api.feignClient.OrderClient; +import java.util.List; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -14,7 +33,86 @@ * @author mitao * @since 2024-05-16 */ +@Slf4j @Service +@RequiredArgsConstructor public class GoodsSeckillServiceImpl extends ServiceImpl<GoodsSeckillMapper, GoodsSeckill> implements IGoodsSeckillService { + private final IGoodsSkuService goodsSkuService; + private final OrderClient orderClient; + + @Override + @Transactional(rollbackFor = Exception.class) + public void addGoodsSeckill(GoodsSeckillDTO dto) { + List<GoodsSkuInfoDTO> goodsSkuList = dto.getGoodsSkuList(); + List<GoodsSeckill> goodsSeckills = BeanUtils.copyList(dto.getGoodsSkuList(), + GoodsSeckill.class); + for (GoodsSeckill goodsSeckill : goodsSeckills) { + goodsSeckill.setShareTitle(dto.getShareTitle()); + goodsSeckill.setSharePic(dto.getSharePic()); + goodsSeckill.setStartTime(dto.getStartTime()); + goodsSeckill.setEndTime(dto.getEndTime()); + goodsSeckill.setStartStatus(StartStatusEnum.NOT_STARTED); + } + this.saveBatch(goodsSeckills); + } + + /** + * 获取秒杀商品列表的分页数据 + * + * @param query 秒杀商品查询对象 + * @return + */ + @Override + public PageDTO<GoodsSeckillVO> getGoodsSeckillPage(GoodsSeckillQuery query) { + Page<GoodsSeckillVO> page = baseMapper.getGoodsSeckillPage(query.getGoodsSkuName(), + new Page<GoodsSeckillVO>(query.getPageCurr(), query.getPageSize()) + ); + return PageDTO.of(page); + } + + /** + * 修改秒杀商品 + * + * @param upd 商品秒杀数据传输对象 + */ + @Override + public void updGoodsSeckill(GoodsSeckillUpd upd) { + //查询秒杀商品 + GoodsSeckill goodsSeckill = this.getById(upd.getId()); + if (StringUtils.isNull(goodsSeckill)) { + throw new RuntimeException("秒杀商品不存在"); + } + GoodsSeckill goodsSeckillUpd = BeanUtils.copyBean(upd, GoodsSeckill.class); + this.updateById(goodsSeckillUpd); + } + + /** + * 上架/下架 秒杀商品 + * + * @param dto 商品上下架状态对象 + */ + @Override + public void updStatus(ListStatusDTO dto) { + this.lambdaUpdate() + .eq(GoodsSeckill::getId, dto.getId()) + .set(GoodsSeckill::getListingStatus, dto.getListingStatus()) + .update(); + } + + @Override + public GoodsSeckillVO getDetail(Long id) { + GoodsSeckill goodsSeckill = this.getById(id); + if (StringUtils.isNull(goodsSeckill)) { + throw new RuntimeException("秒杀商品不存在"); + } + GoodsSeckillVO vo = BeanUtils.copyBean(goodsSeckill, GoodsSeckillVO.class); + GoodsSku goods = goodsSkuService.getById(goodsSeckill.getGoodsSkuId()); + Optional.of(goods).ifPresent(goodsSku -> { + vo.setGoodsSkuName(goodsSku.getSkuName()); + }); + Integer num = orderClient.getSeckillMembers(goodsSeckill.getId()).getData(); + vo.setNumberOfPurchasedMembers(num); + return vo; + } } -- Gitblit v1.7.1