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 selectZonePage(Page page, String name) { LambdaQueryWrapper 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 selectZoneList(String status) { LambdaQueryWrapper 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().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); } }