From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/EmailController.java |  335 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 335 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/EmailController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/EmailController.java
new file mode 100644
index 0000000..436d796
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/EmailController.java
@@ -0,0 +1,335 @@
+package jnpf.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.Operation;
+import jnpf.EmailApi;
+import jnpf.base.entity.EmailConfigEntity;
+import jnpf.constant.MsgCode;
+import jnpf.exception.DataException;
+import jnpf.message.model.mail.MailAccount;
+import jnpf.model.email.*;
+import jnpf.service.EmailReceiveService;
+import jnpf.message.model.mail.Pop3Util;
+import jnpf.entity.EmailReceiveEntity;
+import jnpf.entity.EmailSendEntity;
+import jnpf.util.JsonUtil;
+import jnpf.base.ActionResult;
+import jnpf.base.vo.PaginationVO;
+import jnpf.util.type.StringNumber;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.validation.Valid;
+import java.util.List;
+
+/**
+ * 閭欢閰嶇疆
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @date 2019骞�9鏈�26鏃� 涓婂崍9:18
+ */
+@Tag(name = "閭欢鏀跺彂", description = "Email")
+@RestController
+@RequestMapping("/Email")
+@RequiredArgsConstructor
+public class EmailController implements EmailApi {
+
+    private final EmailReceiveService emailReceiveService;
+
+    private final Pop3Util pop3Util;
+
+    /**
+     * 鑾峰彇閭欢鍒楄〃(鏀朵欢绠便�佹爣鏄熶欢銆佽崏绋跨銆佸凡鍙戦��)
+     *
+     * @param paginationEmail 鍒嗛〉妯″瀷
+     * @return
+     */
+    @Operation(summary = "鑾峰彇閭欢鍒楄〃(鏀朵欢绠便�佹爣鏄熶欢銆佽崏绋跨銆佸凡鍙戦��)")
+    @GetMapping
+    @SaCheckPermission("extend.email")
+    public ActionResult receiveList(PaginationEmail paginationEmail) {
+        String type = paginationEmail.getType() != null ? paginationEmail.getType() : "inBox";
+        switch (type) {
+            case "inBox":
+                List<EmailReceiveEntity> entity = emailReceiveService.getReceiveList(paginationEmail);
+                PaginationVO paginationVO = JsonUtil.getJsonToBean(paginationEmail, PaginationVO.class);
+                List<EmailReceiveListVO> listVO = JsonUtil.getJsonToList(entity, EmailReceiveListVO.class);
+                return ActionResult.page(listVO, paginationVO);
+            case "star":
+                List<EmailReceiveEntity> entity1 = emailReceiveService.getStarredList(paginationEmail);
+                PaginationVO paginationVo1 = JsonUtil.getJsonToBean(paginationEmail, PaginationVO.class);
+                List<EmailStarredListVO> listVo1 = JsonUtil.getJsonToList(entity1, EmailStarredListVO.class);
+                return ActionResult.page(listVo1, paginationVo1);
+            case "draft":
+                List<EmailSendEntity> entity2 = emailReceiveService.getDraftList(paginationEmail);
+                PaginationVO paginationVo2 = JsonUtil.getJsonToBean(paginationEmail, PaginationVO.class);
+                List<EmailDraftListVO> listVo2 = JsonUtil.getJsonToList(entity2, EmailDraftListVO.class);
+                return ActionResult.page(listVo2, paginationVo2);
+            case "sent":
+                List<EmailSendEntity> entity3 = emailReceiveService.getSentList(paginationEmail);
+                PaginationVO paginationVo3 = JsonUtil.getJsonToBean(paginationEmail, PaginationVO.class);
+                List<EmailSentListVO> listVo3 = JsonUtil.getJsonToList(entity3, EmailSentListVO.class);
+                return ActionResult.page(listVo3, paginationVo3);
+            default:
+                return ActionResult.fail(MsgCode.ETD106.get());
+        }
+    }
+
+    /**
+     * 鑾峰彇閭閰嶇疆
+     *
+     * @return
+     */
+    @Operation(summary = "鑾峰彇閭閰嶇疆")
+    @GetMapping("/Config")
+    @SaCheckPermission("extend.email")
+    public ActionResult<EmailCofigInfoVO> configInfo() {
+        EmailConfigEntity entity = emailReceiveService.getConfigInfo();
+        EmailCofigInfoVO vo = JsonUtil.getJsonToBean(entity, EmailCofigInfoVO.class);
+        if(vo==null){
+            vo=new EmailCofigInfoVO();
+        }
+        return ActionResult.success(vo);
+    }
+
+    /**
+     * 鑾峰彇閭欢淇℃伅
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鑾峰彇閭欢淇℃伅")
+    @GetMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<EmailInfoVO> info(@PathVariable("id") String id) throws DataException {
+        Object entity = emailReceiveService.getInfo(id);
+        EmailInfoVO vo = JsonUtil.getJsonToBeanEx(entity, EmailInfoVO.class);
+        return ActionResult.success(vo);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鍒犻櫎閭欢")
+    @DeleteMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult delete(@PathVariable("id") String id) {
+       boolean flag= emailReceiveService.delete(id);
+        if(!flag){
+            return ActionResult.fail(MsgCode.FA003.get());
+        }
+        return ActionResult.success(MsgCode.SU003.get());
+    }
+
+    /**
+     * 璁剧疆宸茶閭欢
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "璁剧疆宸茶閭欢")
+    @PutMapping("/{id}/Actions/Read")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> receiveRead(@PathVariable("id") String id) {
+        boolean flag= emailReceiveService.receiveRead(id, 1);
+        if(!flag){
+            return ActionResult.fail(MsgCode.FA007.get());
+        }
+        return ActionResult.success(MsgCode.SU005.get());
+    }
+
+    /**
+     * 璁剧疆鏈閭欢
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "璁剧疆鏈閭欢")
+    @PutMapping("/{id}/Actions/Unread")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> receiveUnread(@PathVariable("id") String id) {
+        boolean flag = emailReceiveService.receiveRead(id, 0);
+        if (!flag) {
+            return ActionResult.fail(MsgCode.FA007.get());
+        }
+        return ActionResult.success(MsgCode.SU005.get());
+    }
+
+    /**
+     * 璁剧疆鏄熸爣閭欢
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "璁剧疆鏄熸爣閭欢")
+    @PutMapping("/{id}/Actions/Star")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> receiveYesStarred(@PathVariable("id") String id) {
+        boolean flag = emailReceiveService.receiveStarred(id, 1);
+        if (!flag) {
+            return ActionResult.fail(MsgCode.FA007.get());
+        }
+        return ActionResult.success(MsgCode.SU005.get());
+    }
+
+    /**
+     * 璁剧疆鍙栨秷鏄熸爣
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "璁剧疆鍙栨秷鏄熸爣")
+    @PutMapping("/{id}/Actions/Unstar")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> receiveNoStarred(@PathVariable("id") String id) {
+        boolean flag = emailReceiveService.receiveStarred(id, 0);
+        if (!flag) {
+            return ActionResult.fail(MsgCode.FA007.get());
+        }
+        return ActionResult.success(MsgCode.SU005.get());
+    }
+
+    /**
+     * 鏀堕偖浠�
+     *
+     * @return
+     */
+    @Operation(summary = "鏀堕偖浠�")
+    @PostMapping("/Receive")
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> receive() {
+        EmailConfigEntity configEntity = emailReceiveService.getConfigInfo();
+        if (configEntity != null) {
+            MailAccount mailAccount = new MailAccount();
+            mailAccount.setAccount(configEntity.getAccount());
+            mailAccount.setPassword(configEntity.getPassword());
+            mailAccount.setPop3Host(configEntity.getPop3Host());
+            mailAccount.setPop3Port(configEntity.getPop3Port());
+            mailAccount.setSmtpHost(configEntity.getSmtpHost());
+            mailAccount.setSmtpPort(configEntity.getSmtpPort());
+            mailAccount.setSsl("1".equals(String.valueOf(configEntity.getEmailSsl())));
+
+            String checkResult = pop3Util.checkConnected(mailAccount);
+            if ("true".equals(checkResult)) {
+                int mailCount = emailReceiveService.receive(configEntity);
+                return ActionResult.success(MsgCode.SU005.get(), mailCount);
+            } else {
+                return ActionResult.fail(MsgCode.ETD107.get());
+            }
+        } else {
+            return ActionResult.fail(MsgCode.ETD108.get());
+        }
+    }
+
+    /**
+     * 瀛樿崏绋�
+     *
+     * @param emailSendCrForm 閭欢妯″瀷
+     * @return
+     */
+    @Operation(summary = "瀛樿崏绋�")
+    @PostMapping("/Actions/SaveDraft")
+    @Parameter(name = "emailSendCrForm", description = "閭欢妯″瀷",required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> saveDraft(@RequestBody @Valid EmailSendCrForm emailSendCrForm) {
+        EmailSendEntity entity = JsonUtil.getJsonToBean(emailSendCrForm, EmailSendEntity.class);
+        emailReceiveService.saveDraft(entity);
+        return ActionResult.success(MsgCode.SU002.get());
+    }
+
+    /**
+     * 鍙戦偖浠�
+     *
+     * @param emailCrForm 鍙戦�侀偖浠舵ā鍨�
+     * @return
+     */
+    @Operation(summary = "鍙戦偖浠�")
+    @PostMapping
+    @Parameter(name = "emailCrForm", description = "鍙戦�侀偖浠舵ā鍨�",required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> saveSent(@RequestBody @Valid EmailCrForm emailCrForm) {
+        EmailSendEntity entity = JsonUtil.getJsonToBean(emailCrForm, EmailSendEntity.class);
+        EmailConfigEntity configEntity = emailReceiveService.getConfigInfo();
+        if (configEntity != null) {
+            MailAccount mailAccount = new MailAccount();
+            mailAccount.setAccount(configEntity.getAccount());
+            mailAccount.setPassword(configEntity.getPassword());
+            mailAccount.setPop3Host(configEntity.getPop3Host());
+            mailAccount.setPop3Port(configEntity.getPop3Port());
+            mailAccount.setSmtpHost(configEntity.getSmtpHost());
+            mailAccount.setSmtpPort(configEntity.getSmtpPort());
+            mailAccount.setSsl(StringNumber.ONE.equals(String.valueOf(configEntity.getEmailSsl())));
+            int flag = emailReceiveService.saveSent(entity, configEntity);
+            if (flag == 0) {
+                return ActionResult.success(MsgCode.SU012.get());
+            } else {
+                return ActionResult.fail(MsgCode.ETD107.get());
+            }
+        } else {
+            return ActionResult.fail(MsgCode.ETD108.get());
+        }
+    }
+
+    /**
+     * 鏇存柊閭欢閰嶇疆
+     *
+     * @param emailCheckForm 閭欢閰嶇疆妯″瀷
+     * @return
+     */
+    @Operation(summary = "鏇存柊閭欢閰嶇疆")
+    @PutMapping("/Config")
+    @Parameter(name = "emailCheckForm", description = "閭欢閰嶇疆妯″瀷",required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> saveConfig(@RequestBody @Valid EmailCheckForm emailCheckForm) throws DataException {
+        EmailConfigEntity entity = JsonUtil.getJsonToBean(emailCheckForm, EmailConfigEntity.class);
+        emailReceiveService.saveConfig(entity);
+        return ActionResult.success(MsgCode.SU002.get());
+    }
+
+    /**
+     * 閭閰嶇疆-娴嬭瘯杩炴帴
+     *
+     * @param emailCheckForm 閭欢閰嶇疆妯″瀷
+     * @return
+     */
+    @Operation(summary = "閭閰嶇疆-娴嬭瘯杩炴帴")
+    @PostMapping("/Config/Actions/CheckMail")
+    @Parameter(name = "emailCheckForm", description = "閭欢閰嶇疆妯″瀷",required = true)
+    @SaCheckPermission("extend.email")
+    public ActionResult<Object> checkLogin(@RequestBody @Valid EmailCheckForm emailCheckForm) {
+        EmailConfigEntity entity = JsonUtil.getJsonToBean(emailCheckForm, EmailConfigEntity.class);
+        String result = emailReceiveService.checkLogin(entity);
+        if ("true".equals(result)) {
+            return ActionResult.success(MsgCode.SU017.get());
+        } else {
+            return ActionResult.fail(MsgCode.ETD107.get());
+        }
+    }
+
+    /**
+     * 鍒楄〃锛堟敹浠剁锛�
+     *
+     * @return
+     */
+    @Override
+    @GetMapping("/GetReceiveList")
+    public List<EmailReceiveEntity> getReceiveList(){
+        return emailReceiveService.getDashboardReceiveList();
+    }
+
+}

--
Gitblit v1.8.0