init workflow project
This commit is contained in:
commit
6384c997ad
38
.gitignore
vendored
Normal file
38
.gitignore
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
10
.idea/.gitignore
vendored
Normal file
10
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# 依赖于环境的 Maven 主目录路径
|
||||
/mavenHomeManager.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
7
.idea/encodings.xml
Normal file
7
.idea/encodings.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
14
.idea/misc.xml
Normal file
14
.idea/misc.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?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_17" default="true" project-jdk-name="OpenJDK17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
118
pom.xml
Normal file
118
pom.xml
Normal file
@ -0,0 +1,118 @@
|
||||
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>3.5.0</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
<groupId>asia.yulinling</groupId>
|
||||
<artifactId>workflow</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>workflow</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
<url/>
|
||||
<licenses>
|
||||
<license/>
|
||||
</licenses>
|
||||
<developers>
|
||||
<developer/>
|
||||
</developers>
|
||||
<scm>
|
||||
<connection/>
|
||||
<developerConnection/>
|
||||
<tag/>
|
||||
<url/>
|
||||
</scm>
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<mail.version>1.6.2</mail.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<!--jasypt配置文件加解密-->
|
||||
<dependency>
|
||||
<groupId>com.github.ulisesbocchio</groupId>
|
||||
<artifactId>jasypt-spring-boot-starter</artifactId>
|
||||
<version>2.1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.8.38</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>${mail.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<annotationProcessorPaths>
|
||||
<path>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
12
src/main/java/asia/yulinling/workflow/WorkFlowMain.java
Normal file
12
src/main/java/asia/yulinling/workflow/WorkFlowMain.java
Normal file
@ -0,0 +1,12 @@
|
||||
package asia.yulinling.workflow;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
|
||||
@SpringBootApplication
|
||||
public class WorkFlowMain {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(WorkFlowMain.class, args);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package asia.yulinling.workflow.service;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 邮件接口
|
||||
* </p>
|
||||
*
|
||||
* @author yulinling
|
||||
* @date Create in 2025/6/3 22:49
|
||||
*/
|
||||
public interface MailService {
|
||||
/**
|
||||
* 发送文本邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param cc 抄送地址
|
||||
*/
|
||||
void sendSimpleMail(String to, String subject, String content, String... cc);
|
||||
|
||||
/**
|
||||
* 发送HTML邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
void sendHtmlMail(String to, String subject, String content, String... cc) throws MessagingException;
|
||||
|
||||
|
||||
/**
|
||||
* 发送带附件邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param filePath 附件地址
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException;
|
||||
|
||||
/**
|
||||
* 发送带附件邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param rscPath 静态资源地址
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
void sendResourceMail(String to, String subject, String content, String rscPath, String... cc) throws MessagingException;
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
package asia.yulinling.workflow.service.impl;
|
||||
|
||||
import asia.yulinling.workflow.service.MailService;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mail.SimpleMailMessage;
|
||||
import org.springframework.mail.javamail.JavaMailSender;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 邮件接口
|
||||
* </p>
|
||||
*
|
||||
* @author yulinling
|
||||
* @date Create in 2025/6/3 22:49
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MailServiceImpl implements MailService {
|
||||
|
||||
private final JavaMailSender mailSender;
|
||||
@Value("${spring.mail.username}")
|
||||
private String from;
|
||||
/**
|
||||
* 发送文本邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param cc 抄送地址
|
||||
*/
|
||||
@Override
|
||||
public void sendSimpleMail(String to, String subject, String content, String... cc) {
|
||||
SimpleMailMessage message = new SimpleMailMessage();
|
||||
message.setFrom(from);
|
||||
message.setTo(to);
|
||||
message.setSubject(subject);
|
||||
message.setText(content);
|
||||
if (ArrayUtil.isNotEmpty(cc)) {
|
||||
message.setCc(cc);
|
||||
}
|
||||
mailSender.send(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送HTML邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
@Override
|
||||
public void sendHtmlMail(String to, String subject, String content, String... cc) throws MessagingException {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送带附件邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param filePath 附件地址
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
@Override
|
||||
public void sendAttachmentsMail(String to, String subject, String content, String filePath, String... cc) throws MessagingException {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送带附件邮件
|
||||
*
|
||||
* @param to 收件人地址
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容
|
||||
* @param rscPath 静态资源地址
|
||||
* @param cc 抄送地址
|
||||
* @throws MessagingException 邮件发送异常
|
||||
*/
|
||||
@Override
|
||||
public void sendResourceMail(String to, String subject, String content, String rscPath, String... cc) throws MessagingException {
|
||||
|
||||
}
|
||||
}
|
||||
23
src/main/resources/application.yml
Normal file
23
src/main/resources/application.yml
Normal file
@ -0,0 +1,23 @@
|
||||
spring:
|
||||
mail:
|
||||
host: smtp.qq.com
|
||||
port: 587
|
||||
username: 2712495353@qq.com
|
||||
# 使用 jasypt 加密密码,使用com.xkcoding.email.PasswordTest.testGeneratePassword 生成加密密码,替换 ENC(加密密码)
|
||||
# password: ENC(OT0qGOpXrr1Iog1W+fjOiIDCJdBjHyhy)
|
||||
password: xlwpmlbawpjjdghb
|
||||
protocol: smtp
|
||||
test-connection: false
|
||||
default-encoding: UTF-8
|
||||
properties:
|
||||
mail.smtp.auth: true
|
||||
mail.smtp.starttls.enable: true
|
||||
mail.smtp.starttls.required: true
|
||||
mail.smtp.ssl.enable: false
|
||||
mail.display.sendmail: spring-boot-demo
|
||||
# 为 jasypt 配置解密秘钥
|
||||
jasypt:
|
||||
encryptor:
|
||||
bean: jasyptStringEncryptor
|
||||
password: spring-boot-demo
|
||||
algorithm: PBEWITHHMACSHA512ANDAES_256
|
||||
29
src/test/java/asia/yulinling/workflow/PasswordTest.java
Normal file
29
src/test/java/asia/yulinling/workflow/PasswordTest.java
Normal file
@ -0,0 +1,29 @@
|
||||
package asia.yulinling.workflow;
|
||||
|
||||
import org.jasypt.encryption.StringEncryptor;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* 密码加密测试
|
||||
*/
|
||||
public class PasswordTest extends WorkFlowMainTests {
|
||||
@Autowired
|
||||
private StringEncryptor encryptor;
|
||||
|
||||
/**
|
||||
* 生成加密密码
|
||||
*/
|
||||
@Test
|
||||
public void testGeneratePassword() {
|
||||
// 你的邮箱密码
|
||||
String password = "Just4Test!";
|
||||
// 加密后的密码(注意:配置上去的时候需要加 ENC(加密密码))
|
||||
String encryptPassword = encryptor.encrypt(password);
|
||||
String decryptPassword = encryptor.decrypt(encryptPassword);
|
||||
|
||||
System.out.println("password = " + password);
|
||||
System.out.println("encryptPassword = " + encryptPassword);
|
||||
System.out.println("decryptPassword = " + decryptPassword);
|
||||
}
|
||||
}
|
||||
18
src/test/java/asia/yulinling/workflow/WorkFlowMainTests.java
Normal file
18
src/test/java/asia/yulinling/workflow/WorkFlowMainTests.java
Normal file
@ -0,0 +1,18 @@
|
||||
package asia.yulinling.workflow;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class WorkFlowMainTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user