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>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.rainbus</groupId>
|
||||
<groupId>com.dlp.admin</groupId>
|
||||
<artifactId>dlp-admin-backend</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>dlp-admin-backend</name>
|
||||
@@ -45,21 +45,21 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-data-jpa</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||||
<version>${mybatis-plus.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
<version>${page-helper.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.baomidou</groupId>-->
|
||||
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
|
||||
<!-- <version>${mybatis-plus.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.github.pagehelper</groupId>-->
|
||||
<!-- <artifactId>pagehelper-spring-boot-starter</artifactId>-->
|
||||
<!-- <version>${page-helper.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
@@ -121,10 +121,10 @@
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.fasterxml.jackson.datatype</groupId>-->
|
||||
<!-- <artifactId>jackson-datatype-hibernate6</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-hibernate6</artifactId>
|
||||
</dependency>
|
||||
|
||||
</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.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||
|
||||
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
|
||||
@MapperScan("com.rainbus.dlp.repository.mapper")
|
||||
public class DlpAdminBackendApplication {
|
||||
|
||||
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.rainbus.dlp.service.UserServ;
|
||||
import com.rainbus.dlp.util.JwtUtil;
|
||||
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||
import com.dlp.admin.service.UserServ;
|
||||
import com.dlp.admin.util.JwtUtil;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@@ -12,8 +12,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
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.userdetails.UserDetails;
|
||||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
|
||||
@@ -21,9 +19,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@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.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.rainbus.dlp.service.UserServ;
|
||||
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||
import com.dlp.admin.repository.user.SysRoleRepo;
|
||||
import jakarta.transaction.Transactional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
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.web.SecurityFilterChain;
|
||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
@RequiredArgsConstructor
|
||||
public class SecurityConf {
|
||||
|
||||
private final UserDao userDao;
|
||||
private final SecurityDataService securityDataService;
|
||||
|
||||
@Bean
|
||||
public SecurityFilterChain filterChain(HttpSecurity http, JwtFilter jwtFilter) throws Exception {
|
||||
@@ -32,7 +36,8 @@ public class SecurityConf {
|
||||
.csrf(AbstractHttpConfigurer::disable)
|
||||
.sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
||||
.authorizeHttpRequests((authorizeHttpRequests) -> {
|
||||
userDao.listRoleResource().forEach(role -> {
|
||||
//TODO: Lazy load problem
|
||||
securityDataService.fetchAllRoles().forEach(role -> {
|
||||
role.getResources().forEach(resource -> {
|
||||
authorizeHttpRequests.requestMatchers(
|
||||
HttpMethod.valueOf(resource.getRequestMethod().name()),
|
||||
@@ -58,4 +63,18 @@ public class SecurityConf {
|
||||
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.rainbus.dlp.entity.resp.Resp;
|
||||
import com.dlp.admin.entity.exception.UsernameOrPasswordExcp;
|
||||
import com.dlp.admin.entity.resp.Resp;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
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.rainbus.dlp.entity.pojo.user.SysResource;
|
||||
import com.rainbus.dlp.entity.req.user.*;
|
||||
import com.rainbus.dlp.entity.resp.Resp;
|
||||
import com.rainbus.dlp.entity.resp.user.GetTagResp;
|
||||
import com.rainbus.dlp.entity.resp.user.GetUserResp;
|
||||
import com.rainbus.dlp.entity.resp.user.LoginResp;
|
||||
import com.rainbus.dlp.repository.mapper.user.SysResourceMapper;
|
||||
import com.rainbus.dlp.repository.mapper.user.SysRoleMapper;
|
||||
import com.rainbus.dlp.service.UserServ;
|
||||
import com.rainbus.dlp.util.RedisUtil;
|
||||
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||
import com.dlp.admin.entity.req.user.*;
|
||||
import com.dlp.admin.entity.resp.PageResp;
|
||||
import com.dlp.admin.entity.resp.Resp;
|
||||
import com.dlp.admin.entity.resp.user.GetTagResp;
|
||||
import com.dlp.admin.entity.resp.user.GetUserResp;
|
||||
import com.dlp.admin.entity.resp.user.LoginResp;
|
||||
import com.dlp.admin.repository.user.SysRoleRepo;
|
||||
import com.dlp.admin.service.UserServ;
|
||||
import com.dlp.admin.util.RedisUtil;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -24,8 +24,7 @@ public class UserCtrl {
|
||||
|
||||
private final RedisUtil redisUtil;
|
||||
private final UserServ userServ;
|
||||
private final SysRoleMapper sysRoleMapper;
|
||||
private final SysResourceMapper sysResourceMapper;
|
||||
private final SysRoleRepo sysRoleRepo;
|
||||
|
||||
@PostMapping("/login")
|
||||
@Operation(summary = "登录接口")
|
||||
@@ -35,7 +34,7 @@ public class UserCtrl {
|
||||
|
||||
@PostMapping("/list")
|
||||
@Operation(summary = "搜索用户")
|
||||
public Resp<PageInfo<GetUserResp>> listUser(@RequestBody ListUserReq req) {
|
||||
public Resp<PageResp<GetUserResp>> listUser(@RequestBody ListUserReq req) {
|
||||
return Resp.success(null);
|
||||
}
|
||||
|
||||
@@ -93,8 +92,11 @@ public class UserCtrl {
|
||||
resource.setResource("/user/test");
|
||||
resource.setRequestMethod(RequestMethod.GET);
|
||||
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)));
|
||||
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.*;
|
||||
@@ -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.rainbus.dlp.entity.pojo.user.SysResource;
|
||||
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||
import com.dlp.admin.entity.dto.system.ApiInfo;
|
||||
import org.mapstruct.Mapper;
|
||||
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.rainbus.dlp.entity.dto.user.TokenClaims;
|
||||
import com.rainbus.dlp.entity.pojo.user.SysUser;
|
||||
import com.rainbus.dlp.entity.req.user.AddUserReq;
|
||||
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||
import com.dlp.admin.entity.pojo.user.SysUser;
|
||||
import com.dlp.admin.entity.req.user.AddUserReq;
|
||||
import org.mapstruct.InheritInverseConfiguration;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@@ -14,13 +14,13 @@ public interface UserConv {
|
||||
@InheritInverseConfiguration
|
||||
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())")
|
||||
TokenClaims ClaimsPojo2Dto(SysUser user);
|
||||
|
||||
@Mapping(target = "orgId", expression = "java(user.getOrg().getId())")
|
||||
@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);
|
||||
|
||||
}
|
||||
@@ -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) {
|
||||
}
|
||||
@@ -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) {
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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.rainbus.dlp.entity.enums.UserStatusEnum;
|
||||
import com.rainbus.dlp.entity.pojo.user.SysOrg;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
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.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Data
|
||||
@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.rainbus.dlp.entity.pojo.user.SysOrg;
|
||||
import com.rainbus.dlp.util.ConvertUtil;
|
||||
import com.dlp.admin.util.ConvertUtil;
|
||||
import lombok.Data;
|
||||
|
||||
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.Getter;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.enums;
|
||||
package com.dlp.admin.entity.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.enums;
|
||||
package com.dlp.admin.entity.enums;
|
||||
|
||||
public enum RoleEnum {
|
||||
// system admin
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.enums;
|
||||
package com.dlp.admin.entity.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.exception;
|
||||
package com.dlp.admin.entity.exception;
|
||||
|
||||
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;
|
||||
|
||||
@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;
|
||||
|
||||
@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 org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class SysResource {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String resource;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private RequestMethod requestMethod;
|
||||
|
||||
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 java.util.List;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class SysRole {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String role;
|
||||
|
||||
private String description;
|
||||
|
||||
@ManyToMany
|
||||
private List<SysResource> resources;
|
||||
|
||||
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.rainbus.dlp.entity.enums.UserStatusEnum;
|
||||
import com.rainbus.dlp.entity.exception.UserDisabledExcp;
|
||||
import com.rainbus.dlp.entity.exception.UsernameOrPasswordExcp;
|
||||
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class SysUser {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String username;
|
||||
@@ -21,8 +21,10 @@ public class SysUser {
|
||||
|
||||
private String email;
|
||||
|
||||
@ManyToMany
|
||||
private List<SysRole> roles;
|
||||
|
||||
@ManyToOne
|
||||
private SysOrg org;
|
||||
|
||||
private UserStatusEnum status;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.req;
|
||||
package com.dlp.admin.entity.req;
|
||||
|
||||
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.NotNull;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
@Data
|
||||
public class AddUserReq {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.req.user;
|
||||
package com.dlp.admin.entity.req.user;
|
||||
|
||||
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.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
|
||||
@Data
|
||||
@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 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.NotNull;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.resp;
|
||||
package com.dlp.admin.entity.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.resp;
|
||||
package com.dlp.admin.entity.resp;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.entity.resp.user;
|
||||
package com.dlp.admin.entity.resp.user;
|
||||
|
||||
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.rainbus.dlp.entity.pojo.user.SysOrg;
|
||||
import com.rainbus.dlp.entity.pojo.user.SysRole;
|
||||
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||
import com.dlp.admin.entity.pojo.user.SysOrg;
|
||||
import com.dlp.admin.entity.pojo.user.SysRole;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
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;
|
||||
|
||||
@@ -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.rainbus.dlp.entity.ApiDescription;
|
||||
import com.rainbus.dlp.entity.converter.SystemConv;
|
||||
import com.rainbus.dlp.entity.dto.system.ApiInfo;
|
||||
import com.rainbus.dlp.entity.pojo.user.SysResource;
|
||||
import com.dlp.admin.entity.converter.SystemConv;
|
||||
import com.dlp.admin.entity.dto.system.ApiInfo;
|
||||
|
||||
import com.dlp.admin.entity.pojo.user.SysResource;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
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 java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -38,10 +37,10 @@ public class SystemServ {
|
||||
|
||||
Set<PathPattern> patterns = info.getPathPatternsCondition().getPatterns();
|
||||
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 (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.rainbus.dlp.entity.dto.user.CustomUserDetails;
|
||||
import com.rainbus.dlp.entity.dto.user.TokenClaims;
|
||||
import com.rainbus.dlp.entity.enums.UserStatusEnum;
|
||||
import com.rainbus.dlp.entity.exception.OrgNotExistExcp;
|
||||
import com.rainbus.dlp.entity.exception.UserDisabledExcp;
|
||||
import com.rainbus.dlp.entity.exception.UsernameOrPasswordExcp;
|
||||
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.entity.req.user.LoginReq;
|
||||
import com.rainbus.dlp.entity.resp.user.LoginResp;
|
||||
import com.rainbus.dlp.repository.dao.UserDao;
|
||||
import com.rainbus.dlp.util.AuthUtil;
|
||||
import com.rainbus.dlp.util.JwtUtil;
|
||||
import com.rainbus.dlp.util.RedisUtil;
|
||||
import com.dlp.admin.entity.converter.UserConv;
|
||||
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||
import com.dlp.admin.entity.dto.user.TokenClaims;
|
||||
import com.dlp.admin.entity.enums.UserStatusEnum;
|
||||
import com.dlp.admin.entity.exception.OrgNotExistExcp;
|
||||
import com.dlp.admin.entity.exception.UserDisabledExcp;
|
||||
import com.dlp.admin.entity.exception.UsernameOrPasswordExcp;
|
||||
import com.dlp.admin.entity.pojo.user.SysOrg;
|
||||
import com.dlp.admin.entity.pojo.user.SysUser;
|
||||
import com.dlp.admin.entity.req.user.LoginReq;
|
||||
import com.dlp.admin.entity.resp.user.LoginResp;
|
||||
import com.dlp.admin.repository.user.SysUserRepo;
|
||||
import com.dlp.admin.util.AuthUtil;
|
||||
import com.dlp.admin.util.JwtUtil;
|
||||
import com.dlp.admin.util.RedisUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
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.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -32,7 +30,7 @@ import java.util.Optional;
|
||||
public class UserServ implements UserDetailsService {
|
||||
|
||||
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 long REDIS_USER_DETAILS_EXPIRE = 1 * 60 * 60;
|
||||
@@ -41,7 +39,7 @@ public class UserServ implements UserDetailsService {
|
||||
private final AuthUtil authUtil;
|
||||
|
||||
public SysUser getUserByUsername(String username) {
|
||||
Optional<SysUser> user = userDao.findUserByUsername(username);
|
||||
Optional<SysUser> user = userRepo.findByUsername(username);
|
||||
if (user.isEmpty()) {
|
||||
throw new UsernameNotFoundException("用户不存在");
|
||||
}
|
||||
@@ -49,7 +47,7 @@ public class UserServ implements UserDetailsService {
|
||||
}
|
||||
|
||||
public LoginResp login(LoginReq req) {
|
||||
Optional<SysUser> userOpt = userDao.findUserRoleOrgByUsername(req.getUsername());
|
||||
Optional<SysUser> userOpt = userRepo.findByUsername(req.getUsername());
|
||||
SysUser user = validUserAvailable(userOpt);
|
||||
validPassword(req.getPassword(), user.getPassword());
|
||||
TokenClaims claims = userConv.ClaimsPojo2Dto(user);
|
||||
@@ -57,12 +55,12 @@ public class UserServ implements UserDetailsService {
|
||||
resp.setToken(JwtUtil.generateToken(claims));
|
||||
return resp;
|
||||
}
|
||||
|
||||
public Object listUser() {
|
||||
Long orgId = authUtil.getUserDetails().getOrgId();
|
||||
List<Long> subOrgIds = userDao.listOrgWithSubOrg(orgId).stream().map(SysOrg::getId).toList();
|
||||
return userDao.listUserByOrgIds(subOrgIds);
|
||||
}
|
||||
//
|
||||
// public Object listUser() {
|
||||
// Long orgId = authUtil.getUserDetails().getOrgId();
|
||||
// List<Long> subOrgIds = userDao.listOrgWithSubOrg(orgId).stream().map(SysOrg::getId).toList();
|
||||
// return userDao.listUserByOrgIds(subOrgIds);
|
||||
// }
|
||||
|
||||
@Override
|
||||
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);
|
||||
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 org.springframework.context.annotation.Configuration;
|
||||
import com.dlp.admin.entity.dto.user.CustomUserDetails;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.stereotype.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.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.JWTCreator;
|
||||
@@ -6,7 +6,7 @@ import com.auth0.jwt.JWTVerifier;
|
||||
import com.auth0.jwt.algorithms.Algorithm;
|
||||
import com.auth0.jwt.exceptions.JWTVerificationException;
|
||||
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;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.rainbus.dlp.util;
|
||||
package com.dlp.admin.util;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
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
|
||||
password: 13291004986@lm
|
||||
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:
|
||||
@@ -15,11 +22,4 @@ spring:
|
||||
port: 6379
|
||||
password: 13291004986
|
||||
timeout: 10000
|
||||
database: 0
|
||||
logging:
|
||||
level:
|
||||
com:
|
||||
rainbus:
|
||||
dlp:
|
||||
repository:
|
||||
mapper: debug
|
||||
database: 0
|
||||
@@ -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.springframework.boot.test.context.SpringBootTest;
|
||||
Reference in New Issue
Block a user