package com.zhujizheng.IHome.useralbum.service; import com.zhujizheng.IHome.everymoment.dto.PYEveryMomentPushDTO; import com.zhujizheng.IHome.generator.dao.PYEveryMomentImg; import com.zhujizheng.IHome.generator.dao.PYUserAlbum; import com.zhujizheng.IHome.generator.mapper.PYEveryMomentImgMapper; import com.zhujizheng.IHome.generator.mapper.PYUserAlbumMapper; import com.zhujizheng.IHome.useralbum.dto.PYUserAlbumImgDTO; import com.zhujizheng.IHome.useralbum.vo.PYUserAlbumImgVO; import com.zhujizheng.IHome.useralbum.vo.PYUserAlbumVO; import com.zhujizheng.IHome.util.CodeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /** * Created with IntelliJ IDEA *

* Author: yons * Date: 2019/09/17 * Time: 23:18 * Description: * Copyright © 2019年 com.zhujizheng. All rights reserved. */ @Service @Transactional(rollbackFor = RuntimeException.class) public class PYUserAlbumServiceImpl implements PYUserAlbumService { @Autowired private PYUserAlbumMapper userAlbumMapper; @Autowired private PYEveryMomentImgMapper imgMapper; @Autowired private CodeUtil codeUtil; private static final int DEFAULT_NUM = 20; @Override public List selectUserAlbum(int userId, int limit) { System.out.println("userId = "+ userId); List list = userAlbumMapper.selectUserAlbumWithUserIdAndLimit(userId, limit); if (list == null) { System.out.println("获取用户相册数据为空"); return null; } PYEveryMomentImg img = imgMapper.selectLastImgWithUserId(userId); List voList = new ArrayList<>(); PYUserAlbumVO totalVO = new PYUserAlbumVO(); totalVO.setUserAlbumId(0); totalVO.setTag("全部相册"); if (img == null) { System.out.println("获取用户最后一张图片为空"); totalVO.setNum(0); totalVO.setImgOrientation(0); totalVO.setImgUrl(""); voList.add(totalVO); return voList; } totalVO.setImgOrientation(img.getOrientation()); totalVO.setImgUrl(img.getImgUrl()); AtomicInteger totalNum = new AtomicInteger(); for (PYUserAlbum userAlbum : list) { totalNum.addAndGet(userAlbum.getNum()); PYUserAlbumVO vo = PYUserAlbumVO.createVO(userAlbum); voList.add(vo); } totalVO.setNum(totalNum.intValue()); if (voList.size() > 0) { voList.add(0, totalVO); } else { voList.add(totalVO); } System.out.println("voList = " + voList); return voList; } @Override public List selectUserAlbumImgWithDTO(PYUserAlbumImgDTO imgDTO) { System.out.println("imgDTO = " + imgDTO); if (imgDTO == null) { return null; } int resultImgId = codeUtil.dealInt(imgDTO.getImgId()); AtomicReference> imgList = new AtomicReference<>(); if (imgDTO.getTag().equals("全部相册")) { imgList.set(imgMapper.selectImgWithUserIdAndImgIdAndNum(imgDTO.getUserId(), resultImgId, DEFAULT_NUM)); } else { imgList.set(imgMapper.selectImgWithUserIdAndTagAndImgIdAndNum(imgDTO.getUserId(), imgDTO.getTag(), resultImgId, DEFAULT_NUM)); } List voList = new ArrayList<>(); for (PYEveryMomentImg img : imgList.get()) { PYUserAlbumImgVO imgVO = PYUserAlbumImgVO.createUserAlbumImgVO(img); voList.add(imgVO); } System.out.println("voList = " + voList); return voList; } @EventListener @Async public void dealWithEveryMomentPushDTO(PYEveryMomentPushDTO pushDTO) { System.out.println("dealWithEveryMomentPushDTO, pushDTO = " + pushDTO); if (pushDTO.getImgs().size() == 0) { return; } if (pushDTO.getTag() == null) { return; } PYUserAlbum userAlbum = userAlbumMapper.selectUserAlbumWithUserIdAndTag(pushDTO.getUserId(), pushDTO.getTag()); if (userAlbum == null) { PYUserAlbum userAlbum1 = new PYUserAlbum(); userAlbum1.setUserId(pushDTO.getUserId()); userAlbum1.setNum(pushDTO.getImgs().size()); userAlbum1.setTag(pushDTO.getTag()); PYEveryMomentPushDTO.PYPushEveryMomentImgDTO imgDTO = pushDTO.getImgs().get(pushDTO.getImgs().size() - 1); userAlbum1.setImgUrl(imgDTO.getUrl()); userAlbum1.setImgOrientation(imgDTO.getOrientation()); userAlbumMapper.insertUserAlbum(userAlbum1); } else { int num = userAlbum.getNum(); num += pushDTO.getImgs().size(); PYEveryMomentPushDTO.PYPushEveryMomentImgDTO imgDTO = pushDTO.getImgs().get(pushDTO.getImgs().size() - 1); int imgOrientation = imgDTO.getOrientation(); String imgUrl = imgDTO.getUrl(); userAlbumMapper.updateUserAlbumWithIdAndNumAndOrientationAndUrl(userAlbum.getId(), num, imgOrientation, imgUrl); } } }