初始化
This commit is contained in:
13
src/main/java/com/dc/dc_project/DcProjectApplication.java
Normal file
13
src/main/java/com/dc/dc_project/DcProjectApplication.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.dc.dc_project;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class DcProjectApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DcProjectApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.dc.dc_project.config;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class MyBatisPlusConfig {
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
||||
return interceptor;
|
||||
}
|
||||
|
||||
}
|
||||
57
src/main/java/com/dc/dc_project/config/RedisConfig.java
Normal file
57
src/main/java/com/dc/dc_project/config/RedisConfig.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.dc.dc_project.config;
|
||||
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
||||
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;
|
||||
|
||||
@Configuration
|
||||
|
||||
@AutoConfigureAfter(RedisAutoConfiguration.class)
|
||||
|
||||
public class RedisConfig {
|
||||
|
||||
|
||||
@Bean
|
||||
|
||||
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuce) {
|
||||
|
||||
//设置序列化
|
||||
|
||||
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
||||
lettuce.setValidateConnection(true);
|
||||
|
||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||
|
||||
redisTemplate.setConnectionFactory(lettuce);
|
||||
|
||||
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
|
||||
|
||||
// key序列化
|
||||
|
||||
redisTemplate.setKeySerializer(stringSerializer);
|
||||
|
||||
// value序列化
|
||||
|
||||
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
||||
|
||||
// Hash key序列化
|
||||
|
||||
redisTemplate.setHashKeySerializer(stringSerializer);
|
||||
|
||||
// Hash value序列化
|
||||
|
||||
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
|
||||
|
||||
redisTemplate.afterPropertiesSet();
|
||||
|
||||
return redisTemplate;
|
||||
|
||||
}
|
||||
}
|
||||
27
src/main/java/com/dc/dc_project/config/SaTokenConfigure.java
Normal file
27
src/main/java/com/dc/dc_project/config/SaTokenConfigure.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.dc.dc_project.config;
|
||||
|
||||
import cn.dev33.satoken.SaManager;
|
||||
import cn.dev33.satoken.context.SaHolder;
|
||||
import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import cn.dev33.satoken.router.SaRouter;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||
public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new SaInterceptor(h -> {
|
||||
|
||||
SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
|
||||
SaRouter.match("/project/**").check(StpUtil::checkLogin);
|
||||
})).addPathPatterns("/**");
|
||||
}
|
||||
|
||||
}
|
||||
49
src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java
Normal file
49
src/main/java/com/dc/dc_project/config/StpInterfaceImpl.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package com.dc.dc_project.config;
|
||||
|
||||
import cn.dev33.satoken.stp.StpInterface;
|
||||
import com.plm.common.model.pojo.RoleDesc;
|
||||
import com.plm.common.service.RoleDescService;
|
||||
import com.plm.common.service.UserDataService;
|
||||
import com.plm.common.vo.RolePermissionInfoVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 权限加载接口实现类
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor_ = {@Autowired})
|
||||
public class StpInterfaceImpl implements StpInterface {
|
||||
|
||||
private final UserDataService userDataService;
|
||||
|
||||
private final RoleDescService descService;
|
||||
/**
|
||||
* 返回一个账号所拥有的权限码集合
|
||||
*/
|
||||
@Override
|
||||
public List<String> getPermissionList(Object loginId, String loginType) {
|
||||
Long roleIdByUserId = userDataService.getRoleIdByUserId(Long.valueOf(loginId.toString()));
|
||||
RolePermissionInfoVo data = descService.getUserRoleAndPermission(roleIdByUserId).getData();
|
||||
return data.getCodes();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
|
||||
*/
|
||||
@Override
|
||||
public List<String> getRoleList(Object loginId, String loginType) {
|
||||
Long roleIdByUserId = userDataService.getRoleIdByUserId(Long.valueOf(loginId.toString()));
|
||||
RoleDesc data = descService.getById(roleIdByUserId);
|
||||
List<String> roles = new ArrayList<>();
|
||||
if (data != null) {
|
||||
roles.add(data.getCode());
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
|
||||
}
|
||||
1
src/main/resources/application.properties
Normal file
1
src/main/resources/application.properties
Normal file
@@ -0,0 +1 @@
|
||||
spring.application.name=dc_project
|
||||
44
src/main/resources/application.yml
Normal file
44
src/main/resources/application.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
spring:
|
||||
data:
|
||||
redis:
|
||||
host: 117.72.219.63
|
||||
database: 1
|
||||
port: 6379
|
||||
password: redis_2025_redis_server
|
||||
timeout: 10s
|
||||
lettuce:
|
||||
pool:
|
||||
time-between-eviction-runs: 30s
|
||||
shutdown-timeout: 100ms
|
||||
servlet:
|
||||
multipart:
|
||||
max-request-size: 100MB
|
||||
datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://www.yuxindazhineng.com:3306/dc_lab_system?serverTimeZone=CST
|
||||
username: dc_admin
|
||||
password: DC_yxd_admin@01
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath:/mappers/*.xml
|
||||
configuration:
|
||||
default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
map-underscore-to-camel-case: true
|
||||
log-prefix: 'dc-'
|
||||
type-aliases-package: com.plm.common.vo
|
||||
global-config:
|
||||
enable-sql-runner: true
|
||||
banner: false
|
||||
sa-token:
|
||||
token-name: token
|
||||
token-style: random-128
|
||||
logging:
|
||||
level:
|
||||
io:
|
||||
lettuce:
|
||||
core=DEBUG:
|
||||
org:
|
||||
springframework:
|
||||
data:
|
||||
redis=DEBUG:
|
||||
87
src/main/resources/logback-spring.xml
Normal file
87
src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false">
|
||||
<!--定义日志文件的存储地址 -->
|
||||
<property name="LOG_HOME" value="./logs"/>
|
||||
|
||||
<property name="COLOR_PATTERN"
|
||||
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)"/>
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT"
|
||||
class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder
|
||||
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/info.log</file>
|
||||
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名 -->
|
||||
<FileNamePattern>${LOG_HOME}/blog-info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<!--日志文件保留天数 -->
|
||||
<MaxHistory>2</MaxHistory>
|
||||
<!--日志文件最大的大小-->
|
||||
<MaxFileSize>10MB</MaxFileSize>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--level为 ERROR 日志,时间滚动输出 -->
|
||||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<!-- 正在记录的日志文档的路径及文档名 -->
|
||||
<file>${LOG_HOME}/error.log</file>
|
||||
<!--日志文档输出格式-->
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
|
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
|
||||
</encoder>
|
||||
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/blog-error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
<!--日志文档保留天数-->
|
||||
<maxHistory>3</maxHistory>
|
||||
</rollingPolicy>
|
||||
<!-- 此日志文档只记录ERROR级别的 -->
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!--myibatis log configure -->
|
||||
<logger name="com.apache.ibatis" level="TRACE" />
|
||||
<logger name="java.sql.Connection" level="DEBUG" />
|
||||
<logger name="java.sql.Statement" level="DEBUG" />
|
||||
<logger name="java.sql.PreparedStatement" level="DEBUG" />
|
||||
|
||||
<!-- Redis日志级别配置 -->
|
||||
<logger name="io.lettuce.core" level="WARN" />
|
||||
<logger name="io.lettuce.core.protocol" level="WARN" />
|
||||
<logger name="io.lettuce.core.protocol.ReconnectionHandler" level="WARN" />
|
||||
<logger name="io.lettuce.core.protocol.ConnectionWatchdog" level="WARN" />
|
||||
<logger name="org.springframework.data.redis" level="WARN" />
|
||||
<logger name="cn.dev33.satoken" level="WARN" />
|
||||
|
||||
|
||||
<!-- 日志输出级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="FILE"/>
|
||||
<appender-ref ref="ERROR_FILE"/>
|
||||
<!-- <appender-ref ref="HTML"/>-->
|
||||
<!-- <appender-ref ref="FILE_HTML"/>-->
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.dc.dc_project;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class DcProjectApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user