diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java index 6b6b801cd..4a6e85e11 100644 --- a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java @@ -24,6 +24,8 @@ */ package cn.stylefeng.roses.kernel.auth.api.password; +import cn.stylefeng.roses.kernel.auth.api.pojo.password.SaltedEncryptResult; + /** * 密码存储时,将密码进行加密的api * @@ -42,6 +44,16 @@ public interface PasswordStoredEncryptApi { */ String encrypt(String originPassword); + /** + * 加密密码,通过密码 + 盐的方式 + * + * @param originPassword 密码明文,待加密的密码 + * @return 加密后的密码 + * @author fengshuonan + * @since 2023/6/25 8:49 + */ + SaltedEncryptResult encryptWithSalt(String originPassword); + /** * 校验密码加密前和加密后是否一致,多用于判断用户输入密码是否正确 * @@ -52,4 +64,12 @@ public interface PasswordStoredEncryptApi { */ Boolean checkPassword(String encryptBefore, String encryptAfter); + /** + * 校验密码,通过密码 + 盐的方式 + * + * @author fengshuonan + * @since 2023/6/25 8:51 + */ + Boolean checkPasswordWithSalt(String encryptBefore, String passwordSalt, String encryptAfter); + } diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/password/SaltedEncryptResult.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/password/SaltedEncryptResult.java new file mode 100644 index 000000000..fd459fefb --- /dev/null +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/password/SaltedEncryptResult.java @@ -0,0 +1,24 @@ +package cn.stylefeng.roses.kernel.auth.api.pojo.password; + +import lombok.Data; + +/** + * 密码加密结果 + * + * @author fengshuonan + * @since 2023/6/25 8:48 + */ +@Data +public class SaltedEncryptResult { + + /** + * 加密后的密码 + */ + private String encryptPassword; + + /** + * 密码盐 + */ + private String passwordSalt; + +} diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java index 2d6d5e04f..febfaf421 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java @@ -308,7 +308,8 @@ public class LoginService { } // 如果本次登录需要校验密码 - Boolean checkResult = passwordStoredEncryptApi.checkPassword(loginRequest.getPassword(), userValidateInfo.getUserPasswordHexed()); + Boolean checkResult = passwordStoredEncryptApi.checkPasswordWithSalt(loginRequest.getPassword(), + userValidateInfo.getUserPasswordSalt(), userValidateInfo.getUserPasswordHexed()); // 校验用户表密码是否正确,如果正确则直接返回 if (checkResult) { @@ -323,7 +324,7 @@ public class LoginService { String userTempSecretKey = tempSecretApi.getUserTempSecretKey(userValidateInfo.getUserId()); // 如果用户有临时秘钥,则校验秘钥是否正确 if (StrUtil.isNotBlank(userTempSecretKey)) { - Boolean checkTempKeyResult = passwordStoredEncryptApi.checkPassword(loginRequest.getPassword(), userTempSecretKey); + boolean checkTempKeyResult = loginRequest.getPassword().equals(userTempSecretKey); if (checkTempKeyResult) { return; } diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java index 76504324c..4c2339cc6 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java @@ -24,9 +24,12 @@ */ package cn.stylefeng.roses.kernel.auth.password; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.digest.BCrypt; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; +import cn.stylefeng.roses.kernel.auth.api.pojo.password.SaltedEncryptResult; /** * 基于BCrypt算法实现的密码加密解密器 @@ -45,9 +48,30 @@ public class BcryptPasswordStoredEncrypt implements PasswordStoredEncryptApi { return BCrypt.hashpw(originPassword, BCrypt.gensalt()); } + @Override + public SaltedEncryptResult encryptWithSalt(String originPassword) { + + SaltedEncryptResult saltedEncryptResult = new SaltedEncryptResult(); + + // 创建密码盐 + String salt = RandomUtil.randomString(8); + saltedEncryptResult.setPasswordSalt(salt); + + // 将原密码进行md5加密 + String encryptAfter = SecureUtil.md5(originPassword + salt); + saltedEncryptResult.setEncryptPassword(encryptAfter); + + return saltedEncryptResult; + } + @Override public Boolean checkPassword(String encryptBefore, String encryptAfter) { return BCrypt.checkpw(encryptBefore, encryptAfter); } + @Override + public Boolean checkPasswordWithSalt(String encryptBefore, String passwordSalt, String encryptAfter) { + return SecureUtil.md5(encryptBefore + passwordSalt).equals(encryptAfter); + } + } diff --git a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysRoleServiceApi.java b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysRoleServiceApi.java new file mode 100644 index 000000000..2627fd061 --- /dev/null +++ b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysRoleServiceApi.java @@ -0,0 +1,45 @@ +/* + * Copyright [2020-2030] [https://www.stylefeng.cn] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Guns源码头部的版权声明。 + * 3.请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns + * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns + * 6.若您的项目无法满足以上几点,可申请商业授权 + */ +package cn.stylefeng.roses.kernel.sys.api; + +/** + * 角色信息相关的Api + * + * @author fengshuonan + * @since 2023/6/25 0:35 + */ +public interface SysRoleServiceApi { + + /** + * 获取系统默认角色id,查询方式为找到角色编码为employee的角色id + *

