修改生成二维码的逻辑, 将保存目录设置成项目根目录下, 同时将旧的二维码图片删除

This commit is contained in:
mirage 2026-02-28 11:20:37 +08:00
parent 78c6b5bead
commit ebd915c0a3
1 changed files with 29 additions and 20 deletions

View File

@ -26,13 +26,7 @@ import com.mdd.common.mapper.admin.AdminMapper;
import com.mdd.common.mapper.system.SystemRoleMapper; import com.mdd.common.mapper.system.SystemRoleMapper;
import com.mdd.common.exception.OperateException; import com.mdd.common.exception.OperateException;
import com.mdd.common.service.RegisterService; import com.mdd.common.service.RegisterService;
import com.mdd.common.util.ConfigUtils; import com.mdd.common.util.*;
import com.mdd.common.util.QrCodeUtil;
import com.mdd.common.util.RandomUtil;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.ToolUtils;
import com.mdd.common.util.UrlUtils;
import com.mdd.common.util.YmlUtils;
import com.google.zxing.WriterException; import com.google.zxing.WriterException;
import java.io.File; import java.io.File;
@ -393,6 +387,9 @@ public class TeacherServiceImpl implements ITeacherService {
// 生成二维码内容URL预报名页面地址 // 生成二维码内容URL预报名页面地址
String qrCodeContent = buildQrCodeUrl(invitationCode); String qrCodeContent = buildQrCodeUrl(invitationCode);
// 删除旧的二维码文件如果存在
deleteOldQrCodeFile(teacher.getQrcodeUrl());
// 生成二维码图片并保存 // 生成二维码图片并保存
String qrcodeUrl = generateAndSaveQrCode(invitationCode, qrCodeContent, teacherId); String qrcodeUrl = generateAndSaveQrCode(invitationCode, qrCodeContent, teacherId);
@ -480,13 +477,8 @@ public class TeacherServiceImpl implements ITeacherService {
if ("local".equals(engine)) { if ("local".equals(engine)) {
// ========== 方案B本地存储 ========== // ========== 方案B本地存储 ==========
String directory = YmlUtils.get("like.upload-directory");
if (directory == null || directory.isEmpty()) {
throw new OperateException("请配置上传目录like.upload-directory");
}
String folder = "qrcode/teacher"; String folder = "qrcode/teacher";
String savePath = (directory + folder + "/" + date).replace("\\", "/"); String savePath = (folder + "/" + date).replace("\\", "/");
File saveDir = new File(savePath); File saveDir = new File(savePath);
if (!saveDir.exists()) { if (!saveDir.exists()) {
if (!saveDir.mkdirs()) { if (!saveDir.mkdirs()) {
@ -594,13 +586,8 @@ public class TeacherServiceImpl implements ITeacherService {
if (!"local".equals(engine)) { if (!"local".equals(engine)) {
return null; return null;
} }
String directory = YmlUtils.get("like.upload-directory"); String path = teacher.getQrcodeUrl().startsWith("/") ? teacher.getQrcodeUrl().substring(1) : teacher.getQrcodeUrl();
if (directory == null || directory.isEmpty()) { java.io.File file = new java.io.File(path);
return null;
}
String path = teacher.getQrcodeUrl().startsWith("/") ? teacher.getQrcodeUrl() : "/" + teacher.getQrcodeUrl();
String fullPath = (directory + path).replace("\\", "/");
java.io.File file = new java.io.File(fullPath);
if (!file.exists() || !file.isFile()) { if (!file.exists() || !file.isFile()) {
return null; return null;
} }
@ -610,4 +597,26 @@ public class TeacherServiceImpl implements ITeacherService {
return null; return null;
} }
} }
/**
* 删除旧的二维码文件
*
* @param oldQrcodeUrl 旧的二维码相对路径
*/
private void deleteOldQrCodeFile(String oldQrcodeUrl) {
if (StringUtils.isBlank(oldQrcodeUrl)) {
return;
}
try {
String path = oldQrcodeUrl.startsWith("/") ? oldQrcodeUrl.substring(1) : oldQrcodeUrl;
File oldFile = new File(path);
if (oldFile.exists() && oldFile.isFile()) {
if (!oldFile.delete()) {
System.err.println("删除旧二维码文件失败: " + path);
}
}
} catch (Exception e) {
System.err.println("删除旧二维码文件时发生异常: " + e.getMessage());
}
}
} }