From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 23 五月 2020 09:54:38 +0800 Subject: [PATCH] 足迹、收藏订单兼容新需求 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 169 insertions(+), 2 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java index 05da839..9a6b6e2 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java @@ -23,6 +23,8 @@ 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; @@ -48,6 +50,9 @@ @Resource private UserInfoExtraService userInfoExtraService; + + @Resource + private SpreadImgService spreadImgService; @Override public void addUserInviteImg(Long uid, String imgUrl) { @@ -238,6 +243,169 @@ 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 portrait = user.getPortrait(); + if (StringUtil.isNullOrEmpty(portrait)) { + portrait = Constant.systemCommonConfig.getDefaultPortrait(); + } + + // 閭�璇风爜 + 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) { // 鏌ヨ鏄惁瀛樺湪 @@ -302,6 +470,5 @@ String rootPath=Thread.currentThread().getContextClassLoader().getResource("").getPath(); rootPath = rootPath.substring(1,rootPath.indexOf("WEB-INF")); return rootPath; - } - + } } -- Gitblit v1.8.0