package com.xzx.gc.user.service;
|
|
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.exception.RestException;
|
import com.xzx.gc.common.utils.BusinessUtil;
|
import com.xzx.gc.common.utils.ExceptionUtils;
|
import com.xzx.gc.common.utils.image.GraphicsUtils;
|
import com.xzx.gc.common.utils.wxpay.WxUtil;
|
import com.xzx.gc.entity.UserInfo;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.File;
|
import java.util.Map;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
@Service
|
@Slf4j
|
public class PosterService {
|
|
@Autowired
|
private WxUtil wxUtil;
|
|
@Autowired
|
private BusinessUtil businessUtil;
|
|
@Autowired
|
private GraphicsUtils graphicsUtils;
|
|
public Map<String,String> generate(UserInfo userInfo){
|
//海报图名称
|
String userId=userInfo.getUserId();
|
String imageName="/user_" + userId + "_poster_1.jpg";
|
//二维码图名称
|
String imgName="/user_" + userId + "_acode_1.jpg";
|
String s1 = wxUtil.generateAcode("poster=" + userInfo.getMobilePhone() +"&chiefId=" + userInfo.getUserId(), "pages/login/login", imgName, "800px", 1);
|
if(StrUtil.isBlank(s1)){
|
throw new RestException("生成分享海报失败");
|
}
|
String path=Constants.IMG_UPLOAD_PATH+imgName;
|
if(StrUtil.isBlank(userInfo.getAvatar())){
|
userInfo.setAvatar(Constants.IMG_TEMPALRE_VIEW+"/xzx-qr.png");
|
}
|
userInfo.setMobilePhone(businessUtil.changeMobile(userInfo.getMobilePhone()));
|
String backgroundUrl=userInfo.getBgPoster();
|
if(StrUtil.isBlank(backgroundUrl)) {
|
backgroundUrl = Constants.IMG_TEMPALRE_PATH + "/user_share_poster_bg.png";
|
}
|
Map<String, String> s = null;
|
try {
|
|
AtomicInteger atomicInteger=new AtomicInteger(1);
|
while (1==1) {
|
|
if(atomicInteger.get()>10){
|
throw new RestException("生成分享海报大小异常");
|
}
|
|
s = graphicsUtils.generatePoster(imageName, path, userInfo.getAvatar(), backgroundUrl, userInfo.getMobilePhone(), 100, 340, 57, 94, 230, 160, 40);
|
|
if(s!=null){
|
break;
|
}
|
|
log.debug("海报格式异常,重新生成:{},重试次数:{}",userId,atomicInteger.get());
|
atomicInteger.getAndIncrement();
|
}
|
|
} catch (RestException e){
|
ExceptionUtils.err(e.getMsg(),e);
|
}catch (Exception e) {
|
ExceptionUtils.err("生成分享海报失败",e);
|
}
|
return s;
|
}
|
|
//
|
// public Map<String,String> generateByUi(UserInfo userInfo){
|
// log.trace("开始生成海报图:{}",userInfo.getUserId());
|
// //海报图名称
|
// String userId=userInfo.getUserId();
|
// String imageName="/user_" + userId + "_poster.jpg";
|
// //二维码图名称
|
// String imgName="/user_" + userId + "_acode.jpg";
|
// String s1 = wxUtil.generateAcode("poster=" + userInfo.getMobilePhone(), "pages/login/login", imgName, "800px");
|
// if(StrUtil.isBlank(s1)){
|
// throw new RestException("生成分享海报失败");
|
// }
|
// String path=Constants.IMG_UPLOAD_PATH+imgName;
|
// if(StrUtil.isBlank(userInfo.getAvatar())){
|
// userInfo.setAvatar(Constants.IMG_TEMPALRE_VIEW+"/xzx-qr.png");
|
// }
|
// userInfo.setMobilePhone(businessUtil.changeMobile(userInfo.getMobilePhone()));
|
// String backgroundUrl=userInfo.getBgPoster();
|
// if(StrUtil.isBlank(backgroundUrl)) {
|
// backgroundUrl = Constants.IMG_TEMPALRE_PATH + "/user_share_poster_bg2.png";
|
// }
|
// Map<String, String> s = null;
|
// try {
|
// s = graphicsUtils.generatePoster(imageName, path, userInfo.getAvatar(), backgroundUrl, userInfo.getMobilePhone(),100,160,null,null,670,954,34);
|
// } catch (Exception e) {
|
// ExceptionUtils.err("生成分享海报失败",e);
|
// }
|
// return s;
|
// }
|
|
|
|
}
|