From 29c5231526d7287d664ad72e3c67433f46497c55 Mon Sep 17 00:00:00 2001 From: vran Date: Tue, 29 Aug 2023 10:52:11 +0800 Subject: [PATCH] feat: add useSSL property to mail setting --- .../system/data/SystemEmailResponse.java | 2 + .../system/data/SystemEmailUpdateRequest.java | 3 + .../domain/system/service/SystemService.java | 22 +++---- .../core/infrastructure/mail/MailSender.java | 9 +++ dao/build.gradle | 2 +- .../databasir/dao/tables/SysMailTable.java | 13 +++-- .../databasir/dao/tables/pojos/SysMail.java | 21 ++++++- .../dao/tables/records/SysMailRecord.java | 58 +++++++++++++++---- .../java/com/databasir/dao/impl/BaseDao.java | 1 + .../db/migration/V1.4.8__sys_mail.sql | 2 + gradle/wrapper/gradle-wrapper.properties | 2 +- 11 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 dao/src/main/resources/db/migration/V1.4.8__sys_mail.sql diff --git a/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailResponse.java b/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailResponse.java index 52039c8..a3ef0df 100644 --- a/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailResponse.java +++ b/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailResponse.java @@ -17,5 +17,7 @@ public class SystemEmailResponse { private Boolean useSSL; + private Boolean useTls; + private LocalDateTime createAt; } diff --git a/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailUpdateRequest.java b/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailUpdateRequest.java index a47fa1f..a6f56c6 100644 --- a/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailUpdateRequest.java +++ b/core/src/main/java/com/databasir/core/domain/system/data/SystemEmailUpdateRequest.java @@ -26,4 +26,7 @@ public class SystemEmailUpdateRequest { @NotNull private Boolean useSSL; + @NotNull + private Boolean useTls; + } diff --git a/core/src/main/java/com/databasir/core/domain/system/service/SystemService.java b/core/src/main/java/com/databasir/core/domain/system/service/SystemService.java index 1c92d52..ddaab8e 100644 --- a/core/src/main/java/com/databasir/core/domain/system/service/SystemService.java +++ b/core/src/main/java/com/databasir/core/domain/system/service/SystemService.java @@ -24,16 +24,17 @@ public class SystemService { public Optional getEmailSetting() { return sysMailDao.selectOptionTopOne() - .map(mail -> { - SystemEmailResponse response = new SystemEmailResponse(); - response.setSmtpHost(mail.getSmtpHost()); - response.setSmtpPort(mail.getSmtpPort()); - response.setUsername(mail.getUsername()); - response.setCreateAt(mail.getCreateAt()); - response.setMailFrom(mail.getMailFrom()); - response.setUseSSL(mail.getUseSsl()); - return response; - }); + .map(mail -> { + SystemEmailResponse response = new SystemEmailResponse(); + response.setSmtpHost(mail.getSmtpHost()); + response.setSmtpPort(mail.getSmtpPort()); + response.setUsername(mail.getUsername()); + response.setCreateAt(mail.getCreateAt()); + response.setMailFrom(mail.getMailFrom()); + response.setUseSSL(mail.getUseSsl()); + response.setUseTls(mail.getUseTls()); + return response; + }); } public void deleteSystemEmail() { @@ -50,6 +51,7 @@ public class SystemService { sysMail.setUsername(request.getUsername()); sysMail.setMailFrom(request.getMailFrom()); sysMail.setUseSsl(request.getUseSSL()); + sysMail.setUseTls(request.getUseTls()); Optional idOpt = sysMailDao.selectOptionTopOne().map(SysMail::getId); idOpt.ifPresent(sysMail::setId); diff --git a/core/src/main/java/com/databasir/core/infrastructure/mail/MailSender.java b/core/src/main/java/com/databasir/core/infrastructure/mail/MailSender.java index 3a88777..5db33be 100644 --- a/core/src/main/java/com/databasir/core/infrastructure/mail/MailSender.java +++ b/core/src/main/java/com/databasir/core/infrastructure/mail/MailSender.java @@ -13,6 +13,7 @@ import javax.mail.internet.MimeMessage; import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; +import java.util.Properties; @Component public class MailSender { @@ -54,11 +55,19 @@ public class MailSender { } sender.setUsername(properties.getUsername()); sender.setPassword(properties.getPassword()); + Properties props = sender.getJavaMailProperties(); + props.put("mail.smtp.auth", "true"); + if (properties.getUseSsl()) { sender.setProtocol("smtps"); + props.put("mail.smtp.ssl.enable", "true"); } else { sender.setProtocol("smtp"); } + + if (properties.getUseTls()) { + props.put("mail.smtp.starttls.enable", "true"); + } sender.setDefaultEncoding(StandardCharsets.UTF_8.name()); return sender; } diff --git a/dao/build.gradle b/dao/build.gradle index 0e62ce6..8c7d4c1 100644 --- a/dao/build.gradle +++ b/dao/build.gradle @@ -52,7 +52,7 @@ jooq { forcedTypes { forcedType { name = 'BOOLEAN' - includeExpression = 'deleted|enabled|is.*|use_ssl' + includeExpression = 'deleted|enabled|is.*|use_ssl|use_tls' includeTypes = '.*' } forcedType { diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/SysMailTable.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/SysMailTable.java index b305d0c..add2e2b 100644 --- a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/SysMailTable.java +++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/SysMailTable.java @@ -15,7 +15,7 @@ import org.jooq.ForeignKey; import org.jooq.Identity; import org.jooq.Name; import org.jooq.Record; -import org.jooq.Row9; +import org.jooq.Row10; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -92,6 +92,11 @@ public class SysMailTable extends TableImpl { */ public final TableField MAIL_FROM = createField(DSL.name("mail_from"), SQLDataType.VARCHAR(512), this, ""); + /** + * The column databasir.sys_mail.use_tls. + */ + public final TableField USE_TLS = createField(DSL.name("use_tls"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.inline("0", SQLDataType.BOOLEAN)), this, ""); + private SysMailTable(Name alias, Table aliased) { this(alias, aliased, null); } @@ -167,11 +172,11 @@ public class SysMailTable extends TableImpl { } // ------------------------------------------------------------------------- - // Row9 type methods + // Row10 type methods // ------------------------------------------------------------------------- @Override - public Row9 fieldsRow() { - return (Row9) super.fieldsRow(); + public Row10 fieldsRow() { + return (Row10) super.fieldsRow(); } } diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/SysMail.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/SysMail.java index b15b8ce..23f5fb1 100644 --- a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/SysMail.java +++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/pojos/SysMail.java @@ -25,6 +25,7 @@ public class SysMail implements Serializable { private LocalDateTime updateAt; private LocalDateTime createAt; private String mailFrom; + private Boolean useTls; public SysMail() {} @@ -38,6 +39,7 @@ public class SysMail implements Serializable { this.updateAt = value.updateAt; this.createAt = value.createAt; this.mailFrom = value.mailFrom; + this.useTls = value.useTls; } public SysMail( @@ -49,7 +51,8 @@ public class SysMail implements Serializable { Boolean useSsl, LocalDateTime updateAt, LocalDateTime createAt, - String mailFrom + String mailFrom, + Boolean useTls ) { this.id = id; this.username = username; @@ -60,6 +63,7 @@ public class SysMail implements Serializable { this.updateAt = updateAt; this.createAt = createAt; this.mailFrom = mailFrom; + this.useTls = useTls; } /** @@ -188,6 +192,20 @@ public class SysMail implements Serializable { this.mailFrom = mailFrom; } + /** + * Getter for databasir.sys_mail.use_tls. + */ + public Boolean getUseTls() { + return this.useTls; + } + + /** + * Setter for databasir.sys_mail.use_tls. + */ + public void setUseTls(Boolean useTls) { + this.useTls = useTls; + } + @Override public String toString() { StringBuilder sb = new StringBuilder("SysMail ("); @@ -201,6 +219,7 @@ public class SysMail implements Serializable { sb.append(", ").append(updateAt); sb.append(", ").append(createAt); sb.append(", ").append(mailFrom); + sb.append(", ").append(useTls); sb.append(")"); return sb.toString(); diff --git a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/SysMailRecord.java b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/SysMailRecord.java index 82bd2e5..cc757db 100644 --- a/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/SysMailRecord.java +++ b/dao/generated-src/jooq/main/java/com/databasir/dao/tables/records/SysMailRecord.java @@ -11,8 +11,8 @@ import java.time.LocalDateTime; import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record9; -import org.jooq.Row9; +import org.jooq.Record10; +import org.jooq.Row10; import org.jooq.impl.UpdatableRecordImpl; @@ -20,7 +20,7 @@ import org.jooq.impl.UpdatableRecordImpl; * This class is generated by jOOQ. */ @SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SysMailRecord extends UpdatableRecordImpl implements Record9 { +public class SysMailRecord extends UpdatableRecordImpl implements Record10 { private static final long serialVersionUID = 1L; @@ -150,6 +150,20 @@ public class SysMailRecord extends UpdatableRecordImpl implements return (String) get(8); } + /** + * Setter for databasir.sys_mail.use_tls. + */ + public void setUseTls(Boolean value) { + set(9, value); + } + + /** + * Getter for databasir.sys_mail.use_tls. + */ + public Boolean getUseTls() { + return (Boolean) get(9); + } + // ------------------------------------------------------------------------- // Primary key information // ------------------------------------------------------------------------- @@ -160,17 +174,17 @@ public class SysMailRecord extends UpdatableRecordImpl implements } // ------------------------------------------------------------------------- - // Record9 type implementation + // Record10 type implementation // ------------------------------------------------------------------------- @Override - public Row9 fieldsRow() { - return (Row9) super.fieldsRow(); + public Row10 fieldsRow() { + return (Row10) super.fieldsRow(); } @Override - public Row9 valuesRow() { - return (Row9) super.valuesRow(); + public Row10 valuesRow() { + return (Row10) super.valuesRow(); } @Override @@ -218,6 +232,11 @@ public class SysMailRecord extends UpdatableRecordImpl implements return SysMailTable.SYS_MAIL.MAIL_FROM; } + @Override + public Field field10() { + return SysMailTable.SYS_MAIL.USE_TLS; + } + @Override public Integer component1() { return getId(); @@ -263,6 +282,11 @@ public class SysMailRecord extends UpdatableRecordImpl implements return getMailFrom(); } + @Override + public Boolean component10() { + return getUseTls(); + } + @Override public Integer value1() { return getId(); @@ -308,6 +332,11 @@ public class SysMailRecord extends UpdatableRecordImpl implements return getMailFrom(); } + @Override + public Boolean value10() { + return getUseTls(); + } + @Override public SysMailRecord value1(Integer value) { setId(value); @@ -363,7 +392,13 @@ public class SysMailRecord extends UpdatableRecordImpl implements } @Override - public SysMailRecord values(Integer value1, String value2, String value3, String value4, Integer value5, Boolean value6, LocalDateTime value7, LocalDateTime value8, String value9) { + public SysMailRecord value10(Boolean value) { + setUseTls(value); + return this; + } + + @Override + public SysMailRecord values(Integer value1, String value2, String value3, String value4, Integer value5, Boolean value6, LocalDateTime value7, LocalDateTime value8, String value9, Boolean value10) { value1(value1); value2(value2); value3(value3); @@ -373,6 +408,7 @@ public class SysMailRecord extends UpdatableRecordImpl implements value7(value7); value8(value8); value9(value9); + value10(value10); return this; } @@ -390,7 +426,7 @@ public class SysMailRecord extends UpdatableRecordImpl implements /** * Create a detached, initialised SysMailRecord */ - public SysMailRecord(Integer id, String username, String password, String smtpHost, Integer smtpPort, Boolean useSsl, LocalDateTime updateAt, LocalDateTime createAt, String mailFrom) { + public SysMailRecord(Integer id, String username, String password, String smtpHost, Integer smtpPort, Boolean useSsl, LocalDateTime updateAt, LocalDateTime createAt, String mailFrom, Boolean useTls) { super(SysMailTable.SYS_MAIL); setId(id); @@ -402,6 +438,7 @@ public class SysMailRecord extends UpdatableRecordImpl implements setUpdateAt(updateAt); setCreateAt(createAt); setMailFrom(mailFrom); + setUseTls(useTls); } /** @@ -420,6 +457,7 @@ public class SysMailRecord extends UpdatableRecordImpl implements setUpdateAt(value.getUpdateAt()); setCreateAt(value.getCreateAt()); setMailFrom(value.getMailFrom()); + setUseTls(value.getUseTls()); } } } diff --git a/dao/src/main/java/com/databasir/dao/impl/BaseDao.java b/dao/src/main/java/com/databasir/dao/impl/BaseDao.java index f3401c0..62bef6f 100644 --- a/dao/src/main/java/com/databasir/dao/impl/BaseDao.java +++ b/dao/src/main/java/com/databasir/dao/impl/BaseDao.java @@ -7,6 +7,7 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.jooq.Record; import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; diff --git a/dao/src/main/resources/db/migration/V1.4.8__sys_mail.sql b/dao/src/main/resources/db/migration/V1.4.8__sys_mail.sql new file mode 100644 index 0000000..27064f3 --- /dev/null +++ b/dao/src/main/resources/db/migration/V1.4.8__sys_mail.sql @@ -0,0 +1,2 @@ +alter table sys_mail + add column `use_tls` BOOLEAN NOT NULL DEFAULT FALSE; \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 69a9715..ffed3a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists