【7.6.0】【sys】【permission】增加更新用户激活的应用id接口

pull/57/head
fengshuonan 2023-06-21 16:37:01 +08:00
parent 92ace892a4
commit c60fc87648
4 changed files with 81 additions and 1 deletions

View File

@ -0,0 +1,36 @@
package cn.stylefeng.roses.kernel.sys.api.exception.enums;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import lombok.Getter;
/**
*
*
* @author fengshuonan
* @since 2023/6/21 16:34
*/
@Getter
public enum RoleExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
USER_HAVE_NO_APP_ID(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "用户没有该应用的权限,无法跳转到该应用");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
RoleExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -12,6 +12,7 @@ import cn.stylefeng.roses.kernel.sys.api.SysUserOrgServiceApi;
import cn.stylefeng.roses.kernel.sys.api.SysUserRoleServiceApi;
import cn.stylefeng.roses.kernel.sys.api.SysUserServiceApi;
import cn.stylefeng.roses.kernel.sys.api.exception.enums.OrgExceptionEnum;
import cn.stylefeng.roses.kernel.sys.api.exception.enums.RoleExceptionEnum;
import cn.stylefeng.roses.kernel.sys.api.pojo.user.SimpleUserDTO;
import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO;
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
@ -124,11 +125,12 @@ public class UserIndexInfoService {
if (updateUserOrgAppRequest.getNewAppId() != null) {
// 判断当前用户是否有该应用id
this.validateUserHaveAppId(loginUser, updateUserOrgAppRequest.getNewAppId());
loginUser.setCurrentAppId(updateUserOrgAppRequest.getNewAppId());
}
// 更新用户会话信息
sessionManagerApi.updateSession(loginUser.getToken(), loginUser);
}
@ -349,4 +351,27 @@ public class UserIndexInfoService {
userIndexInfo.setWebsocketUrl(webSocketWsUrl);
}
/**
* appId
*
* @param loginUser
* @param appId id
* @return true-false-
* @author fengshuonan
* @since 2023/6/21 16:23
*/
private void validateUserHaveAppId(LoginUser loginUser, Long appId) {
Long userId = loginUser.getUserId();
// 获取用户拥有的角色id集合
List<Long> userRoleIdList = this.sysUserRoleServiceApi.getUserRoleIdList(userId);
// 获取角色有没有对应应用下的菜单,如果有菜单则代表有该应用的权限
boolean permissionFlag = this.sysRoleMenuService.validateRoleHaveAppIdPermission(userRoleIdList, appId);
if (!permissionFlag) {
throw new ServiceException(RoleExceptionEnum.USER_HAVE_NO_APP_ID);
}
}
}

View File

@ -88,4 +88,15 @@ public interface SysRoleMenuService extends IService<SysRoleMenu> {
*/
List<Long> getRoleBindMenuIdList(List<Long> roleIdList);
/**
*
*
* @param roleIdList idid
* @param appId id
* @return true-idfalse-id
* @author fengshuonan
* @since 2023/6/21 16:27
*/
boolean validateRoleHaveAppIdPermission(List<Long> roleIdList, Long appId);
}

View File

@ -128,6 +128,14 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
return sysRoleMenuList.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
}
@Override
public boolean validateRoleHaveAppIdPermission(List<Long> roleIdList, Long appId) {
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysRoleMenuLambdaQueryWrapper.in(SysRoleMenu::getRoleId, roleIdList);
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getAppId, appId);
return this.count(sysRoleMenuLambdaQueryWrapper) > 0;
}
@Override
public List<SysRoleMenu> findList(SysRoleMenuRequest sysRoleMenuRequest) {
LambdaQueryWrapper<SysRoleMenu> wrapper = this.createWrapper(sysRoleMenuRequest);