fix:用户权限功能增加缓存
This commit is contained in:
parent
8e1dba066e
commit
546766349b
|
@ -1,13 +1,15 @@
|
||||||
package com.chint.application.dtos.system;
|
package com.chint.application.dtos.system;
|
||||||
|
|
||||||
|
import com.chint.domain.value_object.BaseQuery;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class RoleOrgParam {
|
public class RoleOrgParam extends BaseQuery {
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
private String roleCode;
|
||||||
private String roleDesc;
|
private String roleDesc;
|
||||||
private Long userId;
|
private Long userId;
|
||||||
private List<Long> orgIdList;
|
private List<Long> orgIdList;
|
||||||
|
|
|
@ -341,7 +341,7 @@ public class OrderDetailQuery {
|
||||||
changedTicketNo = changedTicketNo.replace("-", "");
|
changedTicketNo = changedTicketNo.replace("-", "");
|
||||||
orderDetailDto.setChangedTicketNo(changedTicketNo);
|
orderDetailDto.setChangedTicketNo(changedTicketNo);
|
||||||
}
|
}
|
||||||
return routeRepository.queryById(orderDetail.getRouteId());
|
return orderDetailDto;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,11 @@ import com.chint.domain.aggregates.user.UserDepartmentInfo;
|
||||||
import com.chint.domain.repository.RoleRepository;
|
import com.chint.domain.repository.RoleRepository;
|
||||||
import com.chint.domain.repository.RoleUserRepository;
|
import com.chint.domain.repository.RoleUserRepository;
|
||||||
import com.chint.domain.repository.UserRepository;
|
import com.chint.domain.repository.UserRepository;
|
||||||
|
import com.chint.domain.service.SystemDomainService;
|
||||||
|
import com.chint.domain.value_object.system.RoleOrganizationVO;
|
||||||
|
import com.chint.domain.value_object.system.RoleVO;
|
||||||
import com.chint.infrastructure.util.BaseContext;
|
import com.chint.infrastructure.util.BaseContext;
|
||||||
|
import com.chint.infrastructure.util.PageResult;
|
||||||
import com.chint.infrastructure.util.Result;
|
import com.chint.infrastructure.util.Result;
|
||||||
import com.chint.interfaces.rest.data_center.user.BatchUserWorker;
|
import com.chint.interfaces.rest.data_center.user.BatchUserWorker;
|
||||||
import com.chint.interfaces.rest.data_center.user.UserHttpRequest;
|
import com.chint.interfaces.rest.data_center.user.UserHttpRequest;
|
||||||
|
@ -19,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static com.chint.infrastructure.constant.CommonMessageConstant.SUCCESS;
|
import static com.chint.infrastructure.constant.CommonMessageConstant.SUCCESS;
|
||||||
|
|
||||||
|
@ -41,6 +46,9 @@ public class UserController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoleRepository roleRepository;
|
private RoleRepository roleRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SystemDomainService systemDomainService;
|
||||||
|
|
||||||
@ApiOperation("根据Id查询用户信息")
|
@ApiOperation("根据Id查询用户信息")
|
||||||
@PostMapping("/query")
|
@PostMapping("/query")
|
||||||
public Result<UserRes> getUserByEmployeeNo() {
|
public Result<UserRes> getUserByEmployeeNo() {
|
||||||
|
@ -48,6 +56,34 @@ public class UserController {
|
||||||
return Result.Success(SUCCESS, BeanUtil.copyProperties(currentUser, UserRes.class));
|
return Result.Success(SUCCESS, BeanUtil.copyProperties(currentUser, UserRes.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分页查看角色数据")
|
||||||
|
@PostMapping("/query/role")
|
||||||
|
public Result<PageResult<RoleVO>> queryRole(@RequestBody RoleOrgParam roleOrgParam) {
|
||||||
|
PageResult<Role> rolePageResult = roleRepository.pageQuery(roleOrgParam);
|
||||||
|
List<Role> roleList = rolePageResult.getRecords();
|
||||||
|
List<RoleVO> roleVOS = roleList
|
||||||
|
.stream()
|
||||||
|
.map(Role::mapToVO)
|
||||||
|
.toList();
|
||||||
|
return Result.Success(SUCCESS, PageResult.totalPageNum(rolePageResult.getTotal(), roleVOS));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("查看角色数据详情")
|
||||||
|
@PostMapping("/query/role/detail")
|
||||||
|
public Result<RoleVO> queryRoleDetail(@RequestBody RoleOrgParam roleOrgParam) {
|
||||||
|
RoleVO res = roleRepository.findById(roleOrgParam.getRoleId())
|
||||||
|
.flatMap(role -> {
|
||||||
|
RoleVO roleVO = role.mapToVO();
|
||||||
|
List<RoleOrganizationVO> roleOrganizationVOList = systemDomainService.roleOrgWrapper(
|
||||||
|
role.getRoleOrganizationList()
|
||||||
|
);
|
||||||
|
roleVO.setRoleOrganizationVOList(roleOrganizationVOList);
|
||||||
|
return Optional.of(roleVO);
|
||||||
|
})
|
||||||
|
.orElse(null);
|
||||||
|
return Result.Success(SUCCESS, res);
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("根据用户ID添加角色权限")
|
@ApiOperation("根据用户ID添加角色权限")
|
||||||
@PostMapping("/add/role")
|
@PostMapping("/add/role")
|
||||||
public Result<String> addRoleUser(@RequestBody RoleOrgParam roleOrgParam) {
|
public Result<String> addRoleUser(@RequestBody RoleOrgParam roleOrgParam) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.chint.domain.aggregates.system;
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.chint.domain.value_object.system.RoleOrganizationVO;
|
||||||
import com.chint.domain.value_object.system.SystemOrganizationVO;
|
import com.chint.domain.value_object.system.SystemOrganizationVO;
|
||||||
import com.chint.interfaces.rest.data_center.org.OrgSfResponse;
|
import com.chint.interfaces.rest.data_center.org.OrgSfResponse;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -87,4 +88,8 @@ public class SystemOrganization implements Serializable {
|
||||||
public SystemOrganizationVO mapToVO() {
|
public SystemOrganizationVO mapToVO() {
|
||||||
return BeanUtil.copyProperties(this, SystemOrganizationVO.class);
|
return BeanUtil.copyProperties(this, SystemOrganizationVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RoleOrganizationVO mapToRoleOrganizationVO() {
|
||||||
|
return BeanUtil.copyProperties(this, RoleOrganizationVO.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,30 @@
|
||||||
package com.chint.domain.aggregates.user;
|
package com.chint.domain.aggregates.user;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.chint.application.dtos.system.RoleOrgParam;
|
import com.chint.application.dtos.system.RoleOrgParam;
|
||||||
|
import com.chint.domain.value_object.system.RoleVO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.relational.core.mapping.MappedCollection;
|
import org.springframework.data.relational.core.mapping.MappedCollection;
|
||||||
import org.springframework.data.relational.core.mapping.Table;
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Table("role")
|
@Table("role")
|
||||||
public class Role {
|
public class Role implements Serializable {
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 982691641565825656L;
|
||||||
@Id
|
@Id
|
||||||
private Long id;
|
private Long id;
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
private String roleCode;
|
||||||
private String roleDesc;
|
private String roleDesc;
|
||||||
|
private Integer sort;
|
||||||
@MappedCollection(idColumn = "role_id", keyColumn = "role_key")
|
@MappedCollection(idColumn = "role_id", keyColumn = "role_key")
|
||||||
private List<RoleOrganization> roleOrganizationList;
|
private List<RoleOrganization> roleOrganizationList;
|
||||||
|
|
||||||
|
@ -33,19 +41,57 @@ public class Role {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Role removeRoleOrganization(Long orgId) {
|
||||||
|
if (roleOrganizationList == null) {
|
||||||
|
roleOrganizationList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
for (RoleOrganization organization : roleOrganizationList) {
|
||||||
|
if (organization.getOrgId().equals(orgId)) {
|
||||||
|
roleOrganizationList.remove(organization);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Role updateWithParam(RoleOrgParam roleOrgParam) {
|
public Role updateWithParam(RoleOrgParam roleOrgParam) {
|
||||||
|
if (roleOrganizationList == null) {
|
||||||
|
roleOrganizationList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
if (roleOrgParam.getSort() != null) {
|
||||||
|
this.setSort(roleOrgParam.getSort());
|
||||||
|
}
|
||||||
|
if (roleOrgParam.getRoleDesc() != null) {
|
||||||
|
this.setRoleDesc(roleOrgParam.getRoleDesc());
|
||||||
|
}
|
||||||
|
if (roleOrgParam.getRoleCode() != null) {
|
||||||
|
this.setRoleCode(roleOrgParam.getRoleCode());
|
||||||
|
}
|
||||||
roleOrgParam.getOrgIdList().stream()
|
roleOrgParam.getOrgIdList().stream()
|
||||||
.map(it -> RoleOrganization.of(roleOrgParam.getRoleId(), it))
|
.map(it -> RoleOrganization.of(roleOrgParam.getRoleId(), it))
|
||||||
.toList()
|
.toList()
|
||||||
.forEach(this::addRoleOrganization);
|
.forEach(this::addRoleOrganization);
|
||||||
|
List<Long> orgIds = roleOrganizationList
|
||||||
|
.stream()
|
||||||
|
.map(RoleOrganization::getOrgId)
|
||||||
|
.toList();
|
||||||
|
orgIds.stream()
|
||||||
|
.filter(it -> !roleOrgParam.getOrgIdList().contains(it))
|
||||||
|
.toList()
|
||||||
|
.forEach(this::removeRoleOrganization);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RoleVO mapToVO() {
|
||||||
|
return BeanUtil.copyProperties(this, RoleVO.class);
|
||||||
|
}
|
||||||
|
|
||||||
public static Role buildWithParam(RoleOrgParam roleOrgParam) {
|
public static Role buildWithParam(RoleOrgParam roleOrgParam) {
|
||||||
Role role = new Role();
|
Role role = new Role();
|
||||||
role.setRoleName(roleOrgParam.getRoleName());
|
role.setRoleName(roleOrgParam.getRoleName());
|
||||||
|
role.setRoleCode(roleOrgParam.getRoleCode());
|
||||||
role.setRoleDesc(roleOrgParam.getRoleDesc());
|
role.setRoleDesc(roleOrgParam.getRoleDesc());
|
||||||
if(roleOrgParam.getRoleIdList() != null){
|
if (roleOrgParam.getOrgIdList() != null) {
|
||||||
roleOrgParam.getOrgIdList().stream()
|
roleOrgParam.getOrgIdList().stream()
|
||||||
.map(it -> RoleOrganization.of(roleOrgParam.getRoleId(), it))
|
.map(it -> RoleOrganization.of(roleOrgParam.getRoleId(), it))
|
||||||
.toList()
|
.toList()
|
||||||
|
@ -53,4 +99,6 @@ public class Role {
|
||||||
}
|
}
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -5,9 +5,14 @@ import lombok.Data;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.relational.core.mapping.Table;
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Table("role_organization")
|
@Table("role_organization")
|
||||||
public class RoleOrganization {
|
public class RoleOrganization implements Serializable {
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 986481563255172358L;
|
||||||
@Id
|
@Id
|
||||||
private Long id;
|
private Long id;
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
|
@ -4,10 +4,15 @@ import lombok.Data;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.relational.core.mapping.Table;
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Table("role_user")
|
@Table("role_user")
|
||||||
public class RoleUser {
|
public class RoleUser implements Serializable {
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1937591655113659058L;
|
||||||
@Id
|
@Id
|
||||||
private Long id;
|
private Long id;
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
|
@ -35,6 +35,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static com.chint.infrastructure.constant.AuthMessageConstant.SF_DATA_NOT_EXIST;
|
import static com.chint.infrastructure.constant.AuthMessageConstant.SF_DATA_NOT_EXIST;
|
||||||
import static com.chint.infrastructure.constant.AuthMessageConstant.USER_FSSC_SYSTEM_LIST;
|
import static com.chint.infrastructure.constant.AuthMessageConstant.USER_FSSC_SYSTEM_LIST;
|
||||||
|
@ -82,6 +83,8 @@ public class User implements Serializable {
|
||||||
private List<String> roleOrgCodeList;
|
private List<String> roleOrgCodeList;
|
||||||
@Transient
|
@Transient
|
||||||
private List<SystemOrganizationVO> roleOrgList;
|
private List<SystemOrganizationVO> roleOrgList;
|
||||||
|
@Transient
|
||||||
|
private List<Role> roleList;
|
||||||
|
|
||||||
public User loadInfoFromDept() {
|
public User loadInfoFromDept() {
|
||||||
if (this.userDepartmentInfoList == null || this.userDepartmentInfoList.isEmpty()) {
|
if (this.userDepartmentInfoList == null || this.userDepartmentInfoList.isEmpty()) {
|
||||||
|
@ -123,10 +126,21 @@ public class User implements Serializable {
|
||||||
departmentInfo -> departmentInfo.getCompanyName().equals(finalCompanyCode) :
|
departmentInfo -> departmentInfo.getCompanyName().equals(finalCompanyCode) :
|
||||||
departmentInfo -> departmentInfo.getCompanyCode().equals(finalCompanyCode);
|
departmentInfo -> departmentInfo.getCompanyCode().equals(finalCompanyCode);
|
||||||
|
|
||||||
UserDepartmentInfo userDepartmentInfo = userDepartmentInfoList.stream()
|
List<UserDepartmentInfo> userDepartmentInfos = userDepartmentInfoList.stream()
|
||||||
.filter(matchCompanyCode)
|
.filter(matchCompanyCode).toList();
|
||||||
|
|
||||||
|
UserDepartmentInfo userDepartmentInfo;
|
||||||
|
if(userDepartmentInfos.isEmpty()) {
|
||||||
|
userDepartmentInfo = getFallbackDeptInfo();
|
||||||
|
} else if(userDepartmentInfos.size() == 1) {
|
||||||
|
userDepartmentInfo = userDepartmentInfos.get(0);
|
||||||
|
} else {
|
||||||
|
userDepartmentInfo = userDepartmentInfos
|
||||||
|
.stream()
|
||||||
|
.filter(UserDepartmentInfo::ifPrimary)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseGet(this::getFallbackDeptInfo);
|
.orElseGet(this::getFallbackDeptInfo);
|
||||||
|
}
|
||||||
loadInfoFromDeptInfo(userDepartmentInfo);
|
loadInfoFromDeptInfo(userDepartmentInfo);
|
||||||
} else {
|
} else {
|
||||||
UserDepartmentInfo fallbackDeptInfo = getFallbackDeptInfo();
|
UserDepartmentInfo fallbackDeptInfo = getFallbackDeptInfo();
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
package com.chint.domain.repository;
|
package com.chint.domain.repository;
|
||||||
|
|
||||||
|
|
||||||
|
import com.chint.application.dtos.system.RoleOrgParam;
|
||||||
import com.chint.domain.aggregates.user.Role;
|
import com.chint.domain.aggregates.user.Role;
|
||||||
|
import com.chint.domain.aggregates.user.User;
|
||||||
|
import com.chint.domain.value_object.system.SystemOrganizationVO;
|
||||||
|
import com.chint.infrastructure.util.PageResult;
|
||||||
|
|
||||||
import javax.swing.text.html.Option;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface RoleRepository {
|
public interface RoleRepository {
|
||||||
Optional<Role> findById(Long id);
|
Optional<Role> findById(Long id);
|
||||||
|
|
||||||
|
PageResult<Role> pageQuery(RoleOrgParam roleOrgParam);
|
||||||
|
|
||||||
Role save(Role role);
|
Role save(Role role);
|
||||||
|
|
||||||
|
List<String> roleOrgCodeList(Long userId);
|
||||||
|
|
||||||
|
List<SystemOrganizationVO> roleOrgList(Long userId);
|
||||||
|
|
||||||
|
void loadUserRole(User user);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,5 +7,7 @@ import java.util.List;
|
||||||
public interface RoleUserRepository {
|
public interface RoleUserRepository {
|
||||||
List<RoleUser> findByUserId(Long userId);
|
List<RoleUser> findByUserId(Long userId);
|
||||||
|
|
||||||
|
List<RoleUser> findByRoleId(Long roleId);
|
||||||
|
|
||||||
RoleUser save(RoleUser roleUser);
|
RoleUser save(RoleUser roleUser);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,7 @@ public interface SystemOrganizationRepository {
|
||||||
|
|
||||||
List<SystemOrganization> findByParentId(Long parentId);
|
List<SystemOrganization> findByParentId(Long parentId);
|
||||||
|
|
||||||
|
SystemOrganization queryChild(SystemOrganization systemOrganization);
|
||||||
|
|
||||||
|
List<SystemOrganization> expandOrganizations(List<SystemOrganization> systemOrganizations);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,15 @@ import com.chint.domain.aggregates.system.AccountCompany;
|
||||||
import com.chint.domain.aggregates.system.SystemCode;
|
import com.chint.domain.aggregates.system.SystemCode;
|
||||||
import com.chint.domain.aggregates.system.SystemOrganization;
|
import com.chint.domain.aggregates.system.SystemOrganization;
|
||||||
import com.chint.domain.aggregates.system.SystemOrganizationExtension;
|
import com.chint.domain.aggregates.system.SystemOrganizationExtension;
|
||||||
|
import com.chint.domain.aggregates.user.Role;
|
||||||
import com.chint.domain.aggregates.user.RoleOrganization;
|
import com.chint.domain.aggregates.user.RoleOrganization;
|
||||||
import com.chint.domain.aggregates.user.RoleUser;
|
import com.chint.domain.aggregates.user.RoleUser;
|
||||||
import com.chint.domain.aggregates.user.User;
|
import com.chint.domain.aggregates.user.User;
|
||||||
import com.chint.domain.exceptions.NotFoundException;
|
import com.chint.domain.exceptions.NotFoundException;
|
||||||
import com.chint.domain.repository.*;
|
import com.chint.domain.repository.*;
|
||||||
|
import com.chint.domain.value_object.system.RoleOrganizationVO;
|
||||||
import com.chint.infrastructure.echo_framework.annotation.ListenTo;
|
import com.chint.infrastructure.echo_framework.annotation.ListenTo;
|
||||||
|
import com.chint.infrastructure.repository.cache.CacheRoleRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@ -43,6 +46,7 @@ public class SystemDomainService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RoleRepository roleRepository;
|
private RoleRepository roleRepository;
|
||||||
|
|
||||||
|
|
||||||
public boolean checkSystemCode(String sysCode) {
|
public boolean checkSystemCode(String sysCode) {
|
||||||
boolean b = systemCodeRepository.findBySysCode(sysCode) != null;
|
boolean b = systemCodeRepository.findBySysCode(sysCode) != null;
|
||||||
if (!b) {
|
if (!b) {
|
||||||
|
@ -72,7 +76,8 @@ public class SystemDomainService {
|
||||||
public void addOrganizationClerk(OrganizationTicketClerk organizationTicketClerk) {
|
public void addOrganizationClerk(OrganizationTicketClerk organizationTicketClerk) {
|
||||||
systemOrganizationRepository
|
systemOrganizationRepository
|
||||||
.findByOrgCodeContaining(organizationTicketClerk.getOrgCode())
|
.findByOrgCodeContaining(organizationTicketClerk.getOrgCode())
|
||||||
.ifPresent(it -> loadClerk(queryChild(it), organizationTicketClerk.getClerkName()));
|
.ifPresent(it -> loadClerk(systemOrganizationRepository.queryChild(it),
|
||||||
|
organizationTicketClerk.getClerkName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addOrgExtensionField(String orgCode, String fieldName, String fieldValue, String extension) {
|
public void addOrgExtensionField(String orgCode, String fieldName, String fieldValue, String extension) {
|
||||||
|
@ -162,41 +167,40 @@ public class SystemDomainService {
|
||||||
public void loadUserRole(UserRoleCommand command) {
|
public void loadUserRole(UserRoleCommand command) {
|
||||||
User user = command.getUser();
|
User user = command.getUser();
|
||||||
List<RoleUser> byUserId = roleUserRepository.findByUserId(user.getUserId());
|
List<RoleUser> byUserId = roleUserRepository.findByUserId(user.getUserId());
|
||||||
List<Long> orgListId = byUserId.stream().flatMap(it ->
|
List<Role> roleList = byUserId.stream().flatMap(it -> roleRepository
|
||||||
roleRepository
|
|
||||||
.findById(it.getRoleId())
|
.findById(it.getRoleId())
|
||||||
.stream()
|
.stream())
|
||||||
.flatMap(role -> role.getRoleOrganizationList().stream())
|
.toList();
|
||||||
.map(RoleOrganization::getOrgId)
|
user.setRoleList(roleList);
|
||||||
).distinct().toList();
|
roleRepository.loadUserRole(user);
|
||||||
|
|
||||||
// 获取所有的 SystemOrganization
|
|
||||||
List<SystemOrganization> rootOrganizations = systemOrganizationRepository.findByIdIn(orgListId);
|
|
||||||
|
|
||||||
// 展开所有的 SystemOrganization
|
|
||||||
List<SystemOrganization> allOrganizations = new ArrayList<>();
|
|
||||||
rootOrganizations.forEach(rootOrg -> expandOrganizations(rootOrg, allOrganizations));
|
|
||||||
|
|
||||||
// 设置用户的角色组织列表
|
|
||||||
user.setRoleOrgCodeList(
|
|
||||||
allOrganizations.stream()
|
|
||||||
.map(SystemOrganization::getOrgShortCode)
|
|
||||||
.distinct()
|
|
||||||
.toList()
|
|
||||||
);
|
|
||||||
user.setRoleOrgList(
|
|
||||||
allOrganizations.stream()
|
|
||||||
.map(SystemOrganization::mapToVO)
|
|
||||||
.distinct()
|
|
||||||
.toList()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expandOrganizations(SystemOrganization org, List<SystemOrganization> allOrganizations) {
|
private void expandOrganizations( SystemOrganization org, List<SystemOrganization> allOrganizations) {
|
||||||
|
if (org == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
queryChild(org); // 查询子组织
|
queryChild(org); // 查询子组织
|
||||||
allOrganizations.add(org); // 添加当前组织到列表
|
allOrganizations.add(org); // 添加当前组织到列表
|
||||||
for (SystemOrganization child : org.getChildOrganizationList()) {
|
List<SystemOrganization> childOrganizationList = org.getChildOrganizationList();
|
||||||
|
if (childOrganizationList != null && !childOrganizationList.isEmpty()) {
|
||||||
|
for (SystemOrganization child : childOrganizationList) {
|
||||||
expandOrganizations(child, allOrganizations); // 递归展开子组织
|
expandOrganizations(child, allOrganizations); // 递归展开子组织
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RoleOrganizationVO> roleOrgWrapper(List<RoleOrganization> roleOrganizationList) {
|
||||||
|
List<Long> orgIds = roleOrganizationList.stream().map(RoleOrganization::getOrgId).toList();
|
||||||
|
List<SystemOrganization> byIdIn = systemOrganizationRepository
|
||||||
|
.findByIdIn(orgIds);
|
||||||
|
List<SystemOrganization> allOrganizations = new ArrayList<>();
|
||||||
|
for (SystemOrganization systemOrganization : byIdIn) {
|
||||||
|
expandOrganizations(systemOrganization, allOrganizations);
|
||||||
|
}
|
||||||
|
return allOrganizations
|
||||||
|
.stream()
|
||||||
|
.distinct()
|
||||||
|
.map(SystemOrganization::mapToRoleOrganizationVO)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.chint.domain.value_object.system;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RoleOrganizationVO {
|
||||||
|
private Long id;
|
||||||
|
private String orgCode;
|
||||||
|
private String orgName;
|
||||||
|
private String orgEnName;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.chint.domain.value_object.system;
|
||||||
|
|
||||||
|
import com.chint.domain.aggregates.user.RoleOrganization;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.data.relational.core.mapping.MappedCollection;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RoleVO {
|
||||||
|
private Long id;
|
||||||
|
private String roleName;
|
||||||
|
private String roleCode;
|
||||||
|
private String roleDesc;
|
||||||
|
private Integer sort;
|
||||||
|
private List<RoleOrganizationVO> roleOrganizationVOList;
|
||||||
|
}
|
|
@ -2,8 +2,13 @@ package com.chint.domain.value_object.system;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SystemOrganizationVO {
|
public class SystemOrganizationVO implements Serializable {
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 7552825188541271771L;
|
||||||
private Long id;
|
private Long id;
|
||||||
private String orgCode;
|
private String orgCode;
|
||||||
private String orgShortCode;
|
private String orgShortCode;
|
||||||
|
|
|
@ -9,4 +9,6 @@ public class SystemConstant {
|
||||||
public static final Integer H3BPM_LOGIN_TYPE = 3;
|
public static final Integer H3BPM_LOGIN_TYPE = 3;
|
||||||
|
|
||||||
|
|
||||||
|
public static final String ROLE_JT_ADMIN = "JT_ADMIN";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,25 @@
|
||||||
package com.chint.infrastructure.repository;
|
package com.chint.infrastructure.repository;
|
||||||
|
|
||||||
|
import com.chint.application.dtos.system.RoleOrgParam;
|
||||||
|
import com.chint.domain.aggregates.system.SystemOrganization;
|
||||||
import com.chint.domain.aggregates.user.Role;
|
import com.chint.domain.aggregates.user.Role;
|
||||||
|
import com.chint.domain.aggregates.user.RoleOrganization;
|
||||||
|
import com.chint.domain.aggregates.user.RoleUser;
|
||||||
|
import com.chint.domain.aggregates.user.User;
|
||||||
import com.chint.domain.repository.RoleRepository;
|
import com.chint.domain.repository.RoleRepository;
|
||||||
|
import com.chint.domain.repository.RoleUserRepository;
|
||||||
|
import com.chint.domain.repository.SystemOrganizationRepository;
|
||||||
|
import com.chint.domain.value_object.system.SystemOrganizationVO;
|
||||||
import com.chint.infrastructure.repository.cache.CacheRoleRepository;
|
import com.chint.infrastructure.repository.cache.CacheRoleRepository;
|
||||||
import com.chint.infrastructure.repository.jdbc.JdbcRoleRepository;
|
import com.chint.infrastructure.repository.jdbc.JdbcRoleRepository;
|
||||||
|
import com.chint.infrastructure.util.PageResult;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
|
@ -17,6 +30,12 @@ public class RoleRepositoryImpl implements RoleRepository {
|
||||||
@Autowired
|
@Autowired
|
||||||
private CacheRoleRepository cacheRoleRepository;
|
private CacheRoleRepository cacheRoleRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleUserRepository roleUserRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SystemOrganizationRepository systemOrganizationRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Role> findById(Long id) {
|
public Optional<Role> findById(Long id) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
|
@ -26,17 +45,92 @@ public class RoleRepositoryImpl implements RoleRepository {
|
||||||
if (fromCache.isPresent()) {
|
if (fromCache.isPresent()) {
|
||||||
return fromCache;
|
return fromCache;
|
||||||
} else {
|
} else {
|
||||||
return cacheRoleRepository.getFromCache(id, jdbcRoleRepository.findById(id));
|
Optional<Role> byId = jdbcRoleRepository.findById(id);
|
||||||
|
cacheRoleRepository.evict(id);
|
||||||
|
cacheRoleRepository.getFromCache(id, byId);
|
||||||
|
return byId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<Role> pageQuery(RoleOrgParam roleOrgParam) {
|
||||||
|
PageRequest pageRequest = PageRequest.of(roleOrgParam.getPageNum() - 1,
|
||||||
|
roleOrgParam.getPageSize(), Sort.by("sort"));
|
||||||
|
Page<Role> all = jdbcRoleRepository.findAll(pageRequest);
|
||||||
|
return PageResult.totalPageNum(all.getTotalElements(), all.getContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Role save(Role role) {
|
public Role save(Role role) {
|
||||||
Long id = role.getId();
|
Long id = role.getId();
|
||||||
if(id != null){
|
if (id != null) {
|
||||||
cacheRoleRepository.evict(id);
|
cacheRoleRepository.evict(id);
|
||||||
}
|
}
|
||||||
|
//当role(角色)调整的时候,需要清除相关用户的缓存
|
||||||
|
roleUserRepository.findByRoleId(role.getId())
|
||||||
|
.stream()
|
||||||
|
.map(RoleUser::getUserId)
|
||||||
|
.forEach(userId -> {
|
||||||
|
cacheRoleRepository.evictRoleOrgCodeList(userId);
|
||||||
|
cacheRoleRepository.evictRoleOrgList(userId);
|
||||||
|
});
|
||||||
return jdbcRoleRepository.save(role);
|
return jdbcRoleRepository.save(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> roleOrgCodeList(Long userId) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SystemOrganizationVO> roleOrgList(Long userId) {
|
||||||
|
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void loadUserRole(User user) {
|
||||||
|
Long userId = user.getUserId();
|
||||||
|
List<String> orgCodeList = cacheRoleRepository
|
||||||
|
.roleOrgCodeList(userId, null);
|
||||||
|
List<SystemOrganizationVO> systemOrganizationVOList = cacheRoleRepository
|
||||||
|
.roleOrgList(userId, null);
|
||||||
|
|
||||||
|
if (systemOrganizationVOList == null || systemOrganizationVOList.isEmpty() ||
|
||||||
|
orgCodeList == null || orgCodeList.isEmpty()) {
|
||||||
|
List<Role> roleList = user.getRoleList();
|
||||||
|
List<Long> orgListId = roleList
|
||||||
|
.stream()
|
||||||
|
.flatMap(role -> role.getRoleOrganizationList().stream())
|
||||||
|
.map(RoleOrganization::getOrgId)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
// 获取所有的 SystemOrganization
|
||||||
|
List<SystemOrganization> rootOrganizations = systemOrganizationRepository.findByIdIn(orgListId);
|
||||||
|
|
||||||
|
// 展开所有的 SystemOrganization
|
||||||
|
rootOrganizations = systemOrganizationRepository.expandOrganizations(rootOrganizations);
|
||||||
|
|
||||||
|
orgCodeList = rootOrganizations.stream()
|
||||||
|
.map(SystemOrganization::getOrgShortCode)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
systemOrganizationVOList = rootOrganizations.stream()
|
||||||
|
.map(SystemOrganization::mapToVO)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
cacheRoleRepository.evictRoleOrgCodeList(userId);
|
||||||
|
cacheRoleRepository.roleOrgCodeList(userId, orgCodeList);
|
||||||
|
cacheRoleRepository.evictRoleOrgList(userId);
|
||||||
|
cacheRoleRepository.roleOrgList(userId, systemOrganizationVOList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置用户的角色组织列表
|
||||||
|
user.setRoleOrgCodeList(orgCodeList);
|
||||||
|
user.setRoleOrgList(systemOrganizationVOList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,11 @@ public class RoleUserRepositoryImpl implements RoleUserRepository {
|
||||||
return jdbcRoleUserRepository.findByUserId(userId);
|
return jdbcRoleUserRepository.findByUserId(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RoleUser> findByRoleId(Long roleId) {
|
||||||
|
return jdbcRoleUserRepository.findByRoleId(roleId);
|
||||||
|
}
|
||||||
|
|
||||||
@CacheEvict(value = "RoleUser", key = "#roleUser.userId")
|
@CacheEvict(value = "RoleUser", key = "#roleUser.userId")
|
||||||
@Override
|
@Override
|
||||||
public RoleUser save(RoleUser roleUser) {
|
public RoleUser save(RoleUser roleUser) {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
|
@ -51,7 +52,10 @@ public class SystemOrganizationRepositoryImpl implements SystemOrganizationRepos
|
||||||
@Override
|
@Override
|
||||||
public List<SystemOrganization> findByIdIn(List<Long> ids) {
|
public List<SystemOrganization> findByIdIn(List<Long> ids) {
|
||||||
List<SystemOrganization> fromCacheByIdIn = cacheSystemOrganizationRepository.getFromCacheByIdIn(ids);
|
List<SystemOrganization> fromCacheByIdIn = cacheSystemOrganizationRepository.getFromCacheByIdIn(ids);
|
||||||
List<Long> fromCacheOrg = fromCacheByIdIn.stream().map(SystemOrganization::getId).toList();
|
List<Long> fromCacheOrg = fromCacheByIdIn.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.map(SystemOrganization::getId)
|
||||||
|
.toList();
|
||||||
List<Long> list = ids.stream().filter(it -> !fromCacheOrg.contains(it)).toList();
|
List<Long> list = ids.stream().filter(it -> !fromCacheOrg.contains(it)).toList();
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
List<SystemOrganization> fromDBByIdIn = jdbcSystemOrganizationRepository.findByIdIn(list);
|
List<SystemOrganization> fromDBByIdIn = jdbcSystemOrganizationRepository.findByIdIn(list);
|
||||||
|
@ -99,4 +103,42 @@ public class SystemOrganizationRepositoryImpl implements SystemOrganizationRepos
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SystemOrganization queryChild(SystemOrganization systemOrganization) {
|
||||||
|
List<SystemOrganization> byParentId = findByParentId(systemOrganization.getId());
|
||||||
|
if (byParentId.isEmpty()) {
|
||||||
|
return systemOrganization;
|
||||||
|
} else {
|
||||||
|
systemOrganization.setChildOrganizationList(byParentId);
|
||||||
|
for (SystemOrganization organization : byParentId) {
|
||||||
|
queryChild(organization);
|
||||||
|
}
|
||||||
|
return systemOrganization;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SystemOrganization> expandOrganizations(List<SystemOrganization> systemOrganizations) {
|
||||||
|
List<SystemOrganization> allOrganizations = new ArrayList<>();
|
||||||
|
for (SystemOrganization org : systemOrganizations) {
|
||||||
|
expandOrganizationRecursively(org, allOrganizations);
|
||||||
|
}
|
||||||
|
return allOrganizations;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void expandOrganizationRecursively(SystemOrganization org,
|
||||||
|
List<SystemOrganization> allOrganizations) {
|
||||||
|
if (org == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
queryChild(org); // 查询子组织
|
||||||
|
allOrganizations.add(org); // 添加当前组织到列表
|
||||||
|
List<SystemOrganization> childOrganizationList = org.getChildOrganizationList();
|
||||||
|
if (childOrganizationList != null && !childOrganizationList.isEmpty()) {
|
||||||
|
for (SystemOrganization child : childOrganizationList) {
|
||||||
|
expandOrganizationRecursively(child, allOrganizations); // 递归展开子组织
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package com.chint.infrastructure.repository.cache;
|
package com.chint.infrastructure.repository.cache;
|
||||||
|
|
||||||
import com.chint.domain.aggregates.user.Role;
|
import com.chint.domain.aggregates.user.Role;
|
||||||
|
import com.chint.domain.value_object.system.SystemOrganizationVO;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
|
@ -19,4 +21,22 @@ public class CacheRoleRepository {
|
||||||
@CacheEvict(value = "Role", key = "#id")
|
@CacheEvict(value = "Role", key = "#id")
|
||||||
public void evict(Long id) {
|
public void evict(Long id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Cacheable(value = "Role::OrgCode", key = "#userId")
|
||||||
|
public List<String> roleOrgCodeList(Long userId, List<String> roleOrgCodeList) {
|
||||||
|
return roleOrgCodeList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@CacheEvict(value = "Role::OrgCode", key = "#userId")
|
||||||
|
public void evictRoleOrgCodeList(Long userId) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(value = "Role::Org", key = "#userId")
|
||||||
|
public List<SystemOrganizationVO> roleOrgList(Long userId, List<SystemOrganizationVO> roleOrgList) {
|
||||||
|
return roleOrgList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@CacheEvict(value = "Role::Org", key = "#userId")
|
||||||
|
public void evictRoleOrgList(Long userId) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public class CacheSystemOrganizationRepository {
|
public class CacheSystemOrganizationRepository {
|
||||||
|
@ -18,7 +19,8 @@ public class CacheSystemOrganizationRepository {
|
||||||
|
|
||||||
public List<SystemOrganization> getFromCacheByIdIn(List<Long> ids) {
|
public List<SystemOrganization> getFromCacheByIdIn(List<Long> ids) {
|
||||||
List<String> routeOrderKeys = ids.stream().map(id -> "SystemOrganization::" + id).toList();
|
List<String> routeOrderKeys = ids.stream().map(id -> "SystemOrganization::" + id).toList();
|
||||||
return redisTemplate.opsForValue().multiGet(routeOrderKeys);
|
List<SystemOrganization> systemOrganizationList = redisTemplate.opsForValue().multiGet(routeOrderKeys);
|
||||||
|
return Objects.requireNonNullElseGet(systemOrganizationList, List::of);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Cacheable(value = "SystemOrganization", key = "#systemOrganization.id")
|
@Cacheable(value = "SystemOrganization", key = "#systemOrganization.id")
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package com.chint.infrastructure.repository.jdbc;
|
package com.chint.infrastructure.repository.jdbc;
|
||||||
|
|
||||||
import com.chint.domain.aggregates.standards.Ranks;
|
|
||||||
import com.chint.domain.aggregates.user.Role;
|
import com.chint.domain.aggregates.user.Role;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface JdbcRoleRepository extends CrudRepository<Role, Long> {
|
public interface JdbcRoleRepository extends CrudRepository<Role, Long> {
|
||||||
|
Page<Role> findAll(Pageable pageable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,4 +10,8 @@ import java.util.List;
|
||||||
public interface JdbcRoleUserRepository extends CrudRepository<RoleUser, Long> {
|
public interface JdbcRoleUserRepository extends CrudRepository<RoleUser, Long> {
|
||||||
|
|
||||||
List<RoleUser> findByUserId(Long userId);
|
List<RoleUser> findByUserId(Long userId);
|
||||||
|
|
||||||
|
List<RoleUser> findByRoleId(Long roleId);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,9 @@ class RouteApplicationTests {
|
||||||
@Autowired
|
@Autowired
|
||||||
private CTripAirportRequest cTripAirportRequest;
|
private CTripAirportRequest cTripAirportRequest;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserRepository userRepository;
|
||||||
|
|
||||||
|
|
||||||
@Value("${FSSC.jt-baseUrl}")
|
@Value("${FSSC.jt-baseUrl}")
|
||||||
private String jtFSSCUrl;
|
private String jtFSSCUrl;
|
||||||
|
@ -1308,5 +1311,18 @@ class RouteApplicationTests {
|
||||||
System.out.println(rankName);
|
System.out.println(rankName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void roleTest(){
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
User byId = userRepository.findByUserEmployeeNo("230615020").loadRoleOrg();
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
byId.loadRoleOrg();
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
byId.loadRoleOrg();
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
byId.loadRoleOrg();
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
byId.loadRoleOrg();
|
||||||
|
System.out.println(System.currentTimeMillis());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue