Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
9a6b680d
提交
9a6b680d
authored
5月 27, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
多邮箱配置
上级
2d24ab67
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
618 行增加
和
1 行删除
+618
-1
RemoteMailService.java
...main/java/org/dromara/resource/api/RemoteMailService.java
+10
-0
SysMailConfigController.java
.../dromara/resource/controller/SysMailConfigController.java
+104
-0
SysMailConfig.java
.../main/java/org/dromara/resource/domain/SysMailConfig.java
+107
-0
SysMailConfigBo.java
.../java/org/dromara/resource/domain/bo/SysMailConfigBo.java
+118
-0
SysMailConfigVo.java
.../java/org/dromara/resource/domain/vo/SysMailConfigVo.java
+129
-0
RemoteMailServiceImpl.java
...ava/org/dromara/resource/dubbo/RemoteMailServiceImpl.java
+32
-0
SysMailConfigMapper.java
...java/org/dromara/resource/mapper/SysMailConfigMapper.java
+15
-0
ISysMailConfigService.java
...a/org/dromara/resource/service/ISysMailConfigService.java
+21
-0
SysMailConfigServiceImpl.java
...omara/resource/service/impl/SysMailConfigServiceImpl.java
+62
-0
SysMailConfigMapper.xml
...rc/main/resources/mapper/resource/SysMailConfigMapper.xml
+7
-0
FileApproveServiceImpl.java
...dromara/workflow/service/impl/FileApproveServiceImpl.java
+13
-1
没有找到文件。
ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMailService.java
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
api
;
package
org
.
dromara
.
resource
.
api
;
import
cn.hutool.extra.mail.MailAccount
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.ServiceException
;
import
java.util.List
;
/**
/**
* 邮件服务
* 邮件服务
*
*
...
@@ -18,4 +21,11 @@ public interface RemoteMailService {
...
@@ -18,4 +21,11 @@ public interface RemoteMailService {
*/
*/
void
send
(
String
to
,
String
subject
,
String
text
)
throws
ServiceException
;
void
send
(
String
to
,
String
subject
,
String
text
)
throws
ServiceException
;
/**
* 获取邮件账户对象集合
*
* @return 邮件账户对象集合
*/
List
<
MailAccount
>
getMailAccountList
();
}
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysMailConfigController.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
jakarta.servlet.http.HttpServletResponse
;
import
jakarta.validation.constraints.NotEmpty
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.RequiredArgsConstructor
;
import
org.dromara.common.core.domain.R
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
org.dromara.common.excel.utils.ExcelUtil
;
import
org.dromara.common.log.annotation.Log
;
import
org.dromara.common.log.enums.BusinessType
;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.resource.domain.bo.SysMailConfigBo
;
import
org.dromara.resource.domain.vo.SysMailConfigVo
;
import
org.dromara.resource.service.ISysMailConfigService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* 邮箱配置
* 前端访问路由地址为:/resource/mailConfig
*
* @author hzh
* @date 2025-05-27
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/mailConfig"
)
public
class
SysMailConfigController
extends
BaseController
{
private
final
ISysMailConfigService
sysMailConfigService
;
/**
* 查询邮箱配置列表
*/
@SaCheckPermission
(
"resource:mailConfig:list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SysMailConfigVo
>
list
(
SysMailConfigBo
bo
,
PageQuery
pageQuery
)
{
return
sysMailConfigService
.
queryPageList
(
bo
,
pageQuery
);
}
/**
* 导出邮箱配置列表
*/
@SaCheckPermission
(
"resource:mailConfig:export"
)
@Log
(
title
=
"邮箱配置"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
SysMailConfigBo
bo
,
HttpServletResponse
response
)
{
List
<
SysMailConfigVo
>
list
=
sysMailConfigService
.
queryList
(
bo
);
ExcelUtil
.
exportExcel
(
list
,
"邮箱配置"
,
SysMailConfigVo
.
class
,
response
);
}
/**
* 获取邮箱配置详细信息
*
* @param mailConfigId 主键
*/
@SaCheckPermission
(
"resource:mailConfig:query"
)
@GetMapping
(
"/{mailConfigId}"
)
public
R
<
SysMailConfigVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
mailConfigId
)
{
return
R
.
ok
(
sysMailConfigService
.
queryById
(
mailConfigId
));
}
/**
* 新增邮箱配置
*/
@SaCheckPermission
(
"resource:mailConfig:add"
)
@Log
(
title
=
"邮箱配置"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
()
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
SysMailConfigBo
bo
)
{
return
toAjax
(
sysMailConfigService
.
insertByBo
(
bo
));
}
/**
* 修改邮箱配置
*/
@SaCheckPermission
(
"resource:mailConfig:edit"
)
@Log
(
title
=
"邮箱配置"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
()
public
R
<
Void
>
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
SysMailConfigBo
bo
)
{
return
toAjax
(
sysMailConfigService
.
updateByBo
(
bo
));
}
/**
* 删除邮箱配置
*
* @param mailConfigIds 主键串
*/
@SaCheckPermission
(
"resource:mailConfig:remove"
)
@Log
(
title
=
"邮箱配置"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{mailConfigIds}"
)
public
R
<
Void
>
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
mailConfigIds
)
{
return
toAjax
(
sysMailConfigService
.
deleteWithValidByIds
(
List
.
of
(
mailConfigIds
),
true
));
}
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysMailConfig.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
domain
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 邮箱配置对象 sys_mail_config
*
* @author hzh
* @date 2025-05-27
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"sys_mail_config"
)
public
class
SysMailConfig
extends
TenantEntity
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"mail_config_id"
)
private
Long
mailConfigId
;
/**
* SMTP服务器域名
*/
private
String
host
;
/**
* SMTP服务端口
*/
private
Integer
port
;
/**
* 是否需要用户名密码验证
*/
private
Boolean
auth
;
/**
* 用户名
*/
private
String
user
;
/**
* 密码
*/
private
String
pass
;
/**
* 发送方,遵循RFC-822标准
*/
@TableField
(
value
=
"`from`"
)
private
String
from
;
/**
* 是否打开调试模式,调试模式会显示与邮件服务器通信过程,默认不开启
*/
private
Boolean
debug
;
/**
* 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
*/
private
Boolean
starttlsEnable
;
/**
* 使用 SSL安全连接
*/
private
Boolean
sslEnable
;
/**
* SSL协议,多个协议用空格分隔
*/
private
String
sslProtocols
;
/**
* SMTP超时时长,单位毫秒,缺省值不超时
*/
private
Long
timeout
;
/**
* Socket连接超时值,单位毫秒,缺省值不超时
*/
private
Long
connectionTimeout
;
/**
* Socket写出超时值,单位毫秒,缺省值不超时
*/
private
Long
writeTimeout
;
/**
* 排序字段
*/
private
Integer
orderNum
;
/**
* 备注
*/
private
String
remark
;
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/bo/SysMailConfigBo.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
domain
.
bo
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
jakarta.validation.constraints.*
;
/**
* 邮箱配置业务对象 sys_mail_config
*
* @author hzh
* @date 2025-05-27
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
SysMailConfig
.
class
,
reverseConvertGenerate
=
false
)
public
class
SysMailConfigBo
extends
BaseEntity
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
mailConfigId
;
/**
* SMTP服务器域名
*/
@NotBlank
(
message
=
"SMTP服务器域名不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
host
;
/**
* SMTP服务端口
*/
@NotNull
(
message
=
"SMTP服务端口不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
port
;
/**
* 是否需要用户名密码验证
*/
@NotNull
(
message
=
"是否需要用户名密码验证不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Boolean
auth
;
/**
* 用户名
*/
@NotBlank
(
message
=
"用户名不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
user
;
/**
* 密码
*/
@NotBlank
(
message
=
"密码不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
pass
;
/**
* 发送方,遵循RFC-822标准
*/
@NotBlank
(
message
=
"发送方,遵循RFC-822标准不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
from
;
/**
* 是否打开调试模式,调试模式会显示与邮件服务器通信过程,默认不开启
*/
@NotNull
(
message
=
"是否打开调试模式,调试模式会显示与邮件服务器通信过程,默认不开启不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Boolean
debug
;
/**
* 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
*/
@NotNull
(
message
=
"使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Boolean
starttlsEnable
;
/**
* 使用 SSL安全连接
*/
@NotNull
(
message
=
"使用 SSL安全连接不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Boolean
sslEnable
;
/**
* SSL协议,多个协议用空格分隔
*/
private
String
sslProtocols
;
/**
* SMTP超时时长,单位毫秒,缺省值不超时
*/
@NotNull
(
message
=
"SMTP超时时长,单位毫秒,缺省值不超时不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
timeout
;
/**
* Socket连接超时值,单位毫秒,缺省值不超时
*/
@NotNull
(
message
=
"Socket连接超时值,单位毫秒,缺省值不超时不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
connectionTimeout
;
/**
* Socket写出超时值,单位毫秒,缺省值不超时
*/
@NotNull
(
message
=
"Socket写出超时值,单位毫秒,缺省值不超时不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
writeTimeout
;
/**
* 排序字段
*/
@NotNull
(
message
=
"排序字段不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
orderNum
;
/**
* 备注
*/
private
String
remark
;
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/vo/SysMailConfigVo.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
domain
.
vo
;
import
org.dromara.resource.domain.SysMailConfig
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
org.dromara.common.excel.annotation.ExcelDictFormat
;
import
org.dromara.common.excel.convert.ExcelDictConvert
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 邮箱配置视图对象 sys_mail_config
*
* @author hzh
* @date 2025-05-27
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
SysMailConfig
.
class
)
public
class
SysMailConfigVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@ExcelProperty
(
value
=
"主键"
)
private
Long
mailConfigId
;
/**
* SMTP服务器域名
*/
@ExcelProperty
(
value
=
"SMTP服务器域名"
)
private
String
host
;
/**
* SMTP服务端口
*/
@ExcelProperty
(
value
=
"SMTP服务端口"
)
private
Integer
port
;
/**
* 是否需要用户名密码验证
*/
@ExcelProperty
(
value
=
"是否需要用户名密码验证"
)
private
Boolean
auth
;
/**
* 用户名
*/
@ExcelProperty
(
value
=
"用户名"
)
private
String
user
;
/**
* 密码
*/
@ExcelProperty
(
value
=
"密码"
)
private
String
pass
;
/**
* 发送方,遵循RFC-822标准
*/
@ExcelProperty
(
value
=
"发送方,遵循RFC-822标准"
)
private
String
from
;
/**
* 是否打开调试模式,调试模式会显示与邮件服务器通信过程,默认不开启
*/
@ExcelProperty
(
value
=
"是否打开调试模式,调试模式会显示与邮件服务器通信过程,默认不开启"
)
private
Boolean
debug
;
/**
* 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
*/
@ExcelProperty
(
value
=
"使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接"
,
converter
=
ExcelDictConvert
.
class
)
@ExcelDictFormat
(
readConverterExp
=
"T=LS或SSL"
)
private
Boolean
starttlsEnable
;
/**
* 使用 SSL安全连接
*/
@ExcelProperty
(
value
=
"使用 SSL安全连接"
)
private
Boolean
sslEnable
;
/**
* SSL协议,多个协议用空格分隔
*/
@ExcelProperty
(
value
=
"SSL协议,多个协议用空格分隔"
)
private
String
sslProtocols
;
/**
* SMTP超时时长,单位毫秒,缺省值不超时
*/
@ExcelProperty
(
value
=
"SMTP超时时长,单位毫秒,缺省值不超时"
)
private
Long
timeout
;
/**
* Socket连接超时值,单位毫秒,缺省值不超时
*/
@ExcelProperty
(
value
=
"Socket连接超时值,单位毫秒,缺省值不超时"
)
private
Long
connectionTimeout
;
/**
* Socket写出超时值,单位毫秒,缺省值不超时
*/
@ExcelProperty
(
value
=
"Socket写出超时值,单位毫秒,缺省值不超时"
)
private
Long
writeTimeout
;
/**
* 排序字段
*/
@ExcelProperty
(
value
=
"排序字段"
)
private
Integer
orderNum
;
/**
* 备注
*/
@ExcelProperty
(
value
=
"备注"
)
private
String
remark
;
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMailServiceImpl.java
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
dubbo
;
package
org
.
dromara
.
resource
.
dubbo
;
import
cn.hutool.extra.mail.MailAccount
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.dubbo.config.annotation.DubboService
;
import
org.apache.dubbo.config.annotation.DubboService
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.common.mail.utils.MailUtils
;
import
org.dromara.common.mail.utils.MailUtils
;
import
org.dromara.resource.api.RemoteMailService
;
import
org.dromara.resource.api.RemoteMailService
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.resource.mapper.SysMailConfigMapper
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Comparator
;
import
java.util.List
;
/**
/**
* 邮件服务
* 邮件服务
*
*
...
@@ -19,6 +26,8 @@ import org.springframework.stereotype.Service;
...
@@ -19,6 +26,8 @@ import org.springframework.stereotype.Service;
@DubboService
@DubboService
public
class
RemoteMailServiceImpl
implements
RemoteMailService
{
public
class
RemoteMailServiceImpl
implements
RemoteMailService
{
private
final
SysMailConfigMapper
sysMailConfigMapper
;
/**
/**
* 发送邮件
* 发送邮件
*
*
...
@@ -31,4 +40,27 @@ public class RemoteMailServiceImpl implements RemoteMailService {
...
@@ -31,4 +40,27 @@ public class RemoteMailServiceImpl implements RemoteMailService {
MailUtils
.
sendText
(
to
,
subject
,
text
);
MailUtils
.
sendText
(
to
,
subject
,
text
);
}
}
@Override
public
List
<
MailAccount
>
getMailAccountList
()
{
List
<
SysMailConfig
>
configList
=
sysMailConfigMapper
.
selectList
();
StreamUtils
.
sorted
(
configList
,
Comparator
.
comparing
(
SysMailConfig:
:
getOrderNum
));
return
StreamUtils
.
toList
(
configList
,
config
->
{
MailAccount
account
=
new
MailAccount
()
.
setHost
(
config
.
getHost
())
.
setPort
(
config
.
getPort
())
.
setAuth
(
config
.
getAuth
())
.
setUser
(
config
.
getUser
())
.
setPass
(
config
.
getPass
())
.
setFrom
(
config
.
getFrom
())
.
setDebug
(
config
.
getDebug
())
.
setTimeout
(
config
.
getTimeout
())
.
setConnectionTimeout
(
config
.
getConnectionTimeout
())
.
setWriteTimeout
(
config
.
getWriteTimeout
())
.
setStarttlsEnable
(
config
.
getStarttlsEnable
())
.
setSslEnable
(
config
.
getSslEnable
());
account
.
setSslProtocols
(
config
.
getSslProtocols
());
return
account
;
});
}
}
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/mapper/SysMailConfigMapper.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
mapper
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.resource.domain.vo.SysMailConfigVo
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
/**
* 邮箱配置Mapper接口
*
* @author hzh
* @date 2025-05-27
*/
public
interface
SysMailConfigMapper
extends
BaseMapperPlus
<
SysMailConfig
,
SysMailConfigVo
>
{
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysMailConfigService.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
service
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.resource.domain.vo.SysMailConfigVo
;
import
org.dromara.resource.domain.bo.SysMailConfigBo
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.common.mybatis.service.IBaseService
;
import
java.util.Collection
;
import
java.util.List
;
/**
* 邮箱配置Service接口
*
* @author hzh
* @date 2025-05-27
*/
public
interface
ISysMailConfigService
extends
IBaseService
<
SysMailConfigVo
,
SysMailConfigBo
,
SysMailConfig
>{
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysMailConfigServiceImpl.java
0 → 100644
浏览文件 @
9a6b680d
package
org
.
dromara
.
resource
.
service
.
impl
;
import
org.dromara.common.core.utils.MapstructUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
org.dromara.resource.domain.bo.SysMailConfigBo
;
import
org.dromara.resource.domain.vo.SysMailConfigVo
;
import
org.dromara.resource.domain.SysMailConfig
;
import
org.dromara.resource.mapper.SysMailConfigMapper
;
import
org.dromara.resource.service.ISysMailConfigService
;
import
org.dromara.common.mybatis.service.AbstractBaseService
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Collection
;
/**
* 邮箱配置Service业务层处理
*
* @author hzh
* @date 2025-05-27
*/
@RequiredArgsConstructor
@Service
public
class
SysMailConfigServiceImpl
extends
AbstractBaseService
<
SysMailConfigVo
,
SysMailConfigBo
,
SysMailConfig
>
implements
ISysMailConfigService
{
private
final
SysMailConfigMapper
baseMapper
;
@Override
public
BaseMapperPlus
<
SysMailConfig
,
SysMailConfigVo
>
mapper
()
{
return
baseMapper
;
}
@Override
public
LambdaQueryWrapper
<
SysMailConfig
>
buildQueryWrapper
(
SysMailConfigBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
SysMailConfig
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getHost
()),
SysMailConfig:
:
getHost
,
bo
.
getHost
());
lqw
.
eq
(
bo
.
getPort
()
!=
null
,
SysMailConfig:
:
getPort
,
bo
.
getPort
());
lqw
.
eq
(
bo
.
getAuth
()
!=
null
,
SysMailConfig:
:
getAuth
,
bo
.
getAuth
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getUser
()),
SysMailConfig:
:
getUser
,
bo
.
getUser
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getPass
()),
SysMailConfig:
:
getPass
,
bo
.
getPass
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getFrom
()),
SysMailConfig:
:
getFrom
,
bo
.
getFrom
());
lqw
.
eq
(
bo
.
getDebug
()
!=
null
,
SysMailConfig:
:
getDebug
,
bo
.
getDebug
());
lqw
.
eq
(
bo
.
getStarttlsEnable
()
!=
null
,
SysMailConfig:
:
getStarttlsEnable
,
bo
.
getStarttlsEnable
());
lqw
.
eq
(
bo
.
getSslEnable
()
!=
null
,
SysMailConfig:
:
getSslEnable
,
bo
.
getSslEnable
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getSslProtocols
()),
SysMailConfig:
:
getSslProtocols
,
bo
.
getSslProtocols
());
lqw
.
eq
(
bo
.
getTimeout
()
!=
null
,
SysMailConfig:
:
getTimeout
,
bo
.
getTimeout
());
lqw
.
eq
(
bo
.
getConnectionTimeout
()
!=
null
,
SysMailConfig:
:
getConnectionTimeout
,
bo
.
getConnectionTimeout
());
lqw
.
eq
(
bo
.
getWriteTimeout
()
!=
null
,
SysMailConfig:
:
getWriteTimeout
,
bo
.
getWriteTimeout
());
lqw
.
eq
(
bo
.
getOrderNum
()
!=
null
,
SysMailConfig:
:
getOrderNum
,
bo
.
getOrderNum
());
return
lqw
;
}
}
ruoyi-modules/ruoyi-resource/src/main/resources/mapper/resource/SysMailConfigMapper.xml
0 → 100644
浏览文件 @
9a6b680d
<?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=
"org.dromara.resource.mapper.SysMailConfigMapper"
>
</mapper>
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FileApproveServiceImpl.java
浏览文件 @
9a6b680d
package
org
.
dromara
.
workflow
.
service
.
impl
;
package
org
.
dromara
.
workflow
.
service
.
impl
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.extra.mail.MailAccount
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
...
@@ -16,6 +17,7 @@ import org.dromara.common.core.utils.file.watermark.config.WatermarkConfig;
...
@@ -16,6 +17,7 @@ import org.dromara.common.core.utils.file.watermark.config.WatermarkConfig;
import
org.dromara.common.mail.utils.MailUtils
;
import
org.dromara.common.mail.utils.MailUtils
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
org.dromara.common.mybatis.service.AbstractBaseService
;
import
org.dromara.common.mybatis.service.AbstractBaseService
;
import
org.dromara.resource.api.RemoteMailService
;
import
org.dromara.workflow.api.domain.RemoteWorkflowService
;
import
org.dromara.workflow.api.domain.RemoteWorkflowService
;
import
org.dromara.workflow.api.domain.event.ProcessEvent
;
import
org.dromara.workflow.api.domain.event.ProcessEvent
;
import
org.dromara.workflow.api.domain.event.ProcessTaskEvent
;
import
org.dromara.workflow.api.domain.event.ProcessTaskEvent
;
...
@@ -51,6 +53,8 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
...
@@ -51,6 +53,8 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
private
final
FileApproveMapper
baseMapper
;
private
final
FileApproveMapper
baseMapper
;
@DubboReference
@DubboReference
private
final
RemoteWorkflowService
workflowService
;
private
final
RemoteWorkflowService
workflowService
;
@DubboReference
private
final
RemoteMailService
mailService
;
@Override
@Override
public
BaseMapperPlus
<
FileApprove
,
FileApproveVo
>
mapper
()
{
public
BaseMapperPlus
<
FileApprove
,
FileApproveVo
>
mapper
()
{
...
@@ -134,7 +138,15 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
...
@@ -134,7 +138,15 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
.
angle
(
45
)
.
angle
(
45
)
.
build
();
.
build
();
boolean
result
=
WatermarkUtil
.
addTextWatermark
(
originFile
,
watermarkFile
,
watermarkConfig
);
boolean
result
=
WatermarkUtil
.
addTextWatermark
(
originFile
,
watermarkFile
,
watermarkConfig
);
MailUtils
.
send
(
fa
.
getEmail
(),
"部门文件下载"
,
""
,
false
,
result
?
watermarkFile
:
originFile
);
List
<
MailAccount
>
accountList
=
mailService
.
getMailAccountList
();
for
(
MailAccount
account
:
accountList
)
{
try
{
MailUtils
.
send
(
account
,
fa
.
getEmail
(),
"部门文件下载"
,
""
,
false
,
result
?
watermarkFile
:
originFile
);
break
;
}
catch
(
Exception
e
)
{
continue
;
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
info
(
"邮件发送失败,邮箱{}"
,
fa
.
getEmail
());
log
.
info
(
"邮件发送失败,邮箱{}"
,
fa
.
getEmail
());
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论