Air
2024-11-04 2016903d06e308f44b9463fcd4029850ababf152
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;
    }
}