package com.cyksj.service.home.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cyksj.common.exception.BusinessRuntimeException; import com.cyksj.mapper.GoodsDonMapper; import com.cyksj.mapper.manage.home.HomeManagementConfigMapper; import com.cyksj.model.entity.GoodsDon; import com.cyksj.model.entity.HomeManagementConfig; import com.cyksj.model.request.HomeManageConfigReq; import com.cyksj.service.home.HomeManagementConfigService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; /* *项目名: netflix *文件名: HomeManagementConfigServiceImpl *创建者: JavaZou *创建时间:2023/8/17 16:48 */ @Service @RequiredArgsConstructor @Slf4j public class HomeManagementConfigServiceImpl extends ServiceImpl implements HomeManagementConfigService { private final GoodsDonMapper goodsDonMapper; @Override public void saveOrUpdateConfig(HomeManageConfigReq config) { if (isSpecialType(config.getType())) { Assert.notEmpty(config.getTitle(), "标题不为空"); HomeManagementConfig homeManagementConfig = new HomeManagementConfig(); BeanUtil.copyProperties(config, homeManagementConfig); if (config.getType() == HomeManagementConfig.Type.ad) { if (config.getAdType() == null) { throw BusinessRuntimeException.getInstance("请选择对应的广告配置类型"); } } this.saveOrUpdate(homeManagementConfig); return; } //首页平台推荐、首页精彩推荐 List goodsIds = config.getGoodsIds(); if (CollUtil.isEmpty(goodsIds)) { throw BusinessRuntimeException.getInstance("请选择对应的平台"); } goodsIds.forEach(goodsId -> { GoodsDon goodsDon = goodsDonMapper.selectById(goodsId); if (goodsDon == null || !goodsDon.getStatus()) { return; } HomeManagementConfig homeManagementConfig = this.getOne(Wrappers.lambdaQuery(HomeManagementConfig.class) .ne(config.getId() != null, HomeManagementConfig::getId, config.getId()) .eq(HomeManagementConfig::getGoodsId, goodsId) .eq(HomeManagementConfig::getType, config.getType()) .eq(HomeManagementConfig::getDeleted, true).last("limit 1")); if (homeManagementConfig != null) { return; } homeManagementConfig = new HomeManagementConfig(); BeanUtil.copyProperties(config, homeManagementConfig); homeManagementConfig.setGoodsId(goodsId); homeManagementConfig.setType(config.getType()); this.saveOrUpdate(homeManagementConfig); }); } public Boolean isSpecialType(HomeManagementConfig.Type type) { if (type == HomeManagementConfig.Type.rg || type == HomeManagementConfig.Type.ad) { return true; } return false; } }