fanli/src/main/java/com/yeshi/fanli/controller/TestController.java
@@ -370,4 +370,38 @@ e.printStackTrace(); } } /** * 插入邀请素材 * @param out */ @RequestMapping(value = "saveInvite") public void saveInvite(InviteMaterial inviteMaterial, PrintWriter out) { try { inviteMaterial.setState(0); inviteMaterialService.insert(inviteMaterial); JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("上传成功")); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("上传失败")); e.printStackTrace(); } } /** * 插入邀请素材 * @param out */ @RequestMapping(value = "insertTimeInvite") public void insertTimeInvite(PrintWriter out) { try { dynamicInfoService.insertTimeInvite(); JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("操作成功")); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java
@@ -794,37 +794,22 @@ data.put("title", title); } else { // 有图分享 // 邀请链接 String shortLink = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid); data.put("inviteLink", shortLink); data.put("inviteCode", inviteCode); data.put("helpLink", configService.get("invite_help_link")); // 邀请背景图片 List<GoodsPicture> imgs = dynamicInfo.getImgs(); String bgUrl = imgs.get(0).getUrl(); String bgUrl = imgs.get(0).getUrlOriginal(); if (StringUtil.isNullOrEmpty(bgUrl)) { out.print(JsonUtil.loadFalseResult("图片路径不存在")); return; } // 用户信息 UserInfo userInfo = userInfoService.selectByPKey(uid); String portrait = userInfo.getPortrait(); // 画邀请图片 if (StringUtil.isNullOrEmpty(dynamicInfo.getInviteMaterialId())) { String imgLink = spreadUserImgService.getInviteImg(bgUrl,uid, portrait, inviteCode); String imgLink = spreadUserImgService.drawInviteQrCodeNew(bgUrl,uid, portrait, inviteCode); data.put("imgLink", imgLink); } else { String title =""; List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle(); if (listTitle != null && listTitle.size() > 0) { for (ClientTextStyleVO textStyleVO : listTitle) { title += textStyleVO.getContent(); } } title = title.replace("【邀请码】", inviteCode); title = title.replace("【邀请链接】", UserUtil.getInviteShortLink(uid)); String title = imgs.get(0).getTitleOriginal(); String imgLink = spreadUserImgService.getInviteImgToGreet(bgUrl,uid, portrait, inviteCode, title, new Date()); data.put("imgLink", imgLink); } @@ -839,6 +824,14 @@ String valueN = values.getValue(); String valueBr = valueN.replace("\n", "<br><br>"); data.put("inviteRules", valueBr); // 邀请链接 String shortLink = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid); data.put("inviteLink", shortLink); data.put("inviteCode", inviteCode); data.put("helpLink", configService.get("invite_help_link")); } } out.print(JsonUtil.loadTrueResult(data)); fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java
@@ -24,7 +24,10 @@ @Expose private String params; // 分享图片原图链接 private String urlOriginal ; // 分享图片文字 private String titleOriginal ; public String getUrl() { return url; @@ -73,4 +76,20 @@ public void setParams(String params) { this.params = params; } public String getUrlOriginal() { return urlOriginal; } public void setUrlOriginal(String urlOriginal) { this.urlOriginal = urlOriginal; } public String getTitleOriginal() { return titleOriginal; } public void setTitleOriginal(String titleOriginal) { this.titleOriginal = titleOriginal; } } fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -2,6 +2,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -12,6 +13,7 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.yeshi.utils.DateLunarUtil; import org.yeshi.utils.DateUtil; import org.yeshi.utils.taobao.TbImgUtil; @@ -343,13 +345,13 @@ } @Override @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId") // @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId") public long count(Long cid, Long subId) { return dynamicInfoDao.count(cid, subId); } @Override @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId") // @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId") public List<DynamicInfo> query(int start, int count, Long cid, Long subId) { List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId); @@ -409,28 +411,43 @@ } // 介绍内容 ClientTextStyleVO row1 = new ClientTextStyleVO(); row1.setColor("#333333"); row1.setContent(title); List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); listtitle.add(row1); dynamicVO.setTitle(listtitle); List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); if(!StringUtil.isNullOrEmpty(picUrl)) { GoodsPicture p2 = new GoodsPicture(); p2.setW(100); p2.setH(100); p2.setUrl(picUrl); listImg.add(p2); dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE); } else { if(StringUtil.isNullOrEmpty(picUrl)) { dynamicVO.setImgs(listImg); dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO); // 介绍内容 ClientTextStyleVO row1 = new ClientTextStyleVO(); row1.setColor("#333333"); row1.setContent(title); listtitle.add(row1); dynamicVO.setTitle(listtitle); dynamicInfoDao.insert(dynamicVO); } else { try { dynamicVO.setTitle(listtitle); dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE); // 图片 String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl , null, null, null); GoodsPicture p2 = new GoodsPicture(); p2.setW(100); p2.setH(100); p2.setUrl(imgLink); p2.setUrlOriginal(picUrl); listImg.add(p2); dynamicVO.setImgs(listImg); dynamicInfoDao.insert(dynamicVO); } catch (Exception e) { e.printStackTrace(); } } dynamicVO.setImgs(listImg); dynamicInfoDao.insert(dynamicVO); } @@ -770,9 +787,11 @@ if (inviteMaterial == null) { return; } String materialId = inviteMaterial.getId(); Date date = new Date(); String materialId = inviteMaterial.getId(); String content = inviteMaterial.getText(); if (!StringUtil.isNullOrEmpty(content)) { DynamicInfo dynamicTxt= new DynamicInfo(); dynamicTxt.setId(UUID.randomUUID().toString().replace("-", "")); @@ -783,12 +802,26 @@ dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE); dynamicTxt.setUser(activityUserService.listRand(1).get(0)); dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000)); dynamicTxt.setCreateTime(new Date()); dynamicTxt.setUpdateTime(new Date()); dynamicTxt.setCreateTime(date); dynamicTxt.setUpdateTime(date); SimpleDateFormat format = new SimpleDateFormat("MM月dd日"); StringBuffer buffer = new StringBuffer(); buffer.append("------------------------------------------\n"); buffer.append("今天 : " + format.format(date)); buffer.append(" "); buffer.append(DateLunarUtil.getWeekd(date) + "\n"); buffer.append("各位亲爱的你"); buffer.append(" "); buffer.append("早安~\n"); buffer.append("我的邀请码:【邀请码】\n"); buffer.append("购物省钱返利券App:【邀请链接】"); ClientTextStyleVO row1 = new ClientTextStyleVO(); row1.setColor("#333333"); row1.setContent(content); row1.setContent(content + "\n" + buffer.toString()); List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); listtitle.add(row1); dynamicTxt.setTitle(listtitle); @@ -811,8 +844,8 @@ dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE); dynamicPic.setUser(activityUserService.listRand(1).get(0)); dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000)); dynamicPic.setCreateTime(new Date()); dynamicPic.setUpdateTime(new Date()); dynamicPic.setCreateTime(date); dynamicPic.setUpdateTime(date); try { // 画图 @@ -825,6 +858,8 @@ p2.setW(100); p2.setH(100); p2.setUrl(url); p2.setUrlOriginal(picture); p2.setTitleOriginal(content); List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); listImg.add(p2); dynamicPic.setImgs(listImg); fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java
@@ -5,6 +5,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.UUID; import javax.annotation.Resource; @@ -133,6 +134,75 @@ @Override public String drawInviteQrCodeNew(String url, Long uid, String portrait, String inviteCode) throws IOException { if (StringUtil.isNullOrEmpty(url)) { return null; } String targetPath = null; String erCodeTempPath = null; InputStream erCodeInputStream = null; // 二维码 InputStream portraitInputStream = null; // 头像 InputStream urlInputStream = HttpUtil.getAsInputStream(url); // 背景 String uuid = UUID.randomUUID().toString().replace("-", ""); if (uid == null) { targetPath = FileUtil.getCacheDir() + "/share_" + uuid + "_" + System.currentTimeMillis() + ".jpg"; // 官方 邀请码(无效的) inviteCode = "FLQAPP"; // 官方二维码 erCodeInputStream = ImageUtil.class.getClassLoader().getResourceAsStream("image/official.png"); // 官方默认头像 portraitInputStream = ImageUtil.class.getClassLoader().getResourceAsStream("image/official_icon.png"); } else { targetPath = FileUtil.getCacheDir() + "/share_" + uid + "_" + System.currentTimeMillis() + ".jpg"; erCodeTempPath = FileUtil.getCacheDir() + "/" + uid + "_" + System.currentTimeMillis() + ".jpg"; String erCode = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid); // 生成 try { QRCodeUtil.getInstance(250).encode(erCode, erCodeTempPath); } catch (Exception e) { e.printStackTrace(); } urlInputStream = HttpUtil.getAsInputStream(url); // 背景 portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像 erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); // 二维码 } // 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片 ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, inviteCode); if (new File(targetPath).exists() && new File(targetPath).length() > 0) { int index = url.lastIndexOf("/"); String newUrl = url.substring(index + 1); String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf(".")); String fileUrl= null; if (uid == null) { fileUrl= "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } else { fileUrl = "ercode/" + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; if (new File(erCodeTempPath).exists()) new File(erCodeTempPath).delete(); } String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl(); if (new File(targetPath).exists()) new File(targetPath).delete(); return imgUrl; } return null; } @Override public String drawInviteToGreet(String url, Long uid, String portrait, String inviteCode, String content, Date date) throws IOException { @@ -146,8 +216,9 @@ InputStream portraitInputStream = null; // 头像 InputStream urlInputStream = HttpUtil.getAsInputStream(url); // 背景 String uuid = UUID.randomUUID().toString().replace("-", ""); if (uid == null) { targetPath = FileUtil.getCacheDir() + "/share_official" + System.currentTimeMillis() + ".jpg"; targetPath = FileUtil.getCacheDir() + "/share_" + uuid + "_" + System.currentTimeMillis() + ".jpg"; // 官方 邀请码(无效的) inviteCode = "FLQAPP"; // 官方二维码 @@ -167,6 +238,7 @@ e.printStackTrace(); } erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像 } @@ -175,7 +247,6 @@ // 上传文件 if (new File(targetPath).exists() && new File(targetPath).length() > 0) { // 将url 转为 md5 让到下面中添加 在比较md5的值 int index = url.lastIndexOf("/"); String newUrl = url.substring(index + 1); String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf(".")); @@ -183,18 +254,16 @@ // 上传文件相对位置 String fileUrl= null; if (uid == null) { fileUrl="ercode/" + "ercode_official" + "_" + urlMd5 + ".jpg"; fileUrl= "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } else { fileUrl="ercode/" + "ercode_" + uid + "_" + urlMd5 + ".jpg"; fileUrl = "ercode/" + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; if (new File(erCodeTempPath).exists()) new File(erCodeTempPath).delete(); } String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl(); if (new File(targetPath).exists()) new File(targetPath).delete(); fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -252,8 +252,8 @@ @Override public String getInviteImg(String bgImg, Long uid, String portrait, String inviteCode) throws Exception { return qrCodeService.drawInviteQrCode(bgImg, uid, portrait, inviteCode); public String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, String inviteCode) throws Exception { return qrCodeService.drawInviteQrCodeNew(bgImg, uid, portrait, inviteCode); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java
@@ -52,4 +52,15 @@ */ public String drawInviteToGreet(String url, Long uid, String portrait, String inviteCode, String content, Date date) throws IOException; /** * uid为空时 默认官方 * @param url * @param uid * @param portrait * @param inviteCode * @return * @throws IOException */ public String drawInviteQrCodeNew(String url, Long uid, String portrait, String inviteCode) throws IOException; } fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java
@@ -58,7 +58,7 @@ * @return * @throws Exception */ String getInviteImg(String bgImg, Long uid, String portrait, String inviteCode) throws Exception; String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, String inviteCode) throws Exception; /** * 邀请图片 问候