package com.nova.sankuai.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nova.sankuai.domain.dto.ChannelLoanMarketDto; import com.nova.sankuai.domain.entity.ChannelInfo; import com.nova.sankuai.domain.entity.ChannelSupermarket; import com.nova.sankuai.domain.entity.LoanSupermarket; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.mapper.ChannelInfoMapper; import com.nova.sankuai.infra.mapper.ChannelSupermarketMapper; import com.nova.sankuai.infra.mapper.LoanSupermarketMapper; import com.nova.sankuai.service.IChannelSupermarketService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author weikangdi * @create 2021/12/27 */ @Service @AllArgsConstructor public class ChannelSupermarketServiceImpl extends ServiceImpl implements IChannelSupermarketService { private final LoanSupermarketMapper loanSupermarketMapper; private final ChannelInfoMapper channelInfoMapper; private final ChannelSupermarketMapper channelSupermarketMapper; @Override @Transactional(rollbackFor = Exception.class) public void saveByChannel(Long channelId) { LambdaQueryWrapper loanSupermarketWrapper = new LambdaQueryWrapper<>(); loanSupermarketWrapper.eq(LoanSupermarket::getDeleteFlag, 0); List loanSupermarkets = loanSupermarketMapper.selectList(loanSupermarketWrapper); List addList = new ArrayList<>(); for (LoanSupermarket loanSupermarket : loanSupermarkets) { ChannelSupermarket channelSupermarket = new ChannelSupermarket(); channelSupermarket.setChannelId(channelId); channelSupermarket.setSupermarketId(loanSupermarket.getId()); channelSupermarket.setEnableFlag(loanSupermarket.getEnableFlag()); channelSupermarket.setIsFeatured(loanSupermarket.getIsFeatured()); channelSupermarket.setIsTimeLimit(loanSupermarket.getIsTimeLimit()); addList.add(channelSupermarket); } if (addList.size() > 0) { channelSupermarketMapper.batchSave(addList); } } @Override @Transactional(rollbackFor = Exception.class) public void saveBySupermarket(LoanSupermarket loanMarket) { LambdaQueryWrapper channelInfoWrapper = new LambdaQueryWrapper<>(); channelInfoWrapper.eq(ChannelInfo::getType, ChannelInfo.TYPE_IMPORT); List channelInfos = channelInfoMapper.selectList(channelInfoWrapper); List addList = new ArrayList<>(); for (ChannelInfo channelInfo : channelInfos) { ChannelSupermarket channelSupermarket = new ChannelSupermarket(); channelSupermarket.setChannelId(channelInfo.getId()); channelSupermarket.setSupermarketId(loanMarket.getId()); channelSupermarket.setEnableFlag(loanMarket.getEnableFlag()); channelSupermarket.setIsFeatured(loanMarket.getIsFeatured()); channelSupermarket.setIsTimeLimit(loanMarket.getIsTimeLimit()); addList.add(channelSupermarket); } if (addList.size() > 0) { channelSupermarketMapper.batchSave(addList); } } @Override public void editChannelLoanMarket(ChannelLoanMarketDto channelLoanMarketDto) { ChannelSupermarket channelSupermarket = lambdaQuery() .eq(ChannelSupermarket::getChannelId, channelLoanMarketDto.getChannelId()) .eq(ChannelSupermarket::getSupermarketId, channelLoanMarketDto.getLoanMarkId()).one(); if (channelSupermarket == null) { throw new CommonException("该渠道贷超配置不存在"); } channelSupermarket.setIsTimeLimit(channelLoanMarketDto.getIsTimeLimit()); channelSupermarket.setIsFeatured(channelLoanMarketDto.getIsFeatured()); channelSupermarket.setEnableFlag(channelLoanMarketDto.getEnableFlag()); updateById(channelSupermarket); } @Override public void copyChannel(Long targetId, Long sourceId) { List supermarketList = lambdaQuery().eq(ChannelSupermarket::getChannelId, sourceId).list(); List addList = new ArrayList<>(); for (ChannelSupermarket loanSupermarket : supermarketList) { loanSupermarket.setId(null); loanSupermarket.setChannelId(targetId); addList.add(loanSupermarket); } if (addList.size() > 0) { channelSupermarketMapper.batchCopy(addList); } } @Override public void editByLoanMarket(LoanSupermarket loanSupermarketDb) { channelSupermarketMapper.batchUpdateByMarket(loanSupermarketDb); } }