Commit e2c3cc62 by zhangxingmin

邮箱服务相关接口

parent 61f5a30c
### 通用开发环境 ###
# IDE 配置
.idea/
.vscode/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# 编辑器临时文件
*~
~$*
*.tmp
*.bak
*.swp
### 操作系统文件 ###
# macOS
.DS_Store
.AppleDouble
.LSOverride
._*
.Spotlight-V100
.Trashes
# Windows
Thumbs.db
ehthumbs.db
[Dd]esktop.ini
$RECYCLE.BIN/
# Linux
.directory
.trash-*
### 编程语言相关 ###
# Java
*.class
*.jar
*.war
*.ear
*.log
target/
build/
out/
bin/
# Python
__pycache__/
*.pyc
*.pyo
*.pyd
*.pyc
env/
venv/
.python-version
# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnp/
.pnp.js
# C/C++
*.o
*.ko
*.obj
*.exe
*.dll
*.so
*.dylib
# Rust
/target/
**/*.rs.bk
### 构建系统 ###
# Maven
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
# Gradle
.gradle/
build/
!gradle/wrapper/gradle-wrapper.jar
# Android
*.apk
*.ap_
*.dex
*.class
gen/
bin/
### 日志文件 ###
*.log
logs/
*.logs
### 测试文件 ###
coverage/
.nyc_output/
test-results/
### 系统文件 ###
*.cab
*.msi
*.msix
*.msm
*.msp
### 文档文件 ###
*.pdf
*.doc
*.docx
*.xls
*.xlsx
*.ppt
*.pptx
### 压缩文件 ###
*.zip
*.tar.gz
*.7z
*.rar
*.gz
### 自定义规则 ###
# 项目特定文件
.env
config.local.yml
secrets.ini
# 临时文件
temp/
tmp/
dump.rdb
# 大文件
*.large
*.h5
*.dat
# 排除特定文件
**/pom.properties
**/inputFiles.lst
**/createdFiles.lst
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../../../:\soft\ideaproject\v2\yd-email\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="yd-email-api" />
<module name="yd-email-service" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="yd-releases" />
<option name="name" value="yd-releases" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="yd-snapshots" />
<option name="name" value="yd-snapshots" />
<option name="url" value="http://139.224.145.34:8081/repository/yd-maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
...@@ -11,5 +11,85 @@ ...@@ -11,5 +11,85 @@
<artifactId>yd-email-api</artifactId> <artifactId>yd-email-api</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!--对于bootstrap.properties/bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Jackson 数据绑定库 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Jackson 注解支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<!-- Java 8 时间类型支持 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!-- 实体类模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-email-service</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${springboot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
<mainClass>com.yd.insurance.base.api.BaseApiApplication</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> </project>
package com.yd.email.api;
import com.yd.common.constant.ServerNameConstants;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.**.dao")
@EnableFeignClients(basePackages = "com.yd")
public class EmailApiApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(EmailApiApplication.class)
.properties("spring.application.name="+ ServerNameConstants.ydEmailApi)
.build().run(args);
System.out.println("(♥◠‿◠)ノ゙ yd-email-api启动成功 ლ(´ڡ`ლ)゙ ");
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailContactService;
import com.yd.email.feign.client.ApiEmailContactFeignClient;
import com.yd.email.feign.request.ApiEmailContactAddRequest;
import com.yd.email.feign.request.ApiEmailContactEditRequest;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactDetailResponse;
import com.yd.email.feign.response.ApiEmailContactPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 联系人信息(存储收件人信息)
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailContact")
@Validated
public class ApiEmailContactController implements ApiEmailContactFeignClient {
@Autowired
private ApiEmailContactService apiEmailContactService;
/**
* 分页查询-联系人(收件人)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailContactPageResponse>> page(ApiEmailContactPageRequest request) {
return apiEmailContactService.page(request);
}
/**
* 添加-联系人(收件人)配置
* @param request
* @return
*/
@Override
public Result add(ApiEmailContactAddRequest request) {
return apiEmailContactService.add(request);
}
/**
* 编辑-联系人(收件人)配置
* @param request
* @return
*/
@Override
public Result edit(ApiEmailContactEditRequest request) {
return apiEmailContactService.edit(request);
}
/**
* 详情-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@Override
public Result<ApiEmailContactDetailResponse> detail(String contactBizId) {
return apiEmailContactService.detail(contactBizId);
}
/**
* 删除-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@Override
public Result del(String contactBizId) {
return apiEmailContactService.del(contactBizId);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailContactImportService;
import com.yd.email.feign.client.ApiEmailContactImportFeignClient;
import com.yd.email.feign.request.ApiEmailContactImportEditRequest;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.request.ApiEmailContactImportSelectAddRequest;
import com.yd.email.feign.response.ApiEmailContactImportPageResponse;
import com.yd.email.feign.response.ApiEmailContactImportResponse;
import com.yd.email.feign.response.ApiEmailContactImportSelectAddResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 邮件联系人导入临时表信息
*
* @author zxm
* @since 2025-09-23
*/
@RestController
@RequestMapping("/emailContactImport")
@Validated
public class ApiEmailContactImportController implements ApiEmailContactImportFeignClient {
@Autowired
private ApiEmailContactImportService apiEmailContactImportService;
/**
* 分页查询-邮件联系人导入的列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailContactImportPageResponse>> page(ApiEmailContactImportPageRequest request) {
return apiEmailContactImportService.page(request);
}
/**
* 添加-选择联系人(写邮件选择联系人的时候保存的接口)
* @param request
* @return
*/
@Override
public Result<ApiEmailContactImportSelectAddResponse> add(ApiEmailContactImportSelectAddRequest request) {
return apiEmailContactImportService.add(request);
}
/**
* 编辑-邮件联系人导入信息
* @param request
* @return
*/
@Override
public Result edit(ApiEmailContactImportEditRequest request) {
return apiEmailContactImportService.edit(request);
}
/**
* 详情-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@Override
public Result<ApiEmailContactImportResponse> detail(String importBizId) {
return apiEmailContactImportService.detail(importBizId);
}
/**
* 删除-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@Override
public Result del(String importBizId) {
return apiEmailContactImportService.del(importBizId);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailProviderConfigService;
import com.yd.email.feign.client.ApiEmailProviderConfigFeignClient;
import com.yd.email.feign.request.ApiEmailProviderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailProviderConfigPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* SMTP邮箱服务商配置信息(存储不同邮箱服务商的SMTP配置信息)
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailProviderConfig")
@Validated
public class ApiEmailProviderConfigController implements ApiEmailProviderConfigFeignClient {
@Autowired
private ApiEmailProviderConfigService apiEmailProviderConfigService;
/**
* 分页查询-邮箱服务商
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailProviderConfigPageResponse>> page(ApiEmailProviderConfigPageRequest request) {
return apiEmailProviderConfigService.page(request);
}
/**
* 添加-邮箱服务商
* @param request
* @return
*/
@Override
public Result add(ApiEmailProviderConfigAddRequest request) {
return apiEmailProviderConfigService.add(request);
}
/**
* 编辑-邮箱服务商
* @param request
* @return
*/
@Override
public Result edit(ApiEmailProviderConfigEditRequest request) {
return apiEmailProviderConfigService.edit(request);
}
/**
* 详情-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@Override
public Result<ApiEmailProviderConfigDetailResponse> detail(String providerBizId) {
return apiEmailProviderConfigService.detail(providerBizId);
}
/**
* 删除-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@Override
public Result del(String providerBizId) {
return apiEmailProviderConfigService.del(providerBizId);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailSenderConfigService;
import com.yd.email.feign.client.ApiEmailSenderConfigFeignClient;
import com.yd.email.feign.request.ApiEmailSenderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailSenderConfigPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 发件人配置信息
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailSenderConfig")
@Validated
public class ApiEmailSenderConfigController implements ApiEmailSenderConfigFeignClient {
@Autowired
private ApiEmailSenderConfigService apiEmailSenderConfigService;
/**
* 分页查询-发件人
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailSenderConfigPageResponse>> page(ApiEmailSenderConfigPageRequest request) {
return apiEmailSenderConfigService.page(request);
}
/**
* 添加-发件人配置
* @param request
* @return
*/
@Override
public Result add(ApiEmailSenderConfigAddRequest request) {
return apiEmailSenderConfigService.add(request);
}
/**
* 编辑-发件人配置
* @param request
* @return
*/
@Override
public Result edit(ApiEmailSenderConfigEditRequest request) {
return apiEmailSenderConfigService.edit(request);
}
/**
* 详情-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@Override
public Result<ApiEmailSenderConfigDetailResponse> detail(String senderBizId) {
return apiEmailSenderConfigService.detail(senderBizId);
}
/**
* 删除-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@Override
public Result del(String senderBizId) {
return apiEmailSenderConfigService.del(senderBizId);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailVariableService;
import com.yd.email.feign.client.ApiEmailVariableFeignClient;
import com.yd.email.feign.request.ApiEmailVariableAddRequest;
import com.yd.email.feign.request.ApiEmailVariableEditRequest;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariableDetailResponse;
import com.yd.email.feign.response.ApiEmailVariablePageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 变量信息(邮件内容占位符)
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailVariable")
@Validated
public class ApiEmailVariableController implements ApiEmailVariableFeignClient {
@Autowired
private ApiEmailVariableService apiEmailVariableService;
/**
* 分页查询-变量
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailVariablePageResponse>> page(ApiEmailVariablePageRequest request) {
return apiEmailVariableService.page(request);
}
/**
* 添加-变量
* @param request
* @return
*/
@Override
public Result add(ApiEmailVariableAddRequest request) {
return apiEmailVariableService.add(request);
}
/**
* 编辑-变量
* @param request
* @return
*/
@Override
public Result edit(ApiEmailVariableEditRequest request) {
return apiEmailVariableService.edit(request);
}
/**
* 详情-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@Override
public Result<ApiEmailVariableDetailResponse> detail(String variableBizId) {
return apiEmailVariableService.detail(variableBizId);
}
/**
* 删除-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@Override
public Result del(String variableBizId) {
return apiEmailVariableService.detail(variableBizId);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailVariableGroupService;
import com.yd.email.feign.client.ApiEmailVariableGroupFeignClient;
import com.yd.email.feign.request.ApiEmailVariableGroupAddRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupEditRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupDetailResponse;
import com.yd.email.feign.response.ApiEmailVariableGroupPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 变量分组信息
*
* @author zxm
* @since 2025-09-22
*/
@RestController
@RequestMapping("/emailVariableGroup")
@Validated
public class ApiEmailVariableGroupController implements ApiEmailVariableGroupFeignClient {
@Autowired
private ApiEmailVariableGroupService apiEmailVariableGroupService;
/**
* 分页查询-变量分组
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailVariableGroupPageResponse>> page(ApiEmailVariableGroupPageRequest request) {
return apiEmailVariableGroupService.page(request);
}
/**
* 添加-变量分组
* @param request
* @return
*/
@Override
public Result add(ApiEmailVariableGroupAddRequest request) {
return apiEmailVariableGroupService.add(request);
}
/**
* 编辑-变量分组
* @param request
* @return
*/
@Override
public Result edit(ApiEmailVariableGroupEditRequest request) {
return apiEmailVariableGroupService.edit(request);
}
/**
* 详情-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@Override
public Result<ApiEmailVariableGroupDetailResponse> detail(String variableGroupBizId) {
return apiEmailVariableGroupService.detail(variableGroupBizId);
}
/**
* 删除-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@Override
public Result del(String variableGroupBizId) {
return apiEmailVariableGroupService.del(variableGroupBizId);
}
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 收件人和抄送密送信息关联表(冗余表,可带入到邮件任务的抄送密送数据) 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-22
*/
@RestController
@RequestMapping("/emailContactCc")
public class EmailContactCcController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 邮件任务表(存储邮件发送任务信息) 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTask")
public class EmailTaskController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 邮件任务收件人关联
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTaskRecipients")
public class EmailTaskRecipientsController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 任务变量关系表(本次发送任务不同收件人的邮件模板的占位符内容是什么) 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTaskVariable")
public class EmailTaskVariableController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 邮件模板表(存储邮件内容) 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTemplate")
public class EmailTemplateController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 变量分组关系表 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-22
*/
@RestController
@RequestMapping("/relVariableGroup")
public class RelVariableGroupController {
}
package com.yd.email.api.service;
import com.yd.common.result.Result;
import com.yd.email.feign.dto.ApiEmailContactCcDto;
import java.util.List;
public interface ApiEmailContactCcService {
Result saveEmailContactCcList(List<ApiEmailContactCcDto> dtoList, String contactBizId);
Result<List<String>> getEmailContactCcList(String contactBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailContactImportEditRequest;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.request.ApiEmailContactImportSelectAddRequest;
import com.yd.email.feign.response.ApiEmailContactImportPageResponse;
import com.yd.email.feign.response.ApiEmailContactImportResponse;
import com.yd.email.feign.response.ApiEmailContactImportSelectAddResponse;
public interface ApiEmailContactImportService {
Result<IPage<ApiEmailContactImportPageResponse>> page(ApiEmailContactImportPageRequest request);
Result<ApiEmailContactImportSelectAddResponse> add(ApiEmailContactImportSelectAddRequest request);
Result edit(ApiEmailContactImportEditRequest request);
Result<ApiEmailContactImportResponse> detail(String importBizId);
Result del(String importBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailContactAddRequest;
import com.yd.email.feign.request.ApiEmailContactEditRequest;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactDetailResponse;
import com.yd.email.feign.response.ApiEmailContactPageResponse;
public interface ApiEmailContactService {
Result<IPage<ApiEmailContactPageResponse>> page(ApiEmailContactPageRequest request);
Result add(ApiEmailContactAddRequest request);
Result edit(ApiEmailContactEditRequest request);
Result<ApiEmailContactDetailResponse> detail(String contactBizId);
Result del(String contactBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailProviderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailProviderConfigPageResponse;
import com.yd.email.service.model.EmailProviderConfig;
public interface ApiEmailProviderConfigService {
Result<IPage<ApiEmailProviderConfigPageResponse>> page(ApiEmailProviderConfigPageRequest request);
Result add(ApiEmailProviderConfigAddRequest request);
Result edit(ApiEmailProviderConfigEditRequest request);
Result<ApiEmailProviderConfigDetailResponse> detail(String providerBizId);
Result del(String providerBizId);
Result<EmailProviderConfig> checkEmailProviderConfigIsExist(String providerBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailSenderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailSenderConfigPageResponse;
public interface ApiEmailSenderConfigService {
Result<IPage<ApiEmailSenderConfigPageResponse>> page(ApiEmailSenderConfigPageRequest request);
Result add(ApiEmailSenderConfigAddRequest request);
Result edit(ApiEmailSenderConfigEditRequest request);
Result<ApiEmailSenderConfigDetailResponse> detail(String senderBizId);
Result del(String senderBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailVariableGroupAddRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupEditRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupDetailResponse;
import com.yd.email.feign.response.ApiEmailVariableGroupPageResponse;
public interface ApiEmailVariableGroupService {
Result<IPage<ApiEmailVariableGroupPageResponse>> page(ApiEmailVariableGroupPageRequest request);
Result add(ApiEmailVariableGroupAddRequest request);
Result edit(ApiEmailVariableGroupEditRequest request);
Result<ApiEmailVariableGroupDetailResponse> detail(String variableGroupBizId);
Result del(String variableGroupBizId);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailVariableAddRequest;
import com.yd.email.feign.request.ApiEmailVariableEditRequest;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariableDetailResponse;
import com.yd.email.feign.response.ApiEmailVariablePageResponse;
public interface ApiEmailVariableService {
Result<IPage<ApiEmailVariablePageResponse>> page(ApiEmailVariablePageRequest request);
Result add(ApiEmailVariableAddRequest request);
Result edit(ApiEmailVariableEditRequest request);
Result<ApiEmailVariableDetailResponse> detail(String variableBizId);
Result del(String variableBizId);
}
package com.yd.email.api.service;
import com.yd.common.result.Result;
import com.yd.email.feign.dto.ApiEmailVariableDto;
import java.util.List;
public interface ApiRelVariableGroupService {
Result saveRelVariableGroup(List<String> variableBizIdList,String variableGroupBizId);
Result delRelVariableGroup(String variableGroupBizId);
List<ApiEmailVariableDto> getEmailVariableDtoList(String variableGroupBizId);
}
package com.yd.email.api.service.impl;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailContactCcService;
import com.yd.email.feign.dto.ApiEmailContactCcDto;
import com.yd.email.feign.enums.RecipientTypeEnum;
import com.yd.email.service.dto.EmailContactCcDto;
import com.yd.email.service.model.EmailContactCc;
import com.yd.email.service.service.IEmailContactCcService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 收件人和抄送密送关联信息
*/
@Slf4j
@Service
public class ApiEmailContactCcServiceImpl implements ApiEmailContactCcService {
@Autowired
private IEmailContactCcService iEmailContactCcService;
/**
* 保存收件人和抄送密送关联信息集合
* @param dtoList
* @param contactBizId
* @return
*/
@Override
public Result saveEmailContactCcList(List<ApiEmailContactCcDto> dtoList, String contactBizId){
//先删后增加
//根据联系人业务id删除关系
iEmailContactCcService.delByContactBizId(contactBizId);
if (!CollectionUtils.isEmpty(dtoList)){
//新增关系
List<EmailContactCc> saveList = dtoList.stream().map(dto -> {
EmailContactCc emailContactCc = new EmailContactCc();
BeanUtils.copyProperties(dto,emailContactCc);
emailContactCc.setContactBizId(contactBizId);
return emailContactCc;
}).collect(Collectors.toList());
iEmailContactCcService.saveOrUpdateBatch(saveList);
}
return Result.success();
}
/**
* 获取抄送人邮箱列表
* @param contactBizId
* @return
*/
@Override
public Result<List<String>> getEmailContactCcList(String contactBizId) {
List<String> stringList = new ArrayList<>();
List<EmailContactCc> list = iEmailContactCcService.queryList(EmailContactCcDto
.builder()
.type(RecipientTypeEnum.TCC.getItemValue())
.contactBizId(contactBizId)
.build());
if (!CollectionUtils.isEmpty(list)) {
stringList = list.stream().map(EmailContactCc::getEmail).collect(Collectors.toList());
}
return Result.success(stringList);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.UUIDUtil;
import com.yd.email.api.service.ApiEmailContactImportService;
import com.yd.email.feign.request.ApiEmailContactImportEditRequest;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.request.ApiEmailContactImportSelectAddRequest;
import com.yd.email.feign.response.ApiEmailContactImportPageResponse;
import com.yd.email.feign.response.ApiEmailContactImportResponse;
import com.yd.email.feign.response.ApiEmailContactImportSelectAddResponse;
import com.yd.email.service.dto.EmailContactImportDto;
import com.yd.email.service.model.EmailContactImport;
import com.yd.email.service.service.IEmailContactImportService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 邮件联系人导入临时表实现类
*/
@Slf4j
@Service
public class ApiEmailContactImportServiceImpl implements ApiEmailContactImportService {
@Autowired
private IEmailContactImportService iEmailContactImportService;
/**
* 分页查询-邮件联系人导入的列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailContactImportPageResponse>> page(ApiEmailContactImportPageRequest request) {
Page<ApiEmailContactImportPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailContactImportPageResponse> iPage = iEmailContactImportService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-选择联系人(写邮件选择联系人的时候保存的接口)
* @param request
* @return
*/
@Override
public Result<ApiEmailContactImportSelectAddResponse> add(ApiEmailContactImportSelectAddRequest request) {
ApiEmailContactImportSelectAddResponse response = new ApiEmailContactImportSelectAddResponse();
String sessionId = "";
if (StringUtils.isBlank(request.getSessionId())) {
//当前会话id(前端缓存有值就传,没有值后端生成返回给前端存入前端缓存)
//无值生成不带连字符的随机UUID
sessionId = UUIDUtil.randomUUIDWithoutHyphen();
}
if (!CollectionUtils.isEmpty(request.getApiEmailContactDtoList())) {
//需要导入临时表的联系人列表
String finalSessionId = sessionId;
List<EmailContactImport> addList = request.getApiEmailContactDtoList()
.stream().map(dto -> {
EmailContactImport emailContactImport = new EmailContactImport();
emailContactImport.setImportBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_CONTACT_IMPORT.getCode()));
emailContactImport.setContactBizId(dto.getContactBizId());
emailContactImport.setCcEmail(dto.getCcEmails());
emailContactImport.setReceiveEmail(dto.getContactEmail());
emailContactImport.setSessionId(finalSessionId);
return emailContactImport;
}).collect(Collectors.toList());
iEmailContactImportService.saveOrUpdateBatch(addList);
}
response.setSessionId(sessionId);
return Result.success(response);
}
/**
* 编辑-邮件联系人导入信息
* @param request
* @return
*/
@Override
public Result edit(ApiEmailContactImportEditRequest request) {
//校验邮件联系人导入信息是否存在
Result<EmailContactImport> result = checkEmailContactImportIsExist(request.getImportBizId());
EmailContactImport emailContactImport = result.getData();
//校验当前会话id下的收件人邮箱是否唯一
List<EmailContactImport> list = iEmailContactImportService.queryList(EmailContactImportDto.builder()
.sessionId(emailContactImport.getSessionId())
.receiveEmail(request.getReceiveEmail())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("收件人邮箱已存在!");
}
if (Objects.equals(request.getReceiveEmail(),emailContactImport.getReceiveEmail())) {
//判断入参收件人邮箱和库里收件人邮箱是否一致,如果不一致说明修改过,清空收件人唯一业务ID字段
emailContactImport.setContactBizId("");
}
emailContactImport.setReceiveEmail(request.getReceiveEmail());
emailContactImport.setCcEmail(!CollectionUtils.isEmpty(request.getCcEmailList()) ? String.join(";",request.getCcEmailList()) : "");
iEmailContactImportService.saveOrUpdate(emailContactImport);
return Result.success();
}
/**
* 详情-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@Override
public Result<ApiEmailContactImportResponse> detail(String importBizId) {
//校验邮件联系人导入信息是否存在
Result<EmailContactImport> result = checkEmailContactImportIsExist(importBizId);
EmailContactImport emailContactImport = result.getData();
ApiEmailContactImportResponse response = new ApiEmailContactImportResponse();
BeanUtils.copyProperties(emailContactImport,response);
response.setCcEmailList(StringUtils.isNotBlank(emailContactImport.getCcEmail()) ?
Arrays.stream(emailContactImport.getCcEmail().split(";"))
.map(String::trim)
.filter(s -> !s.isEmpty())
.collect(Collectors.toList()): new ArrayList<>());
return Result.success(response);
}
/**
* 删除-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@Override
public Result del(String importBizId) {
//校验邮件联系人导入信息是否存在
Result<EmailContactImport> result = checkEmailContactImportIsExist(importBizId);
EmailContactImport emailContactImport = result.getData();
iEmailContactImportService.removeById(emailContactImport.getId());
return Result.success();
}
/**
* 校验邮件联系人导入信息是否存在
* @param importBizId
* @return
*/
public Result<EmailContactImport> checkEmailContactImportIsExist(String importBizId) {
EmailContactImport emailContactImport = iEmailContactImportService.queryOne(importBizId);
if (Objects.isNull(emailContactImport)) {
//数据不存在
throw new BusinessException("邮件联系人导入信息不存在!");
}
return Result.success(emailContactImport);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.email.api.service.ApiEmailContactCcService;
import com.yd.email.api.service.ApiEmailContactService;
import com.yd.email.feign.dto.ApiEmailContactCcDto;
import com.yd.email.feign.enums.RecipientTypeEnum;
import com.yd.email.feign.request.ApiEmailContactAddRequest;
import com.yd.email.feign.request.ApiEmailContactEditRequest;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactDetailResponse;
import com.yd.email.feign.response.ApiEmailContactPageResponse;
import com.yd.email.service.dto.EmailContactDto;
import com.yd.email.service.model.EmailContact;
import com.yd.email.service.service.IEmailContactService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 邮箱联系人(收件人)实现类
*/
@Slf4j
@Service
public class ApiEmailContactServiceImpl implements ApiEmailContactService {
@Autowired
private IEmailContactService iEmailContactService;
@Autowired
private ApiEmailContactCcService apiEmailContactCcService;
/**
* 分页查询-联系人(收件人)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailContactPageResponse>> page(ApiEmailContactPageRequest request) {
Page<ApiEmailContactPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailContactPageResponse> iPage = iEmailContactService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-联系人(收件人)配置
* @param request
* @return
*/
@Override
public Result add(ApiEmailContactAddRequest request) {
//校验联系人邮箱唯一性
List<EmailContact> list = iEmailContactService.queryList(EmailContactDto.builder()
.email(request.getEmail())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.EMAIL_EXISTS.getCode(),ResultCode.EMAIL_EXISTS.getMessage());
}
EmailContact emailContact = new EmailContact();
BeanUtils.copyProperties(request,emailContact);
//设置联系人(收件人)业务唯一ID
emailContact.setContactBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_CONTACT.getCode()));
iEmailContactService.saveOrUpdate(emailContact);
//保存关联抄送邮箱的列表
apiEmailContactCcService.saveEmailContactCcList(buildCcEmailList(request.getCcEmailList(),emailContact.getContactBizId()),emailContact.getContactBizId());
return Result.success();
}
/**
* 编辑-联系人(收件人)配置
* @param request
* @return
*/
@Override
public Result edit(ApiEmailContactEditRequest request) {
//校验邮箱联系人是否存在
Result<EmailContact> result = checkEmailContactIsExist(request.getContactBizId());
EmailContact emailContact = result.getData();
//校验联系人邮箱唯一性
List<EmailContact> list = iEmailContactService.queryList(EmailContactDto.builder()
.email(request.getEmail())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.EMAIL_EXISTS.getCode(),ResultCode.EMAIL_EXISTS.getMessage());
}
BeanUtils.copyProperties(request,emailContact);
iEmailContactService.saveOrUpdate(emailContact);
//保存关联抄送邮箱的列表
apiEmailContactCcService.saveEmailContactCcList(buildCcEmailList(request.getCcEmailList(),emailContact.getContactBizId()),emailContact.getContactBizId());
return Result.success();
}
/**
* 详情-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@Override
public Result<ApiEmailContactDetailResponse> detail(String contactBizId) {
//校验邮箱联系人是否存在
Result<EmailContact> result = checkEmailContactIsExist(contactBizId);
EmailContact emailContact = result.getData();
ApiEmailContactDetailResponse response = new ApiEmailContactDetailResponse();
BeanUtils.copyProperties(emailContact,response);
//获取抄送人邮箱列表
Result<List<String>> result1 = apiEmailContactCcService.getEmailContactCcList(contactBizId);
response.setCcEmailList(result1.getData());
return Result.success(response);
}
/**
* 删除-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@Override
public Result del(String contactBizId) {
//校验邮箱联系人是否存在
Result<EmailContact> result = checkEmailContactIsExist(contactBizId);
EmailContact emailContact = result.getData();
iEmailContactService.removeById(emailContact.getId());
return Result.success();
}
/**
* 构建邮件抄送人列表
* @param ccEmailList
* @param contactBizId
* @return
*/
public List<ApiEmailContactCcDto> buildCcEmailList(List<String> ccEmailList, String contactBizId) {
List<ApiEmailContactCcDto> contactCcDtoList = new ArrayList<>();
if (CollectionUtils.isEmpty(contactCcDtoList)) {
contactCcDtoList = ccEmailList.stream().map(email -> {
ApiEmailContactCcDto dto = new ApiEmailContactCcDto();
dto.setContactBizId(contactBizId);
dto.setEmail(email);
//抄送
dto.setType(RecipientTypeEnum.TCC.getItemValue());
return dto;
}).collect(Collectors.toList());
}
return contactCcDtoList;
}
/**
* 校验邮箱联系人是否存在
* @param contactBizId
* @return
*/
public Result<EmailContact> checkEmailContactIsExist(String contactBizId) {
EmailContact emailContact = iEmailContactService.queryOne(contactBizId);
if (Objects.isNull(emailContact)) {
//数据不存在
throw new BusinessException("邮箱联系人信息不存在!");
}
return Result.success(emailContact);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.email.api.service.ApiEmailProviderConfigService;
import com.yd.email.feign.request.ApiEmailProviderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailProviderConfigPageResponse;
import com.yd.email.service.dto.EmailProviderConfigDto;
import com.yd.email.service.model.EmailProviderConfig;
import com.yd.email.service.service.IEmailProviderConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* 邮箱服务商实现类
*/
@Slf4j
@Service
public class ApiEmailProviderConfigServiceImpl implements ApiEmailProviderConfigService {
@Autowired
private IEmailProviderConfigService iEmailProviderConfigService;
/**
* 分页查询-邮箱服务商
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailProviderConfigPageResponse>> page(ApiEmailProviderConfigPageRequest request) {
Page<ApiEmailProviderConfigPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailProviderConfigPageResponse> iPage = iEmailProviderConfigService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-邮箱服务商
* @param request
* @return
*/
@Override
public Result add(ApiEmailProviderConfigAddRequest request) {
//校验邮箱服务商名称唯一性
List<EmailProviderConfig> list = iEmailProviderConfigService.queryList(EmailProviderConfigDto.builder()
.providerName(request.getProviderName())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("邮箱服务商名称已存在!");
}
//校验SMTP服务器地址唯一性
List<EmailProviderConfig> list1 = iEmailProviderConfigService.queryList(EmailProviderConfigDto.builder()
.smtpHost(request.getSmtpHost())
.build());
if (!CollectionUtils.isEmpty(list1)) {
throw new BusinessException("SMTP服务器地址已存在!");
}
EmailProviderConfig emailProviderConfig = new EmailProviderConfig();
BeanUtils.copyProperties(request,emailProviderConfig);
//设置邮箱服务商业务唯一ID
emailProviderConfig.setProviderBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_PROVIDER_CONFIG.getCode()));
iEmailProviderConfigService.saveOrUpdate(emailProviderConfig);
return Result.success();
}
/**
* 编辑-邮箱服务商
* @param request
* @return
*/
@Override
public Result edit(ApiEmailProviderConfigEditRequest request) {
//校验邮箱服务商是否存在
Result<EmailProviderConfig> result = checkEmailProviderConfigIsExist(request.getProviderBizId());
EmailProviderConfig emailProviderConfig = result.getData();
//校验邮箱服务商名称唯一性
List<EmailProviderConfig> list = iEmailProviderConfigService.queryList(EmailProviderConfigDto.builder()
.providerName(request.getProviderName())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("邮箱服务商名称已存在!");
}
//校验SMTP服务器地址唯一性
List<EmailProviderConfig> list1 = iEmailProviderConfigService.queryList(EmailProviderConfigDto.builder()
.smtpHost(request.getSmtpHost())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list1)) {
throw new BusinessException("SMTP服务器地址已存在!");
}
BeanUtils.copyProperties(request,emailProviderConfig);
iEmailProviderConfigService.saveOrUpdate(emailProviderConfig);
return Result.success();
}
/**
* 详情-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@Override
public Result<ApiEmailProviderConfigDetailResponse> detail(String providerBizId) {
//校验邮箱服务商是否存在
Result<EmailProviderConfig> result = checkEmailProviderConfigIsExist(providerBizId);
EmailProviderConfig emailProviderConfig = result.getData();
ApiEmailProviderConfigDetailResponse response = new ApiEmailProviderConfigDetailResponse();
BeanUtils.copyProperties(emailProviderConfig,response);
return Result.success(response);
}
/**
* 删除-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@Override
public Result del(String providerBizId) {
//校验邮箱服务商是否存在
Result<EmailProviderConfig> result = checkEmailProviderConfigIsExist(providerBizId);
EmailProviderConfig emailProviderConfig = result.getData();
iEmailProviderConfigService.removeById(emailProviderConfig.getId());
return Result.success();
}
/**
* 校验邮箱服务商是否存在
* @param providerBizId
* @return
*/
@Override
public Result<EmailProviderConfig> checkEmailProviderConfigIsExist(String providerBizId) {
EmailProviderConfig EmailProviderConfig = iEmailProviderConfigService.queryOne(providerBizId);
if (Objects.isNull(EmailProviderConfig)) {
//数据不存在
throw new BusinessException("邮箱服务商不存在!");
}
return Result.success(EmailProviderConfig);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.email.api.service.ApiEmailProviderConfigService;
import com.yd.email.api.service.ApiEmailSenderConfigService;
import com.yd.email.feign.request.ApiEmailSenderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigDetailResponse;
import com.yd.email.feign.response.ApiEmailSenderConfigPageResponse;
import com.yd.email.service.dto.EmailSenderConfigDto;
import com.yd.email.service.model.EmailProviderConfig;
import com.yd.email.service.model.EmailSenderConfig;
import com.yd.email.service.service.IEmailSenderConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* 邮件发件人实现类
*/
@Slf4j
@Service
public class ApiEmailSenderConfigServiceImpl implements ApiEmailSenderConfigService {
@Autowired
private IEmailSenderConfigService iEmailSenderConfigService;
@Autowired
private ApiEmailProviderConfigService apiEmailProviderConfigService;
/**
* 分页查询-发件人
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailSenderConfigPageResponse>> page(ApiEmailSenderConfigPageRequest request) {
Page<ApiEmailSenderConfigPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailSenderConfigPageResponse> iPage = iEmailSenderConfigService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-发件人配置
* @param request
* @return
*/
@Override
public Result add(ApiEmailSenderConfigAddRequest request) {
//校验邮箱服务商是否存在
apiEmailProviderConfigService.checkEmailProviderConfigIsExist(request.getProviderBizId());
//校验邮箱名称唯一性
List<EmailSenderConfig> list = iEmailSenderConfigService.queryList(EmailSenderConfigDto.builder()
.email(request.getEmail())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.EMAIL_EXISTS.getCode(),ResultCode.EMAIL_EXISTS.getMessage());
}
EmailSenderConfig emailSenderConfig = new EmailSenderConfig();
BeanUtils.copyProperties(request,emailSenderConfig);
//设置发件人业务唯一ID
emailSenderConfig.setSenderBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_SENDER_CONFIG.getCode()));
//邮箱密码或授权码加密存入 TODO
iEmailSenderConfigService.saveOrUpdate(emailSenderConfig);
return Result.success();
}
/**
* 编辑-发件人配置
* @param request
* @return
*/
@Override
public Result edit(ApiEmailSenderConfigEditRequest request) {
//校验邮件发件人是否存在
Result<EmailSenderConfig> result = checkEmailSenderConfigIsExist(request.getSenderBizId());
EmailSenderConfig emailSenderConfig = result.getData();
//校验邮箱服务商是否存在
apiEmailProviderConfigService.checkEmailProviderConfigIsExist(request.getProviderBizId());
//校验邮箱名称唯一性
List<EmailSenderConfig> list = iEmailSenderConfigService.queryList(EmailSenderConfigDto.builder()
.email(request.getEmail())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.EMAIL_EXISTS.getCode(),ResultCode.EMAIL_EXISTS.getMessage());
}
BeanUtils.copyProperties(request,emailSenderConfig);
//邮箱密码或授权码加密存入 TODO
iEmailSenderConfigService.saveOrUpdate(emailSenderConfig);
return Result.success();
}
/**
* 详情-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@Override
public Result<ApiEmailSenderConfigDetailResponse> detail(String senderBizId) {
ApiEmailSenderConfigDetailResponse response = new ApiEmailSenderConfigDetailResponse();
//校验邮件发件人是否存在
Result<EmailSenderConfig> result = checkEmailSenderConfigIsExist(senderBizId);
EmailSenderConfig emailSenderConfig = result.getData();
//校验邮箱服务商是否存在
Result<EmailProviderConfig> result1 = apiEmailProviderConfigService.checkEmailProviderConfigIsExist(emailSenderConfig.getProviderBizId());
EmailProviderConfig emailProviderConfig = result1.getData();
BeanUtils.copyProperties(emailSenderConfig,response);
response.setProviderName(emailProviderConfig.getProviderName());
return Result.success(response);
}
/**
* 删除-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@Override
public Result del(String senderBizId) {
//校验邮件发件人是否存在
Result<EmailSenderConfig> result = checkEmailSenderConfigIsExist(senderBizId);
EmailSenderConfig emailSenderConfig = result.getData();
iEmailSenderConfigService.removeById(emailSenderConfig.getId());
return Result.success();
}
/**
* 校验邮件发件人是否存在
* @param senderBizId
* @return
*/
public Result<EmailSenderConfig> checkEmailSenderConfigIsExist(String senderBizId) {
EmailSenderConfig emailSenderConfig = iEmailSenderConfigService.queryOne(senderBizId);
if (Objects.isNull(emailSenderConfig)) {
//数据不存在
throw new BusinessException("邮件发件人信息不存在!");
}
return Result.success(emailSenderConfig);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.email.api.service.ApiEmailVariableGroupService;
import com.yd.email.api.service.ApiRelVariableGroupService;
import com.yd.email.feign.dto.ApiEmailVariableDto;
import com.yd.email.feign.request.ApiEmailVariableGroupAddRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupEditRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupDetailResponse;
import com.yd.email.feign.response.ApiEmailVariableGroupPageResponse;
import com.yd.email.service.dto.EmailVariableGroupDto;
import com.yd.email.service.model.EmailVariableGroup;
import com.yd.email.service.service.IEmailVariableGroupService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* 变量分组信息实现类
*/
@Slf4j
@Service
public class ApiEmailVariableGroupServiceImpl implements ApiEmailVariableGroupService {
@Autowired
private IEmailVariableGroupService iEmailVariableGroupService;
@Autowired
private ApiRelVariableGroupService apiRelVariableGroupService;
/**
* 分页查询-变量分组
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailVariableGroupPageResponse>> page(ApiEmailVariableGroupPageRequest request) {
Page<ApiEmailVariableGroupPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailVariableGroupPageResponse> iPage = iEmailVariableGroupService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-变量分组
* @param request
* @return
*/
@Override
public Result add(ApiEmailVariableGroupAddRequest request) {
//校验变量分组名称的唯一性
List<EmailVariableGroup> list = iEmailVariableGroupService.queryList(EmailVariableGroupDto.builder()
.groupName(request.getGroupName())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("变量分组名称已存在!");
}
EmailVariableGroup emailVariableGroup = new EmailVariableGroup();
BeanUtils.copyProperties(request,emailVariableGroup);
//设置变量分组唯一业务ID
emailVariableGroup.setVariableGroupBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_VARIABLE_GROUP.getCode()));
iEmailVariableGroupService.saveOrUpdate(emailVariableGroup);
//保存绑定的变量集合关系
apiRelVariableGroupService.saveRelVariableGroup(request.getVariableBizIdList(),
emailVariableGroup.getVariableGroupBizId());
return Result.success();
}
/**
* 编辑-变量分组
* @param request
* @return
*/
@Override
public Result edit(ApiEmailVariableGroupEditRequest request) {
//校验变量分组是否存在
Result<EmailVariableGroup> result = checkEmailVariableGroupIsExist(request.getVariableGroupBizId());
EmailVariableGroup emailVariableGroup = result.getData();
//校验变量分组名称的唯一性
List<EmailVariableGroup> list = iEmailVariableGroupService.queryList(EmailVariableGroupDto.builder()
.groupName(request.getGroupName())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("变量分组名称已存在!");
}
BeanUtils.copyProperties(request,emailVariableGroup);
iEmailVariableGroupService.saveOrUpdate(emailVariableGroup);
//保存绑定的变量集合关系
apiRelVariableGroupService.saveRelVariableGroup(request.getVariableBizIdList(),
emailVariableGroup.getVariableGroupBizId());
return Result.success();
}
/**
* 详情-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@Override
public Result<ApiEmailVariableGroupDetailResponse> detail(String variableGroupBizId) {
//校验变量分组是否存在
Result<EmailVariableGroup> result = checkEmailVariableGroupIsExist(variableGroupBizId);
EmailVariableGroup emailVariableGroup = result.getData();
ApiEmailVariableGroupDetailResponse response = new ApiEmailVariableGroupDetailResponse();
BeanUtils.copyProperties(emailVariableGroup,response);
response.setEmailVariableDtoList(apiRelVariableGroupService.getEmailVariableDtoList(variableGroupBizId));
return Result.success(response);
}
/**
* 删除-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@Override
public Result del(String variableGroupBizId) {
//校验变量分组是否存在
Result<EmailVariableGroup> result = checkEmailVariableGroupIsExist(variableGroupBizId);
EmailVariableGroup emailVariableGroup = result.getData();
//删变量分组
iEmailVariableGroupService.removeById(emailVariableGroup.getId());
//删变量分组关系
apiRelVariableGroupService.delRelVariableGroup(variableGroupBizId);
return Result.success();
}
/**
* 校验变量分组是否存在
* @param variableGroupBizId
* @return
*/
public Result<EmailVariableGroup> checkEmailVariableGroupIsExist(String variableGroupBizId) {
EmailVariableGroup emailVariableGroup = iEmailVariableGroupService.queryOne(variableGroupBizId);
if (Objects.isNull(emailVariableGroup)) {
//数据不存在
throw new BusinessException("变量分组信息不存在!");
}
return Result.success(emailVariableGroup);
}
}
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.email.api.service.ApiEmailVariableService;
import com.yd.email.feign.request.ApiEmailVariableAddRequest;
import com.yd.email.feign.request.ApiEmailVariableEditRequest;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariableDetailResponse;
import com.yd.email.feign.response.ApiEmailVariablePageResponse;
import com.yd.email.service.dto.EmailVariableDto;
import com.yd.email.service.model.EmailVariable;
import com.yd.email.service.service.IEmailVariableService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* 变量实现类
*/
@Slf4j
@Service
public class ApiEmailVariableServiceImpl implements ApiEmailVariableService {
@Autowired
private IEmailVariableService iEmailVariableService;
/**
* 分页查询-变量
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailVariablePageResponse>> page(ApiEmailVariablePageRequest request) {
Page<ApiEmailVariablePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailVariablePageResponse> iPage = iEmailVariableService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-变量
* @param request
* @return
*/
@Override
public Result add(ApiEmailVariableAddRequest request) {
//校验变量字段名称中文名的唯一性
List<EmailVariable> list = iEmailVariableService.queryList(EmailVariableDto.builder()
.variableNameCn(request.getVariableNameCn())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("变量字段名称中文名已存在!");
}
//校验变量字段名称英文名的唯一性
List<EmailVariable> list1 = iEmailVariableService.queryList(EmailVariableDto.builder()
.variableNameEn(request.getVariableNameEn())
.build());
if (!CollectionUtils.isEmpty(list1)) {
throw new BusinessException("变量字段名称英文名已存在!");
}
EmailVariable emailVariable = new EmailVariable();
BeanUtils.copyProperties(request,emailVariable);
//设置变量业务唯一ID
emailVariable.setVariableBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_VARIABLE.getCode()));
iEmailVariableService.saveOrUpdate(emailVariable);
return Result.success();
}
/**
* 编辑-变量
* @param request
* @return
*/
@Override
public Result edit(ApiEmailVariableEditRequest request) {
//校验变量信息是否存在
Result<EmailVariable> result = checkEmailVariableIsExist(request.getVariableBizId());
EmailVariable emailVariable = result.getData();
//校验变量字段名称中文名的唯一性
List<EmailVariable> list = iEmailVariableService.queryList(EmailVariableDto.builder()
.variableNameCn(request.getVariableNameCn())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("变量字段名称中文名已存在!");
}
//校验变量字段名称英文名的唯一性
List<EmailVariable> list1 = iEmailVariableService.queryList(EmailVariableDto.builder()
.variableNameEn(request.getVariableNameEn())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list1)) {
throw new BusinessException("变量字段名称英文名已存在!");
}
BeanUtils.copyProperties(request,emailVariable);
iEmailVariableService.saveOrUpdate(emailVariable);
return Result.success();
}
/**
* 详情-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@Override
public Result<ApiEmailVariableDetailResponse> detail(String variableBizId) {
//校验变量信息是否存在
Result<EmailVariable> result = checkEmailVariableIsExist(variableBizId);
EmailVariable emailVariable = result.getData();
ApiEmailVariableDetailResponse response = new ApiEmailVariableDetailResponse();
BeanUtils.copyProperties(emailVariable,response);
return Result.success(response);
}
/**
* 删除-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@Override
public Result del(String variableBizId) {
//校验变量信息是否存在
Result<EmailVariable> result = checkEmailVariableIsExist(variableBizId);
EmailVariable emailVariable = result.getData();
iEmailVariableService.removeById(emailVariable.getId());
return Result.success();
}
/**
* 校验变量信息是否存在
* @param variableBizId
* @return
*/
public Result<EmailVariable> checkEmailVariableIsExist(String variableBizId) {
EmailVariable emailVariable = iEmailVariableService.queryOne(variableBizId);
if (Objects.isNull(emailVariable)) {
//数据不存在
throw new BusinessException("变量信息不存在!");
}
return Result.success(emailVariable);
}
}
package com.yd.email.api.service.impl;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiRelVariableGroupService;
import com.yd.email.feign.dto.ApiEmailVariableDto;
import com.yd.email.service.dto.EmailVariableDto;
import com.yd.email.service.model.EmailVariable;
import com.yd.email.service.model.RelVariableGroup;
import com.yd.email.service.service.IEmailVariableService;
import com.yd.email.service.service.IRelVariableGroupService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 变量分组关系实现类
*/
@Slf4j
@Service
public class ApiRelVariableGroupServiceImpl implements ApiRelVariableGroupService {
@Autowired
private IRelVariableGroupService iRelVariableGroupService;
@Autowired
private IEmailVariableService iEmailVariableService;
/**
* 保存变量分组关系
* @param variableBizIdList
* @param variableGroupBizId
* @return
*/
@Override
public Result saveRelVariableGroup(List<String> variableBizIdList, String variableGroupBizId) {
//先删后增加
iRelVariableGroupService.delRelByVariableGroupBizId(variableGroupBizId);
//增加关系
if (!CollectionUtils.isEmpty(variableBizIdList)) {
List<RelVariableGroup> saveList = variableBizIdList.stream().map(variableBizId -> {
RelVariableGroup group = new RelVariableGroup();
group.setVariableBizId(variableBizId);
group.setVariableGroupBizId(variableGroupBizId);
return group;
}).collect(Collectors.toList());
iRelVariableGroupService.saveOrUpdateBatch(saveList);
}
return Result.success();
}
/**
* 根据变量分组业务id删除关系
* @param variableGroupBizId
* @return
*/
@Override
public Result delRelVariableGroup(String variableGroupBizId) {
iRelVariableGroupService.delRelByVariableGroupBizId(variableGroupBizId);
return Result.success();
}
/**
* 根据分组变量业务id查询绑定的变量集合列表
* @param variableGroupBizId
* @return
*/
@Override
public List<ApiEmailVariableDto> getEmailVariableDtoList(String variableGroupBizId) {
List<ApiEmailVariableDto> dtoList = new ArrayList<>();
//查询关系列表
List<RelVariableGroup> relVariableGroupList = iRelVariableGroupService.queryList(variableGroupBizId);
if (!CollectionUtils.isEmpty(relVariableGroupList)) {
List<String> variableBizIdList = relVariableGroupList.stream()
.map(RelVariableGroup::getVariableBizId).collect(Collectors.toList());
List<EmailVariable> emailVariableList = iEmailVariableService.queryList(EmailVariableDto.builder()
.variableBizIdList(variableBizIdList).build());
if (!CollectionUtils.isEmpty(emailVariableList)) {
dtoList = emailVariableList.stream().map(dto -> {
ApiEmailVariableDto apiEmailVariableDto = new ApiEmailVariableDto();
BeanUtils.copyProperties(dto,apiEmailVariableDto);
return apiEmailVariableDto;
}).collect(Collectors.toList());
}
}
return dtoList;
}
}
${AnsiColor.GREEN}
_ _ _ __ __ ____ _ _ _ _
| | (_)_ __ | | _\ \ / /__ / ___| |__ __ _| |_ / \ _ __ (_)
| | | | '_ \| |/ /\ \ /\ / / _ \ | | '_ \ / _` | __| / _ \ | '_ \| |
| |___| | | | | < \ V V / __/ |___| | | | (_| | |_ / ___ \| |_) | |
|_____|_|_| |_|_|\_\ \_/\_/ \___|\____|_| |_|\__,_|\__/_/ \_\ .__/|_|
|_|
${AnsiColor.BRIGHT_WHITE}
Spring Boot Version: ${spring-boot.version}
\ No newline at end of file
spring:
profiles:
active: test
# active: '@spring.profiles.active@'
---
spring:
profiles: dev
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空) 4e237601-cea8-414d-b7b9-d7adc8cbcf95
namespace: 22f9d61e-9011-4d45-88cb-24f9857e3eec
# nacos的ip地址和端口 120.79.64.17:10848
server-addr: 127.0.0.1:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: linkwe-common.yml
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
---
spring:
profiles: test
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: b3b01715-eb85-4242-992a-5aff03d864d4
# nacos的ip地址和端口
server-addr: 139.224.145.34:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: yd-common.yml
group: YD_GROUP
refresh: true
extension-configs: # 扩展配置
- data-id: yd-email-api.yml
group: YD_GROUP
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
group: YD_GROUP
---
spring:
profiles: prod
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ewscrm
# nacos的ip地址和端口
server-addr: 127.0.0.1:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: yd-common.yml
refresh: true
group: YD_GROUP
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
#3.2.1\u4EE5\u4E0A\u4F7F\u7528
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1\u4EE5\u4E0B\u4F7F\u7528\u6216\u8005\u4E0D\u914D\u7F6E
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# \u81EA\u5B9A\u4E49\u65E5\u5FD7\u6253\u5370
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#\u65E5\u5FD7\u8F93\u51FA\u5230\u63A7\u5236\u53F0
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# \u4F7F\u7528\u65E5\u5FD7\u7CFB\u7EDF\u8BB0\u5F55 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# \u8BBE\u7F6E p6spy driver \u4EE3\u7406
deregisterdrivers=true
# \u53D6\u6D88JDBC URL\u524D\u7F00
useprefix=true
# \u914D\u7F6E\u8BB0\u5F55 Log \u4F8B\u5916,\u53EF\u53BB\u6389\u7684\u7ED3\u679C\u96C6\u6709error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# \u65E5\u671F\u683C\u5F0F
dateformat=yyyy-MM-dd HH:mm:ss
# \u5B9E\u9645\u9A71\u52A8\u53EF\u591A\u4E2A
#driverlist=org.h2.Driver
# \u662F\u5426\u5F00\u542F\u6162SQL\u8BB0\u5F55
outagedetection=true
# \u6162SQL\u8BB0\u5F55\u6807\u51C6 2 \u79D2
outagedetectioninterval=2
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yd-email</artifactId>
<groupId>com.yd</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yd-email-feign</artifactId>
<dependencies>
<!-- Feign组件配置模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-feign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<!-- 邮箱依赖 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>${email.version}</version>
</dependency>
</dependencies>
</project>
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailContactFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailContactAddRequest;
import com.yd.email.feign.request.ApiEmailContactEditRequest;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-联系人信息(存储联系人(收件人)信息)Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailContactFeignFallbackFactory.class)
public interface ApiEmailContactFeignClient {
/**
* 分页查询-联系人(收件人)
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailContactPageRequest request);
/**
* 添加-联系人(收件人)配置
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiEmailContactAddRequest request);
/**
* 编辑-联系人(收件人)配置
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailContactEditRequest request);
/**
* 详情-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailContactDetailResponse> detail(@RequestParam(value = "contactBizId") String contactBizId);
/**
* 删除-联系人(收件人)
* @param contactBizId 联系人(收件人)唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "contactBizId") String contactBizId);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailContactImportFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailContactImportEditRequest;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.request.ApiEmailContactImportSelectAddRequest;
import com.yd.email.feign.response.ApiEmailContactImportResponse;
import com.yd.email.feign.response.ApiEmailContactImportSelectAddResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-邮件联系人导入临时表信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailContactImportFeignFallbackFactory.class)
public interface ApiEmailContactImportFeignClient {
/**
* 分页查询-邮件联系人导入的列表
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailContactImportPageRequest request);
/**
* 添加-选择联系人
* @param request
* @return
*/
@PostMapping("/select/add")
Result<ApiEmailContactImportSelectAddResponse> add(@Validated @RequestBody ApiEmailContactImportSelectAddRequest request);
/**
* 编辑-邮件联系人导入信息
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailContactImportEditRequest request);
/**
* 详情-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailContactImportResponse> detail(@RequestParam(value = "importBizId") String importBizId);
/**
* 删除-邮件联系人导入信息
* @param importBizId 导入临时表唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "importBizId") String importBizId);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailProviderConfigFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailProviderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-SMTP邮箱服务商配置信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailProviderConfigFeignFallbackFactory.class)
public interface ApiEmailProviderConfigFeignClient {
/**
* 分页查询-邮箱服务商
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailProviderConfigPageRequest request);
/**
* 添加-邮箱服务商
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiEmailProviderConfigAddRequest request);
/**
* 编辑-邮箱服务商
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailProviderConfigEditRequest request);
/**
* 详情-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailProviderConfigDetailResponse> detail(@RequestParam(value = "providerBizId") String providerBizId);
/**
* 删除-邮箱服务商
* @param providerBizId 邮箱服务商唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "providerBizId") String providerBizId);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailSenderConfigFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailSenderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-发件人配置信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailSenderConfigFeignFallbackFactory.class)
public interface ApiEmailSenderConfigFeignClient {
/**
* 分页查询-发件人
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailSenderConfigPageRequest request);
/**
* 添加-发件人配置
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiEmailSenderConfigAddRequest request);
/**
* 编辑-发件人配置
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailSenderConfigEditRequest request);
/**
* 详情-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailSenderConfigDetailResponse> detail(@RequestParam(value = "senderBizId") String senderBizId);
/**
* 删除-发件人
* @param senderBizId 发件人唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "senderBizId") String senderBizId);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailVariableFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailVariableAddRequest;
import com.yd.email.feign.request.ApiEmailVariableEditRequest;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariableDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-变量信息(邮件内容占位符)Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailVariableFeignFallbackFactory.class)
public interface ApiEmailVariableFeignClient {
/**
* 分页查询-变量
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailVariablePageRequest request);
/**
* 添加-变量
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiEmailVariableAddRequest request);
/**
* 编辑-变量
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailVariableEditRequest request);
/**
* 详情-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailVariableDetailResponse> detail(@RequestParam(value = "variableBizId") String variableBizId);
/**
* 删除-变量
* @param variableBizId 变量唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "variableBizId") String variableBizId);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailVariableGroupFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailVariableGroupAddRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupEditRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 邮箱服务-变量分组信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailVariableGroupFeignFallbackFactory.class)
public interface ApiEmailVariableGroupFeignClient {
/**
* 分页查询-变量分组
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailVariableGroupPageRequest request);
/**
* 添加-变量分组
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiEmailVariableGroupAddRequest request);
/**
* 编辑-变量分组
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiEmailVariableGroupEditRequest request);
/**
* 详情-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiEmailVariableGroupDetailResponse> detail(@RequestParam(value = "variableGroupBizId") String variableGroupBizId);
/**
* 删除-变量分组
* @param variableGroupBizId 变量分组唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "variableGroupBizId") String variableGroupBizId);
}
package com.yd.email.feign.dto;
import lombok.Data;
@Data
public class ApiEmailContactCcDto {
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
private String contactBizId;
/**
* 类型:TCC-抄送, BCC-密送
*/
private String type;
/**
* 姓名(抄送或者密送)
*/
private String name;
/**
* 邮箱(抄送或者密送)
*/
private String email;
}
package com.yd.email.feign.dto;
import lombok.Data;
@Data
public class ApiEmailContactDto {
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
private String contactBizId;
/**
* 收件人邮箱(单个邮箱)
*/
private String contactEmail;
/**
* 抄送人邮箱(多个邮箱,分号分隔)
*/
private String ccEmails;
}
package com.yd.email.feign.dto;
import lombok.Data;
@Data
public class ApiEmailVariableDto {
/**
* 变量唯一业务ID
*/
private String variableBizId;
/**
* 变量字段名称中文名
*/
private String variableNameCn;
/**
* 变量字段名称英文名
*/
private String variableNameEn;
}
package com.yd.email.feign.enums;
/**
* 收件人类型枚举
*/
public enum RecipientTypeEnum {
TO("收件人","TO"),
TCC("抄送","TCC"),
BCC("密送","BCC"),
;
//字典项标签(名称)
private String itemLabel;
//字典项值
private String itemValue;
//构造函数
RecipientTypeEnum(String itemLabel, String itemValue) {
this.itemLabel = itemLabel;
this.itemValue = itemValue;
}
public String getItemLabel() {
return itemLabel;
}
public String getItemValue() {
return itemValue;
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailContactFeignClient;
import com.yd.email.feign.request.ApiEmailContactAddRequest;
import com.yd.email.feign.request.ApiEmailContactEditRequest;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-联系人信息(存储收件人信息)Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailContactFeignFallbackFactory implements FallbackFactory<ApiEmailContactFeignClient> {
@Override
public ApiEmailContactFeignClient create(Throwable cause) {
return new ApiEmailContactFeignClient() {
@Override
public Result page(ApiEmailContactPageRequest request) {
return null;
}
@Override
public Result add(ApiEmailContactAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailContactEditRequest request) {
return null;
}
@Override
public Result<ApiEmailContactDetailResponse> detail(String contactBizId) {
return null;
}
@Override
public Result del(String contactBizId) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailContactImportFeignClient;
import com.yd.email.feign.request.ApiEmailContactImportEditRequest;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.request.ApiEmailContactImportSelectAddRequest;
import com.yd.email.feign.response.ApiEmailContactImportResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-邮件联系人导入临时表信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailContactImportFeignFallbackFactory implements FallbackFactory<ApiEmailContactImportFeignClient> {
@Override
public ApiEmailContactImportFeignClient create(Throwable cause) {
return new ApiEmailContactImportFeignClient() {
@Override
public Result page(ApiEmailContactImportPageRequest request) {
return null;
}
@Override
public Result add(ApiEmailContactImportSelectAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailContactImportEditRequest request) {
return null;
}
@Override
public Result<ApiEmailContactImportResponse> detail(String importBizId) {
return null;
}
@Override
public Result del(String importBizId) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailProviderConfigFeignClient;
import com.yd.email.feign.request.ApiEmailProviderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-SMTP邮箱服务商配置信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailProviderConfigFeignFallbackFactory implements FallbackFactory<ApiEmailProviderConfigFeignClient> {
@Override
public ApiEmailProviderConfigFeignClient create(Throwable cause) {
return new ApiEmailProviderConfigFeignClient() {
@Override
public Result page(ApiEmailProviderConfigPageRequest request) {
return null;
}
@Override
public Result add(ApiEmailProviderConfigAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailProviderConfigEditRequest request) {
return null;
}
@Override
public Result<ApiEmailProviderConfigDetailResponse> detail(String providerBizId) {
return null;
}
@Override
public Result del(String providerBizId) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailSenderConfigFeignClient;
import com.yd.email.feign.request.ApiEmailSenderConfigAddRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigEditRequest;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-发件人配置信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailSenderConfigFeignFallbackFactory implements FallbackFactory<ApiEmailSenderConfigFeignClient> {
@Override
public ApiEmailSenderConfigFeignClient create(Throwable cause) {
return new ApiEmailSenderConfigFeignClient() {
@Override
public Result page(ApiEmailSenderConfigPageRequest request) {
return null;
}
@Override
public Result add(ApiEmailSenderConfigAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailSenderConfigEditRequest request) {
return null;
}
@Override
public Result<ApiEmailSenderConfigDetailResponse> detail(String senderBizId) {
return null;
}
@Override
public Result del(String senderBizId) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailVariableFeignClient;
import com.yd.email.feign.request.ApiEmailVariableAddRequest;
import com.yd.email.feign.request.ApiEmailVariableEditRequest;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariableDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-变量信息(邮件内容占位符)Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailVariableFeignFallbackFactory implements FallbackFactory<ApiEmailVariableFeignClient> {
@Override
public ApiEmailVariableFeignClient create(Throwable cause) {
return new ApiEmailVariableFeignClient() {
@Override
public Result page(ApiEmailVariablePageRequest request) {
return null;
}
@Override
public Result add(ApiEmailVariableAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailVariableEditRequest request) {
return null;
}
@Override
public Result<ApiEmailVariableDetailResponse> detail(String variableBizId) {
return null;
}
@Override
public Result del(String variableBizId) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailVariableGroupFeignClient;
import com.yd.email.feign.request.ApiEmailVariableGroupAddRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupEditRequest;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-变量分组信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailVariableGroupFeignFallbackFactory implements FallbackFactory<ApiEmailVariableGroupFeignClient> {
@Override
public ApiEmailVariableGroupFeignClient create(Throwable cause) {
return new ApiEmailVariableGroupFeignClient() {
@Override
public Result page(ApiEmailVariableGroupPageRequest request) {
return null;
}
@Override
public Result add(ApiEmailVariableGroupAddRequest request) {
return null;
}
@Override
public Result edit(ApiEmailVariableGroupEditRequest request) {
return null;
}
@Override
public Result<ApiEmailVariableGroupDetailResponse> detail(String variableGroupBizId) {
return null;
}
@Override
public Result del(String variableGroupBizId) {
return null;
}
};
}
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class ApiEmailContactAddRequest {
/**
* 公司名称(保险公司等)
*/
private String companyName;
/**
* 联系人姓名
*/
@NotBlank(message = "联系人姓名不能为空")
private String name;
/**
* 联系人邮箱
*/
@NotBlank(message = "联系人邮箱不能为空")
@Email(message = "邮箱格式不正确")
private String email;
/**
* 类型
*/
private String type;
/**
* 称谓
*/
private String appellation;
/**
* 其他信息
*/
private String other;
/**
* 关联抄送邮箱的列表
*/
private List<String> ccEmailList;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class ApiEmailContactEditRequest {
/**
* 联系人表主键ID
*/
@NotNull(message = "联系人表主键ID不能为空")
private Long id;
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
@NotBlank(message = "收件人唯一业务ID不能为空")
private String contactBizId;
/**
* 公司名称(保险公司等)
*/
private String companyName;
/**
* 联系人姓名
*/
@NotBlank(message = "联系人姓名不能为空")
private String name;
/**
* 联系人邮箱
*/
@NotBlank(message = "联系人邮箱不能为空")
@Email(message = "邮箱格式不正确")
private String email;
/**
* 类型
*/
private String type;
/**
* 称谓
*/
private String appellation;
/**
* 其他信息
*/
private String other;
/**
* 关联抄送邮箱的列表
*/
private List<String> ccEmailList;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class ApiEmailContactImportEditRequest {
/**
* 导入临时表主键ID
*/
@NotNull(message = "导入临时表主键ID不能为空")
private Long id;
/**
* 导入临时表唯一业务ID
*/
@NotBlank(message = "导入临时表唯一业务ID不能为空")
private String importBizId;
/**
* 收件人邮箱(单个)
*/
@NotBlank(message = "收件人邮箱不能为空")
private String receiveEmail;
/**
* 抄送人邮箱(数组)
*/
@NotEmpty(message = "抄送人邮箱不能为空")
private List<String> ccEmailList;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailContactImportPageRequest extends PageDto {
/**
* 收件人邮箱(单个)
*/
private String receiveEmail;
}
package com.yd.email.feign.request;
import com.yd.email.feign.dto.ApiEmailContactDto;
import lombok.Data;
import java.util.List;
@Data
public class ApiEmailContactImportSelectAddRequest {
/**
* 当前会话id(前端缓存有值就传,没有值后端生成返回给前端存入前端缓存)
*/
private String sessionId;
/**
* 需要导入临时表的联系人列表
*/
private List<ApiEmailContactDto> apiEmailContactDtoList;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
/**
* 分页查询-收件人(联系人信息)入参
*/
@Data
public class ApiEmailContactPageRequest extends PageDto {
/**
* 公司名称(保险公司等)
*/
private String companyName;
/**
* 联系人姓名
*/
private String name;
/**
* 联系人邮箱
*/
private String email;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiEmailProviderConfigAddRequest {
/**
* 邮箱服务商名称
*/
@NotBlank(message = "邮箱服务商名称不能为空")
private String providerName;
/**
* SMTP服务器地址
*/
@NotBlank(message = "SMTP服务器地址不能为空")
private String smtpHost;
/**
* SMTP服务器端口
*/
@NotNull(message = "SMTP服务器端口不能为空")
private Integer smtpPort;
/**
* 是否启用SSL加密: 0-否, 1-是
*/
@NotNull(message = "是否启用SSL加密不能为空")
private Integer sslEnabled;
/**
* 配置描述
*/
private String description;
/**
* 是否启用: 0-否, 1-是
*/
@NotNull(message = "是否启用不能为空")
private Integer isActive;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiEmailProviderConfigEditRequest {
/**
* 邮箱服务商主键ID
*/
@NotNull(message = "邮箱服务商主键ID不能为空")
private Long id;
/**
* 邮箱服务商唯一业务ID
*/
@NotBlank(message = "邮箱服务商唯一业务ID不能为空")
private String providerBizId;
/**
* 邮箱服务商名称
*/
@NotBlank(message = "邮箱服务商名称不能为空")
private String providerName;
/**
* SMTP服务器地址
*/
@NotBlank(message = "SMTP服务器地址不能为空")
private String smtpHost;
/**
* SMTP服务器端口
*/
@NotNull(message = "SMTP服务器端口不能为空")
private Integer smtpPort;
/**
* 是否启用SSL加密: 0-否, 1-是
*/
@NotNull(message = "是否启用SSL加密不能为空")
private Integer sslEnabled;
/**
* 配置描述
*/
private String description;
/**
* 是否启用: 0-否, 1-是
*/
@NotNull(message = "是否启用不能为空")
private Integer isActive;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailProviderConfigPageRequest extends PageDto {
/**
* 邮箱服务商名称
*/
private String providerName;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 添加-发件人配置入参
*/
@Data
public class ApiEmailSenderConfigAddRequest {
/**
* 邮箱地址
*/
@NotBlank(message = "邮箱地址不能为空")
@Email(message = "邮箱格式不正确")
private String email;
/**
* 邮箱密码或授权码
*/
@NotBlank(message = "邮箱密码或授权码不能为空")
private String password;
/**
* 绑定的邮箱服务商唯一业务ID
*/
@NotBlank(message = "绑定的邮箱服务商唯一业务ID不能为空")
private String providerBizId;
/**
* 发件人显示名称(姓名/昵称)
*/
@NotBlank(message = "发件人显示名称不能为空")
private String displayName;
/**
* 是否启用该配置: 0-否, 1-是(字典)
*/
@NotNull(message = "是否启用该配置不能为空")
private Integer active;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 编辑-发件人配置入参
*/
@Data
public class ApiEmailSenderConfigEditRequest {
/**
* 发件人表主键ID
*/
@NotNull(message = "发件人表主键ID不能为空")
private Long id;
/**
* 发件人唯一业务ID
*/
@NotBlank(message = "发件人唯一业务ID不能为空")
private String senderBizId;
/**
* 邮箱地址
*/
@NotBlank(message = "邮箱地址不能为空")
@Email(message = "邮箱格式不正确")
private String email;
/**
* 邮箱密码或授权码
*/
@NotBlank(message = "邮箱密码或授权码不能为空")
private String password;
/**
* 绑定的邮箱服务商唯一业务ID
*/
@NotBlank(message = "绑定的邮箱服务商唯一业务ID不能为空")
private String providerBizId;
/**
* 发件人显示名称(姓名/昵称)
*/
@NotBlank(message = "发件人显示名称不能为空")
private String displayName;
/**
* 是否启用该配置: 0-否, 1-是(字典)
*/
@NotNull(message = "是否启用该配置不能为空")
private Integer active;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
/**
* 分页查询-发件人入参
*/
@Data
public class ApiEmailSenderConfigPageRequest extends PageDto {
/**
* 发件人显示名称(姓名/昵称)
*/
private String displayName;
/**
* 邮箱地址
*/
private String email;
/**
* 邮箱服务商名称
*/
private String providerName;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiEmailVariableAddRequest {
/**
* 变量字段名称中文名
*/
@NotBlank(message = "变量字段名称中文名不能为空")
private String variableNameCn;
/**
* 变量字段名称英文名
*/
@NotBlank(message = "变量字段名称英文名不能为空")
private String variableNameEn;
/**
* 变量描述
*/
private String description;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiEmailVariableEditRequest {
/**
* 变量表主键ID
*/
@NotNull(message = "变量表主键ID不能为空")
private Long id;
/**
* 变量唯一业务ID
*/
@NotBlank(message = "变量唯一业务ID不能为空")
private String variableBizId;
/**
* 变量字段名称中文名
*/
@NotBlank(message = "变量字段名称中文名不能为空")
private String variableNameCn;
/**
* 变量字段名称英文名
*/
@NotBlank(message = "变量字段名称英文名不能为空")
private String variableNameEn;
/**
* 变量描述
*/
private String description;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class ApiEmailVariableGroupAddRequest {
/**
* 分组名称
*/
@NotBlank(message = "分组名称不能为空")
private String groupName;
/**
* 分组描述
*/
private String description;
/**
* 绑定的变量唯一业务ID集合
*/
private List<String> variableBizIdList;
}
package com.yd.email.feign.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class ApiEmailVariableGroupEditRequest {
/**
* 变量分组主键ID
*/
@NotNull(message = "变量分组主键ID不能为空")
private Long id;
/**
* 变量分组唯一业务ID
*/
@NotBlank(message = "变量分组唯一业务ID不能为空")
private String variableGroupBizId;
/**
* 分组名称
*/
@NotBlank(message = "分组名称不能为空")
private String groupName;
/**
* 分组描述
*/
private String description;
/**
* 绑定的变量唯一业务ID集合
*/
private List<String> variableBizIdList;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailVariableGroupPageRequest extends PageDto {
/**
* 分组名称
*/
private String groupName;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailVariablePageRequest extends PageDto {
/**
* 变量字段名称中文名
*/
private String variableNameCn;
/**
* 变量字段名称英文名
*/
private String variableNameEn;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiEmailContactDetailResponse {
/**
* 邮箱联系人表主键ID
*/
private Long id;
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
private String contactBizId;
/**
* 公司名称(保险公司等)
*/
private String companyName;
/**
* 联系人姓名
*/
private String name;
/**
* 联系人邮箱
*/
private String email;
/**
* 分组名称
*/
private String groupName;
/**
* 类型
*/
private String type;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 关联抄送邮箱的列表
*/
private List<String> ccEmailList;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailContactImportPageResponse {
/**
* 邮件联系人导入临时表主键ID
*/
private Long id;
/**
* 导入临时表唯一业务ID
*/
private String importBizId;
/**
* 当前会话id(前端使用,用于查询。存于前端缓存)
*/
private String sessionId;
/**
* 收件人唯一业务ID(联系人唯一业务ID,导入excel无值,选择联系人有值)
*/
private String contactBizId;
/**
* 收件人邮箱(单个)
*/
private String receiveEmail;
/**
* 抄送人邮箱(多个用分号分隔)
*/
private String ccEmail;
/**
* 密送人邮箱(多个用分号分隔)
*/
private String bccEmail;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiEmailContactImportResponse {
/**
* 主键ID
*/
private Long id;
/**
* 导入临时表唯一业务ID
*/
private String importBizId;
/**
* 当前会话id(前端使用,用于查询。存于前端缓存)
*/
private String sessionId;
/**
* 收件人唯一业务ID(联系人唯一业务ID,导入excel无值,选择联系人有值)
*/
private String contactBizId;
/**
* 收件人邮箱(单个)
*/
private String receiveEmail;
/**
* 抄送人邮箱(数组)
*/
private List<String> ccEmailList;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.email.feign.response;
import lombok.Data;
@Data
public class ApiEmailContactImportSelectAddResponse {
/**
* 当前会话id(前端缓存有值就传,没有值后端生成返回给前端存入前端缓存)
*/
private String sessionId;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailContactPageResponse {
/**
* 联系人表主键ID
*/
private Long id;
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
private String contactBizId;
/**
* 公司名称(保险公司等)
*/
private String companyName;
/**
* 联系人姓名
*/
private String name;
/**
* 联系人邮箱
*/
private String email;
/**
* 分组名称
*/
private String groupName;
/**
* 类型
*/
private String type;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 抄送人邮箱,多个用分号分隔
*/
private String ccEmails;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailProviderConfigDetailResponse {
/**
* 邮箱服务商主键ID
*/
private Long id;
/**
* 邮箱服务商唯一业务ID
*/
private String providerBizId;
/**
* 邮箱服务商名称
*/
private String providerName;
/**
* SMTP服务器地址
*/
private String smtpHost;
/**
* SMTP服务器端口
*/
private Integer smtpPort;
/**
* 是否启用SSL加密: 0-否, 1-是
*/
private Integer sslEnabled;
/**
* 配置描述
*/
private String description;
/**
* 是否为默认配置: 0-否, 1-是
*/
private Integer isDefault;
/**
* 是否启用: 0-否, 1-是
*/
private Integer isActive;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.email.feign.response;
import lombok.Data;
@Data
public class ApiEmailProviderConfigPageResponse {
/**
* 邮箱服务商主键ID
*/
private Long id;
/**
* 邮箱服务商唯一业务ID
*/
private String providerBizId;
/**
* 邮箱服务商名称
*/
private String providerName;
/**
* SMTP服务器地址
*/
private String smtpHost;
/**
* SMTP服务器端口
*/
private Integer smtpPort;
/**
* 是否启用SSL加密: 0-否, 1-是
*/
private Integer sslEnabled;
/**
* 配置描述
*/
private String description;
/**
* 是否为默认配置: 0-否, 1-是
*/
private Integer isDefault;
/**
* 是否启用: 0-否, 1-是
*/
private Integer isActive;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 详情-邮箱发件人出参
*/
@Data
public class ApiEmailSenderConfigDetailResponse {
/**
* 邮箱发件人表主键ID
*/
private Long id;
/**
* 发件人唯一业务ID
*/
private String senderBizId;
/**
* 邮箱地址
*/
private String email;
/**
* 邮箱密码或授权码
*/
private String password;
/**
* 邮箱服务商唯一业务ID
*/
private String providerBizId;
/**
* 邮箱服务商名称
*/
private String providerName;
/**
* 发件人显示名称(姓名/昵称)
*/
private String displayName;
/**
* 是否启用该配置: 0-否, 1-是(字典)
*/
private Integer active;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.email.feign.response;
import lombok.Data;
/**
* 分页查询-发件人出参
*/
@Data
public class ApiEmailSenderConfigPageResponse {
/**
* 发件人表主键ID
*/
private Long id;
/**
* 发件人唯一业务ID
*/
private String senderBizId;
/**
* 邮箱地址
*/
private String email;
/**
* 邮箱密码或授权码
*/
private String password;
/**
* 发件人显示名称(姓名/昵称)
*/
private String displayName;
/**
* 是否启用该配置: 0-否, 1-是(字典)
*/
private Integer active;
/**
* 邮箱服务商唯一业务ID
*/
private String providerBizId;
/**
* 邮箱服务商名称
*/
private String providerName;
/**
* SMTP服务器地址
*/
private String smtpHost;
/**
* SMTP服务器端口
*/
private Integer smtpPort;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailVariableDetailResponse {
/**
* 主键ID
*/
private Long id;
/**
* 变量唯一业务ID
*/
private String variableBizId;
/**
* 变量字段名称中文名
*/
private String variableNameCn;
/**
* 变量字段名称英文名
*/
private String variableNameEn;
/**
* 变量描述
*/
private String description;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.email.feign.response;
import com.yd.email.feign.dto.ApiEmailVariableDto;
import lombok.Data;
import java.util.List;
@Data
public class ApiEmailVariableGroupDetailResponse {
/**
* 变量分组主键ID
*/
private Long id;
/**
* 变量分组唯一业务ID
*/
private String variableGroupBizId;
/**
* 分组名称
*/
private String groupName;
/**
* 分组描述
*/
private String description;
/**
* 分组绑定的变量列表
*/
private List<ApiEmailVariableDto> emailVariableDtoList;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailVariableGroupPageResponse {
/**
* 变量分组的主键ID
*/
private Long id;
/**
* 变量分组唯一业务ID
*/
private String variableGroupBizId;
/**
* 分组名称
*/
private String groupName;
/**
* 分组描述
*/
private String description;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 变量字段名称英文名数组,多个分号分隔
*/
private String variableNameEns;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailVariablePageResponse {
/**
* 变量表的主键ID
*/
private Long id;
/**
* 变量唯一业务ID
*/
private String variableBizId;
/**
* 变量字段名称中文名
*/
private String variableNameCn;
/**
* 变量字段名称英文名
*/
private String variableNameEn;
/**
* 变量描述
*/
private String description;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.email.service.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
@Configuration
public class EmailMybatisPlusConfig {
/**
* 分页插件配置(必须)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 使用正确的枚举值 DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
/**
* 自动填充字段配置(如创建时间、更新时间)
*/
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
};
}
}
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailContactCc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 收件人和抄送密送信息关联表(冗余表,可带入到邮件任务的抄送密送数据) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-22
*/
public interface EmailContactCcMapper extends BaseMapper<EmailContactCc> {
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailContactImportPageRequest;
import com.yd.email.feign.response.ApiEmailContactImportPageResponse;
import com.yd.email.service.model.EmailContactImport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 邮件联系人导入临时表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-23
*/
public interface EmailContactImportMapper extends BaseMapper<EmailContactImport> {
IPage<ApiEmailContactImportPageResponse> page(@Param("page") Page<ApiEmailContactImportPageResponse> page,
@Param("request") ApiEmailContactImportPageRequest request);
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailContactPageRequest;
import com.yd.email.feign.response.ApiEmailContactPageResponse;
import com.yd.email.service.model.EmailContact;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 联系人表(存储收件人信息) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailContactMapper extends BaseMapper<EmailContact> {
IPage<ApiEmailContactPageResponse> page(@Param("page") Page<ApiEmailContactPageResponse> page,
@Param("request") ApiEmailContactPageRequest request);
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailProviderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailProviderConfigPageResponse;
import com.yd.email.service.model.EmailProviderConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* SMTP邮箱服务商配置表(存储不同邮箱服务商的SMTP配置信息) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailProviderConfigMapper extends BaseMapper<EmailProviderConfig> {
IPage<ApiEmailProviderConfigPageResponse> page(@Param("page") Page<ApiEmailProviderConfigPageResponse> page,
@Param("request") ApiEmailProviderConfigPageRequest request);
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailSenderConfigPageRequest;
import com.yd.email.feign.response.ApiEmailSenderConfigPageResponse;
import com.yd.email.service.model.EmailSenderConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 发件人配置表(存储SMTP服务器配置信息) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailSenderConfigMapper extends BaseMapper<EmailSenderConfig> {
IPage<ApiEmailSenderConfigPageResponse> page(@Param("page") Page<ApiEmailSenderConfigPageResponse> page,
@Param("request") ApiEmailSenderConfigPageRequest request);
}
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 邮件任务表(存储邮件发送任务信息) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailTaskMapper extends BaseMapper<EmailTask> {
}
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailTaskRecipients;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 邮件任务收件人关联表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailTaskRecipientsMapper extends BaseMapper<EmailTaskRecipients> {
}
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailTaskVariable;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 任务变量关系表(本次发送任务不同收件人的邮件模板的占位符内容是什么) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailTaskVariableMapper extends BaseMapper<EmailTaskVariable> {
}
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 邮件模板表(存储邮件内容) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailTemplateMapper extends BaseMapper<EmailTemplate> {
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailVariableGroupPageRequest;
import com.yd.email.feign.response.ApiEmailVariableGroupPageResponse;
import com.yd.email.service.model.EmailVariableGroup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 变量分组表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-22
*/
public interface EmailVariableGroupMapper extends BaseMapper<EmailVariableGroup> {
IPage<ApiEmailVariableGroupPageResponse> page(@Param("page") Page<ApiEmailVariableGroupPageResponse> page,
@Param("request") ApiEmailVariableGroupPageRequest request);
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailVariablePageRequest;
import com.yd.email.feign.response.ApiEmailVariablePageResponse;
import com.yd.email.service.model.EmailVariable;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 变量表(邮件内容占位符) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-19
*/
public interface EmailVariableMapper extends BaseMapper<EmailVariable> {
IPage<ApiEmailVariablePageResponse> page(@Param("page") Page<ApiEmailVariablePageResponse> page,
@Param("request") ApiEmailVariablePageRequest request);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment