package io.loli.sc.server.service; import io.loli.sc.server.dao.GalleryDao; import io.loli.sc.server.dao.UploadedImageDao; import io.loli.sc.server.entity.Gallery; import io.loli.sc.server.entity.UploadedImage; import io.loli.sc.server.entity.User; import java.util.Date; import java.util.List; import javax.inject.Inject; import javax.inject.Named; import javax.transaction.Transactional; @Named public class GalleryService { @Inject private GalleryDao gd; @Inject private UploadedImageDao uid; @Transactional public void save(Gallery g) { g.setDate(new Date()); gd.save(g); } @Transactional public void update(Gallery g) { gd.update(g); } @Transactional public void delete(Gallery g) { g.setDelFlag(false); } public Gallery findById(int gid) { return gd.findById(gid); } @Transactional public void addImageToGallery(int imageId, int gid) { Gallery g = this.findById(gid); UploadedImage img = uid.findById(imageId); g.getImages().add(img); gd.update(g); } @Transactional public void removeImageFromGallery(int imageId, int gid) { Gallery g = this.findById(gid); UploadedImage img = uid.findById(imageId); UploadedImage imgToRemove = null; for (UploadedImage image : g.getImages()) { if (image.getId() == img.getId()) { imgToRemove = image; break; } } if (imgToRemove != null) { g.getImages().remove(imgToRemove); gd.update(g); } } public List<Gallery> listByUser(User user) { return gd.listByUserId(user.getId()); } public List<Gallery> listByUser(int uid) { return gd.listByUserId(uid); } public List<Gallery> listByUserReversed(int uid) { return gd.listByUserIdReversed(uid); } @Transactional public void update(Integer gid, String title, String description, User user) { Gallery g = this.findById(gid); if (g.getUser().getId() != user.getId()) { throw new IllegalArgumentException("该相册不属于你"); } g.setTitle(title); g.setDescription(description); } /** * 根据gallery的id,类型,以及用户实体类删除 * * @param gid 需要删除的相册id * @param type 类型,如果为image则表示连同图片删除 * @param user 用户实体类,用于判断该相册是否属于该用户 * @throws IllegalArgumentException 当该相册不属于该用户时抛出此异常 */ @Transactional public void delete(Integer gid, String type, User user) { Gallery g = this.findById(gid); if (g.getUser().getId() != user.getId()) { throw new IllegalArgumentException("该相册不属于你"); } g.setDelFlag(true); for (UploadedImage image : uid.findAllByGalIdAndUId(user.getId(), gid)) { if ("image".equals(type)) { image.setDelFlag(true); } image.setGallery(null); uid.update(image); } } }