From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java |  742 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 481 insertions(+), 261 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 bfdd421..4d5eab7 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
@@ -1,261 +1,481 @@
-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.entity.bus.invite.SpreadImg;
-import com.yeshi.fanli.entity.bus.invite.SpreadUserImg;
-import com.yeshi.fanli.entity.bus.user.UserInfo;
-import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
-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.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;
-
-	@Override
-	public void addUserInviteImg(Long uid, String imgUrl) {
-		SpreadUserImg spreadUserImg = new SpreadUserImg();
-		spreadUserImg.setUid(uid);
-		spreadUserImg.setUrl(imgUrl); // 鏈嶅姟鍣ㄤ笂鐨剈rl鍦板潃
-		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);
-			}
-	}
-
-	// 鑾峰彇鍥剧墖鐨凪D5鍊�
-	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", "");
-	}
-
-	// 鑾峰彇鍥剧墖鐨凪D5鍊�
-	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 = userInfoService.selectByPKey(uid);
-
-		String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
-		// 娣诲姞鍘熸潵娌℃湁鐨�
-		for (String md5 : dlist) {
-			for (SpreadImg img : spreadImgList)
-				if (img.getMd5().equalsIgnoreCase(md5)) {
-					// 鐢诲浘
-					try {
-						String portrait = user.getPortrait();
-						if (StringUtil.isNullOrEmpty(portrait)) {
-							portrait = Constant.systemCommonConfig.getDefaultPortrait();
-						}
-						
-						String imgUrl = qrCodeService.drawInviteQrCodeNew(img.getUrl(), 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 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 {
-		return qrCodeService.drawInviteQrCodeNew(bgImg, 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);
-	}
-}
+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); // 鏈嶅姟鍣ㄤ笂鐨剈rl鍦板潃
+        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);
+            }
+    }
+
+    // 鑾峰彇鍥剧墖鐨凪D5鍊�
+    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", "");
+    }
+
+    // 鑾峰彇鍥剧墖鐨凪D5鍊�
+    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;
+    }
+}

--
Gitblit v1.8.0