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.Date;
|
import java.util.UUID;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.yeshi.utils.HttpUtil;
|
import org.yeshi.utils.QRCodeUtil;
|
import org.yeshi.utils.entity.FileUploadResult;
|
import org.yeshi.utils.tencentcloud.COSManager;
|
|
import com.yeshi.fanli.dao.mybatis.share.ShareMapper;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.service.inter.user.QrCodeService;
|
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.FilePathEnum;
|
import com.yeshi.fanli.util.FileUtil;
|
import com.yeshi.fanli.util.ImageUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.UserInviteUtil;
|
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
|
@Service
|
public class QrCodeServiceImpl implements QrCodeService {
|
|
@Resource
|
private ShareMapper shareMapper;
|
|
@Resource
|
private SpreadUserImgService spreadUserImgService;
|
|
@Override
|
public String getPortrait(Long uid) {
|
return shareMapper.getPortrait(uid);
|
}
|
|
@Override
|
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";
|
|
String erCode = ("http://" + Constant.wxGZConfig.getLoginHost() + "/"
|
+ Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid);
|
// 生成
|
try {
|
QRCodeUtil.getInstance(250).encode(erCode, erCodeTempPath);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
InputStream urlInputStream = HttpUtil.getAsInputStream(url); // 背景
|
InputStream portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像
|
InputStream 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) {
|
// 上传文件
|
|
// 将url 转为 md5 让到下面中添加 在比较md5的值
|
|
int index = url.lastIndexOf("/");
|
String newUrl = url.substring(index + 1);
|
String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf("."));
|
|
String imgUrl = COSManager.getInstance()
|
.uploadFile(new File(targetPath),
|
FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg")
|
.getUrl();
|
|
if (new File(erCodeTempPath).exists())
|
new File(erCodeTempPath).delete();
|
|
if (new File(targetPath).exists())
|
new File(targetPath).delete();
|
|
return imgUrl;
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public String drawInviteQrCode(String url, Long uid, String portrait, int erCodePostionX, int erCodePostionY,
|
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";
|
|
String erCode = ("http://" + Constant.wxGZConfig.getLoginHost() + "/"
|
+ Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid);
|
// 生成
|
try {
|
QRCodeUtil.getInstance(250).encode(erCode, erCodeTempPath);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
InputStream urlInputStream = HttpUtil.getAsInputStream(url); // 背景
|
InputStream portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像
|
InputStream erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); // 二维码
|
|
// 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
|
ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath,
|
erCodePostionX, erCodePostionY, erCodeSize, inviteCode);
|
|
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("."));
|
|
String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath),
|
FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + urlMd5 + ".jpg").getUrl();
|
|
if (new File(erCodeTempPath).exists())
|
new File(erCodeTempPath).delete();
|
|
if (new File(targetPath).exists())
|
new File(targetPath).delete();
|
|
return imgUrl;
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public String drawInviteQrCodeNew(InputStream urlInputStream, String urlMd5, Long uid, String portrait, Integer pX, Integer pY, Integer size,
|
String inviteCode) throws IOException {
|
if (urlInputStream == null) {
|
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 = UserInviteUtil.getShareUrl(uid);
|
// 生成
|
try {
|
QRCodeUtil.getInstance(250).encode(erCode, erCodeTempPath);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像
|
erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); // 二维码
|
}
|
|
// 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
|
ImageUtil.inviteFriendImgWhitecustom(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, pX, pY,
|
size, inviteCode);
|
|
// 删除二维码文件
|
if (erCodeInputStream != null) {
|
erCodeInputStream.close();
|
}
|
if (erCodeTempPath != null && new File(erCodeTempPath).exists()) {
|
new File(erCodeTempPath).delete();
|
}
|
|
// 上传文件相对位置
|
if (new File(targetPath).exists() && new File(targetPath).length() > 0) {
|
String fileUrl = null;
|
if (uid == null) {
|
fileUrl = FilePathEnum.invitePictureDemo.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
|
} else {
|
fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
|
}
|
|
// 上传文件
|
String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl();
|
|
// 删除本地缓存文件
|
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 {
|
|
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 = ("http://" + Constant.wxGZConfig.getLoginHost() + "/"
|
+ Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid);
|
// 生成
|
try {
|
QRCodeUtil.getInstance(250).encode(erCode, erCodeTempPath);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
erCodeInputStream = new FileInputStream(new File(erCodeTempPath));
|
portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像
|
}
|
|
// 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
|
ImageUtil.drawInviteToGreet(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, inviteCode,
|
content, date);
|
|
// 删除二维码文件
|
if (erCodeInputStream != null) {
|
erCodeInputStream.close();
|
}
|
if (erCodeTempPath != null && new File(erCodeTempPath).exists()) {
|
new File(erCodeTempPath).delete();
|
}
|
|
// 上传文件
|
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 = FilePathEnum.invitePictureDemo.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
|
} else {
|
fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
|
}
|
|
// 上传
|
String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl();
|
// 删除缓存文件
|
new File(targetPath).delete();
|
|
return imgUrl;
|
}
|
return null;
|
}
|
|
|
|
@Override
|
public FileUploadResult drawGoodsPoster(String erCodeUrl, String portrait, GoodsDetailVO goods) {
|
// 二维码流
|
InputStream erCodeStream = null;
|
try {
|
erCodeStream = QRCodeUtil.getInstance(250).encode(erCodeUrl);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
|
// 头像
|
InputStream portraitStream = null;
|
if (!StringUtil.isNullOrEmpty(portrait)) {
|
try {
|
portraitStream = HttpUtil.getAsInputStream(portrait);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
if (portraitStream == null) {
|
portraitStream = ImageUtil.class.getClassLoader().getResourceAsStream("image/official_default_head.jpg");
|
}
|
|
// 画图
|
InputStream drawStream = ImageUtil.drawGoodsShareSingle(erCodeStream, portraitStream, goods);
|
// 上传位置
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
String upPath = FilePathEnum.shareXCX.getPath() + uuid + "_" + goods.getGoodsId() + "_" + System.currentTimeMillis() + ".png";
|
// 上传文件
|
return COSManager.getInstance().uploadInputStream(drawStream, upPath);
|
}
|
|
|
@Override
|
public FileUploadResult drawGoodsPosterXCX(InputStream erCodeStream,UserInfo user, GoodsDetailVO goods) {
|
// 画图
|
InputStream drawStream = ImageUtil.drawGoodsShareXCX(erCodeStream, user, goods);
|
// 上传位置
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
String upPath = FilePathEnum.shareXCX.getPath() + uuid + "_" + goods.getGoodsId() + "_" + System.currentTimeMillis() + ".png";
|
// 上传文件
|
return COSManager.getInstance().uploadInputStream(drawStream, upPath);
|
}
|
|
}
|