cloudroam
2024-12-04 2432594a4d11b47a503795349defa31872f85789
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
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.mzl.flower.service.flower;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.flower.FlowerZoneCreateDTO;
import com.mzl.flower.dto.request.flower.FlowerZoneRankDTO;
import com.mzl.flower.dto.request.flower.FlowerZoneUpdateDTO;
import com.mzl.flower.dto.response.flower.FlowerZoneDTO;
import com.mzl.flower.entity.flower.FlowerZone;
import com.mzl.flower.entity.flower.FlowerZoneMap;
import com.mzl.flower.mapper.flower.FlowerZoneMapMapper;
import com.mzl.flower.mapper.flower.FlowerZoneMapper;
import io.micrometer.core.instrument.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.stream.Collectors;
 
@Slf4j
@Service
@Transactional
public class FlowerZoneService {
 
    private final FlowerZoneMapper flowerZoneMapper;
 
    private final FlowerZoneMapMapper flowerZoneMapMapper;
    public FlowerZoneService(FlowerZoneMapper flowerZoneMapper, FlowerZoneMapMapper flowerZoneMapMapper) {
        this.flowerZoneMapper = flowerZoneMapper;
        this.flowerZoneMapMapper = flowerZoneMapMapper;
    }
 
    public void addZone(FlowerZoneCreateDTO dto) {
        FlowerZone zone = new FlowerZone();
        BeanUtils.copyProperties(dto, zone);
        zone.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
        zone.create(SecurityUtils.getUserId());
        flowerZoneMapper.insert(zone);
 
    }
 
    public void updateZone(FlowerZoneUpdateDTO dto) {
        FlowerZone zone = flowerZoneMapper.selectById(dto.getId());
        if (zone == null) {
            throw new ValidationException("专区不存在");
        }
        zone.setName(dto.getName());
        zone.setBgUrl(dto.getBgUrl());
        zone.setSeq(dto.getSeq());
        zone.update(SecurityUtils.getUserId());
        flowerZoneMapper.updateById(zone);
    }
 
    public FlowerZoneDTO getZone(Long id) {
        FlowerZone zone = flowerZoneMapper.selectById(id);
        if (zone == null) {
            return null;
        }
        FlowerZoneDTO dto = new FlowerZoneDTO();
        BeanUtils.copyProperties(zone, dto);
        return dto;
    }
 
    public IPage<FlowerZoneDTO> selectZonePage(Page page, String name) {
        LambdaQueryWrapper<FlowerZone> lambdaQueryWrapper = new LambdaQueryWrapper();
        lambdaQueryWrapper.orderByAsc(FlowerZone::getSeq);
        if (StringUtils.isNotBlank(name)){
            lambdaQueryWrapper.like(FlowerZone::getName, name);
        }
        return flowerZoneMapper.selectPage(page,lambdaQueryWrapper).convert(item -> {
            FlowerZoneDTO dto = new FlowerZoneDTO();
            BeanUtils.copyProperties(item, dto);
            return dto;
        });
    }
 
    public void deleteZone(Long id) {
        FlowerZone zone = flowerZoneMapper.selectById(id);
        if (zone == null) {
            throw new ValidationException("专区不存在");
        }
        flowerZoneMapper.deleteById(id);
    }
 
    public List<FlowerZoneDTO> selectZoneList(String status) {
        LambdaQueryWrapper<FlowerZone> lambdaQueryWrapper = new LambdaQueryWrapper();
        lambdaQueryWrapper.orderByAsc(FlowerZone::getSeq);
        if (StringUtils.isNotBlank(status)){
            lambdaQueryWrapper.eq(FlowerZone::getStatus, status);
        }
        return flowerZoneMapper.selectList(lambdaQueryWrapper).stream().map(item -> {
            FlowerZoneDTO dto = new FlowerZoneDTO();
            BeanUtils.copyProperties(item, dto);
            return dto;
        }).collect(Collectors.toList());
    }
 
    public void changeStatus(Long id) {
         FlowerZone zone = flowerZoneMapper.selectById(id);
        if (zone == null) {
            throw new ValidationException("专区不存在");
        }
        if (Constants.COMMON_PUBLISH_STATUS.unpublished.name().equals(zone.getStatus())){
 
            zone.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
        }else {
            zone.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
        }
         flowerZoneMapper.updateById(zone);
    }
 
    public void setFlowerZoneRank(FlowerZoneRankDTO dto) {
        FlowerZoneMap fzp = flowerZoneMapMapper.selectOne(new QueryWrapper<FlowerZoneMap>().eq("flower_id", dto.getFlowerId()).eq("zone_id", dto.getId()));
        if(fzp==null){
            throw new ValidationException("商品未设置该专区");
        }
        fzp.setRank(dto.getRank());
        flowerZoneMapMapper.updateById(fzp);
    }
 
    public FlowerZone selectFlowerZoneById(Long id) {
        return flowerZoneMapper.selectFlowerZoneById(id);
    }
}