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