From dac75e453c222bbc4ae3f7910961779886328355 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Mon, 22 Dec 2025 22:04:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BE=85=E5=8A=9E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/app/utils/MailReceiveUtils.java | 5 +- .../modules/app/utils/MyFileUtils.java | 14 ++- .../biz/entity/BizMailAttachments.java | 8 +- .../biz/web/BizMailAttachmentsController.java | 3 + web-vue/packages/assets/images/file.png | Bin 8710 -> 0 bytes .../views/biz/mailInfo/attachments/list.vue | 24 +++- .../biz/views/biz/mailInfo/received/view.vue | 119 +----------------- .../workbench/components/myfiles/index.vue | 16 +-- .../web/public/resource/img/icons/docx.png | Bin 9927 -> 0 bytes .../resource/img/icons/download-count.svg | 1 - .../resource/img/icons/dynamic-avatar-1.svg | 1 - .../resource/img/icons/dynamic-avatar-2.svg | 1 - .../resource/img/icons/dynamic-avatar-3.svg | 1 - .../resource/img/icons/dynamic-avatar-4.svg | 1 - .../resource/img/icons/dynamic-avatar-5.svg | 1 - .../resource/img/icons/dynamic-avatar-6.svg | 1 - .../public/resource/img/icons/file-docx.png} | Bin .../public/resource/img/icons/file-gz.png} | Bin .../public/resource/img/icons/file-mail.png} | Bin .../public/resource/img/icons/file-pdf.png} | Bin .../public/resource/img/icons/file-pptx.png} | Bin .../public/resource/img/icons/file-py.png} | Bin .../public/resource/img/icons/file-sql.png} | Bin .../public/resource/img/icons/file-wps.png} | Bin .../public/resource/img/icons/file-xlsx.png} | Bin .../public/resource/img/icons/file-zip.png} | Bin web-vue/web/public/resource/img/icons/gz.png | Bin 8966 -> 0 bytes .../web/public/resource/img/icons/mail.png | Bin 112503 -> 0 bytes web-vue/web/public/resource/img/icons/pdf.png | Bin 15165 -> 0 bytes .../web/public/resource/img/icons/pptx.png | Bin 11499 -> 0 bytes web-vue/web/public/resource/img/icons/py.png | Bin 8332 -> 0 bytes web-vue/web/public/resource/img/icons/sql.png | Bin 13121 -> 0 bytes .../public/resource/img/icons/total-sales.svg | 1 - .../public/resource/img/icons/transaction.svg | 1 - .../public/resource/img/icons/visit-count.svg | 1 - web-vue/web/public/resource/img/icons/wps.png | Bin 14271 -> 0 bytes .../web/public/resource/img/icons/xlsx.png | Bin 14777 -> 0 bytes web-vue/web/public/resource/img/icons/zip.png | Bin 8143 -> 0 bytes 38 files changed, 52 insertions(+), 147 deletions(-) delete mode 100644 web-vue/packages/assets/images/file.png delete mode 100644 web-vue/web/public/resource/img/icons/docx.png delete mode 100644 web-vue/web/public/resource/img/icons/download-count.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-1.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-2.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-3.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-4.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-5.svg delete mode 100644 web-vue/web/public/resource/img/icons/dynamic-avatar-6.svg rename web-vue/{packages/assets/images/docx.png => web/public/resource/img/icons/file-docx.png} (100%) rename web-vue/{packages/assets/images/gz.png => web/public/resource/img/icons/file-gz.png} (100%) rename web-vue/{packages/assets/images/mail.png => web/public/resource/img/icons/file-mail.png} (100%) rename web-vue/{packages/assets/images/pdf.png => web/public/resource/img/icons/file-pdf.png} (100%) rename web-vue/{packages/assets/images/pptx.png => web/public/resource/img/icons/file-pptx.png} (100%) rename web-vue/{packages/assets/images/py.png => web/public/resource/img/icons/file-py.png} (100%) rename web-vue/{packages/assets/images/sql.png => web/public/resource/img/icons/file-sql.png} (100%) rename web-vue/{packages/assets/images/wps.png => web/public/resource/img/icons/file-wps.png} (100%) rename web-vue/{packages/assets/images/xlsx.png => web/public/resource/img/icons/file-xlsx.png} (100%) rename web-vue/{packages/assets/images/zip.png => web/public/resource/img/icons/file-zip.png} (100%) delete mode 100644 web-vue/web/public/resource/img/icons/gz.png delete mode 100644 web-vue/web/public/resource/img/icons/mail.png delete mode 100644 web-vue/web/public/resource/img/icons/pdf.png delete mode 100644 web-vue/web/public/resource/img/icons/pptx.png delete mode 100644 web-vue/web/public/resource/img/icons/py.png delete mode 100644 web-vue/web/public/resource/img/icons/sql.png delete mode 100644 web-vue/web/public/resource/img/icons/total-sales.svg delete mode 100644 web-vue/web/public/resource/img/icons/transaction.svg delete mode 100644 web-vue/web/public/resource/img/icons/visit-count.svg delete mode 100644 web-vue/web/public/resource/img/icons/wps.png delete mode 100644 web-vue/web/public/resource/img/icons/xlsx.png delete mode 100644 web-vue/web/public/resource/img/icons/zip.png 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 0f064e6c80e4043ea31a241dcd9c0cb0adae85c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8710 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 RzR2}s;XnEh0m}2S{|6XfJbC~C 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 @@