package com.nova.sankuai.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
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.nova.sankuai.domain.dto.AddChannelCityLinkDto;
|
import com.nova.sankuai.domain.dto.QueryChannelCityLinkPageDto;
|
import com.nova.sankuai.domain.dto.UpdateChannelCityLinkDto;
|
import com.nova.sankuai.domain.entity.ChannelCityLink;
|
import com.nova.sankuai.domain.entity.City;
|
import com.nova.sankuai.domain.vo.ChannelCityLinkListVo;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.mapper.ChannelCityLinkMapper;
|
import com.nova.sankuai.infra.mapper.CityMapper;
|
import com.nova.sankuai.infra.utils.PageUtil;
|
import com.nova.sankuai.service.ChannelCityLinkService;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Slf4j
|
@AllArgsConstructor
|
public class ChannelCityLinkServiceImpl extends ServiceImpl<ChannelCityLinkMapper, ChannelCityLink> implements ChannelCityLinkService {
|
|
private final PageUtil pageUtil;
|
|
private final ChannelCityLinkMapper channelCityLinkMapper;
|
|
private final CityMapper cityMapper;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void addChannelCityLink(AddChannelCityLinkDto channelCityLinkDto) {
|
List<String> cityIds = channelCityLinkDto.getCityIds();
|
if (cityIds == null || cityIds.isEmpty()) {
|
throw new CommonException("请至少添加一个城市");
|
}
|
List<String> cityIdsSelect = channelCityLinkMapper.getCityIds(channelCityLinkDto.getChannelId());
|
if (!cityIdsSelect.isEmpty() && cityIdsSelect != null) {
|
for (String cityId : cityIds) {
|
if (cityIdsSelect.contains(cityId)){
|
City city = cityMapper.selectOne(new LambdaQueryWrapper<City>().eq(City::getCityId, cityId));
|
throw new CommonException(city.getName()+"已存在下载链接");
|
}
|
}
|
}
|
ArrayList<ChannelCityLink> channelCityLinks = new ArrayList<>();
|
cityIds.stream().map(item -> {
|
ChannelCityLink channelCityLink = new ChannelCityLink();
|
channelCityLink.setAndroidLink(channelCityLinkDto.getAndroidLink());
|
channelCityLink.setChannelId(channelCityLinkDto.getChannelId());
|
channelCityLink.setCityId(item);
|
channelCityLink.setIosLink(channelCityLinkDto.getIosLink());
|
channelCityLink.setCreationDate(new Date());
|
channelCityLink.setLastUpdateDate(new Date());
|
channelCityLinks.add(channelCityLink);
|
return item;
|
}).collect(Collectors.toList());
|
boolean save = saveBatch(channelCityLinks);
|
if (!save) {
|
throw new CommonException("添加失败");
|
}
|
}
|
|
@Override
|
public void updateChannelCityLink(UpdateChannelCityLinkDto channelCityLinkDto) {
|
ChannelCityLink byId = getById(channelCityLinkDto.getId());
|
if (byId == null) {
|
throw new CommonException("未查询到该渠道城市下载地址");
|
}
|
LambdaUpdateWrapper<ChannelCityLink> channelCityLinkLambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
channelCityLinkLambdaUpdateWrapper.set(ChannelCityLink::getAndroidLink, channelCityLinkDto.getAndroidLink());
|
channelCityLinkLambdaUpdateWrapper.set(ChannelCityLink::getIosLink, channelCityLinkDto.getIosLink());
|
channelCityLinkLambdaUpdateWrapper.set(ChannelCityLink::getLastUpdateDate, new Date());
|
channelCityLinkLambdaUpdateWrapper.eq(ChannelCityLink::getId, channelCityLinkDto.getId());
|
boolean update = update(channelCityLinkLambdaUpdateWrapper);
|
if (!update) {
|
throw new CommonException("修改失败");
|
}
|
}
|
|
@Override
|
public void deleteChannelCityLink(String id) {
|
boolean update = update(Wrappers.<ChannelCityLink>lambdaUpdate().set(ChannelCityLink::getIsDelete, 1)
|
.eq(ChannelCityLink::getId, id));
|
if (!update) {
|
throw new CommonException("删除失败");
|
}
|
}
|
|
@Override
|
public IPage<ChannelCityLinkListVo> getChannelCityLink(QueryChannelCityLinkPageDto cityLinkPageDto) {
|
Page page = pageUtil.getPage(cityLinkPageDto);
|
IPage<ChannelCityLinkListVo> channelCityLinkListVoIPage = channelCityLinkMapper.pageChannelCityLink(page, cityLinkPageDto.getChannelId());
|
return channelCityLinkListVoIPage;
|
}
|
}
|