admin
2019-04-18 864a952fed0b9c4fce5ba91e9dd99ba7a8789742
分享二维码增加邀请码
4个文件已修改
71 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java
@@ -35,7 +35,7 @@
    }
    @Override
    public String drawInviteQrCode(String url, Long uid, String portrait) throws IOException {
    public String drawInviteQrCode(String url, Long uid, String portrait, String inviteCode) throws IOException {
        if (url != null && !url.equals("")) {
            String targetPath = FileUtil.getCacheDir() + "/share_" + uid + "_" + System.currentTimeMillis() + ".jpg";
            String erCodeTempPath = FileUtil.getCacheDir() + "/" + uid + "_" + System.currentTimeMillis() + ".jpg";
@@ -54,7 +54,7 @@
            InputStream erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); // 二维码
            // 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
            ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath);
            ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, inviteCode);
            if (new File(targetPath).exists() && new File(targetPath).length() > 0) {
                // 上传文件
@@ -84,7 +84,7 @@
    @Override
    public String drawInviteQrCode(String url, Long uid, String portrait, int erCodePostionX, int erCodePostionY,
            int erCodeSize) throws IOException {
            int erCodeSize, String inviteCode) throws IOException {
        if (!StringUtil.isNullOrEmpty(url)) {
            String targetPath = FileUtil.getCacheDir() + "/share_" + uid + "_" + System.currentTimeMillis() + ".jpg";
            String erCodeTempPath = FileUtil.getCacheDir() + "/" + uid + "_" + System.currentTimeMillis() + ".jpg";
@@ -104,7 +104,7 @@
            // 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
            ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath,
                    erCodePostionX, erCodePostionY, erCodeSize);
                    erCodePostionX, erCodePostionY, erCodeSize, inviteCode);
            if (new File(targetPath).exists() && new File(targetPath).length() > 0) {
                // 上传文件
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -19,8 +19,10 @@
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.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -38,6 +40,9 @@
    @Resource
    private UserInfoDao userInfoDao;
    @Resource
    private UserInfoExtraService userInfoExtraService;
    @Override
    public void addUserInviteImg(Long uid, String imgUrl) {
@@ -166,15 +171,23 @@
        UserInfo user = null;
        if (dlist != null && dlist.size() > 0)
            user = userInfoDao.find(UserInfo.class, uid);
        String inviteCode = null;
        UserInfoExtra extraInfo = userInfoExtraService.getUserInfoExtra(uid);
        if (extraInfo != null) {
            inviteCode = extraInfo.getInviteCode();
        }
        // 添加原来没有的
        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());
                                        ? Constant.systemCommonConfig.getDefaultPortrait() : user.getPortrait(),
                                inviteCode);
                        if (!StringUtil.isNullOrEmpty(imgUrl)) {
                            if (imgUrl != null) {
                                addUserInviteImg(uid, imgUrl);
@@ -211,7 +224,7 @@
        // 生成
        UserInfo user = userInfoDao.find(UserInfo.class, uid);
        try {
            String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait());
            String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), null);
            return imgUrl;
        } catch (IOException e) {
            e.printStackTrace();
@@ -224,7 +237,7 @@
        UserInfo user = userInfoDao.find(UserInfo.class, uid);
        try {
            String imgUrl = qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), erCodePostionX,
                    erCodePostionY, erCodeSize);
                    erCodePostionY, erCodeSize, null);
            return imgUrl;
        } catch (IOException e) {
            e.printStackTrace();
fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java
@@ -15,7 +15,7 @@
     * @return
     * @throws IOException
     */
    String drawInviteQrCode(String url, Long uid, String portrait) throws IOException;
    String drawInviteQrCode(String url, Long uid, String portrait,String inviteCode) throws IOException;
    /**
     * 绘制邀请二维码
@@ -36,5 +36,5 @@
     * @throws IOException
     */
    String drawInviteQrCode(String url, Long uid, String portrait, int erCodePostionX, int erCodePostionY,
            int erCodeSize) throws IOException;
            int erCodeSize,String inviteCode) throws IOException;
}
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -991,8 +991,8 @@
    // 邀请好友图片
    public static void inviteFriendImg(InputStream urlInputStream, InputStream portraitInputStream,
            InputStream erCodeInputStream, String targetPath) throws IOException {
        inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, 260, 908, 230);
            InputStream erCodeInputStream, String targetPath,String inviteCode) throws IOException {
        inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, 260, 908, 230, inviteCode);
    }
    /**
@@ -1007,11 +1007,14 @@
     *            -二维码的纵坐标
     * @param size
     *            -二维码的尺寸
     * @param inviteCode
     *            -邀请码
     * @throws IOException
     */
    // 邀请好友图片
    public static void inviteFriendImg(InputStream urlInputStream, InputStream portraitInputStream,
            InputStream erCodeInputStream, String targetPath, int pX, int pY, int size) throws IOException {
            InputStream erCodeInputStream, String targetPath, int pX, int pY, int size, String inviteCode)
            throws IOException {
        BufferedImage bgImage = ImageIO.read(urlInputStream);
        final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(),
                BufferedImage.TYPE_INT_RGB);
@@ -1037,6 +1040,37 @@
        int pPY = pY + size / 2 - portraitSize / 2;
        portraitImg = ImageUtil.portraitImg(g2d, portraitImg, pPX, pPY, portraitSize, portraitSize);// 头像长宽
        // 画邀请码(邀请码的大小与字体固定)
        if (!StringUtil.isNullOrEmpty(inviteCode)) {
            String st = "邀请码:" + inviteCode;
            int width = bgImage.getWidth();
            String os = System.getProperty("os.name");
            String fontBoldPath = "/usr/share/fonts/PingFang_Medium.ttf";
            if (os.toLowerCase().startsWith("win")) {
                fontBoldPath = "D:/PingFang_Medium.ttf";
            }
            Font boldFont = null;
            try {
                boldFont = Font.createFont(Font.PLAIN, new File(fontBoldPath)).deriveFont(36.0f);
            } catch (FontFormatException e) {
                e.printStackTrace();
            }
            g2d.setFont(boldFont);
            g2d.setColor(new Color(0, 0, 0));
            FontMetrics fm = g2d.getFontMetrics(boldFont);
            int textLength = fm.stringWidth(st);
            int ax = (width - textLength) / 2;
            int ay = bgImage.getHeight() - 92 + boldFont.getSize() / 2 - 5;
            g2d.setColor(new Color(0, 0, 0));
            g2d.drawString(st, ax, ay);
        }
        OutputStream out = new FileOutputStream(new File(targetPath));
        ImageIO.write(targetImg, "JPEG", out);
        out.flush();