fix(iam): 完善对接

This commit is contained in:
yjz
2023-11-21 18:30:28 +08:00
parent f7000760e4
commit 993d0389d6
2 changed files with 173 additions and 211 deletions
@@ -44,6 +44,11 @@ public class ResourceDto {
*/ */
private String redirect; private String redirect;
/**
* 路径
*/
private String url;
/** /**
* 类型(0:一级菜单; 1:子菜单:2:按钮权限) * 类型(0:一级菜单; 1:子菜单:2:按钮权限)
*/ */
@@ -578,24 +578,18 @@ public class SyncIamService {
* 角色创建 * 角色创建
*/ */
public BpmcResponseDto roleCreateService(RoleDto roleDto){ public BpmcResponseDto roleCreateService(RoleDto roleDto){
try { SysRole sysRole = new SysRole();
SysRole sysRole = new SysRole(); sysRole.setId(roleDto.getId());
sysRole.setId(roleDto.getId()); sysRole.setRoleName(roleDto.getName());
sysRole.setRoleName(roleDto.getName()); sysRole.setRoleCode(roleDto.getCode());
sysRole.setRoleCode(roleDto.getCode()); sysRole.setDescription(roleDto.getDescription());
sysRole.setDescription(roleDto.getDescription()); sysRole.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
sysRole.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); sysRole.setCreateTime(roleDto.getCreateTime());
sysRole.setCreateTime(roleDto.getCreateTime()); sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); sysRole.setUpdateTime(roleDto.getModifyTime());
sysRole.setUpdateTime(roleDto.getModifyTime()); sysRole.setAppId(roleDto.getAppId());
sysRole.setAppId(roleDto.getAppId());
sysRoleService.save(sysRole);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
}
sysRoleService.save(sysRole);
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -603,47 +597,42 @@ public class SyncIamService {
* 角色更新 * 角色更新
*/ */
public BpmcResponseDto roleUpdateService(RoleDto roleDto){ public BpmcResponseDto roleUpdateService(RoleDto roleDto){
try { if (CharSequenceUtil.isEmpty(roleDto.getId())){
if (CharSequenceUtil.isEmpty(roleDto.getId())){ return BpmcResponseDto.error("角色id为空,无法更新");
return BpmcResponseDto.error("角色id为空,无法更新");
}
SysRole sysRole = sysRoleService.getById(roleDto.getId());
if (sysRole == null){
return BpmcResponseDto.error("未找到对应id角色,无法更新");
}else {
sysRole.setId(roleDto.getId());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getName())){
sysRole.setRoleName(roleDto.getName());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getCode())){
sysRole.setRoleCode(roleDto.getCode());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getDescription())){
sysRole.setDescription(roleDto.getDescription());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getAppId())){
sysRole.setAppId(roleDto.getAppId());
}
sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (roleDto.getModifyTime() != null){
sysRole.setUpdateTime(roleDto.getModifyTime());
}
sysRoleService.updateById(sysRole);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
SysRole sysRole = sysRoleService.getById(roleDto.getId());
if (sysRole == null){
return BpmcResponseDto.error("未找到对应id角色,无法更新");
}else {
sysRole.setId(roleDto.getId());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getName())){
sysRole.setRoleName(roleDto.getName());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getCode())){
sysRole.setRoleCode(roleDto.getCode());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getDescription())){
sysRole.setDescription(roleDto.getDescription());
}
if (CharSequenceUtil.isNotEmpty(roleDto.getAppId())){
sysRole.setAppId(roleDto.getAppId());
}
sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (roleDto.getModifyTime() != null){
sysRole.setUpdateTime(roleDto.getModifyTime());
}
sysRoleService.updateById(sysRole);
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -651,17 +640,12 @@ public class SyncIamService {
* 角色删除 * 角色删除
*/ */
public BpmcResponseDto roleDeleteService(RoleDto roleDto){ public BpmcResponseDto roleDeleteService(RoleDto roleDto){
try { if (CharSequenceUtil.isEmpty(roleDto.getId())){
if (CharSequenceUtil.isEmpty(roleDto.getId())){ return BpmcResponseDto.error("角色id为空,无法删除");
return BpmcResponseDto.error("角色id为空,无法删除");
}
sysRoleService.deleteRole(roleDto.getId());
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
sysRoleService.deleteRole(roleDto.getId());
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -669,69 +653,67 @@ public class SyncIamService {
* 菜单创建 * 菜单创建
*/ */
public BpmcResponseDto resourceCreateService(ResourceDto resourceDto){ public BpmcResponseDto resourceCreateService(ResourceDto resourceDto){
try { SysPermission sysPermission = new SysPermission();
SysPermission sysPermission = new SysPermission(); sysPermission.setId(resourceDto.getId());
sysPermission.setId(resourceDto.getId()); if (StringUtils.isNotBlank(resourceDto.getParentId())){
if (StringUtils.isNotBlank(resourceDto.getParentId())){ sysPermission.setParentId(resourceDto.getParentId());
sysPermission.setParentId(resourceDto.getParentId());
}
sysPermission.setName(resourceDto.getName());
sysPermission.setPermsType("1"); // 1显示2禁用,固定为1
sysPermission.setIcon("copy"); //IAM 没有icon字段,设定为固定值
if (StringUtils.isNotBlank(resourceDto.getCode())){
sysPermission.setPerms(resourceDto.getCode());
}
sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径
if (StringUtils.isNotBlank(resourceDto.getRedirect())){
sysPermission.setUrl(resourceDto.getRedirect()); // 地址栏显示的路径
}
sysPermission.setAppId(resourceDto.getAppId()); // appId
if (!Objects.isNull(resourceDto.getSort())){
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
}else {
sysPermission.setSortNo(1D);
}
// TODO 菜单英文名数据库中没有,需要确认
// sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限)
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
sysPermission.setMenuType(0);
} else {
sysPermission.setMenuType(1);
}
} else {
sysPermission.setMenuType(2);
}
sysPermission.setCreateTime(new Date());
sysPermission.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
if (!Objects.isNull(resourceDto.getModifyTime())){
sysPermission.setUpdateTime(resourceDto.getModifyTime());
}
sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StringUtils.isNotBlank(resourceDto.getDescription())){
sysPermission.setDescription(resourceDto.getDescription());
}
// 以下为IAM没有的属性,设置默认值
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true); // 是否路由,设固定值
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true); // 是否缓存,设固定值
sysPermission.setDelFlag(CommonConstant.DEL_FLAG_0);
sysPermission.setRuleFlag(0); // 是否配置菜单的数据权限 1是0否 默认0
sysPermission.setHidden(resourceDto.getHidden() == 0 ? false : true); // 是否配置菜单的数据权限 1是0否 默认0
sysPermission.setStatus("1"); // 按钮权限状态(0无效1有效)
sysPermission.setAlwaysShow(false);
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
sysPermissionService.addPermission(sysPermission);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
sysPermission.setName(resourceDto.getName());
sysPermission.setPermsType("1"); // 1显示2禁用,固定为1
sysPermission.setIcon("copy"); //IAM 没有icon字段,设定为固定值
if (StringUtils.isNotBlank(resourceDto.getCode())){
sysPermission.setPerms(resourceDto.getCode());
}
sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径
if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){
sysPermission.setRedirect(resourceDto.getRedirect()); // 地址栏显示的路径
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getUrl())){
sysPermission.setUrl(resourceDto.getUrl()); // 路径
}
sysPermission.setAppId(resourceDto.getAppId()); // appId
if (!Objects.isNull(resourceDto.getSort())){
sysPermission.setSortNo(Double.valueOf(resourceDto.getSort()));
}else {
sysPermission.setSortNo(1D);
}
// TODO 菜单英文名数据库中没有,需要确认
// sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限)
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
sysPermission.setMenuType(0);
} else {
sysPermission.setMenuType(1);
}
} else {
sysPermission.setMenuType(2);
}
sysPermission.setCreateTime(new Date());
sysPermission.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
if (!Objects.isNull(resourceDto.getModifyTime())){
sysPermission.setUpdateTime(resourceDto.getModifyTime());
}
sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StringUtils.isNotBlank(resourceDto.getDescription())){
sysPermission.setDescription(resourceDto.getDescription());
}
// 以下为IAM没有的属性,设置默认值
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true); // 是否路由,设固定值
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true); // 是否缓存,设固定值
sysPermission.setDelFlag(CommonConstant.DEL_FLAG_0);
sysPermission.setRuleFlag(0); // 是否配置菜单的数据权限 1是0否 默认0
sysPermission.setHidden(resourceDto.getHidden() == 0 ? false : true); // 是否配置菜单的数据权限 1是0否 默认0
sysPermission.setStatus("1"); // 按钮权限状态(0无效1有效)
sysPermission.setAlwaysShow(false);
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
sysPermissionService.addPermission(sysPermission);
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -769,7 +751,11 @@ public class SyncIamService {
} }
if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){ if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){
sysPermission.setUrl(resourceDto.getRedirect()); // 地址栏显示的路径 sysPermission.setRedirect(resourceDto.getRedirect()); // 地址栏显示的路径
}
if (CharSequenceUtil.isNotEmpty(resourceDto.getUrl())){
sysPermission.setUrl(resourceDto.getUrl()); // 路径
} }
if (resourceDto.getSort() != null){ if (resourceDto.getSort() != null){
@@ -822,17 +808,10 @@ public class SyncIamService {
* 菜单删除(真实删除) * 菜单删除(真实删除)
*/ */
public BpmcResponseDto resourceDeleteService(ResourceDto resourceDto){ public BpmcResponseDto resourceDeleteService(ResourceDto resourceDto){
try { if (CharSequenceUtil.isEmpty(resourceDto.getId())){
if (CharSequenceUtil.isEmpty(resourceDto.getId())){ return BpmcResponseDto.error("菜单id为空,无法删除");
return BpmcResponseDto.error("菜单id为空,无法删除");
}
sysPermissionService.deletePermission(resourceDto.getId());
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
sysPermissionService.deletePermission(resourceDto.getId());
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -840,38 +819,33 @@ public class SyncIamService {
* 用户角色关联 创建(批量) * 用户角色关联 创建(批量)
*/ */
public BpmcResponseDto userRoleCreateService(List<UserRoleDto> userRoleDtoList){ public BpmcResponseDto userRoleCreateService(List<UserRoleDto> userRoleDtoList){
try { List<SysUserRole> userRoleList = new ArrayList<>();
List<SysUserRole> userRoleList = new ArrayList<>();
for (UserRoleDto userRoleDto : userRoleDtoList){ for (UserRoleDto userRoleDto : userRoleDtoList){
if (CharSequenceUtil.isNotEmpty(userRoleDto.getAccountCode())){ if (CharSequenceUtil.isNotEmpty(userRoleDto.getAccountCode())){
SysUserRole sysUserRole = new SysUserRole(); SysUserRole sysUserRole = new SysUserRole();
// 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole // 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole
LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode()); LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode());
if (userInfo == null){ if (userInfo == null){
continue; continue;
}
sysUserRole.setUserId(userInfo.getId());
sysUserRole.setRoleId(userRoleDto.getArId());
// 角色重复性校验
int count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getUserId, sysUserRole.getUserId())
.eq(SysUserRole::getRoleId, sysUserRole.getRoleId()));
if (count > 0){
continue;
}
userRoleList.add(sysUserRole);
} }
sysUserRole.setUserId(userInfo.getId());
sysUserRole.setRoleId(userRoleDto.getArId());
// 角色重复性校验
int count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getUserId, sysUserRole.getUserId())
.eq(SysUserRole::getRoleId, sysUserRole.getRoleId()));
if (count > 0){
continue;
}
userRoleList.add(sysUserRole);
} }
this.sysUserRoleService.saveBatch(userRoleList);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
this.sysUserRoleService.saveBatch(userRoleList);
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -880,25 +854,19 @@ public class SyncIamService {
* 用户角色关联 刪除(批量) * 用户角色关联 刪除(批量)
*/ */
public BpmcResponseDto userRoleDeleteService(List<UserRoleDto> userRoleDtoList){ public BpmcResponseDto userRoleDeleteService(List<UserRoleDto> userRoleDtoList){
try { for (UserRoleDto userRoleDto : userRoleDtoList){
for (UserRoleDto userRoleDto : userRoleDtoList){ QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<SysUserRole>(); // 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole
// 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode());
LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode()); if (userInfo == null){
if (userInfo == null){ continue;
continue;
}
queryWrapper.eq("user_id", userInfo.getId());
queryWrapper.eq("role_id", userRoleDto.getArId());
this.sysUserRoleService.remove(queryWrapper);
} }
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
}
queryWrapper.eq("user_id", userInfo.getId());
queryWrapper.eq("role_id", userRoleDto.getArId());
this.sysUserRoleService.remove(queryWrapper);
}
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -906,28 +874,22 @@ public class SyncIamService {
* 角色菜单关联 创建(批量) * 角色菜单关联 创建(批量)
*/ */
public BpmcResponseDto roleResourceCreateService(List<RoleResourceDto> roleResourceDtoList){ public BpmcResponseDto roleResourceCreateService(List<RoleResourceDto> roleResourceDtoList){
try { List<SysRolePermission> sysRolePermissionList = new ArrayList<>();
List<SysRolePermission> sysRolePermissionList = new ArrayList<>();
for (RoleResourceDto roleResourceDto : roleResourceDtoList){ for (RoleResourceDto roleResourceDto : roleResourceDtoList){
SysRolePermission sysRolePermission = new SysRolePermission(); SysRolePermission sysRolePermission = new SysRolePermission();
sysRolePermission.setPermissionId(roleResourceDto.getAmId()); sysRolePermission.setPermissionId(roleResourceDto.getAmId());
sysRolePermission.setRoleId(roleResourceDto.getArId()); sysRolePermission.setRoleId(roleResourceDto.getArId());
// 重复性校验 // 重复性校验
int count = sysRolePermissionService.count(new LambdaQueryWrapper<SysRolePermission>() int count = sysRolePermissionService.count(new LambdaQueryWrapper<SysRolePermission>()
.eq(SysRolePermission::getRoleId, sysRolePermission.getRoleId()) .eq(SysRolePermission::getRoleId, sysRolePermission.getRoleId())
.eq(SysRolePermission::getPermissionId, sysRolePermission.getPermissionId())); .eq(SysRolePermission::getPermissionId, sysRolePermission.getPermissionId()));
if (count > 0){ if (count > 0){
continue; continue;
}
sysRolePermissionList.add(sysRolePermission);
} }
this.sysRolePermissionService.saveBatch(sysRolePermissionList); sysRolePermissionList.add(sysRolePermission);
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
this.sysRolePermissionService.saveBatch(sysRolePermissionList);
return BpmcResponseDto.success(); return BpmcResponseDto.success();
} }
@@ -935,17 +897,12 @@ public class SyncIamService {
* 用户角色关联 刪除(批量) * 用户角色关联 刪除(批量)
*/ */
public BpmcResponseDto roleResourceDeleteService(List<RoleResourceDto> roleResourceDtoList){ public BpmcResponseDto roleResourceDeleteService(List<RoleResourceDto> roleResourceDtoList){
try { for (RoleResourceDto roleResourceDto : roleResourceDtoList){
for (RoleResourceDto roleResourceDto : roleResourceDtoList){ QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<>();
QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("permission_id", roleResourceDto.getAmId());
queryWrapper.eq("permission_id", roleResourceDto.getAmId()); queryWrapper.eq("role_id", roleResourceDto.getArId());
queryWrapper.eq("role_id", roleResourceDto.getArId());
this.sysRolePermissionService.remove(queryWrapper); this.sysRolePermissionService.remove(queryWrapper);
}
} catch (Exception e){
e.printStackTrace();
return BpmcResponseDto.error(e.getMessage());
} }
return BpmcResponseDto.success(); return BpmcResponseDto.success();