diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java index ddf84ab60..9a908c738 100644 --- a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java @@ -73,6 +73,12 @@ public class LoginUser implements Serializable { @ChineseDescription("当前用户激活的组织机构id(正在以哪个身份访问系统)") private Long currentOrgId; + /** + * 当前用户激活的职务id(正在以哪个身份访问系统) + */ + @ChineseDescription("当前用户激活的职务id(正在以哪个身份访问系统)") + private Long currentPositionId; + /** * 当前登录租户编码 */ diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserOrgServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserOrgServiceApi.java index b30adf1a1..8060be407 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserOrgServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserOrgServiceApi.java @@ -59,4 +59,12 @@ public interface SysUserOrgServiceApi { */ List getPositionUserList(Long orgId, Long positionId); + /** + * 获取用户在指定机构下的职务 + * + * @author fengshuonan + * @since 2023/7/15 23:04 + */ + Long getUserOrgPositionId(Long userId, Long orgId); + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java index e64c18855..30e2524ce 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserOrgServiceImpl.java @@ -229,6 +229,27 @@ public class SysUserOrgServiceImpl extends ServiceImpl wrapper = this.createWrapper(sysUserOrgRequest); + wrapper.select(SysUserOrg::getPositionId); + SysUserOrg sysUserOrg = this.getOne(wrapper, false); + + if (sysUserOrg != null) { + return sysUserOrg.getPositionId(); + } + + return null; + } + /** * 获取信息 * @@ -252,6 +273,9 @@ public class SysUserOrgServiceImpl extends ServiceImpl createWrapper(SysUserOrgRequest sysUserOrgRequest) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Long userId = sysUserOrgRequest.getUserId(); + queryWrapper.eq(ObjectUtil.isNotNull(userId), SysUserOrg::getUserId, userId); + Long orgId = sysUserOrgRequest.getOrgId(); queryWrapper.eq(ObjectUtil.isNotNull(orgId), SysUserOrg::getOrgId, orgId); diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/pojo/IndexUserOrgInfo.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/pojo/IndexUserOrgInfo.java index 6fc1f7cb3..5e5c1a13d 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/pojo/IndexUserOrgInfo.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/pojo/IndexUserOrgInfo.java @@ -25,6 +25,12 @@ public class IndexUserOrgInfo { @ChineseDescription("组织机构id") private Long orgId; + /** + * 职务id,组织机构下对应的职务id + */ + @ChineseDescription("职务id,组织机构下对应的职务id") + private Long positionId; + /** * 公司的名称 */ diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java index d4dcbc8bc..769c40d51 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java @@ -121,7 +121,13 @@ public class UserIndexInfoService { throw new ServiceException(OrgExceptionEnum.UPDATE_LOGIN_USER_ORG_ERROR); } + // 设置用户的当前组织机构id loginUser.setCurrentOrgId(updateUserOrgAppRequest.getNewOrgId()); + + // 设置用户在当前机构下的职位id + Long positionId = sysUserOrgServiceApi.getUserOrgPositionId(loginUser.getUserId(), + updateUserOrgAppRequest.getNewOrgId()); + loginUser.setCurrentPositionId(positionId); } if (updateUserOrgAppRequest.getNewAppId() != null) { @@ -189,6 +195,8 @@ public class UserIndexInfoService { indexUserOrgInfo.setCompanyName(userOrgItem.getCompanyName()); indexUserOrgInfo.setDeptName(userOrgItem.getDeptName()); + + indexUserOrgInfo.setPositionId(userOrgItem.getPositionId()); indexUserOrgInfo.setPositionName(userOrgItem.getPositionName()); // 设置是否是主要任职部门 @@ -206,6 +214,7 @@ public class UserIndexInfoService { // 更新用户的当前组织机构id if (indexUserOrgInfo.getMainFlag()) { loginUser.setCurrentOrgId(indexUserOrgInfo.getOrgId()); + loginUser.setCurrentPositionId(indexUserOrgInfo.getPositionId()); } } }