可正常运行,尝试修改convert到service
This commit is contained in:
parent
a157e66e38
commit
06dc11c39b
@ -21,7 +21,7 @@ public class TenantFilter implements Filter {
|
|||||||
HttpServletRequest req = (HttpServletRequest) request;
|
HttpServletRequest req = (HttpServletRequest) request;
|
||||||
try {
|
try {
|
||||||
// 从请求头中获取租户ID
|
// 从请求头中获取租户ID
|
||||||
String tenantId = req.getHeader("X-Tenant-ID");
|
String tenantId = req.getHeader("X-Devops-Tenant-Id");
|
||||||
if (tenantId != null) {
|
if (tenantId != null) {
|
||||||
TenantContext.setTenantId(tenantId);
|
TenantContext.setTenantId(tenantId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,12 +53,4 @@ public class Department extends Entity<Long> {
|
|||||||
@Column(name = "leader_name")
|
@Column(name = "leader_name")
|
||||||
private String leaderName;
|
private String leaderName;
|
||||||
|
|
||||||
@Transient // 不映射到数据库
|
}
|
||||||
private List<Department> children = new ArrayList<>();
|
|
||||||
|
|
||||||
// 修改关联关系,通过UserDepartment关联
|
|
||||||
@OneToMany(mappedBy = "department")
|
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<UserDepartment> userDepartments = new HashSet<>();
|
|
||||||
}
|
|
||||||
@ -53,10 +53,4 @@ public class Menu extends Entity<Long> {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private Boolean enabled = true;
|
private Boolean enabled = true;
|
||||||
|
|
||||||
// 通过RoleMenu关联到Role
|
|
||||||
@OneToMany(mappedBy = "menu")
|
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<RoleMenu> roleMenus = new HashSet<>();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -37,14 +37,5 @@ public class Role extends Entity<Long> {
|
|||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private Integer sort = 0;
|
private Integer sort = 0;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "role", cascade = CascadeType.ALL)
|
}
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<UserRole> userRoles = new HashSet<>();
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "role", cascade = CascadeType.ALL, orphanRemoval = true)
|
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<RoleMenu> roleMenus = new HashSet<>();
|
|
||||||
}
|
|
||||||
@ -23,23 +23,17 @@ import java.util.Set;
|
|||||||
@LogicDelete
|
@LogicDelete
|
||||||
public class RoleMenu extends Entity<Long> {
|
public class RoleMenu extends Entity<Long> {
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "role_id")
|
||||||
@JoinColumn(name = "role_id")
|
private Long roleId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Role role;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "menu_id")
|
||||||
@JoinColumn(name = "menu_id")
|
private Long menuId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Menu menu;
|
|
||||||
|
|
||||||
protected RoleMenu() {
|
protected RoleMenu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public RoleMenu(Role role, Menu menu) {
|
public RoleMenu(Long roleId, Long menuId) {
|
||||||
this.role = role;
|
this.roleId = roleId;
|
||||||
this.menu = menu;
|
this.menuId = menuId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,106 +43,4 @@ public class User extends Entity<Long> {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private Boolean enabled = true;
|
private Boolean enabled = true;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
|
}
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<UserRole> userRoles = new HashSet<>();
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
|
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Set<UserDepartment> userDepartments = new HashSet<>();
|
|
||||||
|
|
||||||
// public void addRole(Role role) {
|
|
||||||
// UserRole userRole = new UserRole(this, role);
|
|
||||||
// userRoles.add(userRole);
|
|
||||||
// registerDomainEvent(new UserRoleChangedEvent(this.getId(), role.getId(), "ADD"));
|
|
||||||
// validateState();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void removeRole(Role role) {
|
|
||||||
// boolean removed = userRoles.removeIf(ur -> ur.getRole().equals(role));
|
|
||||||
// if (removed) {
|
|
||||||
// registerDomainEvent(new UserRoleChangedEvent(this.getId(), role.getId(), "REMOVE"));
|
|
||||||
// validateState();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void changePassword(String oldPassword, String newPassword) {
|
|
||||||
// if (!this.password.equals(oldPassword)) {
|
|
||||||
// throw new IllegalArgumentException("Old password is incorrect");
|
|
||||||
// }
|
|
||||||
// this.password = newPassword;
|
|
||||||
// registerDomainEvent(new PasswordChangedEvent(this.getId()));
|
|
||||||
// validateState();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setEnabled(boolean enabled) {
|
|
||||||
// if (this.enabled != enabled) {
|
|
||||||
// this.enabled = enabled;
|
|
||||||
// registerDomainEvent(new UserStatusChangedEvent(this.getId(), enabled));
|
|
||||||
// validateState();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void updateBasicInfo(String nickname, String phone, String email) {
|
|
||||||
// boolean changed = false;
|
|
||||||
//
|
|
||||||
// if (!Objects.equals(this.nickname, nickname)) {
|
|
||||||
// this.nickname = nickname;
|
|
||||||
// changed = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!Objects.equals(this.phone, phone)) {
|
|
||||||
// this.phone = phone;
|
|
||||||
// changed = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!Objects.equals(this.email, email)) {
|
|
||||||
// this.email = email;
|
|
||||||
// changed = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (changed) {
|
|
||||||
// registerDomainEvent(new UserUpdatedEvent(this.getId()));
|
|
||||||
// validateState();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public boolean hasRole(String roleCode) {
|
|
||||||
// return userRoles.stream()
|
|
||||||
// .map(UserRole::getRole)
|
|
||||||
// .anyMatch(role -> role.getCode().equals(roleCode));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public Set<String> getRoleCodes() {
|
|
||||||
// return userRoles.stream()
|
|
||||||
// .map(UserRole::getRole)
|
|
||||||
// .map(Role::getCode)
|
|
||||||
// .collect(Collectors.toSet());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// protected void validateState() {
|
|
||||||
// if (username == null || username.trim().isEmpty()) {
|
|
||||||
// throw new IllegalStateException("Username cannot be empty");
|
|
||||||
// }
|
|
||||||
// if (email == null || !email.matches("^[A-Za-z0-9+_.-]+@(.+)$")) {
|
|
||||||
// throw new IllegalStateException("Invalid email format");
|
|
||||||
// }
|
|
||||||
// if (password == null || password.length() < 6) {
|
|
||||||
// throw new IllegalStateException("Password must be at least 6 characters");
|
|
||||||
// }
|
|
||||||
// if (phone != null && !phone.matches("^\\d{11}$")) {
|
|
||||||
// throw new IllegalStateException("Invalid phone number format");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void validateBeforeDelete() {
|
|
||||||
// if (!userRoles.isEmpty()) {
|
|
||||||
// throw new IllegalStateException("Cannot delete user with assigned roles");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -24,25 +24,18 @@ import java.util.Set;
|
|||||||
@LogicDelete
|
@LogicDelete
|
||||||
public class UserDepartment extends Entity<Long> {
|
public class UserDepartment extends Entity<Long> {
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "user_id")
|
||||||
@JoinColumn(name = "user_id", unique = true)
|
private Long userId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private User user;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "dept_id")
|
||||||
@JoinColumn(name = "department_id")
|
private Long deptId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Department department;
|
|
||||||
|
|
||||||
protected UserDepartment() {
|
protected UserDepartment() {
|
||||||
// JPA需要无参构造函数
|
// JPA需要无参构造函数
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserDepartment(User user, Department department) {
|
public UserDepartment(Long userId, Long deptId) {
|
||||||
this.user = user;
|
this.userId = userId;
|
||||||
this.department = department;
|
this.deptId = deptId;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
@ -21,41 +21,19 @@ import lombok.ToString;
|
|||||||
@LogicDelete
|
@LogicDelete
|
||||||
public class UserRole extends Entity<Long> {
|
public class UserRole extends Entity<Long> {
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "user_id")
|
||||||
@JoinColumn(name = "user_id")
|
private Long userId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private User user;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@Column(name = "role_id")
|
||||||
@JoinColumn(name = "role_id")
|
private Long roleId;
|
||||||
@JsonIgnore
|
|
||||||
@ToString.Exclude
|
|
||||||
private Role role;
|
|
||||||
|
|
||||||
// 添加构造方法
|
// 添加构造方法
|
||||||
protected UserRole() {
|
protected UserRole() {
|
||||||
// JPA需要无参构造方法
|
// JPA需要无参构造方法
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserRole(User user, Role role) {
|
public UserRole(Long userId, Long roleId) {
|
||||||
this.user = user;
|
this.userId = userId;
|
||||||
this.role = role;
|
this.roleId = roleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重写equals和hashCode方法,避免无限递归
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
if (!(o instanceof UserRole)) return false;
|
|
||||||
UserRole userRole = (UserRole) o;
|
|
||||||
return getId() != null && getId().equals(userRole.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return getClass().hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -11,8 +11,8 @@ import java.util.List;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface IRoleMenuRepository extends IBaseRepository<RoleMenu, Long> {
|
public interface IRoleMenuRepository extends IBaseRepository<RoleMenu, Long> {
|
||||||
|
|
||||||
@Query("SELECT rm.role FROM RoleMenu rm where rm.role.id = :roleId")
|
@Query("SELECT rm.roleId FROM RoleMenu rm where rm.roleId = :roleId")
|
||||||
List<RoleMenu> findByRoleId(Long roleId);
|
List<Long> findByRoleId(Long roleId);
|
||||||
//
|
//
|
||||||
// void deleteByRoleId(Long roleId);
|
// void deleteByRoleId(Long roleId);
|
||||||
//
|
//
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.qqchen.deploy.backend.repository;
|
package com.qqchen.deploy.backend.repository;
|
||||||
|
|
||||||
|
|
||||||
import com.qqchen.deploy.backend.common.repository.IBaseRepository;
|
import com.qqchen.deploy.backend.common.repository.IBaseRepository;
|
||||||
import com.qqchen.deploy.backend.entity.User;
|
import com.qqchen.deploy.backend.entity.User;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
@ -12,14 +11,6 @@ import java.util.Optional;
|
|||||||
public interface IUserRepository extends IBaseRepository<User, Long> {
|
public interface IUserRepository extends IBaseRepository<User, Long> {
|
||||||
|
|
||||||
Optional<User> findByUsernameAndDeletedFalse(String username);
|
Optional<User> findByUsernameAndDeletedFalse(String username);
|
||||||
|
|
||||||
boolean existsByUsernameAndDeletedFalse(String username);
|
|
||||||
|
|
||||||
boolean existsByEmailAndDeletedFalse(String email);
|
|
||||||
|
|
||||||
boolean existsByPhoneAndDeletedFalse(String phone);
|
|
||||||
|
|
||||||
List<User> findByDeletedFalseOrderById();
|
|
||||||
|
|
||||||
boolean existsByUsername(String username);
|
boolean existsByUsername(String username);
|
||||||
|
|
||||||
|
|||||||
@ -13,15 +13,15 @@ import java.util.Set;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface IUserRoleRepository extends IBaseRepository<UserRole, Long> {
|
public interface IUserRoleRepository extends IBaseRepository<UserRole, Long> {
|
||||||
|
|
||||||
@Query("SELECT ur FROM UserRole ur WHERE ur.user.id = :userId")
|
@Query("SELECT ur FROM UserRole ur WHERE ur.userId = :userId")
|
||||||
Set<UserRole> findByUserId(@Param("userId") Long userId);
|
Set<UserRole> findByUserId(@Param("userId") Long userId);
|
||||||
|
|
||||||
@Modifying
|
@Modifying
|
||||||
@Query("DELETE FROM UserRole ur WHERE ur.user.id = :userId AND ur.role.id = :roleId")
|
@Query("DELETE FROM UserRole ur WHERE ur.userId = :userId AND ur.roleId = :roleId")
|
||||||
void deleteByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId);
|
void deleteByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId);
|
||||||
|
|
||||||
|
|
||||||
@Query("SELECT COUNT(ur) > 0 FROM UserRole ur WHERE ur.user.id = :userId AND ur.role.id = :roleId")
|
@Query("SELECT COUNT(ur) > 0 FROM UserRole ur WHERE ur.userId = :userId AND ur.roleId = :roleId")
|
||||||
boolean existsByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId);
|
boolean existsByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -95,8 +95,8 @@ public class DepartmentServiceImpl extends BaseServiceImpl<Department, Long> imp
|
|||||||
List<Department> children = parentIdMap.get(parentId);
|
List<Department> children = parentIdMap.get(parentId);
|
||||||
if (children != null) {
|
if (children != null) {
|
||||||
for (Department child : children) {
|
for (Department child : children) {
|
||||||
child.setChildren(buildTreeNodes(child.getId(), parentIdMap));
|
// child.setChildren(buildTreeNodes(child.getId(), parentIdMap));
|
||||||
nodes.add(child);
|
// nodes.add(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,7 @@ logging:
|
|||||||
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
|
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
|
||||||
org.hibernate.type.descriptor.sql: TRACE
|
org.hibernate.type.descriptor.sql: TRACE
|
||||||
com.qqchen.deploy.backend.common.utils.EntityPathResolver: DEBUG
|
com.qqchen.deploy.backend.common.utils.EntityPathResolver: DEBUG
|
||||||
|
com.qqchen.deploy.backend: DEBUG
|
||||||
jwt:
|
jwt:
|
||||||
secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789'
|
secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789'
|
||||||
expiration: 86400
|
expiration: 86400
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user