+ * 一般在添加用户时用到 + * + * @author fengshuonan + * @since 2023/6/25 0:35 + */ + Long getDefaultRoleId(); + +} diff --git a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/constants/SysConstants.java b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/constants/SysConstants.java index 2135a669b..d073ac734 100644 --- a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/constants/SysConstants.java +++ b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/constants/SysConstants.java @@ -52,6 +52,11 @@ public interface SysConstants { */ String SUPER_ADMIN_ROLE_CODE = "superAdmin"; + /** + * 默认用户的初始角色编码 + */ + String DEFAULT_ROLE_CODE = "employee"; + /** * 初始化超级管理员的监听器顺序 */ diff --git a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/user/UserValidateDTO.java b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/user/UserValidateDTO.java index f755e7490..0cd786d62 100644 --- a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/user/UserValidateDTO.java +++ b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/user/UserValidateDTO.java @@ -48,6 +48,12 @@ public class UserValidateDTO { @ChineseDescription("加密后的密码") private String userPasswordHexed; + /** + * 密码盐,存在sys_user表的password_salt字段 + */ + @ChineseDescription("加密后的密码") + private String userPasswordSalt; + /** * 用户状态,状态在UserStatusEnum维护 */ @@ -57,9 +63,10 @@ public class UserValidateDTO { public UserValidateDTO() { } - public UserValidateDTO(Long userId, String userPasswordHexed, Integer userStatus) { + public UserValidateDTO(Long userId, String userPasswordHexed, String salt, Integer userStatus) { this.userId = userId; this.userPasswordHexed = userPasswordHexed; + this.userPasswordSalt = salt; this.userStatus = userStatus; } diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/biz/UserIntegrationService.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/biz/UserIntegrationService.java index 51144a7c0..0a532842f 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/biz/UserIntegrationService.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/biz/UserIntegrationService.java @@ -82,14 +82,15 @@ public class UserIntegrationService implements SysUserServiceApi { public UserValidateDTO getUserLoginValidateDTO(String account) { LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserLambdaQueryWrapper.eq(SysUser::getAccount, account); - sysUserLambdaQueryWrapper.select(SysUser::getPassword, SysUser::getStatusFlag, SysUser::getUserId); + sysUserLambdaQueryWrapper.select(SysUser::getPassword, SysUser::getPasswordSalt, SysUser::getStatusFlag, SysUser::getUserId); SysUser sysUserServiceOne = this.sysUserService.getOne(sysUserLambdaQueryWrapper, false); if (sysUserServiceOne == null) { throw new ServiceException(SysUserExceptionEnum.ACCOUNT_NOT_EXIST); } - return new UserValidateDTO(sysUserServiceOne.getUserId(), sysUserServiceOne.getPassword(), sysUserServiceOne.getStatusFlag()); + return new UserValidateDTO(sysUserServiceOne.getUserId(), sysUserServiceOne.getPassword(), sysUserServiceOne.getPasswordSalt(), + sysUserServiceOne.getStatusFlag()); } @Override diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUser.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUser.java index 7cde1963e..b9f2551c6 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUser.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUser.java @@ -58,12 +58,19 @@ public class SysUser extends BaseExpandFieldEntity { private String account; /** - * 密码,加密方式为BCrypt + * 密码,加密方式:md5+盐 */ @TableField("password") - @ChineseDescription("密码,加密方式为BCrypt") + @ChineseDescription("密码,加密方式:md5+盐") private String password; + /** + * 密码盐,加密方式:md5+盐 + */ + @TableField("password_salt") + @ChineseDescription("密码盐,加密方式:md5+盐") + private String passwordSalt; + /** * 头像,存的为文件id */ diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserRoleService.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserRoleService.java index a6880167c..5edb093f2 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserRoleService.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserRoleService.java @@ -80,4 +80,12 @@ public interface SysUserRoleService extends IService, SysUserRoleSe */ void bindRoles(SysUserRoleRequest sysUserRoleRequest); + /** + * 给用户添加默认的角色 + * + * @author fengshuonan + * @since 2023/6/25 0:34 + */ + void bindUserDefaultRole(Long userId); + } \ No newline at end of file diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java index 642e03d52..8df33a7dc 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java @@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.sys.api.SysRoleServiceApi; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveUserCallbackApi; import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserRole; @@ -19,6 +20,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -34,6 +36,9 @@ import java.util.stream.Collectors; public class SysUserRoleServiceImpl extends ServiceImpl implements SysUserRoleService, RemoveUserCallbackApi, RemoveRoleCallbackApi { + @Resource + private SysRoleServiceApi sysRoleServiceApi; + @Override public void add(SysUserRoleRequest sysUserRoleRequest) { SysUserRole sysUserRole = new SysUserRole(); @@ -86,6 +91,19 @@ public class SysUserRoleServiceImpl extends ServiceImpl findList(SysUserRoleRequest sysUserRoleRequest) { LambdaQueryWrapper wrapper = this.createWrapper(sysUserRoleRequest); diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java index 475a44ba1..35b0ace19 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; +import cn.stylefeng.roses.kernel.auth.api.pojo.password.SaltedEncryptResult; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; @@ -63,7 +64,9 @@ public class SysUserServiceImpl extends ServiceImpl impl BeanUtil.copyProperties(sysUserRequest, sysUser); // 将密码加密存储到库中 - sysUser.setPassword(passwordStoredEncryptApi.encrypt(sysUser.getPassword())); + SaltedEncryptResult saltedEncryptResult = passwordStoredEncryptApi.encryptWithSalt(sysUser.getPassword()); + sysUser.setPassword(saltedEncryptResult.getEncryptPassword()); + sysUser.setPasswordSalt(saltedEncryptResult.getPasswordSalt()); // 设置用户默认头像 sysUser.setAvatar(FileConstants.DEFAULT_AVATAR_FILE_ID); @@ -73,8 +76,8 @@ public class SysUserServiceImpl extends ServiceImpl impl // 更新用户的任职信息 sysUserOrgService.updateUserOrg(sysUser.getUserId(), sysUserRequest.getUserOrgList()); - // 添加用户一个默认角色 todo - + // 添加用户一个默认角色 + sysUserRoleService.bindUserDefaultRole(sysUser.getUserId()); } @Override @@ -147,8 +150,8 @@ public class SysUserServiceImpl extends ServiceImpl impl LambdaQueryWrapper wrapper = createWrapper(sysUserRequest); // 只查询需要的字段 - wrapper.select(SysUser::getUserId, SysUser::getRealName, SysUser::getAccount, SysUser::getSex, - SysUser::getStatusFlag, BaseEntity::getCreateTime); + wrapper.select(SysUser::getUserId, SysUser::getRealName, SysUser::getAccount, SysUser::getSex, SysUser::getStatusFlag, + BaseEntity::getCreateTime); // 分页查询 Page sysUserPage = this.page(PageFactory.defaultPage(), wrapper); @@ -182,7 +185,11 @@ public class SysUserServiceImpl extends ServiceImpl impl // 获取系统配置的默认密码 String password = SysConfigExpander.getDefaultPassWord(); - sysUser.setPassword(passwordStoredEncryptApi.encrypt(password)); + + // 密码加密后,存储到数据库中 + SaltedEncryptResult saltedEncryptResult = passwordStoredEncryptApi.encryptWithSalt(password); + sysUser.setPassword(saltedEncryptResult.getEncryptPassword()); + sysUser.setPasswordSalt(saltedEncryptResult.getPasswordSalt()); this.updateById(sysUser); } @@ -234,8 +241,7 @@ public class SysUserServiceImpl extends ServiceImpl impl // 如果传递了组织机构id查询条件,则查询对应机构id下有哪些用户,再拼接用户查询条件 if (ObjectUtil.isNotEmpty(sysUserRequest.getOrgIdCondition())) { - List orgUserIdList = this.sysUserOrgService.getOrgUserIdList(sysUserRequest.getOrgIdCondition(), - true); + List orgUserIdList = this.sysUserOrgService.getOrgUserIdList(sysUserRequest.getOrgIdCondition(), true); queryWrapper.in(SysUser::getUserId, orgUserIdList); } @@ -250,8 +256,7 @@ public class SysUserServiceImpl extends ServiceImpl impl */ private void baseRemoveUser(Set userIdList) { // 校验是否有其他业务绑定了用户信息 - Map removeUserCallbackApiMap = SpringUtil.getBeansOfType( - RemoveUserCallbackApi.class); + Map removeUserCallbackApiMap = SpringUtil.getBeansOfType(RemoveUserCallbackApi.class); for (RemoveUserCallbackApi removeUserCallbackApi : removeUserCallbackApiMap.values()) { removeUserCallbackApi.validateHaveUserBind(userIdList); } diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java index 812fed953..0a7b45086 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java @@ -356,7 +356,6 @@ public class UserIndexInfoService { * * @param loginUser 登录用户 * @param appId 指定的应用id - * @return true-用户有该应用下的权限,false-用户没有该应用下的权限 * @author fengshuonan * @since 2023/6/21 16:23 */ diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java index 3a5f9ae86..5ae1dbdd0 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.sys.api.SysRoleServiceApi; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole; import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleRequest; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,7 +14,7 @@ import java.util.List; * @author fengshuonan * @date 2023/06/10 21:29 */ -public interface SysRoleService extends IService { +public interface SysRoleService extends IService, SysRoleServiceApi { /** * 新增 diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java index 684182d6f..58d499931 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java @@ -12,6 +12,7 @@ import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi; +import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole; import cn.stylefeng.roses.kernel.sys.modular.role.enums.exception.SysRoleExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMapper; @@ -117,6 +118,21 @@ public class SysRoleServiceImpl extends ServiceImpl impl return this.list(wrapper); } + @Override + public Long getDefaultRoleId() { + + LambdaQueryWrapper sysRoleLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysRoleLambdaQueryWrapper.eq(SysRole::getRoleCode, SysConstants.DEFAULT_ROLE_CODE); + sysRoleLambdaQueryWrapper.select(SysRole::getRoleId); + SysRole sysRole = this.getOne(sysRoleLambdaQueryWrapper, false); + + if (sysRole != null) { + return sysRole.getRoleId(); + } + + return null; + } + /** * 获取信息 * @@ -174,5 +190,4 @@ public class SysRoleServiceImpl extends ServiceImpl impl // 删除角色 this.removeBatchByIds(roleIdList); } - } \ No newline at end of file