admin
2019-12-14 1261c227e7ad47607ee651bbd017ea80eb6d044a
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -1,6 +1,9 @@
package com.yeshi.fanli.service.impl.user;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -8,20 +11,24 @@
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.ListUtil;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.fanli.dao.mybatis.share.SpreadUserImgMapper;
import com.yeshi.fanli.dao.mybatis.user.SpreadImgMapper;
import com.yeshi.fanli.dao.user.UserInfoDao;
import com.yeshi.fanli.entity.bus.invite.SpreadImg;
import com.yeshi.fanli.entity.bus.invite.SpreadUserImg;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.service.inter.user.QrCodeService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.StringUtil;
@Service
@@ -37,7 +44,10 @@
   private QrCodeService qrCodeService;
   @Resource
   private UserInfoDao userInfoDao;
   private UserInfoService userInfoService;
   @Resource
   private UserInfoExtraService userInfoExtraService;
   @Override
   public void addUserInviteImg(Long uid, String imgUrl) {
@@ -85,7 +95,7 @@
   }
   @Override
   public List<String> getUserSpreadImg(Long uid) {
   public List<String> getUserSpreadImg(Long uid, HttpServletRequest request) {
      List<String> imgList = new ArrayList<>();
      // 查询当前用户的推广图
@@ -165,16 +175,48 @@
      UserInfo user = null;
      if (dlist != null && dlist.size() > 0)
         user = userInfoDao.find(UserInfo.class, uid);
         user = userInfoService.selectByPKey(uid);
      String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
      // 缓存路径
      String rootPath = request.getSession().getServletContext().getRealPath("/").replace("\\", "/");
      String projectName = request.getContextPath();
      String path = rootPath.replace(projectName, "/temp");
      File f = new File(path);
      if (!f.exists())
         f.mkdirs();
      // 添加原来没有的
      for (String md5 : dlist) {
         for (SpreadImg img : spreadImgList)
            if (img.getMd5().equalsIgnoreCase(md5)) {
               // 画图
               try {
                  String imgUrl = qrCodeService.drawInviteQrCode(img.getUrl(), uid,
                        StringUtil.isNullOrEmpty(user.getPortrait())
                              ? Constant.systemCommonConfig.getDefaultPortrait() : user.getPortrait());
                  String portrait = user.getPortrait();
                  if (StringUtil.isNullOrEmpty(portrait)) {
                     portrait = Constant.systemCommonConfig.getDefaultPortrait();
                  }
                  // 背景图片缓存
                  int index = img.getUrl().lastIndexOf("/");
                  String fileName = img.getUrl().substring(index + 1);
                  InputStream inputStream = null;
                  String cachePath = path  +  fileName;
                  File file = new File(cachePath);
                  if (file.exists()) {
                     inputStream = new FileInputStream(file);
                  } else {
                     // 网络下载
                     InputStream input = HttpUtil.getAsInputStream(img.getUrl());
                     // 缓存本地
                     FileUtil.saveAsFile(input, cachePath);
                     // 获取流
                     inputStream = new FileInputStream(file);
                  }
                  String imgUrl = qrCodeService.drawInviteQrCodeNew(inputStream, fileName, uid, portrait, null, null, null, inviteCode);
                  if (!StringUtil.isNullOrEmpty(imgUrl)) {
                     if (imgUrl != null) {
                        addUserInviteImg(uid, imgUrl);
@@ -209,9 +251,9 @@
      // }
      // 生成
      UserInfo user = userInfoDao.find(UserInfo.class, uid);
      UserInfo user = userInfoService.selectByPKey(uid);
      try {
         String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait());
         String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), null);
         return imgUrl;
      } catch (IOException e) {
         e.printStackTrace();
@@ -221,10 +263,10 @@
   @Override
   public String getUserSpreadImg(Long uid, String bgImg, int erCodePostionX, int erCodePostionY, int erCodeSize) {
      UserInfo user = userInfoDao.find(UserInfo.class, uid);
      UserInfo user = userInfoService.selectByPKey(uid);
      try {
         String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), erCodePostionX,
               erCodePostionY, erCodeSize);
               erCodePostionY, erCodeSize, null);
         return imgUrl;
      } catch (IOException e) {
         e.printStackTrace();
@@ -234,8 +276,32 @@
   @Override
   public int countUserSpreadImg(Long uid) {
      return (int) (spreadUserImgMapper.imgUrlCount(uid));
   }
   @Override
   public String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, Integer pX, Integer pY, Integer size, String inviteCode) throws Exception {
      InputStream asInputStream = HttpUtil.getAsInputStream(bgImg);
      int index = bgImg.lastIndexOf("/");
      String newUrl = bgImg.substring(index + 1);
      String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf("."));
      return qrCodeService.drawInviteQrCodeNew(asInputStream, urlMd5, uid, portrait, pX, pY, size, inviteCode);
   }
   @Override
   public String getInviteImgToGreet(String bgImg, Long uid,  String portrait, String inviteCode, String content, Date date) throws Exception {
      return qrCodeService.drawInviteToGreet(bgImg, uid,portrait, inviteCode, content, date);
   }
   private static String getProjectRootPath(){
      String rootPath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
      rootPath = rootPath.substring(1,rootPath.indexOf("WEB-INF"));
      return rootPath;
   }
}