ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java
@@ -2,7 +2,17 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.enums.ListingStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
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.promotion.controller.management.dto.MgtPromotionBannerDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerQuery;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerUpdDTO;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionBannerVO;
import com.ruoyi.promotion.domain.PromotionBanner;
import com.ruoyi.promotion.mapper.PromotionBannerMapper;
import com.ruoyi.promotion.service.IPromotionBannerService;
@@ -25,7 +35,78 @@
        LambdaQueryWrapper<PromotionBanner> wrapper= Wrappers.lambdaQuery();
        wrapper.eq(PromotionBanner::getBannerType,bannerType);
        wrapper.eq(PromotionBanner::getDelFlag,0);
        wrapper.eq(PromotionBanner::getListingStatus, ListingStatusEnum.ON_SHELVES);
        wrapper.orderByDesc(PromotionBanner::getSortNum);
        return this.list(wrapper);
    }
    @Override
    public PageDTO<MgtPromotionBannerVO> getBannerPage(MgtPromotionBannerQuery query) {
        Page<PromotionBanner> page = this.lambdaQuery()
                .eq(StringUtils.isNotNull(query.getListingStatus()),
                        PromotionBanner::getListingStatus, query.getListingStatus())
                .like(StringUtils.isNotBlank(query.getBannerName()), PromotionBanner::getBannerName,
                        query.getBannerName())
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        if (StringUtils.isEmpty(page.getRecords())) {
            return PageDTO.empty(page);
        }
        return PageDTO.of(page, MgtPromotionBannerVO.class);
    }
    /**
     * 添加/编辑轮播图
     *
     * @param dto 轮播图数据传输对象
     */
    @Override
    public void savePromotionBanner(MgtPromotionBannerDTO dto) {
        PromotionBanner promotionBanner = BeanUtils.copyBean(dto, PromotionBanner.class);
        // 添加
        if (StringUtils.isNull(promotionBanner.getId())) {
            if (StringUtils.isNull(promotionBanner.getBannerType())) {
                throw new ServiceException("轮播图类型不能为空");
            }
            this.save(promotionBanner);
        } else {
            // 更新
            this.updateById(promotionBanner);
        }
    }
    /**
     * 删除轮播图
     *
     * @param id 轮播图id
     */
    @Override
    public void delPromotionBanner(Long id) {
        this.removeById(id);
    }
    /**
     * 查看轮播图详情
     *
     * @param id 轮播图id
     * @return MgtPromotionBannerVO
     */
    @Override
    public MgtPromotionBannerVO getPromotionBanner(Long id) {
        PromotionBanner promotionBanner = this.getById(id);
        if (StringUtils.isNull(promotionBanner)) {
            throw new ServiceException("轮播图不存在");
        }
        return BeanUtils.copyBean(promotionBanner, MgtPromotionBannerVO.class);
    }
    /**
     * 轮播图 上架/下架
     *
     * @param dto 轮播图状态数据传输对象
     */
    @Override
    public void updStatus(MgtPromotionBannerUpdDTO dto) {
        this.lambdaUpdate().set(PromotionBanner::getListingStatus, dto.getListingStatus())
                .eq(PromotionBanner::getId, dto.getId()).update();
    }
}