| 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); | 
|     } | 
| } |