24282 2 лет назад
Родитель
Сommit
c72ddc23d7

+ 1 - 1
src/main/java/com/fjhx/config/code/CodeGeneration.java

@@ -25,7 +25,7 @@ public class CodeGeneration {
                 })
                 })
                 .strategyConfig(builder -> builder
                 .strategyConfig(builder -> builder
                         // 设置需要生成的表名
                         // 设置需要生成的表名
-                        .addInclude("sys_config")
+                        .addInclude("email_info")
                         .entityBuilder()
                         .entityBuilder()
                         .disableSerialVersionUID()
                         .disableSerialVersionUID()
                         .superClass(BaseEntity.class)
                         .superClass(BaseEntity.class)

+ 5 - 2
src/main/java/com/fjhx/controller/AccountController.java

@@ -1,6 +1,7 @@
 package com.fjhx.controller;
 package com.fjhx.controller;
 
 
 import com.fjhx.base.R;
 import com.fjhx.base.R;
+import com.fjhx.entity.EmailInfo;
 import com.fjhx.service.IAccountService;
 import com.fjhx.service.IAccountService;
 import com.fjhx.vo.BindingVo;
 import com.fjhx.vo.BindingVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,9 +22,11 @@ public class AccountController {
      */
      */
     @PostMapping("/binding")
     @PostMapping("/binding")
     public R binding(@RequestBody BindingVo bindingVo) {
     public R binding(@RequestBody BindingVo bindingVo) {
-        accountService.binding(bindingVo);
-        return R.ok();
+        EmailInfo emailInfo = accountService.binding(bindingVo);
+        return R.ok(emailInfo);
     }
     }
 
 
 
 
+
+
 }
 }

+ 57 - 0
src/main/java/com/fjhx/entity/EmailInfo.java

@@ -0,0 +1,57 @@
+package com.fjhx.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 邮箱配置列表
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-20
+ */
+@Getter
+@Setter
+@TableName("email_info")
+public class EmailInfo extends BaseEntity {
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 密匙
+     */
+    private String secretKey;
+
+    /**
+     * imap端口号
+     */
+    private Integer imapPort;
+
+    /**
+     * imap路径
+     */
+    private String imapHost;
+
+    /**
+     * smtp端口号
+     */
+    private Integer smtpPort;
+
+    /**
+     * smtp路径
+     */
+    private String smtpHost;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    private Integer delFlag;
+
+
+}

+ 16 - 0
src/main/java/com/fjhx/mapper/EmailInfoMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper;
+
+import com.fjhx.entity.EmailInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 邮箱配置列表 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-20
+ */
+public interface EmailInfoMapper extends BaseMapper<EmailInfo> {
+
+}

+ 5 - 0
src/main/java/com/fjhx/mapper/xml/EmailInfoMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.EmailInfoMapper">
+
+</mapper>

+ 2 - 1
src/main/java/com/fjhx/service/IAccountService.java

@@ -1,10 +1,11 @@
 package com.fjhx.service;
 package com.fjhx.service;
 
 
+import com.fjhx.entity.EmailInfo;
 import com.fjhx.vo.BindingVo;
 import com.fjhx.vo.BindingVo;
 
 
 public interface IAccountService {
 public interface IAccountService {
 
 
-    void binding(BindingVo bindingVo);
+    EmailInfo binding(BindingVo bindingVo);
 
 
 
 
 }
 }

+ 16 - 0
src/main/java/com/fjhx/service/IEmailInfoService.java

@@ -0,0 +1,16 @@
+package com.fjhx.service;
+
+import com.fjhx.entity.EmailInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 邮箱配置列表 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-20
+ */
+public interface IEmailInfoService extends IService<EmailInfo> {
+
+}

+ 60 - 6
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -1,30 +1,52 @@
 package com.fjhx.service.impl;
 package com.fjhx.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.lang.Assert;
-import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.config.http.EmailEngineUtil;
 import com.fjhx.config.http.EmailEngineUtil;
+import com.fjhx.entity.EmailInfo;
 import com.fjhx.service.IAccountService;
 import com.fjhx.service.IAccountService;
-import com.fjhx.vo.BindingVo;
-import com.fjhx.vo.VerifyResult;
-import com.fjhx.vo.VerifyVo;
+import com.fjhx.service.IEmailInfoService;
+import com.fjhx.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 @Service
 @Service
 public class AccountServiceImpl implements IAccountService {
 public class AccountServiceImpl implements IAccountService {
 
 
+    @Autowired
+    private IEmailInfoService emailInfoService;
+
     @Override
     @Override
-    public void binding(BindingVo bindingVo) {
+    public EmailInfo binding(BindingVo bindingVo) {
+
+        EmailInfo emailInfo = emailInfoService.getOne(Wrappers.<EmailInfo>lambdaQuery()
+                .eq(EmailInfo::getEmail, bindingVo.getEmail()));
+        // 如果存在,直接返回邮箱信息
+        if (emailInfo != null) {
+            return emailInfo;
+        }
+
         // 验证邮件配置参数
         // 验证邮件配置参数
         VerifyVo verifyVo = createVerifyVo(bindingVo);
         VerifyVo verifyVo = createVerifyVo(bindingVo);
         // 验证邮件配置是否正确
         // 验证邮件配置是否正确
         VerifyResult verifyResult = EmailEngineUtil.post("v1/verifyAccount", verifyVo, VerifyResult.class);
         VerifyResult verifyResult = EmailEngineUtil.post("v1/verifyAccount", verifyVo, VerifyResult.class);
         // 解析验证结果
         // 解析验证结果
         parsingVerifyResult(verifyResult);
         parsingVerifyResult(verifyResult);
+        // 生成添加账号入参
+        AddAccountVo addAccountVo = createAddAccountVo(verifyVo, bindingVo.getEmail());
+        // 添加邮箱
+        AddAccountResult addAccountResult = EmailEngineUtil.post("v1/account", addAccountVo, AddAccountResult.class);
+        // 验证邮箱添加状态
+        parsingAddAccountResult(addAccountResult);
+        // mysql添加邮箱
+        emailInfo = addEmailInfo(bindingVo);
 
 
 
 
-        System.err.println(JSONObject.toJSONString(verifyResult));
+        return emailInfo;
     }
     }
 
 
+
     private VerifyVo createVerifyVo(BindingVo bindingVo) {
     private VerifyVo createVerifyVo(BindingVo bindingVo) {
         VerifyVo verifyVo = new VerifyVo();
         VerifyVo verifyVo = new VerifyVo();
 
 
@@ -69,4 +91,36 @@ public class AccountServiceImpl implements IAccountService {
         Assert.isTrue(smtp.getSuccess(), "smtp解析失败:error:{} ;code:{};", smtp.getError(), smtp.getCode());
         Assert.isTrue(smtp.getSuccess(), "smtp解析失败:error:{} ;code:{};", smtp.getError(), smtp.getCode());
     }
     }
 
 
+    /**
+     * 生成添加账号入参
+     */
+    private AddAccountVo createAddAccountVo(VerifyVo verifyVo, String email) {
+        AddAccountVo addAccountVo = BeanUtil.copyProperties(verifyVo, AddAccountVo.class);
+        addAccountVo.setAccount(email);
+        addAccountVo.setName(email);
+        addAccountVo.setEmail(email);
+        addAccountVo.setPath("*");
+        return addAccountVo;
+    }
+
+    /**
+     * 验证添加状态
+     */
+    private void parsingAddAccountResult(AddAccountResult addAccountResult) {
+        String state = addAccountResult.getState();
+
+        Assert.isTrue("new".equals(state),
+                "邮箱添加失败,account:{},state:{}",
+                addAccountResult.getAccount(), addAccountResult.getState());
+    }
+
+    /**
+     * 添加邮件信息
+     */
+    private EmailInfo addEmailInfo(BindingVo bindingVo) {
+        EmailInfo emailInfo = BeanUtil.copyProperties(bindingVo, EmailInfo.class);
+        emailInfoService.save(emailInfo);
+        return emailInfo;
+    }
+
 }
 }

+ 20 - 0
src/main/java/com/fjhx/service/impl/EmailInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fjhx.service.impl;
+
+import com.fjhx.entity.EmailInfo;
+import com.fjhx.mapper.EmailInfoMapper;
+import com.fjhx.service.IEmailInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 邮箱配置列表 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-20
+ */
+@Service
+public class EmailInfoServiceImpl extends ServiceImpl<EmailInfoMapper, EmailInfo> implements IEmailInfoService {
+
+}

+ 12 - 0
src/main/java/com/fjhx/vo/AddAccountResult.java

@@ -0,0 +1,12 @@
+package com.fjhx.vo;
+
+import lombok.Data;
+
+@Data
+public class AddAccountResult {
+
+    private String account;
+
+    private String state;
+
+}

+ 15 - 0
src/main/java/com/fjhx/vo/AddAccountVo.java

@@ -0,0 +1,15 @@
+package com.fjhx.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AddAccountVo extends VerifyVo {
+
+    private String account;
+    private String name;
+    private String email;
+    private String path;
+
+}

+ 4 - 0
src/main/resources/application.yml

@@ -5,6 +5,10 @@ spring:
   profiles:
   profiles:
     active: pro
     active: pro
 
 
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
+
   datasource:
   datasource:
     druid:
     druid:
       # 初始连接数
       # 初始连接数