diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index 982f9c73b..af6e7f557 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -142,7 +142,6 @@ public class SysLoginService { SpringUtils.context().publishEvent(logininforEvent); } - /** * 构建登录用户 */ @@ -162,6 +161,7 @@ public class SysLoginService { dept = deptService.selectDeptById(user.getDeptId()); } loginUser.setDeptName(ObjectUtil.isNull(dept) ? "" : dept.getDeptName()); + loginUser.setDeptCategory(ObjectUtil.isNull(dept) ? "" : dept.getDeptCategory()); List roles = roleService.selectRolesByUserId(user.getUserId()); loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class)); }); diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java index e2671243a..c723e7668 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java @@ -14,7 +14,6 @@ import java.util.Set; * * @author Lion Li */ - @Data @NoArgsConstructor public class LoginUser implements Serializable { @@ -37,6 +36,11 @@ public class LoginUser implements Serializable { */ private Long deptId; + /** + * 部门类别编码 + */ + private String deptCategory; + /** * 部门名 */ diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 8e5af46e2..1e0d8a7ab 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -35,6 +35,7 @@ public class LoginHelper { public static final String USER_NAME_KEY = "userName"; public static final String DEPT_KEY = "deptId"; public static final String DEPT_NAME_KEY = "deptName"; + public static final String DEPT_CATEGORY_KEY = "deptCategory"; public static final String CLIENT_KEY = "clientid"; /** @@ -52,6 +53,7 @@ public class LoginHelper { .setExtra(USER_NAME_KEY, loginUser.getUsername()) .setExtra(DEPT_KEY, loginUser.getDeptId()) .setExtra(DEPT_NAME_KEY, loginUser.getDeptName()) + .setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory()) ); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } @@ -99,6 +101,20 @@ public class LoginHelper { return Convert.toLong(getExtra(DEPT_KEY)); } + /** + * 获取部门名 + */ + public static String getDeptName() { + return Convert.toStr(getExtra(DEPT_NAME_KEY)); + } + + /** + * 获取部门类别编码 + */ + public static String getDeptCategory() { + return Convert.toStr(getExtra(DEPT_CATEGORY_KEY)); + } + /** * 获取当前 Token 的扩展信息 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index 4f5f23f32..98b76e490 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -75,6 +75,8 @@ public class SysDeptController extends BaseController { public R add(@Validated @RequestBody SysDeptBo dept) { if (!deptService.checkDeptNameUnique(dept)) { return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } else if (StringUtils.isNotBlank(dept.getDeptCategory()) && !deptService.checkDeptCategoryUnique(dept)) { + return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门类别编码已存在"); } return toAjax(deptService.insertDept(dept)); } @@ -90,6 +92,8 @@ public class SysDeptController extends BaseController { deptService.checkDeptDataScope(deptId); if (!deptService.checkDeptNameUnique(dept)) { return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } else if (StringUtils.isNotBlank(dept.getDeptCategory()) && !deptService.checkDeptCategoryUnique(dept)) { + return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门类别编码已存在"); } else if (dept.getParentId().equals(deptId)) { return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java index c56fb09bc..cb4fb162d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -41,6 +41,11 @@ public class SysDeptVo implements Serializable { */ private String parentName; + /** + * 父部门类别编码 + */ + private String parentCategory; + /** * 祖级列表 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index bf16642fe..cd984d865 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -92,6 +92,14 @@ public interface ISysDeptService { */ boolean checkDeptNameUnique(SysDeptBo dept); + /** + * 校验部门类别编码是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + boolean checkDeptCategoryUnique(SysDeptBo dept); + /** * 校验部门是否有数据权限 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 505403642..f8d52038e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -135,8 +135,11 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { return null; } SysDeptVo parentDept = baseMapper.selectVoOne(new LambdaQueryWrapper() - .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId())); - dept.setParentName(ObjectUtil.isNotNull(parentDept) ? parentDept.getDeptName() : null); + .select(SysDept::getDeptName, SysDept::getDeptCategory).eq(SysDept::getDeptId, dept.getParentId())); + if (ObjectUtil.isNotNull(parentDept)) { + dept.setParentName(parentDept.getDeptName()); + dept.setParentCategory(parentDept.getDeptCategory()); + } return dept; } @@ -218,6 +221,20 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { return !exist; } + /** + * 校验部门类别编码是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public boolean checkDeptCategoryUnique(SysDeptBo dept) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysDept::getDeptCategory, dept.getDeptCategory()) + .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId())); + return !exist; + } + /** * 校验部门是否有数据权限 *