| | |
| | | package com.yeshi.fanli.service.impl.user;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Collections;
|
| | | import java.util.Comparator;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Service;
|
| | | 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.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
|
| | | @Service
|
| | | public class SpreadUserImgServiceImpl implements SpreadUserImgService {
|
| | |
|
| | | @Resource
|
| | | private SpreadUserImgMapper spreadUserImgMapper;
|
| | |
|
| | | @Resource
|
| | | private SpreadImgMapper spreadImgMapper;
|
| | |
|
| | | @Resource
|
| | | private QrCodeService qrCodeService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoDao userInfoDao;
|
| | |
|
| | | @Override
|
| | | public void addUserInviteImg(Long uid, String imgUrl) {
|
| | | SpreadUserImg spreadUserImg = new SpreadUserImg();
|
| | | spreadUserImg.setUid(uid);
|
| | | spreadUserImg.setUrl(imgUrl); // 服务器上的url地址
|
| | | spreadUserImg.setType(0);
|
| | | spreadUserImg.setCreatetime(new Date());
|
| | | spreadUserImgMapper.insertSelective(spreadUserImg);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<String> getImgUrlList(Long uid) {
|
| | | return spreadUserImgMapper.getImgUrlList(uid);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int imgUrlCount(Long uid) {
|
| | | return spreadUserImgMapper.imgUrlCount(uid);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void deleteImgUrl(Long uid) {
|
| | | // 先删除远程文件
|
| | | List<String> urlList = getImgUrlList(uid);
|
| | | spreadUserImgMapper.deleteImgUrl(uid);
|
| | | if (urlList != null)
|
| | | for (String img : urlList) {
|
| | | COSManager.getInstance().deleteFile(img);
|
| | | }
|
| | | }
|
| | |
|
| | | // 获取图片的MD5值
|
| | | private String getSpreadUserImgMD5(String url) {
|
| | | // https://ec-1255749512.file.myqcloud.com/ercode/ercode_578435_16a56f70b2b74aae9277f0e87a242f47.jpg
|
| | | String imgName = url.split("_")[url.split("_").length - 1];
|
| | | return imgName.replace(".jpg", "").replace(".png", "");
|
| | | }
|
| | |
|
| | | // 获取图片的MD5值
|
| | | private String getSpreadImgMD5(String url) {
|
| | | // https://ec-1255749512.file.myqcloud.com/16a56f70b2b74aae9277f0e87a242f47.png
|
| | | String imgName = url.split("/")[url.split("/").length - 1];
|
| | | return imgName.substring(0, imgName.indexOf("."));
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<String> getUserSpreadImg(Long uid) {
|
| | | List<String> imgList = new ArrayList<>();
|
| | |
|
| | | // 查询当前用户的推广图
|
| | | List<SpreadUserImg> spreadUserImgList = spreadUserImgMapper.listByUid(uid);
|
| | | // 查询系统的推广图
|
| | | List<SpreadImg> spreadImgList = spreadImgMapper.listAll();
|
| | |
|
| | | for (SpreadUserImg img : spreadUserImgList) {
|
| | | img.setMd5(getSpreadUserImgMD5(img.getUrl()));
|
| | | }
|
| | |
|
| | | for (SpreadImg img : spreadImgList) {
|
| | | img.setMd5(getSpreadImgMD5(img.getUrl()));
|
| | | }
|
| | |
|
| | | Comparator<SpreadImg> cmSpreadImg = new Comparator<SpreadImg>() {
|
| | |
|
| | | @Override
|
| | | public int compare(SpreadImg o1, SpreadImg o2) {
|
| | | return o1.getMd5().compareTo(o2.getMd5());
|
| | | }
|
| | | };
|
| | |
|
| | | Comparator<SpreadUserImg> cmUserSpreadImg = new Comparator<SpreadUserImg>() {
|
| | |
|
| | | @Override
|
| | | public int compare(SpreadUserImg o1, SpreadUserImg o2) {
|
| | | return o1.getMd5().compareTo(o2.getMd5());
|
| | | }
|
| | | };
|
| | | Collections.sort(spreadUserImgList, cmUserSpreadImg);
|
| | | Collections.sort(spreadImgList, cmSpreadImg);
|
| | |
|
| | | boolean equal = true;
|
| | | if (spreadUserImgList.size() == spreadImgList.size())
|
| | | for (int i = 0; i < spreadUserImgList.size(); i++) {
|
| | | if (!spreadUserImgList.get(i).getMd5().equalsIgnoreCase(spreadImgList.get(i).getMd5())) {
|
| | | equal = false;
|
| | | break;
|
| | | }
|
| | | }
|
| | | else
|
| | | equal = false;
|
| | |
|
| | | // 没有更改
|
| | | if (equal) {
|
| | | for (SpreadUserImg userImg : spreadUserImgList)
|
| | | imgList.add(userImg.getUrl());
|
| | | return imgList;
|
| | | }
|
| | |
|
| | | // 有过更改
|
| | |
|
| | | List<String> spreadUserMD5List = new ArrayList<>();
|
| | | for (SpreadUserImg userImg : spreadUserImgList)
|
| | | spreadUserMD5List.add(userImg.getMd5());
|
| | | List<String> spreadMD5List = new ArrayList<>();
|
| | | for (SpreadImg img : spreadImgList)
|
| | | spreadMD5List.add(img.getMd5());
|
| | | // 删除多余的
|
| | |
|
| | | // 获取交集
|
| | | List<String> ilist = ListUtil.getIntersection(spreadUserMD5List, spreadMD5List);
|
| | |
|
| | | // 获取多余的集合
|
| | | List<String> extraList = ListUtil.getDifference(spreadUserMD5List, ilist);
|
| | |
|
| | | for (String md5 : extraList) {
|
| | | for (SpreadUserImg img : spreadUserImgList)
|
| | | if (img.getMd5().equalsIgnoreCase(md5)) {
|
| | | spreadUserImgMapper.deleteByPrimaryKey(img.getId());
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | List<String> dlist = ListUtil.getDifference(spreadMD5List, ilist);
|
| | |
|
| | | UserInfo user = null;
|
| | | if (dlist != null && dlist.size() > 0)
|
| | | user = userInfoDao.find(UserInfo.class, uid);
|
| | | // 添加原来没有的
|
| | | 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());
|
| | | if (!StringUtil.isNullOrEmpty(imgUrl)) {
|
| | | if (imgUrl != null) {
|
| | | addUserInviteImg(uid, imgUrl);
|
| | | }
|
| | | }
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | } // 背景图
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | // 重新查询
|
| | | spreadUserImgList = spreadUserImgMapper.listByUid(uid);
|
| | | imgList.clear();
|
| | | if (spreadUserImgList != null)
|
| | | for (SpreadUserImg img : spreadUserImgList)
|
| | | imgList.add(img.getUrl());
|
| | | return imgList;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public String getUserSpreadImg(Long uid, String bgImg) {
|
| | | // 查询是否存在
|
| | | // String md5 = getSpreadImgMD5(bgImg);
|
| | | // List<SpreadUserImg> spreadUserImgList = spreadUserImgDao.list("from
|
| | | // SpreadUserImg su where su.uid=" + uid);
|
| | | // for (SpreadUserImg img : spreadUserImgList) {
|
| | | // img.setMd5(getSpreadUserImgMD5(img.getUrl()));
|
| | | // if (md5.equalsIgnoreCase(getSpreadUserImgMD5(img.getUrl())))
|
| | | // return img.getUrl();// 原来存在
|
| | | // }
|
| | |
|
| | | // 生成
|
| | | UserInfo user = userInfoDao.find(UserInfo.class, uid);
|
| | | try {
|
| | | String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait());
|
| | | return imgUrl;
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public String getUserSpreadImg(Long uid, String bgImg, int erCodePostionX, int erCodePostionY, int erCodeSize) {
|
| | | UserInfo user = userInfoDao.find(UserInfo.class, uid);
|
| | | try {
|
| | | String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), erCodePostionX,
|
| | | erCodePostionY, erCodeSize);
|
| | | return imgUrl;
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int countUserSpreadImg(Long uid) {
|
| | |
|
| | | return (int) (spreadUserImgMapper.imgUrlCount(uid));
|
| | | }
|
| | |
|
| | | }
|
| | | 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; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | import com.yeshi.fanli.service.inter.config.SystemConfigService; |
| | | 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.entity.bus.invite.SpreadImg; |
| | | import com.yeshi.fanli.entity.bus.invite.SpreadUserImg; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.config.SpreadImgService; |
| | | 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 |
| | | public class SpreadUserImgServiceImpl implements SpreadUserImgService { |
| | | |
| | | @Resource |
| | | private SpreadUserImgMapper spreadUserImgMapper; |
| | | |
| | | @Resource |
| | | private SpreadImgMapper spreadImgMapper; |
| | | |
| | | @Resource |
| | | private QrCodeService qrCodeService; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | @Resource |
| | | private UserInfoExtraService userInfoExtraService; |
| | | |
| | | @Resource |
| | | private SpreadImgService spreadImgService; |
| | | |
| | | @Resource |
| | | private SystemConfigService systemConfigService; |
| | | |
| | | @Override |
| | | public void addUserInviteImg(Long uid, String imgUrl) { |
| | | SpreadUserImg spreadUserImg = new SpreadUserImg(); |
| | | spreadUserImg.setUid(uid); |
| | | spreadUserImg.setUrl(imgUrl); // 服务器上的url地址 |
| | | spreadUserImg.setType(0); |
| | | spreadUserImg.setCreatetime(new Date()); |
| | | spreadUserImgMapper.insertSelective(spreadUserImg); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getImgUrlList(Long uid) { |
| | | return spreadUserImgMapper.getImgUrlList(uid); |
| | | } |
| | | |
| | | @Override |
| | | public int imgUrlCount(Long uid) { |
| | | return spreadUserImgMapper.imgUrlCount(uid); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteImgUrl(Long uid) { |
| | | // 先删除远程文件 |
| | | List<String> urlList = getImgUrlList(uid); |
| | | spreadUserImgMapper.deleteImgUrl(uid); |
| | | if (urlList != null) |
| | | for (String img : urlList) { |
| | | COSManager.getInstance().deleteFile(img); |
| | | } |
| | | } |
| | | |
| | | // 获取图片的MD5值 |
| | | private String getSpreadUserImgMD5(String url) { |
| | | // https://ec-1255749512.file.myqcloud.com/ercode/ercode_578435_16a56f70b2b74aae9277f0e87a242f47.jpg |
| | | String imgName = url.split("_")[url.split("_").length - 1]; |
| | | return imgName.replace(".jpg", "").replace(".png", ""); |
| | | } |
| | | |
| | | // 获取图片的MD5值 |
| | | private String getSpreadImgMD5(String url) { |
| | | // https://ec-1255749512.file.myqcloud.com/16a56f70b2b74aae9277f0e87a242f47.png |
| | | String imgName = url.split("/")[url.split("/").length - 1]; |
| | | return imgName.substring(0, imgName.indexOf(".")); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getUserSpreadImg(Long uid, HttpServletRequest request) { |
| | | List<String> imgList = new ArrayList<>(); |
| | | |
| | | // 查询当前用户的推广图 |
| | | List<SpreadUserImg> spreadUserImgList = spreadUserImgMapper.listByUid(uid); |
| | | // 查询系统的推广图 |
| | | List<SpreadImg> spreadImgList = spreadImgMapper.listAll(); |
| | | |
| | | for (SpreadUserImg img : spreadUserImgList) { |
| | | img.setMd5(getSpreadUserImgMD5(img.getUrl())); |
| | | } |
| | | |
| | | for (SpreadImg img : spreadImgList) { |
| | | img.setMd5(getSpreadImgMD5(img.getUrl())); |
| | | } |
| | | |
| | | Comparator<SpreadImg> cmSpreadImg = new Comparator<SpreadImg>() { |
| | | |
| | | @Override |
| | | public int compare(SpreadImg o1, SpreadImg o2) { |
| | | return o1.getMd5().compareTo(o2.getMd5()); |
| | | } |
| | | }; |
| | | |
| | | Comparator<SpreadUserImg> cmUserSpreadImg = new Comparator<SpreadUserImg>() { |
| | | |
| | | @Override |
| | | public int compare(SpreadUserImg o1, SpreadUserImg o2) { |
| | | return o1.getMd5().compareTo(o2.getMd5()); |
| | | } |
| | | }; |
| | | Collections.sort(spreadUserImgList, cmUserSpreadImg); |
| | | Collections.sort(spreadImgList, cmSpreadImg); |
| | | |
| | | boolean equal = true; |
| | | if (spreadUserImgList.size() == spreadImgList.size()) |
| | | for (int i = 0; i < spreadUserImgList.size(); i++) { |
| | | if (!spreadUserImgList.get(i).getMd5().equalsIgnoreCase(spreadImgList.get(i).getMd5())) { |
| | | equal = false; |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | equal = false; |
| | | |
| | | // 没有更改 |
| | | if (equal) { |
| | | for (SpreadUserImg userImg : spreadUserImgList) |
| | | imgList.add(userImg.getUrl()); |
| | | return imgList; |
| | | } |
| | | |
| | | // 有过更改 |
| | | |
| | | List<String> spreadUserMD5List = new ArrayList<>(); |
| | | for (SpreadUserImg userImg : spreadUserImgList) |
| | | spreadUserMD5List.add(userImg.getMd5()); |
| | | List<String> spreadMD5List = new ArrayList<>(); |
| | | for (SpreadImg img : spreadImgList) |
| | | spreadMD5List.add(img.getMd5()); |
| | | // 删除多余的 |
| | | |
| | | // 获取交集 |
| | | List<String> ilist = ListUtil.getIntersection(spreadUserMD5List, spreadMD5List); |
| | | |
| | | // 获取多余的集合 |
| | | List<String> extraList = ListUtil.getDifference(spreadUserMD5List, ilist); |
| | | |
| | | for (String md5 : extraList) { |
| | | for (SpreadUserImg img : spreadUserImgList) |
| | | if (img.getMd5().equalsIgnoreCase(md5)) { |
| | | spreadUserImgMapper.deleteByPrimaryKey(img.getId()); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | List<String> dlist = ListUtil.getDifference(spreadMD5List, ilist); |
| | | |
| | | UserInfo user = null; |
| | | if (dlist != null && dlist.size() > 0) |
| | | 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(); |
| | | |
| | | String defaultPortrait = userInfoService.getDefaultPortrait(uid); |
| | | |
| | | |
| | | // 添加原来没有的 |
| | | for (String md5 : dlist) { |
| | | for (SpreadImg img : spreadImgList) |
| | | if (img.getMd5().equalsIgnoreCase(md5)) { |
| | | // 画图 |
| | | try { |
| | | String portrait = user.getPortrait(); |
| | | if (StringUtil.isNullOrEmpty(portrait)) { |
| | | portrait = defaultPortrait; |
| | | } |
| | | |
| | | // 背景图片缓存 |
| | | 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); |
| | | } |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } // 背景图 |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 重新查询 |
| | | spreadUserImgList = spreadUserImgMapper.listByUid(uid); |
| | | imgList.clear(); |
| | | if (spreadUserImgList != null) |
| | | for (SpreadUserImg img : spreadUserImgList) |
| | | imgList.add(img.getUrl()); |
| | | return imgList; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<String> getUserSpreadImgToPage(Long uid, int page, int count, HttpServletRequest request) { |
| | | // 查询系统的推广图 |
| | | List<SpreadImg> spreadImgList = spreadImgService.listAll(); |
| | | //用户的已生成推广图 |
| | | List<SpreadUserImg> spreadUserImgList = spreadUserImgMapper.listByUid(uid); |
| | | |
| | | for (SpreadUserImg img : spreadUserImgList) { |
| | | img.setMd5(getSpreadUserImgMD5(img.getUrl())); |
| | | } |
| | | |
| | | for (SpreadImg img : spreadImgList) { |
| | | img.setMd5(getSpreadImgMD5(img.getUrl())); |
| | | } |
| | | |
| | | Comparator<SpreadImg> cmSpreadImg = new Comparator<SpreadImg>() { |
| | | @Override |
| | | public int compare(SpreadImg o1, SpreadImg o2) { |
| | | return o1.getMd5().compareTo(o2.getMd5()); |
| | | } |
| | | }; |
| | | |
| | | Comparator<SpreadUserImg> cmUserSpreadImg = new Comparator<SpreadUserImg>() { |
| | | @Override |
| | | public int compare(SpreadUserImg o1, SpreadUserImg o2) { |
| | | return o1.getMd5().compareTo(o2.getMd5()); |
| | | } |
| | | }; |
| | | Collections.sort(spreadUserImgList, cmUserSpreadImg); |
| | | Collections.sort(spreadImgList, cmSpreadImg); |
| | | |
| | | boolean equal = true; |
| | | if (spreadUserImgList.size() != spreadImgList.size()) { |
| | | equal = false; |
| | | } else { |
| | | for (int i = 0; i < spreadUserImgList.size(); i++) { |
| | | if (!spreadUserImgList.get(i).getMd5().equalsIgnoreCase(spreadImgList.get(i).getMd5())) { |
| | | equal = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 分页处理 |
| | | int start = 0; |
| | | if (page > 1) |
| | | start = 3; |
| | | |
| | | List<String> imgList = new ArrayList<>(); |
| | | if (equal) { |
| | | for (; start < spreadUserImgList.size() && start < count; start++) { |
| | | imgList.add(spreadUserImgList.get(start).getUrl()); |
| | | } |
| | | return imgList; |
| | | } |
| | | |
| | | String path = null; |
| | | if (page == 1) { |
| | | // 删除多余历史数据 |
| | | for (int j = 0; j < spreadUserImgList.size(); j++) { |
| | | boolean needRemove = true; |
| | | SpreadUserImg userImg = spreadUserImgList.get(j); |
| | | String imgMD5User = getSpreadUserImgMD5(userImg.getUrl()); |
| | | |
| | | for (int i = 0; i < spreadImgList.size(); i++) { |
| | | String imgMD5 = getSpreadImgMD5(spreadImgList.get(i).getUrl()); |
| | | if (imgMD5.equalsIgnoreCase(imgMD5User)) { |
| | | needRemove = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (needRemove) { |
| | | spreadUserImgMapper.deleteByPrimaryKey(userImg.getId()); |
| | | spreadUserImgList.remove(j); |
| | | j--; |
| | | } |
| | | } |
| | | |
| | | // 缓存路径 |
| | | String rootPath = request.getSession().getServletContext().getRealPath("/").replace("\\", "/"); |
| | | String projectName = request.getContextPath(); |
| | | path = rootPath.replace(projectName, "/temp"); |
| | | File f = new File(path); |
| | | if (!f.exists()) |
| | | f.mkdirs(); |
| | | } |
| | | |
| | | // 用户头像 |
| | | UserInfo user = userInfoService.selectByPKey(uid); |
| | | String defaultPortrait = userInfoService.getDefaultPortrait(user.getSystem()); |
| | | String portrait = user.getPortrait(); |
| | | if (StringUtil.isNullOrEmpty(portrait)) { |
| | | portrait = defaultPortrait; |
| | | } |
| | | |
| | | // 邀请码 |
| | | String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); |
| | | |
| | | |
| | | for (; start < spreadImgList.size() && start < count; start++) { |
| | | String url = null; |
| | | SpreadImg spreadImg = spreadImgList.get(start); |
| | | String imgMD5 = getSpreadImgMD5(spreadImg.getUrl()); |
| | | |
| | | for (int j = 0; j < spreadUserImgList.size(); j++) { |
| | | String imgMD5User = getSpreadUserImgMD5(spreadUserImgList.get(j).getUrl()); |
| | | if (imgMD5.equalsIgnoreCase(imgMD5User)) { |
| | | url = spreadUserImgList.get(j).getUrl(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | imgList.add(url); |
| | | } else { |
| | | url = getInviteImgUrl(uid, portrait, inviteCode, imgMD5, spreadImg.getUrl(), path); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | addUserInviteImg(uid, url); |
| | | imgList.add(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return imgList; |
| | | } |
| | | |
| | | /** |
| | | * 邀请图画图 |
| | | * |
| | | * @param uid |
| | | * @param portrait |
| | | * @param inviteCode |
| | | * @param urlMd5 |
| | | * @param url |
| | | * @param path |
| | | * @return |
| | | */ |
| | | private String getInviteImgUrl(Long uid, String portrait, String inviteCode, String urlMd5, String url, String path) { |
| | | try { |
| | | InputStream inputStream = null; |
| | | String cachePath = path + urlMd5; |
| | | File file = new File(cachePath); |
| | | if (file.exists()) { |
| | | inputStream = new FileInputStream(file); |
| | | } else { |
| | | // 网络下载 |
| | | InputStream input = HttpUtil.getAsInputStream(url); |
| | | // 缓存本地 |
| | | FileUtil.saveAsFile(input, cachePath); |
| | | // 获取流 |
| | | inputStream = new FileInputStream(file); |
| | | } |
| | | |
| | | return qrCodeService.drawInviteQrCodeNew(inputStream, urlMd5, uid, portrait, null, null, null, inviteCode); |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String getUserSpreadImg(Long uid, String bgImg) { |
| | | // 查询是否存在 |
| | | // String md5 = getSpreadImgMD5(bgImg); |
| | | // List<SpreadUserImg> spreadUserImgList = spreadUserImgDao.list("from |
| | | // SpreadUserImg su where su.uid=" + uid); |
| | | // for (SpreadUserImg img : spreadUserImgList) { |
| | | // img.setMd5(getSpreadUserImgMD5(img.getUrl())); |
| | | // if (md5.equalsIgnoreCase(getSpreadUserImgMD5(img.getUrl()))) |
| | | // return img.getUrl();// 原来存在 |
| | | // } |
| | | |
| | | // 生成 |
| | | UserInfo user = userInfoService.selectByPKey(uid); |
| | | try { |
| | | String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), null); |
| | | return imgUrl; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public String getUserSpreadImg(Long uid, String bgImg, int erCodePostionX, int erCodePostionY, int erCodeSize) { |
| | | UserInfo user = userInfoService.selectByPKey(uid); |
| | | try { |
| | | String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), erCodePostionX, |
| | | erCodePostionY, erCodeSize, null); |
| | | return imgUrl; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @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; |
| | | } |
| | | } |