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);
}
}
}