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