feat:
- Change Mybatis to JPA - Change groupId
This commit is contained in:
38
pom.xml
38
pom.xml
@@ -8,7 +8,7 @@
|
|||||||
<version>3.3.0</version>
|
<version>3.3.0</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>com.rainbus</groupId>
|
<groupId>com.dlp.admin</groupId>
|
||||||
<artifactId>dlp-admin-backend</artifactId>
|
<artifactId>dlp-admin-backend</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<name>dlp-admin-backend</name>
|
<name>dlp-admin-backend</name>
|
||||||
@@ -45,21 +45,21 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- <dependency>-->
|
<dependency>
|
||||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
<groupId>org.springframework.boot</groupId>
|
||||||
<!-- <artifactId>spring-boot-starter-data-jpa</artifactId>-->
|
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||||
<!-- </dependency>-->
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<!-- <dependency>-->
|
||||||
<groupId>com.baomidou</groupId>
|
<!-- <groupId>com.baomidou</groupId>-->
|
||||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
|
||||||
<version>${mybatis-plus.version}</version>
|
<!-- <version>${mybatis-plus.version}</version>-->
|
||||||
</dependency>
|
<!-- </dependency>-->
|
||||||
<dependency>
|
<!-- <dependency>-->
|
||||||
<groupId>com.github.pagehelper</groupId>
|
<!-- <groupId>com.github.pagehelper</groupId>-->
|
||||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
<!-- <artifactId>pagehelper-spring-boot-starter</artifactId>-->
|
||||||
<version>${page-helper.version}</version>
|
<!-- <version>${page-helper.version}</version>-->
|
||||||
</dependency>
|
<!-- </dependency>-->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.mysql</groupId>
|
<groupId>com.mysql</groupId>
|
||||||
@@ -121,10 +121,10 @@
|
|||||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- <dependency>-->
|
<dependency>
|
||||||
<!-- <groupId>com.fasterxml.jackson.datatype</groupId>-->
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
<!-- <artifactId>jackson-datatype-hibernate6</artifactId>-->
|
<artifactId>jackson-datatype-hibernate6</artifactId>
|
||||||
<!-- </dependency>-->
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
package com.rainbus.dlp;
|
package com.dlp.admin;
|
||||||
|
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||||
|
|
||||||
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
|
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
|
||||||
@MapperScan("com.rainbus.dlp.repository.mapper")
|
|
||||||
public class DlpAdminBackendApplication {
|
public class DlpAdminBackendApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.rainbus.dlp.config;
|
package com.dlp.admin.config;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.dto.user.TokenClaims;
|
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||||
import com.rainbus.dlp.service.UserServ;
|
import com.dlp.admin.service.UserServ;
|
||||||
import com.rainbus.dlp.util.JwtUtil;
|
import com.dlp.admin.util.JwtUtil;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@@ -12,8 +12,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
|
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
|
||||||
@@ -21,9 +19,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.web.filter.OncePerRequestFilter;
|
import org.springframework.web.filter.OncePerRequestFilter;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.config;
|
package com.dlp.admin.config;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.info.Info;
|
import io.swagger.v3.oas.models.info.Info;
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.rainbus.dlp.config;
|
package com.dlp.admin.config;
|
||||||
|
|
||||||
|
|
||||||
import com.rainbus.dlp.repository.dao.UserDao;
|
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||||
import com.rainbus.dlp.service.UserServ;
|
import com.dlp.admin.repository.user.SysRoleRepo;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -18,13 +19,16 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.security.web.SecurityFilterChain;
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSecurity
|
@EnableWebSecurity
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class SecurityConf {
|
public class SecurityConf {
|
||||||
|
|
||||||
private final UserDao userDao;
|
private final SecurityDataService securityDataService;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SecurityFilterChain filterChain(HttpSecurity http, JwtFilter jwtFilter) throws Exception {
|
public SecurityFilterChain filterChain(HttpSecurity http, JwtFilter jwtFilter) throws Exception {
|
||||||
@@ -32,7 +36,8 @@ public class SecurityConf {
|
|||||||
.csrf(AbstractHttpConfigurer::disable)
|
.csrf(AbstractHttpConfigurer::disable)
|
||||||
.sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
.sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
||||||
.authorizeHttpRequests((authorizeHttpRequests) -> {
|
.authorizeHttpRequests((authorizeHttpRequests) -> {
|
||||||
userDao.listRoleResource().forEach(role -> {
|
//TODO: Lazy load problem
|
||||||
|
securityDataService.fetchAllRoles().forEach(role -> {
|
||||||
role.getResources().forEach(resource -> {
|
role.getResources().forEach(resource -> {
|
||||||
authorizeHttpRequests.requestMatchers(
|
authorizeHttpRequests.requestMatchers(
|
||||||
HttpMethod.valueOf(resource.getRequestMethod().name()),
|
HttpMethod.valueOf(resource.getRequestMethod().name()),
|
||||||
@@ -58,4 +63,18 @@ public class SecurityConf {
|
|||||||
return new BCryptPasswordEncoder();
|
return new BCryptPasswordEncoder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
static class SecurityDataService {
|
||||||
|
|
||||||
|
private final SysRoleRepo roleRepo;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public List<SysRole> fetchAllRoles() {
|
||||||
|
return roleRepo.findAll().stream().filter(role -> !role.getResources().isEmpty()).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.rainbus.dlp.controller;
|
package com.dlp.admin.controller;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.exception.UsernameOrPasswordExcp;
|
import com.dlp.admin.entity.exception.UsernameOrPasswordExcp;
|
||||||
import com.rainbus.dlp.entity.resp.Resp;
|
import com.dlp.admin.entity.resp.Resp;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
|
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package com.rainbus.dlp.controller;
|
package com.dlp.admin.controller;
|
||||||
|
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||||
import com.rainbus.dlp.entity.req.user.*;
|
import com.dlp.admin.entity.req.user.*;
|
||||||
import com.rainbus.dlp.entity.resp.Resp;
|
import com.dlp.admin.entity.resp.PageResp;
|
||||||
import com.rainbus.dlp.entity.resp.user.GetTagResp;
|
import com.dlp.admin.entity.resp.Resp;
|
||||||
import com.rainbus.dlp.entity.resp.user.GetUserResp;
|
import com.dlp.admin.entity.resp.user.GetTagResp;
|
||||||
import com.rainbus.dlp.entity.resp.user.LoginResp;
|
import com.dlp.admin.entity.resp.user.GetUserResp;
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysResourceMapper;
|
import com.dlp.admin.entity.resp.user.LoginResp;
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysRoleMapper;
|
import com.dlp.admin.repository.user.SysRoleRepo;
|
||||||
import com.rainbus.dlp.service.UserServ;
|
import com.dlp.admin.service.UserServ;
|
||||||
import com.rainbus.dlp.util.RedisUtil;
|
import com.dlp.admin.util.RedisUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -24,8 +24,7 @@ public class UserCtrl {
|
|||||||
|
|
||||||
private final RedisUtil redisUtil;
|
private final RedisUtil redisUtil;
|
||||||
private final UserServ userServ;
|
private final UserServ userServ;
|
||||||
private final SysRoleMapper sysRoleMapper;
|
private final SysRoleRepo sysRoleRepo;
|
||||||
private final SysResourceMapper sysResourceMapper;
|
|
||||||
|
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@Operation(summary = "登录接口")
|
@Operation(summary = "登录接口")
|
||||||
@@ -35,7 +34,7 @@ public class UserCtrl {
|
|||||||
|
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
@Operation(summary = "搜索用户")
|
@Operation(summary = "搜索用户")
|
||||||
public Resp<PageInfo<GetUserResp>> listUser(@RequestBody ListUserReq req) {
|
public Resp<PageResp<GetUserResp>> listUser(@RequestBody ListUserReq req) {
|
||||||
return Resp.success(null);
|
return Resp.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,8 +92,11 @@ public class UserCtrl {
|
|||||||
resource.setResource("/user/test");
|
resource.setResource("/user/test");
|
||||||
resource.setRequestMethod(RequestMethod.GET);
|
resource.setRequestMethod(RequestMethod.GET);
|
||||||
List<SysResource> resources = List.of(resource);
|
List<SysResource> resources = List.of(resource);
|
||||||
return Resp.success(sysResourceMapper.batchInsert(resources));
|
// return Resp.success(sysResourceMapper.batchInsert(resources));
|
||||||
// return Resp.success(sysRoleMapper.selectRoleIdsByUserId(List.of(1L, 2L)));
|
// return Resp.success(sysRoleMapper.selectRoleIdsByUserId(List.of(1L, 2L)));
|
||||||
|
List<SysRole> roles = sysRoleRepo.findAll();
|
||||||
|
roles.stream().forEach(role -> role.getResources().stream().forEach(resource1 -> System.out.println(resource1.getResource())));
|
||||||
|
return Resp.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity;
|
package com.dlp.admin.entity;
|
||||||
|
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.rainbus.dlp.entity.converter;
|
package com.dlp.admin.entity.converter;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.dto.system.ApiInfo;
|
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
import com.dlp.admin.entity.dto.system.ApiInfo;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.rainbus.dlp.entity.converter;
|
package com.dlp.admin.entity.converter;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.dto.user.CustomUserDetails;
|
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||||
import com.rainbus.dlp.entity.dto.user.TokenClaims;
|
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysUser;
|
import com.dlp.admin.entity.pojo.user.SysUser;
|
||||||
import com.rainbus.dlp.entity.req.user.AddUserReq;
|
import com.dlp.admin.entity.req.user.AddUserReq;
|
||||||
import org.mapstruct.InheritInverseConfiguration;
|
import org.mapstruct.InheritInverseConfiguration;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
@@ -14,13 +14,13 @@ public interface UserConv {
|
|||||||
@InheritInverseConfiguration
|
@InheritInverseConfiguration
|
||||||
SysUser RegisterReq2Pojo(AddUserReq req, String password);
|
SysUser RegisterReq2Pojo(AddUserReq req, String password);
|
||||||
|
|
||||||
@Mapping(target = "roles", expression = "java(user.getRoles().stream().map(com.rainbus.dlp.entity.pojo.user.SysRole::getRole).toList())")
|
@Mapping(target = "roles", expression = "java(user.getRoles().stream().map(com.dlp.admin.entity.pojo.user.SysRole::getRole).toList())")
|
||||||
@Mapping(target = "orgId", expression = "java(user.getOrg().getId())")
|
@Mapping(target = "orgId", expression = "java(user.getOrg().getId())")
|
||||||
TokenClaims ClaimsPojo2Dto(SysUser user);
|
TokenClaims ClaimsPojo2Dto(SysUser user);
|
||||||
|
|
||||||
@Mapping(target = "orgId", expression = "java(user.getOrg().getId())")
|
@Mapping(target = "orgId", expression = "java(user.getOrg().getId())")
|
||||||
@Mapping(target = "authorities", ignore = true)
|
@Mapping(target = "authorities", ignore = true)
|
||||||
@Mapping(target = "roles", expression = "java(user.getRoles().stream().map(com.rainbus.dlp.entity.pojo.user.SysRole::getRole).toList())")
|
@Mapping(target = "roles", expression = "java(user.getRoles().stream().map(com.dlp.admin.entity.pojo.user.SysRole::getRole).toList())")
|
||||||
CustomUserDetails UserDetailsPojo2Dto(SysUser user);
|
CustomUserDetails UserDetailsPojo2Dto(SysUser user);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.dto;
|
package com.dlp.admin.entity.dto;
|
||||||
|
|
||||||
public record Pair<T1, T2>(T1 v1, T2 v2) {
|
public record Pair<T1, T2>(T1 v1, T2 v2) {
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.dto;
|
package com.dlp.admin.entity.dto;
|
||||||
|
|
||||||
public record Tuple<T1, T2, T3>(T1 v1, T2 v2, T3 v3) {
|
public record Tuple<T1, T2, T3>(T1 v1, T2 v2, T3 v3) {
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.dto.system;
|
package com.dlp.admin.entity.dto.system;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.rainbus.dlp.entity.dto.user;
|
package com.dlp.admin.entity.dto.user;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.rainbus.dlp.entity.enums.UserStatusEnum;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
@@ -13,7 +10,6 @@ import org.springframework.security.core.userdetails.UserDetails;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
package com.rainbus.dlp.entity.dto.user;
|
package com.dlp.admin.entity.dto.user;
|
||||||
|
|
||||||
import com.auth0.jwt.interfaces.Claim;
|
import com.auth0.jwt.interfaces.Claim;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
import com.dlp.admin.util.ConvertUtil;
|
||||||
import com.rainbus.dlp.util.ConvertUtil;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.enums;
|
package com.dlp.admin.entity.enums;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.enums;
|
package com.dlp.admin.entity.enums;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.enums;
|
package com.dlp.admin.entity.enums;
|
||||||
|
|
||||||
public enum RoleEnum {
|
public enum RoleEnum {
|
||||||
// system admin
|
// system admin
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.enums;
|
package com.dlp.admin.entity.enums;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.exception;
|
package com.dlp.admin.entity.exception;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.rainbus.dlp.entity.exception;
|
package com.dlp.admin.entity.exception;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.enums.ExceptionEnum;
|
import com.dlp.admin.entity.enums.ExceptionEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.rainbus.dlp.entity.exception;
|
package com.dlp.admin.entity.exception;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.enums.ExceptionEnum;
|
import com.dlp.admin.entity.enums.ExceptionEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
49
src/main/java/com/dlp/admin/entity/pojo/user/SysOrg.java
Normal file
49
src/main/java/com/dlp/admin/entity/pojo/user/SysOrg.java
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package com.dlp.admin.entity.pojo.user;
|
||||||
|
|
||||||
|
import com.dlp.admin.entity.enums.OrgTypeEnum;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.data.annotation.CreatedBy;
|
||||||
|
import org.springframework.data.annotation.CreatedDate;
|
||||||
|
import org.springframework.data.annotation.LastModifiedBy;
|
||||||
|
import org.springframework.data.annotation.LastModifiedDate;
|
||||||
|
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@EnableJpaAuditing
|
||||||
|
public class SysOrg {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String org;
|
||||||
|
|
||||||
|
private OrgTypeEnum type;
|
||||||
|
|
||||||
|
private String fullPathName;
|
||||||
|
|
||||||
|
private String fullPath;
|
||||||
|
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
private String region;
|
||||||
|
|
||||||
|
private String area;
|
||||||
|
|
||||||
|
@CreatedDate
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
@LastModifiedDate
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
|
@CreatedBy
|
||||||
|
private Long createdBy;
|
||||||
|
|
||||||
|
@LastModifiedBy
|
||||||
|
private Long updatedBy;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,24 +1,29 @@
|
|||||||
package com.rainbus.dlp.entity.pojo.user;
|
package com.dlp.admin.entity.pojo.user;
|
||||||
|
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Entity
|
||||||
public class SysResource {
|
public class SysResource {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String resource;
|
private String resource;
|
||||||
|
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
private RequestMethod requestMethod;
|
private RequestMethod requestMethod;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
private LocalDateTime createdAt = LocalDateTime.now();
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
private LocalDateTime updatedAt = LocalDateTime.now();
|
private LocalDateTime updatedAt;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,23 @@
|
|||||||
package com.rainbus.dlp.entity.pojo.user;
|
package com.dlp.admin.entity.pojo.user;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Entity
|
||||||
public class SysRole {
|
public class SysRole {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String role;
|
private String role;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
@ManyToMany
|
||||||
private List<SysResource> resources;
|
private List<SysResource> resources;
|
||||||
|
|
||||||
private Long createdBy;
|
private Long createdBy;
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
package com.rainbus.dlp.entity.pojo.user;
|
package com.dlp.admin.entity.pojo.user;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||||
import com.rainbus.dlp.entity.enums.UserStatusEnum;
|
import jakarta.persistence.*;
|
||||||
import com.rainbus.dlp.entity.exception.UserDisabledExcp;
|
|
||||||
import com.rainbus.dlp.entity.exception.UsernameOrPasswordExcp;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Entity
|
||||||
public class SysUser {
|
public class SysUser {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String username;
|
private String username;
|
||||||
@@ -21,8 +21,10 @@ public class SysUser {
|
|||||||
|
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
@ManyToMany
|
||||||
private List<SysRole> roles;
|
private List<SysRole> roles;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
private SysOrg org;
|
private SysOrg org;
|
||||||
|
|
||||||
private UserStatusEnum status;
|
private UserStatusEnum status;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.req;
|
package com.dlp.admin.entity.req;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
package com.rainbus.dlp.entity.req.user;
|
package com.dlp.admin.entity.req.user;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Email;
|
import jakarta.validation.constraints.Email;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NonNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AddUserReq {
|
public class AddUserReq {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.req.user;
|
package com.dlp.admin.entity.req.user;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
package com.rainbus.dlp.entity.req.user;
|
package com.dlp.admin.entity.req.user;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.req.PageReq;
|
import com.dlp.admin.entity.req.PageReq;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.req.user;
|
package com.dlp.admin.entity.req.user;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.req.user;
|
package com.dlp.admin.entity.req.user;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Email;
|
import jakarta.validation.constraints.Email;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.resp;
|
package com.dlp.admin.entity.resp;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.resp;
|
package com.dlp.admin.entity.resp;
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.resp.user;
|
package com.dlp.admin.entity.resp.user;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
package com.rainbus.dlp.entity.resp.user;
|
package com.dlp.admin.entity.resp.user;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.enums.UserStatusEnum;
|
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
import com.dlp.admin.entity.pojo.user.SysOrg;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysRole;
|
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.entity.resp.user;
|
package com.dlp.admin.entity.resp.user;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.dlp.admin.repository.user;
|
||||||
|
|
||||||
|
import com.dlp.admin.entity.pojo.user.SysOrg;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface SysOrgRepo extends JpaRepository<SysOrg, Long> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.dlp.admin.repository.user;
|
||||||
|
|
||||||
|
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface SysResourceRepo extends JpaRepository<SysResource, Long> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.dlp.admin.repository.user;
|
||||||
|
|
||||||
|
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface SysRoleRepo extends JpaRepository<SysRole, Long> {
|
||||||
|
}
|
||||||
10
src/main/java/com/dlp/admin/repository/user/SysUserRepo.java
Normal file
10
src/main/java/com/dlp/admin/repository/user/SysUserRepo.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package com.dlp.admin.repository.user;
|
||||||
|
|
||||||
|
import com.dlp.admin.entity.pojo.user.SysUser;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface SysUserRepo extends JpaRepository<SysUser, Long> {
|
||||||
|
Optional<SysUser> findByUsername(String username);
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.rainbus.dlp.service;
|
package com.dlp.admin.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.dlp.admin.entity.converter.SystemConv;
|
||||||
import com.rainbus.dlp.entity.ApiDescription;
|
import com.dlp.admin.entity.dto.system.ApiInfo;
|
||||||
import com.rainbus.dlp.entity.converter.SystemConv;
|
|
||||||
import com.rainbus.dlp.entity.dto.system.ApiInfo;
|
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -15,7 +15,6 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl
|
|||||||
import org.springframework.web.util.pattern.PathPattern;
|
import org.springframework.web.util.pattern.PathPattern;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -38,10 +37,10 @@ public class SystemServ {
|
|||||||
|
|
||||||
Set<PathPattern> patterns = info.getPathPatternsCondition().getPatterns();
|
Set<PathPattern> patterns = info.getPathPatternsCondition().getPatterns();
|
||||||
Set<RequestMethod> methods = info.getMethodsCondition().getMethods();
|
Set<RequestMethod> methods = info.getMethodsCondition().getMethods();
|
||||||
Optional<ApiDescription> desc = Optional.ofNullable(func.getMethod().getAnnotation(ApiDescription.class));
|
Optional<Operation> desc = Optional.ofNullable(func.getMethod().getAnnotation(Operation.class));
|
||||||
for (PathPattern url : patterns) {
|
for (PathPattern url : patterns) {
|
||||||
for (RequestMethod method : methods) {
|
for (RequestMethod method : methods) {
|
||||||
apiInfos.add(new ApiInfo(url.getPatternString(), method, desc.map(ApiDescription::value).orElse(null)));
|
apiInfos.add(new ApiInfo(url.getPatternString(), method, desc.map(Operation::summary).orElse(null)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1,21 +1,20 @@
|
|||||||
package com.rainbus.dlp.service;
|
package com.dlp.admin.service;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.converter.UserConv;
|
import com.dlp.admin.entity.converter.UserConv;
|
||||||
import com.rainbus.dlp.entity.dto.user.CustomUserDetails;
|
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||||
import com.rainbus.dlp.entity.dto.user.TokenClaims;
|
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||||
import com.rainbus.dlp.entity.enums.UserStatusEnum;
|
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||||
import com.rainbus.dlp.entity.exception.OrgNotExistExcp;
|
import com.dlp.admin.entity.exception.OrgNotExistExcp;
|
||||||
import com.rainbus.dlp.entity.exception.UserDisabledExcp;
|
import com.dlp.admin.entity.exception.UserDisabledExcp;
|
||||||
import com.rainbus.dlp.entity.exception.UsernameOrPasswordExcp;
|
import com.dlp.admin.entity.exception.UsernameOrPasswordExcp;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
import com.dlp.admin.entity.pojo.user.SysOrg;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysRole;
|
import com.dlp.admin.entity.pojo.user.SysUser;
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysUser;
|
import com.dlp.admin.entity.req.user.LoginReq;
|
||||||
import com.rainbus.dlp.entity.req.user.LoginReq;
|
import com.dlp.admin.entity.resp.user.LoginResp;
|
||||||
import com.rainbus.dlp.entity.resp.user.LoginResp;
|
import com.dlp.admin.repository.user.SysUserRepo;
|
||||||
import com.rainbus.dlp.repository.dao.UserDao;
|
import com.dlp.admin.util.AuthUtil;
|
||||||
import com.rainbus.dlp.util.AuthUtil;
|
import com.dlp.admin.util.JwtUtil;
|
||||||
import com.rainbus.dlp.util.JwtUtil;
|
import com.dlp.admin.util.RedisUtil;
|
||||||
import com.rainbus.dlp.util.RedisUtil;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
@@ -23,7 +22,6 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
||||||
@@ -32,7 +30,7 @@ import java.util.Optional;
|
|||||||
public class UserServ implements UserDetailsService {
|
public class UserServ implements UserDetailsService {
|
||||||
|
|
||||||
private final UserConv userConv;
|
private final UserConv userConv;
|
||||||
private final UserDao userDao;
|
private final SysUserRepo userRepo;
|
||||||
|
|
||||||
public static final String REDIS_USER_DETAILS = "user_details_%s";
|
public static final String REDIS_USER_DETAILS = "user_details_%s";
|
||||||
public static final long REDIS_USER_DETAILS_EXPIRE = 1 * 60 * 60;
|
public static final long REDIS_USER_DETAILS_EXPIRE = 1 * 60 * 60;
|
||||||
@@ -41,7 +39,7 @@ public class UserServ implements UserDetailsService {
|
|||||||
private final AuthUtil authUtil;
|
private final AuthUtil authUtil;
|
||||||
|
|
||||||
public SysUser getUserByUsername(String username) {
|
public SysUser getUserByUsername(String username) {
|
||||||
Optional<SysUser> user = userDao.findUserByUsername(username);
|
Optional<SysUser> user = userRepo.findByUsername(username);
|
||||||
if (user.isEmpty()) {
|
if (user.isEmpty()) {
|
||||||
throw new UsernameNotFoundException("用户不存在");
|
throw new UsernameNotFoundException("用户不存在");
|
||||||
}
|
}
|
||||||
@@ -49,7 +47,7 @@ public class UserServ implements UserDetailsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LoginResp login(LoginReq req) {
|
public LoginResp login(LoginReq req) {
|
||||||
Optional<SysUser> userOpt = userDao.findUserRoleOrgByUsername(req.getUsername());
|
Optional<SysUser> userOpt = userRepo.findByUsername(req.getUsername());
|
||||||
SysUser user = validUserAvailable(userOpt);
|
SysUser user = validUserAvailable(userOpt);
|
||||||
validPassword(req.getPassword(), user.getPassword());
|
validPassword(req.getPassword(), user.getPassword());
|
||||||
TokenClaims claims = userConv.ClaimsPojo2Dto(user);
|
TokenClaims claims = userConv.ClaimsPojo2Dto(user);
|
||||||
@@ -57,12 +55,12 @@ public class UserServ implements UserDetailsService {
|
|||||||
resp.setToken(JwtUtil.generateToken(claims));
|
resp.setToken(JwtUtil.generateToken(claims));
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
//
|
||||||
public Object listUser() {
|
// public Object listUser() {
|
||||||
Long orgId = authUtil.getUserDetails().getOrgId();
|
// Long orgId = authUtil.getUserDetails().getOrgId();
|
||||||
List<Long> subOrgIds = userDao.listOrgWithSubOrg(orgId).stream().map(SysOrg::getId).toList();
|
// List<Long> subOrgIds = userDao.listOrgWithSubOrg(orgId).stream().map(SysOrg::getId).toList();
|
||||||
return userDao.listUserByOrgIds(subOrgIds);
|
// return userDao.listUserByOrgIds(subOrgIds);
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||||
@@ -73,7 +71,7 @@ public class UserServ implements UserDetailsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 读数据库
|
// 读数据库
|
||||||
Optional<SysUser> userOpt = userDao.findUserRoleOrgByUsername(username);
|
Optional<SysUser> userOpt = userRepo.findByUsername(username);
|
||||||
SysUser user = validUserAvailable(userOpt);
|
SysUser user = validUserAvailable(userOpt);
|
||||||
CustomUserDetails userDetails = userConv.UserDetailsPojo2Dto(user);
|
CustomUserDetails userDetails = userConv.UserDetailsPojo2Dto(user);
|
||||||
|
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package com.rainbus.dlp.util;
|
package com.dlp.admin.util;
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.dto.user.CustomUserDetails;
|
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.util;
|
package com.dlp.admin.util;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.util;
|
package com.dlp.admin.util;
|
||||||
|
|
||||||
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWT;
|
||||||
import com.auth0.jwt.JWTCreator;
|
import com.auth0.jwt.JWTCreator;
|
||||||
@@ -6,7 +6,7 @@ import com.auth0.jwt.JWTVerifier;
|
|||||||
import com.auth0.jwt.algorithms.Algorithm;
|
import com.auth0.jwt.algorithms.Algorithm;
|
||||||
import com.auth0.jwt.exceptions.JWTVerificationException;
|
import com.auth0.jwt.exceptions.JWTVerificationException;
|
||||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||||
import com.rainbus.dlp.entity.dto.user.TokenClaims;
|
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp.util;
|
package com.dlp.admin.util;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
package com.rainbus.dlp.config;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
|
||||||
import com.rainbus.dlp.entity.dto.user.CustomUserDetails;
|
|
||||||
import com.rainbus.dlp.util.AuthUtil;
|
|
||||||
import org.apache.ibatis.reflection.MetaObject;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class MybatisMetaObjectHandler implements MetaObjectHandler {
|
|
||||||
private final AuthUtil authUtil;
|
|
||||||
|
|
||||||
public MybatisMetaObjectHandler(AuthUtil authUtil) {
|
|
||||||
this.authUtil = authUtil;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertFill(MetaObject metaObject) {
|
|
||||||
if (metaObject.hasSetter("createAt")) {
|
|
||||||
this.fillStrategy(metaObject, "createAt", LocalDateTime.now());
|
|
||||||
}
|
|
||||||
if (metaObject.hasSetter("updateAt")) {
|
|
||||||
this.fillStrategy(metaObject, "updateAt", LocalDateTime.now());
|
|
||||||
}
|
|
||||||
if (metaObject.hasSetter("createBy")) {
|
|
||||||
this.fillStrategy(metaObject, "createBy", this.getCurrentUserId());
|
|
||||||
}
|
|
||||||
if (metaObject.hasSetter("updateBy")) {
|
|
||||||
this.fillStrategy(metaObject, "updateBy", this.getCurrentUserId());
|
|
||||||
}
|
|
||||||
if (metaObject.hasSetter("isDeleted")) {
|
|
||||||
this.fillStrategy(metaObject, "isDeleted", false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateFill(MetaObject metaObject) {
|
|
||||||
if (metaObject.hasSetter("updateAt")) {
|
|
||||||
this.fillStrategy(metaObject, "updateAt", LocalDateTime.now());
|
|
||||||
}
|
|
||||||
if (metaObject.hasSetter("updateBy")) {
|
|
||||||
this.fillStrategy(metaObject, "updateBy", this.getCurrentUserId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Long getCurrentUserId() {
|
|
||||||
CustomUserDetails userDetails = authUtil.getUserDetails();
|
|
||||||
return userDetails.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.rainbus.dlp.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 MybatisPlusConf {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
|
||||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
|
||||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
|
||||||
return interceptor;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
package com.rainbus.dlp.entity.pojo.user;
|
|
||||||
|
|
||||||
import com.rainbus.dlp.entity.enums.OrgTypeEnum;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class SysOrg {
|
|
||||||
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
private String org;
|
|
||||||
|
|
||||||
private OrgTypeEnum type;
|
|
||||||
|
|
||||||
private String fullPathName;
|
|
||||||
|
|
||||||
private String fullPath;
|
|
||||||
|
|
||||||
private Long parentId;
|
|
||||||
|
|
||||||
private String region;
|
|
||||||
|
|
||||||
private String area;
|
|
||||||
|
|
||||||
private LocalDateTime createdAt;
|
|
||||||
|
|
||||||
private LocalDateTime updatedAt;
|
|
||||||
|
|
||||||
private Long createdBy;
|
|
||||||
|
|
||||||
private Long updatedBy;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.dao;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.batch.MybatisBatch;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysResourceMapper;
|
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysUserMapper;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class SystemDao {
|
|
||||||
|
|
||||||
private final SysResourceMapper resourceMapper;
|
|
||||||
private final SqlSessionFactory sqlSessionFactory;
|
|
||||||
private final SysUserMapper sysUserMapper;
|
|
||||||
|
|
||||||
public SystemDao(SysResourceMapper sysResourceMapper, SqlSessionFactory sqlSessionFactory, SysUserMapper sysUserMapper) {
|
|
||||||
this.resourceMapper = sysResourceMapper;
|
|
||||||
this.sqlSessionFactory = sqlSessionFactory;
|
|
||||||
this.sysUserMapper = sysUserMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.dao;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysRole;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysUser;
|
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysOrgMapper;
|
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysRoleMapper;
|
|
||||||
import com.rainbus.dlp.repository.mapper.user.SysUserMapper;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class UserDao {
|
|
||||||
|
|
||||||
private final SysUserMapper userMapper;
|
|
||||||
private final SysRoleMapper roleMapper;
|
|
||||||
private final SysOrgMapper orgMapper;
|
|
||||||
|
|
||||||
public Optional<SysUser> findUserByUsername(String username) {
|
|
||||||
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<SysUser>()
|
|
||||||
.eq(SysUser::getUsername, username);
|
|
||||||
return Optional.ofNullable(userMapper.selectOne(wrapper));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Optional<SysUser> findUserRoleOrgByUsername(String username) {
|
|
||||||
return Optional.ofNullable(userMapper.selectUserRoleOrgByUsername(username));
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysRole> listRoleResource() {
|
|
||||||
return roleMapper.selectAllRoleResource();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Optional<SysOrg> findOrgById(Long orgId) {
|
|
||||||
return Optional.ofNullable(orgMapper.selectById(orgId));
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysOrg> listOrgWithSubOrg(Long orgId) {
|
|
||||||
SysOrg org = orgMapper.selectById(orgId);
|
|
||||||
if (Objects.isNull(org)) {
|
|
||||||
return List.of();
|
|
||||||
}
|
|
||||||
LambdaQueryWrapper<SysOrg> subQueryWrapper = new LambdaQueryWrapper<SysOrg>()
|
|
||||||
.like(SysOrg::getFullPath, org.getFullPath() + "%");
|
|
||||||
return orgMapper.selectList(subQueryWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SysUser> listUserByOrgIds(List<Long> orgIds) {
|
|
||||||
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<SysUser>()
|
|
||||||
.in(SysUser::getOrg, orgIds);
|
|
||||||
return userMapper.selectList(lqw);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.mapper.user;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
|
||||||
|
|
||||||
public interface SysOrgMapper extends BaseMapper<SysOrg> {
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.mapper.user;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
|
||||||
import com.rainbus.dlp.util.SqlUtil;
|
|
||||||
import com.rainbus.dlp.util.TextUtil;
|
|
||||||
import org.apache.ibatis.annotations.Insert;
|
|
||||||
import org.apache.ibatis.annotations.Select;
|
|
||||||
import org.mapstruct.Mapping;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface SysResourceMapper extends BaseMapper<SysResource> {
|
|
||||||
|
|
||||||
@Select("""
|
|
||||||
select * from sys_resource sr
|
|
||||||
left join sys_role_resources srr
|
|
||||||
on sr.id = srr.resources_id
|
|
||||||
where srr.sys_role_id = #{roleId}
|
|
||||||
""")
|
|
||||||
List<SysResource> selectListByRoleId(Long roleId);
|
|
||||||
|
|
||||||
@Insert("""
|
|
||||||
<script>
|
|
||||||
insert into sys_resource (request_method, resource, created_at, description, updated_at) values
|
|
||||||
<foreach collection="resources" item="item" index="index" separator=",">
|
|
||||||
(#{item.requestMethod}, #{item.resource}, #{item.createdAt}, #{item.description}, #{item.updatedAt})
|
|
||||||
</foreach>
|
|
||||||
</script>
|
|
||||||
""")
|
|
||||||
Long batchInsert(List<SysResource> resources);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.mapper.user;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.rainbus.dlp.entity.dto.Pair;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysRole;
|
|
||||||
import org.apache.ibatis.annotations.*;
|
|
||||||
|
|
||||||
import javax.management.relation.Role;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
|
||||||
|
|
||||||
@Select("""
|
|
||||||
select * from sys_role sr
|
|
||||||
left join sys_user_roles sur
|
|
||||||
on sr.id = sur.roles_id
|
|
||||||
where sur.sys_user_id = #{userId}
|
|
||||||
""")
|
|
||||||
List<SysRole> selectListByUserId(Long userId);
|
|
||||||
|
|
||||||
@Select("""
|
|
||||||
select * from sys_role where id = 4
|
|
||||||
""")
|
|
||||||
@Results(
|
|
||||||
@Result(
|
|
||||||
property = "resources",
|
|
||||||
column = "id",
|
|
||||||
many = @Many(
|
|
||||||
select = "com.rainbus.dlp.repository.mapper.user.SysResourceMapper.selectListByRoleId"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
List<SysRole> selectAllRoleResource();
|
|
||||||
|
|
||||||
|
|
||||||
@Select("""
|
|
||||||
select * from sys_user_roles where sys_user_id in #{userId}
|
|
||||||
""")
|
|
||||||
@Results({
|
|
||||||
@Result(property = "v1", column = "sys_user_id"),
|
|
||||||
@Result(property = "v2", column = "roles_id")
|
|
||||||
})
|
|
||||||
List<Pair<Long, Long>> selectRoleIdsByUserId(List<Long> userId);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package com.rainbus.dlp.repository.mapper.user;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.rainbus.dlp.entity.pojo.user.SysUser;
|
|
||||||
import org.apache.ibatis.annotations.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface SysUserMapper extends BaseMapper<SysUser> {
|
|
||||||
@Select("""
|
|
||||||
select * from sys_user where username = #{username}
|
|
||||||
""")
|
|
||||||
@Results({
|
|
||||||
@Result(column = "id", property = "id"),
|
|
||||||
@Result(
|
|
||||||
column = "id",
|
|
||||||
property = "roles",
|
|
||||||
many = @Many(
|
|
||||||
select = "com.rainbus.dlp.repository.mapper.user.SysRoleMapper.selectListByUserId"
|
|
||||||
)
|
|
||||||
),
|
|
||||||
@Result(
|
|
||||||
column = "org_id",
|
|
||||||
property = "org",
|
|
||||||
one = @One(
|
|
||||||
select = "com.rainbus.dlp.repository.mapper.user.SysOrgMapper.selectById"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
})
|
|
||||||
SysUser selectUserRoleOrgByUsername(@Param("username") String username);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
package com.rainbus.dlp.util;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class SqlUtil {
|
|
||||||
|
|
||||||
record TableInfo(String tableName, List<String> columName) {}
|
|
||||||
|
|
||||||
public static <T> String generateBatchInsertSql(String fieldName, Class<T> tClass) {
|
|
||||||
TableInfo tableInfo = getTableInfo(tClass);
|
|
||||||
return STR."""
|
|
||||||
INSERT INTO \{tableInfo.tableName} (\{String.join(", ", tableInfo.columName)})
|
|
||||||
VALUES
|
|
||||||
<foreach collection="\{fieldName}" item="item" index="index" separator=",">
|
|
||||||
(\{String.join(", ", tableInfo.columName.stream().map(colum -> STR."#{item.\{colum}}").toList())})
|
|
||||||
</foreach>
|
|
||||||
""";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <T> TableInfo getTableInfo(Class<T> tClass) {
|
|
||||||
String tableName = TextUtil.camelToSnake(tClass.getSimpleName());
|
|
||||||
List<String> columName = Arrays.stream(tClass.getDeclaredFields())
|
|
||||||
.map(field -> TextUtil.camelToSnake(field.getName()))
|
|
||||||
.toList();
|
|
||||||
return new TableInfo(tableName, columName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package com.rainbus.dlp.util;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
public class TextUtil {
|
|
||||||
public static String camelToSnake(String camel) {
|
|
||||||
if (StringUtils.isBlank(camel)) {
|
|
||||||
return camel;
|
|
||||||
}
|
|
||||||
camel = Character.toLowerCase(camel.charAt(0)) + camel.substring(1);
|
|
||||||
|
|
||||||
StringBuilder result = new StringBuilder();
|
|
||||||
for (Character c: camel.toCharArray()) {
|
|
||||||
if (Character.isUpperCase(c)) {
|
|
||||||
result.append("_");
|
|
||||||
result.append(Character.toLowerCase(c));
|
|
||||||
} else {
|
|
||||||
result.append(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,6 +7,13 @@ spring:
|
|||||||
username: root
|
username: root
|
||||||
password: 13291004986@lm
|
password: 13291004986@lm
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
jpa:
|
||||||
|
hibernate:
|
||||||
|
ddl-auto: update
|
||||||
|
show-sql: true
|
||||||
|
# properties:
|
||||||
|
# hibernate:
|
||||||
|
# enable_lazy_load_no_trans: true
|
||||||
|
|
||||||
|
|
||||||
data:
|
data:
|
||||||
@@ -15,11 +22,4 @@ spring:
|
|||||||
port: 6379
|
port: 6379
|
||||||
password: 13291004986
|
password: 13291004986
|
||||||
timeout: 10000
|
timeout: 10000
|
||||||
database: 0
|
database: 0
|
||||||
logging:
|
|
||||||
level:
|
|
||||||
com:
|
|
||||||
rainbus:
|
|
||||||
dlp:
|
|
||||||
repository:
|
|
||||||
mapper: debug
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE mapper
|
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.rainbus.dlp.repository.mapper.user.SysResourceMapper">
|
|
||||||
<!-- <insert id="batchInsert">-->
|
|
||||||
<!-- ${@com.rainbus.dlp.util.SqlUtil@generateBatchInsertSql("resources", @com.rainbus.dlp.entity.pojo.user.SysResource@class)}-->
|
|
||||||
<!-- </insert>-->
|
|
||||||
</mapper>
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.rainbus.dlp;
|
package com.dlp.admin;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
Reference in New Issue
Block a user