From 43d3a2a6d5d0a4a0cf32cb13c24019f625df3812 Mon Sep 17 00:00:00 2001 From: Qing Date: Sun, 10 Mar 2024 17:47:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=83=E9=A2=98=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qing-yu-club-auth-application-job/pom.xml | 7 +- .../src/main/java/com/landaiqing/App.java | 13 -- .../src/test/java/com/landaiqing/AppTest.java | 38 ---- .../qing-yu-club-auth-application-mq/pom.xml | 7 +- .../src/main/java/com/landaiqing/App.java | 13 -- .../src/test/java/com/landaiqing/AppTest.java | 38 ---- .../qing-yu-club-starter/pom.xml | 2 +- qing-yu-practice/pom.xml | 50 ++++++ qing-yu-practice/qing-yu-practice-api/pom.xml | 26 +++ .../practice/api/common/PageInfo.java | 29 +++ .../practice/api/common/PageResult.java | 57 ++++++ .../practice/api/common/Result.java | 50 ++++++ .../practice/api/common/ResultCodeEnum.java | 29 +++ .../practice/api/enums/IsDeletedFlagEnum.java | 30 ++++ .../practice/api/req/package-info.md | 1 + .../practice/api/vo/package-info.md | 1 + .../qing-yu-practice-server/pom.xml | 169 ++++++++++++++++++ .../practice/server/PracticeApplication.java | 21 +++ .../practice/server/config/GlobalConfig.java | 44 +++++ .../config/context/LoginContextHolder.java | 42 +++++ .../config/interceptor/LoginInterceptor.java | 35 ++++ .../config/mybatis/MybatisConfiguration.java | 17 ++ .../config/mybatis/MybatisPlusAllSqlLog.java | 116 ++++++++++++ .../mybatis/SqlStatementInterceptor.java | 52 ++++++ .../server/config/redis/RedisConfig.java | 46 +++++ .../server/config/redis/RedisUtil.java | 141 +++++++++++++++ .../server/controller/DemoController.java | 24 +++ .../practice/server/dao/package-info.md | 1 + .../practice/server/entity/package-info.md | 1 + .../practice/server/service/package-info.md | 1 + .../server/util/DruidEncryptUtil.java | 48 +++++ .../src/main/resources/application.yml | 54 ++++++ .../src/main/resources/bootstrap.yml | 17 ++ .../src/main/resources/log4j2-spring.xml | 87 +++++++++ 34 files changed, 1192 insertions(+), 115 deletions(-) delete mode 100644 qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/main/java/com/landaiqing/App.java delete mode 100644 qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/test/java/com/landaiqing/AppTest.java delete mode 100644 qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/main/java/com/landaiqing/App.java delete mode 100644 qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/test/java/com/landaiqing/AppTest.java create mode 100644 qing-yu-practice/pom.xml create mode 100644 qing-yu-practice/qing-yu-practice-api/pom.xml create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md create mode 100644 qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md create mode 100644 qing-yu-practice/qing-yu-practice-server/pom.xml create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml create mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/pom.xml b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/pom.xml index b4e54bd..9eb831a 100644 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/pom.xml +++ b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/pom.xml @@ -18,11 +18,6 @@ - - junit - junit - 3.8.1 - test - + diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/main/java/com/landaiqing/App.java b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/main/java/com/landaiqing/App.java deleted file mode 100644 index e623ea3..0000000 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/main/java/com/landaiqing/App.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.landaiqing; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/test/java/com/landaiqing/AppTest.java b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/test/java/com/landaiqing/AppTest.java deleted file mode 100644 index 908567a..0000000 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-job/src/test/java/com/landaiqing/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.landaiqing; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/pom.xml b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/pom.xml index 74787d5..08b7cf8 100644 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/pom.xml +++ b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/pom.xml @@ -18,11 +18,6 @@ - - junit - junit - 3.8.1 - test - + diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/main/java/com/landaiqing/App.java b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/main/java/com/landaiqing/App.java deleted file mode 100644 index e623ea3..0000000 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/main/java/com/landaiqing/App.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.landaiqing; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/test/java/com/landaiqing/AppTest.java b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/test/java/com/landaiqing/AppTest.java deleted file mode 100644 index 908567a..0000000 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-mq/src/test/java/com/landaiqing/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.landaiqing; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/qing-yu-club-subject/qing-yu-club-starter/pom.xml b/qing-yu-club-subject/qing-yu-club-starter/pom.xml index 5cfeade..4a3a1f0 100644 --- a/qing-yu-club-subject/qing-yu-club-starter/pom.xml +++ b/qing-yu-club-subject/qing-yu-club-starter/pom.xml @@ -15,7 +15,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-practice/pom.xml b/qing-yu-practice/pom.xml new file mode 100644 index 0000000..3b6dfd4 --- /dev/null +++ b/qing-yu-practice/pom.xml @@ -0,0 +1,50 @@ + + 4.0.0 + + com.landaiqing + qing-yu-practice + 1.0-SNAPSHOT + pom + + qing-yu-practice-api + qing-yu-practice-server + + + + + 8 + 8 + 1.8 + UTF-8 + UTF-8 + 2.4.2 + 2021.1 + 2020.0.6 + + + + + org.springframework.boot + spring-boot-dependencies + 2.4.2 + pom + import + + + + + + central + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + default + + true + + + true + + + + diff --git a/qing-yu-practice/qing-yu-practice-api/pom.xml b/qing-yu-practice/qing-yu-practice-api/pom.xml new file mode 100644 index 0000000..0785239 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + + com.landaiqing + qing-yu-practice + 1.0-SNAPSHOT + + + qing-yu-practice-api + jar + + + + UTF-8 + + + + + org.projectlombok + lombok + 1.18.28 + + + + diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java new file mode 100644 index 0000000..2f69382 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java @@ -0,0 +1,29 @@ +package com.landaiqing.practice.api.common; + +/** + * 分页请求实体 + * + * @author: landaiqing + */ +public class PageInfo { + + private Integer pageNo = 1; + + private Integer pageSize = 20; + + public Integer getPageNo() { + if (pageNo == null || pageNo < 1) { + return 1; + } + return pageNo; + } + + public Integer getPageSize() { + if (pageSize == null || pageSize < 1 || pageSize > Integer.MAX_VALUE) { + return 20; + } + return pageSize; + } + + +} diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java new file mode 100644 index 0000000..8869295 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java @@ -0,0 +1,57 @@ +package com.landaiqing.practice.api.common; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Collections; +import java.util.List; + +/** + * 分页返回实体 + * + * @author: landaiqing + */ +@Data +public class PageResult implements Serializable { + + private Integer pageNo = 1; + + private Integer pageSize = 20; + + private Integer total = 0; + + private Integer totalPages = 0; + + private List result = Collections.emptyList(); + + private Integer start = 1; + + private Integer end = 0; + + public void setRecords(List result) { + this.result = result; + if (result != null && result.size() > 0) { + setTotal(result.size()); + } + } + + public void setTotal(Integer total) { + this.total = total; + if (this.pageSize > 0) { + this.totalPages = (total / this.pageSize) + (total % this.pageSize == 0 ? 0 : 1); + } else { + this.totalPages = 0; + } + this.start = (this.pageSize > 0 ? (this.pageNo - 1) * this.pageSize : 0) + 1; + this.end = (this.start - 1 + this.pageSize * (this.pageNo > 0 ? 1 : 0)); + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public void setPageNo(Integer pageNo) { + this.pageNo = pageNo; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java new file mode 100644 index 0000000..a3302ce --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java @@ -0,0 +1,50 @@ +package com.landaiqing.practice.api.common; + +import lombok.Data; + +@Data +public class Result { + + private Boolean success; + + private Integer code; + + private String message; + + private T data; + + public static Result ok(){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + return result; + } + + public static Result ok(T data){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + result.setData(data); + return result; + } + + public static Result fail(){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + return result; + } + + public static Result fail(T data){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + result.setData(data); + return result; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java new file mode 100644 index 0000000..6f7eaaf --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java @@ -0,0 +1,29 @@ +package com.landaiqing.practice.api.common; + +import lombok.Getter; + +@Getter +public enum ResultCodeEnum { + + SUCCESS(200,"成功"), + FAIL(500,"失败"); + + public int code; + + public String desc; + + ResultCodeEnum(int code,String desc){ + this.code = code; + this.desc = desc; + } + + public static ResultCodeEnum getByCode(int codeVal){ + for(ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()){ + if(resultCodeEnum.code == codeVal){ + return resultCodeEnum; + } + } + return null; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java new file mode 100644 index 0000000..b681284 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.enums; + +import lombok.Getter; + +/** + * @description: 删除状态枚举 + * + * @author landaiqing + * @date: 2024/2/14 15:02 + */ +@Getter +public enum IsDeletedFlagEnum { + DELETED(1,"已删除"), + UN_DELETED(0,"未删除"); + private int code; + private String desc; + + IsDeletedFlagEnum(int code, String desc){ + this.code=code; + this.desc=desc; + } + public static IsDeletedFlagEnum getByCode(int codeVal){ + for(IsDeletedFlagEnum resultCodeEnum: IsDeletedFlagEnum.values()){ + if(resultCodeEnum.code==codeVal){ + return resultCodeEnum; + } + } + return null; + } +} diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md new file mode 100644 index 0000000..ecfa686 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md @@ -0,0 +1 @@ +api的入参实体 \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md new file mode 100644 index 0000000..0e2c3b1 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md @@ -0,0 +1 @@ +api的出参实体 \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/pom.xml b/qing-yu-practice/qing-yu-practice-server/pom.xml new file mode 100644 index 0000000..311d8e8 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/pom.xml @@ -0,0 +1,169 @@ + + 4.0.0 + + com.landaiqing + qing-yu-practice + 1.0-SNAPSHOT + + + qing-yu-practice-server + jar + + qing-yu-practice-server + + + + 8 + 8 + 1.8 + UTF-8 + UTF-8 + 2.4.2 + 2021.1 + 2020.0.6 + + + + + org.springframework.boot + spring-boot-starter-web + 2.4.2 + + + spring-boot-starter-logging + org.springframework.boot + + + + + org.projectlombok + lombok + 1.18.28 + + + org.mapstruct + mapstruct + 1.4.2.Final + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + org.springframework.boot + spring-boot-starter-log4j2 + 2.4.2 + + + com.alibaba + fastjson + 1.2.79 + + + com.google.guava + guava + 19.0 + + + org.apache.commons + commons-lang3 + 3.11 + + + com.google.code.gson + gson + 2.8.6 + + + org.springframework.boot + spring-boot-starter-data-redis + 2.4.2 + + + org.apache.commons + commons-pool2 + 2.9.0 + + + org.springframework.boot + spring-boot-starter-jdbc + 2.4.2 + + + com.alibaba + druid-spring-boot-starter + 1.1.22 + + + mysql + mysql-connector-java + 8.0.33 + + + com.baomidou + mybatis-plus-boot-starter + 3.4.0 + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 3.0.6 + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + ${project.artifactId} + + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.0.RELEASE + + + + repackage + + + + + + + diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java new file mode 100644 index 0000000..71cf58f --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java @@ -0,0 +1,21 @@ +package com.landaiqing.practice.server; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * 练习微服务启动类 + * + * @author: landaiqing + * @date: 2024/2/7 + */ +@SpringBootApplication +@ComponentScan("com.landaiqing") +@MapperScan("com.landaiqing.**.dao") +public class PracticeApplication { + public static void main(String[] args) { + SpringApplication.run(PracticeApplication.class); + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java new file mode 100644 index 0000000..11d2f0c --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java @@ -0,0 +1,44 @@ +package com.landaiqing.practice.server.config; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.landaiqing.practice.server.config.interceptor.LoginInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; + +import java.util.List; + +/** + * @Classname GlobalConfig + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.application.config + * @Author: landaiqing + * @CreateTime: 2024-02-16 15:57 + * @Description: MVC全局处理 + * @Version: 1.0 + */ +@Configuration +public class GlobalConfig extends WebMvcConfigurationSupport { + @Override + protected void configureMessageConverters(List> converters) { + super.configureMessageConverters(converters); + converters.add(mappingJackson2HttpMessageConverter()); + } + private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){ + ObjectMapper objectMapper=new ObjectMapper(); + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter(objectMapper); + return converter; + } + + @Override + protected void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new LoginInterceptor()) + .addPathPatterns("/**"); + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java new file mode 100644 index 0000000..fb87715 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java @@ -0,0 +1,42 @@ +package com.landaiqing.practice.server.config.context; + +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Classname LoginContextHolder + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.application.context + * @Author: landaiqing + * @CreateTime: 2024-03-03 18:11 + * @Description: 登录上下文对象 + * @Version: 1.0 + */ +public class LoginContextHolder { + private static final InheritableThreadLocal > THREAD_LOCAL=new InheritableThreadLocal<>(); + + public static void set(String key,Object val){ + Map map=getThreadLoacalMap(); + map.put(key, val); + } + public static Object get(String key){ + Map threadLoacalMap=getThreadLoacalMap(); + return threadLoacalMap.get(key); + } + public static void remove(){ + THREAD_LOCAL.remove(); + } + + public static String getLoginId(){ + return (String) getThreadLoacalMap().get("loginId"); + } + public static Map getThreadLoacalMap(){ + Map map =THREAD_LOCAL.get(); + if (Objects.isNull(map)){ + map=new ConcurrentHashMap<>(); + THREAD_LOCAL.set(map); + } + return map; + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java new file mode 100644 index 0000000..77c9845 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java @@ -0,0 +1,35 @@ +package com.landaiqing.practice.server.config.interceptor; + + +import com.landaiqing.practice.server.config.context.LoginContextHolder; +import org.apache.commons.lang3.StringUtils; +import org.springframework.lang.Nullable; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @Classname LoginInterceptor + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.application.interceptor + * @Author: landaiqing + * @CreateTime: 2024-03-03 18:05 + * @Description: 登录拦截器 + * @Version: 1.0 + */ +public class LoginInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String loginId = request.getHeader("loginId"); + if (StringUtils.isNotBlank(loginId)) { + LoginContextHolder.set("loginId", loginId); + } + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { + LoginContextHolder.remove(); + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java new file mode 100644 index 0000000..2878d0d --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java @@ -0,0 +1,17 @@ +package com.landaiqing.practice.server.config.mybatis; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MybatisConfiguration { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor(){ + MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); + mybatisPlusInterceptor.addInnerInterceptor(new MybatisPlusAllSqlLog()); + return mybatisPlusInterceptor; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java new file mode 100644 index 0000000..0c185c0 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java @@ -0,0 +1,116 @@ +package com.landaiqing.practice.server.config.mybatis; + +import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.ParameterMapping; +import org.apache.ibatis.reflection.MetaObject; +import org.apache.ibatis.session.Configuration; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; +import org.apache.ibatis.type.TypeHandlerRegistry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.CollectionUtils; + +import java.sql.SQLException; +import java.text.DateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; + +public class MybatisPlusAllSqlLog implements InnerInterceptor { + public static final Logger log = LoggerFactory.getLogger("sys-sql"); + + @Override + public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { + logInfo(boundSql, ms, parameter); + } + + @Override + public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException { + BoundSql boundSql = ms.getBoundSql(parameter); + logInfo(boundSql, ms, parameter); + } + + private static void logInfo(BoundSql boundSql, MappedStatement ms, Object parameter) { + try { + log.info("parameter = " + parameter); + // 获取到节点的id,即sql语句的id + String sqlId = ms.getId(); + log.info("sqlId = " + sqlId); + // 获取节点的配置 + Configuration configuration = ms.getConfiguration(); + // 获取到最终的sql语句 + String sql = getSql(configuration, boundSql, sqlId); + log.info("完整的sql:{}", sql); + } catch (Exception e) { + log.error("异常:{}", e.getLocalizedMessage(), e); + } + } + + // 封装了一下sql语句,使得结果返回完整xml路径下的sql语句节点id + sql语句 + public static String getSql(Configuration configuration, BoundSql boundSql, String sqlId) { + return sqlId + ":" + showSql(configuration, boundSql); + } + + // 进行?的替换 + public static String showSql(Configuration configuration, BoundSql boundSql) { + // 获取参数 + Object parameterObject = boundSql.getParameterObject(); + List parameterMappings = boundSql.getParameterMappings(); + // sql语句中多个空格都用一个空格代替 + String sql = boundSql.getSql().replaceAll("[\\s]+", " "); + if (!CollectionUtils.isEmpty(parameterMappings) && parameterObject != null) { + // 获取类型处理器注册器,类型处理器的功能是进行java类型和数据库类型的转换 + TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); + // 如果根据parameterObject.getClass()可以找到对应的类型,则替换 + if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { + sql = sql.replaceFirst("\\?", + Matcher.quoteReplacement(getParameterValue(parameterObject))); + } else { + // MetaObject主要是封装了originalObject对象,提供了get和set的方法用于获取和设置originalObject的属性值,主要支持对JavaBean、Collection、Map三种类型对象的操作 + MetaObject metaObject = configuration.newMetaObject(parameterObject); + for (ParameterMapping parameterMapping : parameterMappings) { + String propertyName = parameterMapping.getProperty(); + if (metaObject.hasGetter(propertyName)) { + Object obj = metaObject.getValue(propertyName); + sql = sql.replaceFirst("\\?", + Matcher.quoteReplacement(getParameterValue(obj))); + } else if (boundSql.hasAdditionalParameter(propertyName)) { + // 该分支是动态sql + Object obj = boundSql.getAdditionalParameter(propertyName); + sql = sql.replaceFirst("\\?", + Matcher.quoteReplacement(getParameterValue(obj))); + } else { + // 打印出缺失,提醒该参数缺失并防止错位 + sql = sql.replaceFirst("\\?", "缺失"); + } + } + } + } + return sql; + } + + // 如果参数是String,则添加单引号, 如果是日期,则转换为时间格式器并加单引号; 对参数是null和不是null的情况作了处理 + private static String getParameterValue(Object obj) { + String value; + if (obj instanceof String) { + value = "'" + obj.toString() + "'"; + } else if (obj instanceof Date) { + DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, + DateFormat.DEFAULT, Locale.CHINA); + value = "'" + formatter.format(new Date()) + "'"; + } else { + if (obj != null) { + value = obj.toString(); + } else { + value = ""; + } + } + return value; + } + +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java new file mode 100644 index 0000000..f99fa19 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java @@ -0,0 +1,52 @@ +package com.landaiqing.practice.server.config.mybatis; + +import org.apache.ibatis.cache.CacheKey; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.plugin.*; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Properties; + + +@Intercepts({ + @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, + Object.class}), + @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, + Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class})}) +public class SqlStatementInterceptor implements Interceptor { + + public static final Logger log = LoggerFactory.getLogger("sys-sql"); + + @Override + public Object intercept(Invocation invocation) throws Throwable { + long startTime = System.currentTimeMillis(); + try { + return invocation.proceed(); + } finally { + long timeConsuming = System.currentTimeMillis() - startTime; + log.info("执行SQL:{}ms", timeConsuming); + if (timeConsuming > 999 && timeConsuming < 5000) { + log.info("执行SQL大于1s:{}ms", timeConsuming); + } else if (timeConsuming >= 5000 && timeConsuming < 10000) { + log.info("执行SQL大于5s:{}ms", timeConsuming); + } else if (timeConsuming >= 10000) { + log.info("执行SQL大于10s:{}ms", timeConsuming); + } + } + } + + @Override + public Object plugin(Object target) { + return Plugin.wrap(target, this); + } + + @Override + public void setProperties(Properties properties) { + + } +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java new file mode 100644 index 0000000..72f3870 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java @@ -0,0 +1,46 @@ +package com.landaiqing.practice.server.config.redis; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * Redis的config处理 + * + * @author: landaiqing + */ +@Configuration +public class RedisConfig { + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + RedisSerializer redisSerializer = new StringRedisSerializer(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + redisTemplate.setKeySerializer(redisSerializer); + redisTemplate.setHashKeySerializer(redisSerializer); + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer()); + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer()); + return redisTemplate; + } + + private Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() { + Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); + jsonRedisSerializer.setObjectMapper(objectMapper); + return jsonRedisSerializer; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java new file mode 100644 index 0000000..8d9c6c1 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java @@ -0,0 +1,141 @@ +package com.landaiqing.practice.server.config.redis; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.Cursor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ScanOptions; +import org.springframework.data.redis.core.ZSetOperations; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * RedisUtil工具类 + * + * @author: landaiqing + * @date: 2024/2/19 + */ +@Component +@Slf4j +public class RedisUtil { + + @Resource + private RedisTemplate redisTemplate; + + private static final String CACHE_KEY_SEPARATOR = "."; + + /** + * 构建缓存key + */ + public String buildKey(String... strObjs) { + return Stream.of(strObjs).collect(Collectors.joining(CACHE_KEY_SEPARATOR)); + } + + /** + * 是否存在key + */ + public boolean exist(String key) { + return redisTemplate.hasKey(key); + } + + /** + * 删除key + */ + public boolean del(String key) { + return redisTemplate.delete(key); + } + + /** + * set(不带过期) + */ + public void set(String key, String value) { + redisTemplate.opsForValue().set(key, value); + } + + /** + * set(带过期) + */ + public boolean setNx(String key, String value, Long time, TimeUnit timeUnit) { + return redisTemplate.opsForValue().setIfAbsent(key, value, time, timeUnit); + } + + /** + * 获取string类型缓存 + */ + public String get(String key) { + return (String) redisTemplate.opsForValue().get(key); + } + + public Boolean zAdd(String key, String value, Long score) { + return redisTemplate.opsForZSet().add(key, value, Double.valueOf(String.valueOf(score))); + } + + public Long countZset(String key) { + return redisTemplate.opsForZSet().size(key); + } + + public Set rangeZset(String key, long start, long end) { + return redisTemplate.opsForZSet().range(key, start, end); + } + + public Long removeZset(String key, Object value) { + return redisTemplate.opsForZSet().remove(key, value); + } + + public void removeZsetList(String key, Set value) { + value.stream().forEach((val) -> redisTemplate.opsForZSet().remove(key, val)); + } + + public Double score(String key, Object value) { + return redisTemplate.opsForZSet().score(key, value); + } + + public Set rangeByScore(String key, long start, long end) { + return redisTemplate.opsForZSet().rangeByScore(key, Double.valueOf(String.valueOf(start)), Double.valueOf(String.valueOf(end))); + } + + public Object addScore(String key, Object obj, double score) { + return redisTemplate.opsForZSet().incrementScore(key, obj, score); + } + + public Object rank(String key, Object obj) { + return redisTemplate.opsForZSet().rank(key, obj); + } + + + public Set rankWithScore(String key, long start, long end) { + Set> set = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end); + return set; + } + + public void putHash(String key, String hashKey, Object hashVal) { + redisTemplate.opsForHash().put(key, hashKey, hashVal); + } + + public Integer getInt(String key) { + return (Integer) redisTemplate.opsForValue().get(key); + } + + public void increment(String key, Integer count) { + redisTemplate.opsForValue().increment(key,count); + } + public Map getHashAndDelete(String key) { + Map map = new HashMap<>(); + Cursor> cursor = redisTemplate.opsForHash().scan(key, ScanOptions.NONE); + while (cursor.hasNext()) { + Map.Entry entry = cursor.next(); + Object hashKey = entry.getKey(); + Object value = entry.getValue(); + map.put(hashKey, value); + redisTemplate.opsForHash().delete(key, hashKey); + } + return map; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java new file mode 100644 index 0000000..4e67d0b --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java @@ -0,0 +1,24 @@ +package com.landaiqing.practice.server.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Classname DemoController + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.controller + * @Author: landaiqing + * @CreateTime: 2024-03-10 17:22 + * @Description: 测试controller启动 + * @Version: 1.0 + */ +@RestController +@RequestMapping("practice") +@Slf4j +public class DemoController { + @RequestMapping("/test") + public String isLogin() { + return "test " ; + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md new file mode 100644 index 0000000..aa12f83 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md @@ -0,0 +1 @@ +存放dao \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md new file mode 100644 index 0000000..6c52de7 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md @@ -0,0 +1 @@ +存放实体 \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md new file mode 100644 index 0000000..9dbc213 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md @@ -0,0 +1 @@ +存放service \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java new file mode 100644 index 0000000..21fd1e2 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java @@ -0,0 +1,48 @@ +package com.landaiqing.practice.server.util; + +import com.alibaba.druid.filter.config.ConfigTools; + +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; + +/** + * 数据库加密util + * + * @author: landaiqing + * @date: 2024/2/7 + */ +public class DruidEncryptUtil { + + private static String publicKey; + + private static String privateKey; + + static { + try { + String[] keyPair = ConfigTools.genKeyPair(512); + privateKey=keyPair[0]; + System.out.println("privateKey:"+privateKey); + publicKey=keyPair[1]; + System.out.println("publicKey:"+publicKey); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } catch (NoSuchProviderException e) { + throw new RuntimeException(e); + } + } + public static String encrypt(String plainText) throws Exception { + String encrypt = ConfigTools.encrypt(privateKey, plainText); + System.out.println("encrypt:"+encrypt); + return encrypt; + } + public static String decrypt(String encryptText) throws Exception { + String decrypt = ConfigTools.decrypt(publicKey, encryptText); + System.out.println("decrypt:"+decrypt); + return decrypt; + } + + public static void main(String[] args) throws Exception { + String encrypt = encrypt("$LDQ20020618xxx$"); + System.out.println("encrypt:"+encrypt); + } +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml b/qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml new file mode 100644 index 0000000..21e8871 --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml @@ -0,0 +1,54 @@ +server: + port: 3012 +spring: + datasource: + username: landaiqing + password: HvUtEzfJSLoCY8Oe+6BFhen8RM90h0Jmz/a8uHR/z90Ech1iksWHTeroWXjY+OZhsamVwDmJzPGJfKf2RiXFgA== + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://116.196.80.239:3306/qing-yu-club?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 20 + min-idle: 20 + max-active: 100 + max-wait: 60000 + connectionProperties: config.decrypt=true;config.decrypt.key=${publicKey}; + stat-view-servlet: + enabled: true + url-pattern: /druid/* + login-username: admin + login-password: 123456 + filter: + stat: + enabled: true + slow-sql-millis: 2000 + log-slow-sql: true + wall: + enabled: true + config: + enabled: true + # redis配置 + redis: + # Redis数据库索引(默认为0) + database: 0 + # Redis服务器地址 + host: 116.196.80.239 + # Redis服务器连接端口 + port: 6379 + # Redis服务器连接密码(默认为空) + password: LDQ20020618xxx + # 连接超时时间 + timeout: 2s + lettuce: + pool: + # 连接池最大连接数 + max-active: 200 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + # 连接池中的最大空闲连接 + max-idle: 10 + # 连接池中的最小空闲连接 + min-idle: 0 +publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ9zUefu5PFeiy4nNNRCIaNT5IY3IxRrlHMiotffSPstMensKg4PoSWJsRRrp/zQEzWegxz2Bkv3F5vfGqqM9N0CAwEAAQ== +logging: + config: classpath:log4j2-spring.xml diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml b/qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..70fa38d --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml @@ -0,0 +1,17 @@ +spring: + application: + name: qing-yu-club-practice-dev + profiles: + active: dev + cloud: + nacos: + config: + server-addr: 116.196.80.239:8848 + prefix: ${spring.application.name} + group: DEFAULT_GROUP + namespace: + file-extension: yaml + discovery: + enabled: true + server-addr: 116.196.80.239:8848 + diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml b/qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml new file mode 100644 index 0000000..fde942f --- /dev/null +++ b/qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +