package com.nova.sankuai.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nova.sankuai.domain.dto.CostConfigDto; import com.nova.sankuai.domain.dto.CostConfigPageDto; import com.nova.sankuai.domain.entity.CostConfig; import com.nova.sankuai.domain.vo.CostConfigVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.mapper.CostConfigMapper; import com.nova.sankuai.infra.utils.PageUtil; import com.nova.sankuai.service.CostConfigService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Objects; /** * @Author Lilinhong * @Date 2022/7/13 9:18 */ @Service @Slf4j @AllArgsConstructor public class CostConfigServiceImpl extends ServiceImpl implements CostConfigService { private final PageUtil pageUtil; private final CostConfigMapper costConfigMapper; @Override public IPage getCostConfigList(CostConfigPageDto pageDto) { Page page = pageUtil.getPage(pageDto); IPage costConfigIPage = costConfigMapper.pageCostConfigList(page, pageDto); return costConfigIPage; } @Override public void editCostConfig(CostConfigDto costConfigDto) { CostConfig costConfig = getById(costConfigDto.getId()); if (costConfig == null) { throw new CommonException("此成本配置不存在"); } verifyCostConfig(costConfigDto); costConfig.setChannelId(costConfigDto.getChannelId()); costConfig.setChannelName(costConfigDto.getChannelName()); costConfig.setChannelCode(costConfigDto.getChannelCode()); costConfig.setDefaultFlag(costConfigDto.getDefaultFlag()); costConfig.setLastUpdateDate(new Date()); costConfig.setRelationCity(costConfigDto.getRelationCity()); costConfig.setRelationCityId(costConfigDto.getRelationCityId()); costConfig.setRelationCityName(costConfigDto.getRelationCityName()); costConfig.setUvPrice(costConfigDto.getUvPrice()); costConfig.setRegisterPrice(costConfigDto.getRegisterPrice()); costConfig.setFinishedPrice(costConfigDto.getFinishedPrice()); if (Objects.equals(costConfig.getDefaultFlag(), 1)) { costConfig.setRelationCity(null); costConfig.setRelationCityName(null); costConfig.setRelationCityId(null); } updateById(costConfig); } @Override public void addCostConfig(CostConfigDto costConfigDto) { verifyCostConfig(costConfigDto); CostConfig costConfig = new CostConfig(); BeanUtils.copyProperties(costConfigDto, costConfig); costConfig.setCreationDate(new Date()); costConfig.setLastUpdateDate(new Date()); if (Objects.equals(costConfig.getDefaultFlag(), 1)) { costConfig.setRelationCity(null); costConfig.setRelationCityName(null); costConfig.setRelationCityId(null); } save(costConfig); } @Override public void deleteCostConfig(Long id) { CostConfig costConfig = getOne(new LambdaQueryWrapper().eq(CostConfig::getId, id) .eq(CostConfig::getIsDelete, 0)); if (costConfig == null) { throw new CommonException("此成本配置不存在"); } costConfigMapper.deleteCostConfig(id); } public void verifyCostConfig(CostConfigDto costConfigDto) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CostConfig::getChannelId, costConfigDto.getChannelId()); if (costConfigDto.getId() != null) { queryWrapper.ne(CostConfig::getId, costConfigDto.getId()); } if (Objects.equals(costConfigDto.getDefaultFlag(), 1)) { queryWrapper.eq(CostConfig::getDefaultFlag, costConfigDto.getDefaultFlag()); } else { queryWrapper.eq(CostConfig::getRelationCityId, costConfigDto.getRelationCityId()); } List costConfigList = list(queryWrapper); if (costConfigList != null && !costConfigList.isEmpty()) { for (CostConfig costConfig : costConfigList) { if (Objects.equals(costConfig.getDefaultFlag(), 1)) { throw new CommonException("该渠道已存在默认配置"); } if (Objects.equals(costConfig.getRelationCityId(), costConfigDto.getRelationCityId())) { throw new CommonException("该渠道此城市配置已存在"); } } } } }