| 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<BannerDTO> 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<BannerDTO> 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<Banner> list = bannerMapper.selectList(new LambdaQueryWrapper<Banner>().in(Banner::getId, dto.getIds())); | 
|         for (Banner banner : list) { | 
|             banner.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); | 
|             bannerMapper.updateById(banner); | 
|         } | 
|     } | 
|   | 
|     public List<BannerDTO> 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<BannerDTO> list =  bannerMapper.queryList(dto); | 
|         for (BannerDTO bannerDTO : list) { | 
|             ///优化一下性能 | 
|             bannerDTO.setContent(null); | 
|         } | 
|         return list; | 
|     } | 
| } |