浏览代码

邮件服务数据有业务数据状态同步

chenkq 1 周之前
父节点
当前提交
8d3f1ab7e9

+ 102 - 0
java/storlead-mail/storlead-mail-api/src/main/java/com/storlead/mail/controller/mkt/MktEmailCccountApiController.java

@@ -0,0 +1,102 @@
+package com.storlead.mail.controller.mkt;
+
+import com.storlead.framework.common.dto.page.PageDTO;
+import com.storlead.framework.common.result.Result;
+import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
+import com.storlead.mail.webclient.client.MktAccountRemoteClient;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 营销邮箱账户(转发独立邮件服务 /mkt/account/**)。
+ */
+@Log4j2
+@RestController
+@RequestMapping("/mkt/email/account")
+@Api(tags = "营销邮件: 邮箱账户")
+public class MktEmailCccountApiController {
+
+    private static final String SCENE_MKT = "MKT";
+    private static final String SCOPE_ORG = "ORG";
+    private static final String SCOPE_PERSONAL = "PERSONAL";
+
+    @Resource
+    private MktAccountRemoteClient mktAccountRemoteClient;
+
+    @PostMapping("/page_list")
+    @ApiOperation("获取营销邮箱配置信息")
+    public Result<?> pageList(PageDTO dto) {
+        return mktAccountRemoteClient.pageList(dto);
+    }
+
+    @PostMapping("/list")
+    @ApiOperation("营销邮箱账户列表")
+    public Result<?> list(Long orgId) {
+        return mktAccountRemoteClient.list(orgId);
+    }
+
+    @PostMapping("/save")
+    @ApiOperation("保存/修改营销邮箱")
+    public Result<?> save(@RequestBody SmtpPopSettingsEntity entity) {
+        applyMktDefaults(entity);
+        return mktAccountRemoteClient.save(entity);
+    }
+
+    @PostMapping("/delete")
+    @ApiOperation("删除营销邮箱")
+    public Result<?> delete(Long id) {
+        return mktAccountRemoteClient.delete(id);
+    }
+
+    @PostMapping("/default_use")
+    @ApiOperation("设置默认营销发信账户")
+    public Result<?> defaultUse(Long id) {
+        return mktAccountRemoteClient.defaultUse(id);
+    }
+
+    @PostMapping("/test_connect")
+    @ApiOperation("测试营销邮箱连通性")
+    public Result<?> testConnect(@RequestBody SmtpPopSettingsEntity mailSet) {
+        applyMktDefaults(mailSet);
+        return mktAccountRemoteClient.testConnect(mailSet);
+    }
+
+    /**
+     * 营销账户默认必填:scene 固定 MKT,避免落入 CRM;其余空值补默认。
+     */
+    private void applyMktDefaults(SmtpPopSettingsEntity entity) {
+        if (entity == null) {
+            return;
+        }
+        entity.setScene(SCENE_MKT);
+        if (!StringUtils.hasText(entity.getAccountScope())) {
+            entity.setAccountScope(entity.getOrgId() != null ? SCOPE_ORG : SCOPE_PERSONAL);
+        }
+        if (entity.getEnableReceive() == null) {
+            entity.setEnableReceive(0);
+        }
+        if (entity.getUseDefault() == null) {
+            entity.setUseDefault(0);
+        }
+        if (entity.getIsAutoReply() == null) {
+            entity.setIsAutoReply(0);
+        }
+        if (entity.getIsDelete() == null) {
+            entity.setIsDelete(0);
+        }
+        if (entity.getEnabled() == null) {
+            entity.setEnabled(Boolean.TRUE);
+        }
+        if (entity.getIsDeleteMail() == null) {
+            entity.setIsDeleteMail(0);
+        }
+    }
+}