yujian
2019-05-21 ff33cdfa1bd3a89ad9f5a72067b1c9b47376ef22
动态邀请素材优化
8个文件已修改
277 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    /**
     * 邀请图片 问候