You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.6 KiB
111 lines
4.6 KiB
package com.aurora.service.impl;
|
|
|
|
import com.aurora.model.dto.PhotoAlbumAdminDTO;
|
|
import com.aurora.model.dto.PhotoAlbumDTO;
|
|
import com.aurora.entity.Photo;
|
|
import com.aurora.entity.PhotoAlbum;
|
|
import com.aurora.exception.BizException;
|
|
import com.aurora.mapper.PhotoAlbumMapper;
|
|
import com.aurora.mapper.PhotoMapper;
|
|
import com.aurora.service.PhotoAlbumService;
|
|
import com.aurora.util.BeanCopyUtil;
|
|
import com.aurora.util.PageUtil;
|
|
import com.aurora.model.vo.ConditionVO;
|
|
import com.aurora.model.dto.PageResultDTO;
|
|
import com.aurora.model.vo.PhotoAlbumVO;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
|
|
import static com.aurora.constant.CommonConstant.FALSE;
|
|
import static com.aurora.constant.CommonConstant.TRUE;
|
|
import static com.aurora.enums.PhotoAlbumStatusEnum.PUBLIC;
|
|
|
|
@Service
|
|
public class PhotoAlbumServiceImpl extends ServiceImpl<PhotoAlbumMapper, PhotoAlbum> implements PhotoAlbumService {
|
|
|
|
@Autowired
|
|
private PhotoAlbumMapper photoAlbumMapper;
|
|
|
|
@Autowired
|
|
private PhotoMapper photoMapper;
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
public void saveOrUpdatePhotoAlbum(PhotoAlbumVO photoAlbumVO) {
|
|
PhotoAlbum album = photoAlbumMapper.selectOne(new LambdaQueryWrapper<PhotoAlbum>()
|
|
.select(PhotoAlbum::getId)
|
|
.eq(PhotoAlbum::getAlbumName, photoAlbumVO.getAlbumName()));
|
|
if (Objects.nonNull(album) && !album.getId().equals(photoAlbumVO.getId())) {
|
|
throw new BizException("相册名已存在");
|
|
}
|
|
PhotoAlbum photoAlbum = BeanCopyUtil.copyObject(photoAlbumVO, PhotoAlbum.class);
|
|
this.saveOrUpdate(photoAlbum);
|
|
}
|
|
|
|
@Override
|
|
public PageResultDTO<PhotoAlbumAdminDTO> listPhotoAlbumsAdmin(ConditionVO conditionVO) {
|
|
Integer count = photoAlbumMapper.selectCount(new LambdaQueryWrapper<PhotoAlbum>()
|
|
.like(StringUtils.isNotBlank(conditionVO.getKeywords()), PhotoAlbum::getAlbumName, conditionVO.getKeywords())
|
|
.eq(PhotoAlbum::getIsDelete, FALSE));
|
|
if (count == 0) {
|
|
return new PageResultDTO<>();
|
|
}
|
|
List<PhotoAlbumAdminDTO> photoAlbumBacks = photoAlbumMapper.listPhotoAlbumsAdmin(PageUtil.getLimitCurrent(), PageUtil.getSize(), conditionVO);
|
|
return new PageResultDTO<>(photoAlbumBacks, count);
|
|
}
|
|
|
|
@Override
|
|
public List<PhotoAlbumDTO> listPhotoAlbumInfosAdmin() {
|
|
List<PhotoAlbum> photoAlbums = photoAlbumMapper.selectList(new LambdaQueryWrapper<PhotoAlbum>()
|
|
.eq(PhotoAlbum::getIsDelete, FALSE));
|
|
return BeanCopyUtil.copyList(photoAlbums, PhotoAlbumDTO.class);
|
|
}
|
|
|
|
@Override
|
|
public PhotoAlbumAdminDTO getPhotoAlbumByIdAdmin(Integer albumId) {
|
|
PhotoAlbum photoAlbum = photoAlbumMapper.selectById(albumId);
|
|
Integer photoCount = photoMapper.selectCount(new LambdaQueryWrapper<Photo>()
|
|
.eq(Photo::getAlbumId, albumId)
|
|
.eq(Photo::getIsDelete, FALSE));
|
|
PhotoAlbumAdminDTO album = BeanCopyUtil.copyObject(photoAlbum, PhotoAlbumAdminDTO.class);
|
|
album.setPhotoCount(photoCount);
|
|
return album;
|
|
}
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void deletePhotoAlbumById(Integer albumId) {
|
|
Integer count = photoMapper.selectCount(new LambdaQueryWrapper<Photo>()
|
|
.eq(Photo::getAlbumId, albumId));
|
|
if (count > 0) {
|
|
photoAlbumMapper.updateById(PhotoAlbum.builder()
|
|
.id(albumId)
|
|
.isDelete(TRUE)
|
|
.build());
|
|
photoMapper.update(new Photo(), new LambdaUpdateWrapper<Photo>()
|
|
.set(Photo::getIsDelete, TRUE)
|
|
.eq(Photo::getAlbumId, albumId));
|
|
} else {
|
|
photoAlbumMapper.deleteById(albumId);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public List<PhotoAlbumDTO> listPhotoAlbums() {
|
|
List<PhotoAlbum> photoAlbumList = photoAlbumMapper.selectList(new LambdaQueryWrapper<PhotoAlbum>()
|
|
.eq(PhotoAlbum::getStatus, PUBLIC.getStatus())
|
|
.eq(PhotoAlbum::getIsDelete, FALSE)
|
|
.orderByDesc(PhotoAlbum::getId));
|
|
return BeanCopyUtil.copyList(photoAlbumList, PhotoAlbumDTO.class);
|
|
}
|
|
|
|
}
|