|
@@ -115,95 +115,119 @@ public class UserScrmController extends AppBaseController {
|
|
|
@ApiOperation("获取推荐海报")
|
|
|
@GetMapping("/getTuiImg")
|
|
|
public R getTuiImg(HttpServletRequest request){
|
|
|
+ log.info("开始获取推荐海报");
|
|
|
try {
|
|
|
- FsUserScrm user=userService.selectFsUserById(Long.parseLong(getUserId()));
|
|
|
+ String userId = getUserId();
|
|
|
+ log.info("获取用户ID: {}", userId);
|
|
|
+ FsUserScrm user = userService.selectFsUserById(Long.parseLong(userId));
|
|
|
+ log.info("查询到用户信息: 用户ID={}, 昵称={}", userId, user.getNickname());
|
|
|
+
|
|
|
if(StringUtils.isEmpty(user.getUserCode())){
|
|
|
- FsUserScrm userMap=new FsUserScrm();
|
|
|
+ log.info("用户邀请码为空,开始生成新的邀请码");
|
|
|
+ FsUserScrm userMap = new FsUserScrm();
|
|
|
userMap.setUserId(user.getUserId());
|
|
|
userMap.setUserCode(OrderUtils.genUserCode());
|
|
|
userService.updateFsUser(userMap);
|
|
|
user.setUserCode(userMap.getUserCode());
|
|
|
+ log.info("成功生成并更新用户邀请码: {}", userMap.getUserCode());
|
|
|
}
|
|
|
+
|
|
|
File newFile = new File("fx.jpg");
|
|
|
File newFileT = new File("simsunb.ttf");
|
|
|
try {
|
|
|
- InputStream stream = getClass().getClassLoader().getResourceAsStream("fx.jpg");
|
|
|
+ log.info("开始加载海报模板图片");
|
|
|
+ InputStream stream = getClass().getClassLoader().getResourceAsStream("fx.jpg");
|
|
|
FileUtils.copyInputStreamToFile(stream, newFile);
|
|
|
- // if(!newFile.exists()){
|
|
|
- // InputStream stream = getClass().getClassLoader().getResourceAsStream("fx.jpg");
|
|
|
- // FileUtils.copyInputStreamToFile(stream, newFile);
|
|
|
- // }
|
|
|
+ log.info("海报模板图片加载成功: {}", newFile.getAbsolutePath());
|
|
|
+
|
|
|
if(!newFileT.exists()){
|
|
|
- InputStream streamT = getClass().getClassLoader()
|
|
|
- .getResourceAsStream("simsunb.ttf");
|
|
|
+ log.info("开始加载字体文件");
|
|
|
+ InputStream streamT = getClass().getClassLoader().getResourceAsStream("simsunb.ttf");
|
|
|
FileUtils.copyInputStreamToFile(streamT, newFileT);
|
|
|
+ log.info("字体文件加载成功: {}", newFileT.getAbsolutePath());
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
-
|
|
|
+ log.error("加载资源文件失败: {}", e.getMessage(), e);
|
|
|
throw new CustomException(e.getMessage());
|
|
|
}
|
|
|
-
|
|
|
try {
|
|
|
- String url=fsConfig.getTuiImgPath()+"/tui-"+getUserId()+".jpg";
|
|
|
+ String url = fsConfig.getTuiImgPath()+"/tui-"+getUserId()+".jpg";
|
|
|
+ log.info("开始生成用户海报,输出路径: {}", url);
|
|
|
+
|
|
|
File outputFile = new File(url);
|
|
|
- if(!outputFile.exists())
|
|
|
- {
|
|
|
+ if(!outputFile.exists()) {
|
|
|
try {
|
|
|
outputFile.createNewFile();
|
|
|
-
|
|
|
+ log.info("创建海报输出文件成功");
|
|
|
} catch (IOException e) {
|
|
|
+ log.error("创建海报输出文件失败: {}", e.getMessage(), e);
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
- Font font = Font.createFont(Font.TRUETYPE_FONT, newFileT);
|
|
|
- Font f= font.deriveFont(Font.PLAIN,50);
|
|
|
- ImgUtil.pressText(//
|
|
|
+
|
|
|
+ Font font = Font.createFont(Font.TRUETYPE_FONT, newFileT);
|
|
|
+ Font f = font.deriveFont(Font.PLAIN,50);
|
|
|
+ log.info("开始向海报添加用户昵称文本");
|
|
|
+ ImgUtil.pressText(
|
|
|
newFile,
|
|
|
outputFile,
|
|
|
user.getNickname()+"邀您加入",
|
|
|
Color.BLACK,
|
|
|
- f, //字体
|
|
|
- -60, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
- 900, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
- 0.8f//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
|
|
|
+ f,
|
|
|
+ -60,
|
|
|
+ 900,
|
|
|
+ 0.8f
|
|
|
);
|
|
|
- ImgUtil.pressText(//
|
|
|
+
|
|
|
+ log.info("开始向海报添加邀请码文本: {}", user.getUserCode());
|
|
|
+ ImgUtil.pressText(
|
|
|
outputFile,
|
|
|
outputFile,
|
|
|
- "邀请码:"+user.getUserCode(),
|
|
|
+ "邀请码:"+user.getUserCode(),
|
|
|
Color.BLACK,
|
|
|
- f, //字体
|
|
|
- -40, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
- 1000, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
- 0.8f//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
|
|
|
+ f,
|
|
|
+ -40,
|
|
|
+ 1000,
|
|
|
+ 0.8f
|
|
|
);
|
|
|
- File qr = new File(fsConfig.getTuiImgPath()+"/qr-"+getUserId()+".png");
|
|
|
- if(!qr.exists())
|
|
|
- {
|
|
|
+
|
|
|
+ String qrPath = fsConfig.getTuiImgPath()+"/qr-"+getUserId()+".png";
|
|
|
+ File qr = new File(qrPath);
|
|
|
+ log.info("开始生成二维码图片: {}", qrPath);
|
|
|
+ if(!qr.exists()) {
|
|
|
try {
|
|
|
qr.createNewFile();
|
|
|
-
|
|
|
+ log.info("创建二维码输出文件成功");
|
|
|
} catch (IOException e) {
|
|
|
+ log.error("创建二维码输出文件失败: {}", e.getMessage(), e);
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
- QrCodeUtil.generate(fsConfig.getUrl()+"/distribution?userCode="+user.getUserCode(), 300, 300,
|
|
|
- FileUtil.file(fsConfig.getTuiImgPath()+"/qr-"+getUserId()+".png"));
|
|
|
+
|
|
|
+ String qrContent = fsConfig.getUrl()+"/distribution?userCode="+user.getUserCode();
|
|
|
+ log.info("生成二维码内容: {}", qrContent);
|
|
|
+ QrCodeUtil.generate(qrContent, 300, 300, FileUtil.file(qrPath));
|
|
|
+
|
|
|
+ log.info("开始将二维码图片合并到海报");
|
|
|
ImgUtil.pressImage(
|
|
|
outputFile,
|
|
|
outputFile,
|
|
|
- ImgUtil.read(qr), //QR图片
|
|
|
- -400, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
- 900, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
|
|
|
+ ImgUtil.read(qr),
|
|
|
+ -400,
|
|
|
+ 900,
|
|
|
1f
|
|
|
);
|
|
|
- return R.ok().put("url","profile/tui/tui-"+getUserId()+".jpg");
|
|
|
+
|
|
|
+ String resultUrl = "profile/tui/tui-"+getUserId()+".jpg";
|
|
|
+ log.info("海报生成完成,返回URL: {}", resultUrl);
|
|
|
+ return R.ok().put("url", resultUrl);
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("生成海报过程出现异常: {}", e.getMessage(), e);
|
|
|
e.printStackTrace();
|
|
|
return R.error("操作异常");
|
|
|
}
|
|
|
} catch (Exception e){
|
|
|
-
|
|
|
+ log.error("获取推荐海报失败: {}", e.getMessage(), e);
|
|
|
return R.error("操作异常");
|
|
|
}
|
|
|
}
|