diff --git a/web-api/src/main/java/com/jeesite/modules/app/utils/MailReceiveUtils.java b/web-api/src/main/java/com/jeesite/modules/app/utils/MailReceiveUtils.java index 183aafb2..84749583 100644 --- a/web-api/src/main/java/com/jeesite/modules/app/utils/MailReceiveUtils.java +++ b/web-api/src/main/java/com/jeesite/modules/app/utils/MailReceiveUtils.java @@ -530,14 +530,12 @@ public class MailReceiveUtils { String originalFileName = part.getFileName(); String fileNameForLog = originalFileName == null ? "未知文件名" : decodeMimeText(originalFileName); logger.info("开始下载附件[" + fileNameForLog + "],开始时间:" + new Date(attachDownloadStartTime)); - // 2. 修复:文件名解码(解决乱码) if (originalFileName != null) { originalFileName = decodeMimeText(originalFileName); } else { originalFileName = "unknown_" + System.currentTimeMillis(); } - // 3. 修复:附件FileType(优先从文件扩展名识别,解决ContentType错误) String fileExt = getFileExtension(originalFileName); String fileType = MIME_TYPE_MAP.getContentType(originalFileName); @@ -584,12 +582,10 @@ public class MailReceiveUtils { long costTime = attachDownloadEndTime - attachDownloadStartTime; logger.info("完成下载附件[" + originalFileName + "],结束时间:" + new Date(attachDownloadEndTime) + ",耗时:" + costTime + "ms,文件路径:" + finalFile.getAbsolutePath()); - // 6. 封装附件信息(修复FileType,增加下载时间字段) attachment.setStoragePath(finalFile.getAbsolutePath()); attachment.setFileSize(finalFile.length()); attachment.setCreateTime(new Date()); - attachment.setTid(System.currentTimeMillis()); attachment.setMailId(System.currentTimeMillis()); attachment.setMessageId(messageId); attachment.setFileName(originalFileName); @@ -602,6 +598,7 @@ public class MailReceiveUtils { attachment.setDownloadStartTime(new Date(attachDownloadStartTime)); // 附件下载开始时间 attachment.setDownloadEndTime(new Date(attachDownloadEndTime)); // 附件下载结束时间 attachment.setDownloadCostTime(costTime); // 附件下载耗时(毫秒) + attachment.setSvgIcon(MyFileUtils.getIcon(fileExt)); return attachment; } diff --git a/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java b/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java index dfdbcb9c..7c3ac9da 100644 --- a/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java +++ b/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java @@ -95,18 +95,20 @@ public class MyFileUtils { public static String getIcon(String ext) { switch (ext) { + case "wps": + return "icons/file-wps.png"; case "doc", "docx": - return "icons/file-word-line.svg"; + return "icons/file-docx.png"; case "xls", "xlsx": - return "icons/file-excel-line.svg"; + return "icons/file-xlsx.png"; case "ppt", "pptx": - return "icons/file-ppt-line.svg"; + return "icons/file-pptx.png"; case "pdf": - return "icons/file-pdf-line.svg"; + return "icons/file-pdf.png"; case "zip", "gz": - return "icons/folder-zip-line.svg"; + return "icons/file-zip.png"; default: - return "icons/file-text-line.svg"; + return "icons/file.png"; } } } diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailAttachments.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailAttachments.java index e2be720c..73c60dab 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailAttachments.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMailAttachments.java @@ -24,7 +24,7 @@ import java.io.Serial; @EqualsAndHashCode(callSuper = true) @Table(name = "biz_mail_attachments", alias = "a", label = "邮件附件表信息", columns = { @Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true), - @Column(name = "id", attrName = "tid", label = "附件标识", isPK = true), + @Column(name = "id", attrName = "id", label = "附件标识", isPK = true), @Column(name = "mail_id", attrName = "mailId", label = "收件标识"), @Column(name = "message_id", attrName = "messageId", label = "消息标识"), @Column(name = "file_name", attrName = "fileName", label = "附件名称", queryType = QueryType.LIKE), @@ -39,6 +39,7 @@ import java.io.Serial; @Column(name = "download_start_time", attrName = "downloadStartTime", label = "下载开始时间"), @Column(name = "download_end_time", attrName = "downloadEndTime", label = "下载结束时间"), @Column(name = "download_cost_time", attrName = "downloadCostTime", label = "下载耗时"), + @Column(name = "svg_icon", attrName = "svgIcon", label = "文件夹标识"), }, orderBy = "a.create_time DESC" ) @Data @@ -47,7 +48,6 @@ public class BizMailAttachments extends DataEntity implement @Serial private static final long serialVersionUID = 1L; private Date createTime; // 记录时间 - private Long tid; // 附件标识 private Long mailId; // 收件标识 private String messageId; // 消息标识 private String fileName; // 附件名称 @@ -64,9 +64,11 @@ public class BizMailAttachments extends DataEntity implement private Date downloadEndTime; // 附件下载结束时间 private Long downloadCostTime; // 附件下载耗时(毫秒) + private String svgIcon; //文件图标 + @ExcelFields({ @ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), - @ExcelField(title = "附件标识", attrName = "tid", align = Align.CENTER, sort = 20), + @ExcelField(title = "附件标识", attrName = "id", align = Align.CENTER, sort = 20), @ExcelField(title = "收件标识", attrName = "mailId", align = Align.CENTER, sort = 30), @ExcelField(title = "消息标识", attrName = "messageId", align = Align.CENTER, sort = 40), @ExcelField(title = "附件名称", attrName = "fileName", align = Align.CENTER, sort = 50), diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizMailAttachmentsController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMailAttachmentsController.java index c7cb0415..00dbbebd 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizMailAttachmentsController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMailAttachmentsController.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.List; import com.jeesite.modules.app.utils.FileDownloadUtils; +import com.jeesite.modules.app.utils.MyFileUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -141,6 +142,8 @@ public class BizMailAttachmentsController extends BaseController { @RequestMapping(value = "delete") @ResponseBody public String delete(BizMailAttachments bizMailAttachments) { + BizMailAttachments attachments = bizMailAttachmentsService.get(bizMailAttachments); + MyFileUtils.rmFile(attachments.getStoragePath()); bizMailAttachmentsService.delete(bizMailAttachments); return renderResult(Global.TRUE, text("删除邮件附件表成功!")); } diff --git a/web-vue/packages/assets/images/file.png b/web-vue/packages/assets/images/file.png deleted file mode 100644 index 0f064e6c..00000000 Binary files a/web-vue/packages/assets/images/file.png and /dev/null differ diff --git a/web-vue/packages/biz/views/biz/mailInfo/attachments/list.vue b/web-vue/packages/biz/views/biz/mailInfo/attachments/list.vue index f1cdc1fd..577c978c 100644 --- a/web-vue/packages/biz/views/biz/mailInfo/attachments/list.vue +++ b/web-vue/packages/biz/views/biz/mailInfo/attachments/list.vue @@ -168,6 +168,16 @@ }, auth: 'biz:mailAttachments:edit', }, + { + icon: 'i-ant-design:download-outlined', + color: 'success', + title: t('下载'), + popConfirm: { + title: t('是否确认下载邮件附件?'), + confirm: handleDownload.bind(this, record), + }, + auth: 'biz:mailAttachments:edit', + }, ], }; @@ -205,6 +215,18 @@ }); loading.value = false; } + + async function handleDownload(record: Recordable){ + loading.value = true; + const { ctxAdminPath } = useGlobSetting(); + await downloadByUrl({ + url: ctxAdminPath + '/biz/mailAttachments/downloadFile', + params: { + id: record.id + }, + }); + loading.value = false; + } const [registerImportModal, { openModal: importModal }] = useModal(); @@ -213,7 +235,7 @@ } async function handleDelete(record: Recordable) { - const params = { tid: record.tid }; + const params = { id: record.id }; const res = await bizMailAttachmentsDelete(params); showMessage(res.message); await handleSuccess(record); diff --git a/web-vue/packages/biz/views/biz/mailInfo/received/view.vue b/web-vue/packages/biz/views/biz/mailInfo/received/view.vue index da205621..9db12f2b 100644 --- a/web-vue/packages/biz/views/biz/mailInfo/received/view.vue +++ b/web-vue/packages/biz/views/biz/mailInfo/received/view.vue @@ -32,12 +32,7 @@
- +
@@ -62,6 +57,7 @@