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.IncomeConfigDto; import com.nova.sankuai.domain.dto.IncomeConfigPageDto; import com.nova.sankuai.domain.entity.IncomeConfig; import com.nova.sankuai.domain.vo.IncomeConfigItemListVo; import com.nova.sankuai.domain.vo.IncomeConfigItemVo; import com.nova.sankuai.domain.vo.IncomeConfigVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.mapper.ApiCompanyMapper; import com.nova.sankuai.infra.mapper.CapitalInfoMapper; import com.nova.sankuai.infra.mapper.IncomeConfigMapper; import com.nova.sankuai.infra.utils.PageUtil; import com.nova.sankuai.service.IncomeConfigService; 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:29 */ @Service @Slf4j @AllArgsConstructor public class IncomeConfigServiceImpl extends ServiceImpl implements IncomeConfigService { private final PageUtil pageUtil; private IncomeConfigMapper incomeConfigMapper; private ApiCompanyMapper apiCompanyMapper; private CapitalInfoMapper capitalInfoMapper; @Override public IPage getIncomeConfigList(IncomeConfigPageDto pageDto) { Page page = pageUtil.getPage(pageDto); IPage incomeConfigVoIPage = incomeConfigMapper.pageIncomeConfigList(page, pageDto); return incomeConfigVoIPage; } @Override public void editIncomeConfig(IncomeConfigDto incomeConfigDto) { IncomeConfig incomeConfig = getById(incomeConfigDto.getId()); if (incomeConfig == null) { throw new CommonException("此收入配置不存在"); } verifyIncomeConfig(incomeConfigDto); incomeConfig.setConfigRecordId(incomeConfigDto.getConfigRecordId()); incomeConfig.setConfigRecordName(incomeConfigDto.getConfigRecordName()); incomeConfig.setConfigRecordCode(incomeConfigDto.getConfigRecordCode()); incomeConfig.setType(incomeConfigDto.getType()); incomeConfig.setDefaultFlag(incomeConfigDto.getDefaultFlag()); incomeConfig.setLastUpdateDate(new Date()); incomeConfig.setRelationCity(incomeConfigDto.getRelationCity()); incomeConfig.setRelationCityId(incomeConfigDto.getRelationCityId()); incomeConfig.setRelationCityName(incomeConfigDto.getRelationCityName()); incomeConfig.setCollisionPrice(incomeConfigDto.getCollisionPrice()); incomeConfig.setCapitalPrice(incomeConfigDto.getCapitalPrice()); incomeConfig.setAuditPrice(incomeConfigDto.getAuditPrice()); if (Objects.equals(incomeConfig.getDefaultFlag(), 1)) { incomeConfig.setRelationCity(null); incomeConfig.setRelationCityName(null); incomeConfig.setRelationCityId(null); } updateById(incomeConfig); } @Override public void addIncomeConfig(IncomeConfigDto incomeConfigDto) { verifyIncomeConfig(incomeConfigDto); IncomeConfig incomeConfig = new IncomeConfig(); BeanUtils.copyProperties(incomeConfigDto, incomeConfig); incomeConfig.setCreationDate(new Date()); incomeConfig.setLastUpdateDate(new Date()); if (Objects.equals(incomeConfig.getDefaultFlag(), 1)) { incomeConfig.setRelationCity(null); incomeConfig.setRelationCityName(null); incomeConfig.setRelationCityId(null); } save(incomeConfig); } @Override public void deleteIncomeConfig(Long id) { IncomeConfig incomeConfig = getOne(new LambdaQueryWrapper().eq(IncomeConfig::getId, id) .eq(IncomeConfig::getIsDelete, 0)); if (incomeConfig == null) { throw new CommonException("此收入配置不存在"); } incomeConfigMapper.deleteIncomeConfig(id); } public void verifyIncomeConfig(IncomeConfigDto incomeConfigDto) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(IncomeConfig::getConfigRecordId, incomeConfigDto.getConfigRecordId()); queryWrapper.eq(IncomeConfig::getType, incomeConfigDto.getType()); if (incomeConfigDto.getId() != null) { queryWrapper.ne(IncomeConfig::getId, incomeConfigDto.getId()); } if (Objects.equals(incomeConfigDto.getDefaultFlag(), 1)) { queryWrapper.eq(IncomeConfig::getDefaultFlag, incomeConfigDto.getDefaultFlag()); } else { queryWrapper.eq(IncomeConfig::getRelationCityId, incomeConfigDto.getRelationCityId()); } List incomeConfigList = list(queryWrapper); if (incomeConfigList != null && !incomeConfigList.isEmpty()) { for (IncomeConfig incomeConfig : incomeConfigList) { if (Objects.equals(incomeConfig.getDefaultFlag(), 1)) { throw new CommonException("该机构已存在默认配置"); } if (Objects.equals(incomeConfig.getRelationCityId(), incomeConfigDto.getRelationCityId())) { throw new CommonException("该机构此城市配置已存在"); } } } } @Override public IncomeConfigItemListVo getSelectIncomeConfigs() { List apiCompanyList = apiCompanyMapper.getSelectIncomeConfigs(); List capitalList = capitalInfoMapper.getSelectIncomeConfigs(); IncomeConfigItemListVo listVo = new IncomeConfigItemListVo(); listVo.setCapitalList(capitalList); listVo.setApiCompanyList(apiCompanyList); return listVo; } }