ab
2024-11-05 0c6faf64f2a02ae94b0d719729754f7ca29da416
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
108
109
110
111
112
113
114
115
116
117
118
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<CostConfigMapper, CostConfig> implements CostConfigService {
 
    private final PageUtil pageUtil;
 
    private final CostConfigMapper costConfigMapper;
 
    @Override
    public IPage<CostConfigVo> getCostConfigList(CostConfigPageDto pageDto) {
        Page page = pageUtil.getPage(pageDto);
        IPage<CostConfigVo> 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<CostConfig>().eq(CostConfig::getId, id)
                .eq(CostConfig::getIsDelete, 0));
        if (costConfig == null) {
            throw new CommonException("此成本配置不存在");
        }
        costConfigMapper.deleteCostConfig(id);
    }
 
    public void verifyCostConfig(CostConfigDto costConfigDto) {
        LambdaQueryWrapper<CostConfig> 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<CostConfig> 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("该渠道此城市配置已存在");
                }
            }
        }
    }
}