package com.mzl.flower.service.content; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.BatchDTO; import com.mzl.flower.dto.request.content.QueryAnnouncementDTO; import com.mzl.flower.dto.request.content.QueryBannerDTO; import com.mzl.flower.dto.response.content.AnnouncementDTO; import com.mzl.flower.dto.response.content.BannerDTO; import com.mzl.flower.entity.content.Announcement; import com.mzl.flower.entity.content.Banner; import com.mzl.flower.mapper.content.BannerMapper; import com.mzl.flower.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.List; @Service @Transactional public class BannerService { private final BannerMapper bannerMapper; public BannerService(BannerMapper bannerMapper) { this.bannerMapper = bannerMapper; } public void add(Banner dto) { if(dto.getId()!=null){ throw new ValidationException("id必须为空"); } dto.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); dto.create(SecurityUtils.getUserId()); bannerMapper.insert(dto); } public void update(Banner dto) { if(dto.getId()==null || dto.getId()==0){ throw new ValidationException("id不能为空"); } Banner banner = bannerMapper.selectById(dto.getId()); if(banner==null){ throw new ValidationException("找不到id为"+dto.getId()+"的banner"); } BeanUtils.copyProperties(dto, banner, "id", "createTime", "createBy","deleted","status"); banner.update(SecurityUtils.getUserId()); bannerMapper.updateById(banner); } public void delete(Long id) { Banner banner = bannerMapper.selectById(id); if(banner==null){ throw new ValidationException("找不到id为"+id+"的公告"); } bannerMapper.deleteById(id); } public BannerDTO detail(Long id) { Banner banner = bannerMapper.selectById(id); if(banner==null){ return null; } BannerDTO dto = new BannerDTO(); BeanUtils.copyProperties(banner,dto); return dto; } public Page queryPage(QueryBannerDTO dto, Page page) { if(StringUtils.isNotBlank(dto.getCreateDateBeginStr())){ dto.setCreateDateBegin(DateUtils.dateToLocalDateTime(dto.getCreateDateBeginStr(),true)); } if(StringUtils.isNotBlank(dto.getCreateDateEndStr())){ dto.setCreateDateEnd(DateUtils.dateToLocalDateTime(dto.getCreateDateEndStr(),false)); } List list = bannerMapper.queryPage(dto,page); page.setRecords(list); return page; } public void changeStatus(Long id) { Banner banner = bannerMapper.selectById(id); if(banner==null){ throw new ValidationException("找不到id为"+id+"的公告"); } if(Constants.COMMON_PUBLISH_STATUS.published.name().equals(banner.getStatus())){ banner.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); }else{ banner.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); } bannerMapper.updateById(banner); } public void batchDelete(BatchDTO dto) { bannerMapper.deleteBatchIds(dto.getIds()); } public void batchPublish(BatchDTO dto) { List list = bannerMapper.selectList(new LambdaQueryWrapper().in(Banner::getId, dto.getIds())); for (Banner banner : list) { banner.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); bannerMapper.updateById(banner); } } public List queryList(QueryBannerDTO dto) { if(StringUtils.isNotBlank(dto.getCreateDateBeginStr())){ dto.setCreateDateBegin(DateUtils.dateToLocalDateTime(dto.getCreateDateBeginStr(),true)); } if(StringUtils.isNotBlank(dto.getCreateDateEndStr())){ dto.setCreateDateEnd(DateUtils.dateToLocalDateTime(dto.getCreateDateEndStr(),false)); } List list = bannerMapper.queryList(dto); for (BannerDTO bannerDTO : list) { ///优化一下性能 bannerDTO.setContent(null); } return list; } }