From eb5850e99fbc63c107f26f11aca1bee48e1a6d1d Mon Sep 17 00:00:00 2001 From: hongchao <3228015117@qq.com> Date: Fri, 9 Jan 2026 10:01:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8F=E6=BA=90=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/system/api/domain/SysDictData.java | 1 + .../common/core/web/domain/BaseEntity.java | 11 +++++++ .../controller/SysDictDataController.java | 18 +++++++++++ .../system/controller/SysUserController.java | 5 +++ .../bonus/system/mapper/SysDeptMapper.java | 2 +- .../system/mapper/SysDictDataMapper.java | 7 ++++ .../system/service/ISysDictDataService.java | 2 ++ .../service/impl/SysDeptServiceImpl.java | 2 +- .../service/impl/SysDictDataServiceImpl.java | 32 +++++++++++++++++++ .../resources/mapper/system/SysDeptMapper.xml | 7 +++- .../mapper/system/SysDictDataMapper.xml | 28 ++++++++++++++-- 11 files changed, 110 insertions(+), 5 deletions(-) diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java index a57f84f..bb33ebb 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysDictData.java @@ -56,6 +56,7 @@ public class SysDictData extends BaseEntity @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; + public Long getDictCode() { return dictCode; diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java index 0db9b84..1a16e2b 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java @@ -61,6 +61,9 @@ public class BaseEntity implements Serializable private String missionSource;//权限字符 + private Long companyId;//公司id ` + + public String getMissionSource(String missionSource) { return missionSource; @@ -164,4 +167,12 @@ public class BaseEntity implements Serializable { this.params = params; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysDictDataController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysDictDataController.java index edf198b..c6781a6 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysDictDataController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysDictDataController.java @@ -8,6 +8,7 @@ import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; import com.bonus.common.security.annotation.InnerAuth; import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -51,6 +52,8 @@ public class SysDictDataController extends BaseController @SysLog(title = "字典管理", businessType = OperaType.QUERY,logType = 0,module = "系统管理->字典管理") public TableDataInfo list(SysDictData dictData) { try{ + Long deptId = dictDataService.getUserDeptId(); + dictData.setCompanyId(deptId); startPage(); List list = dictDataService.selectDictDataList(dictData); return getDataTable(list); @@ -114,6 +117,8 @@ public class SysDictDataController extends BaseController public AjaxResult add(@Validated @RequestBody SysDictData dict) { try{ dict.setCreateBy(SecurityUtils.getUsername()); + Long deptId = dictDataService.getUserDeptId(); + dict.setCompanyId(deptId); return toAjax(dictDataService.insertDictData(dict)); }catch (Exception e){ log.error(e.toString(),e); @@ -152,4 +157,17 @@ public class SysDictDataController extends BaseController } return error("系统错误"); } + + + /** + * 获取用户部门id + * @param + * @return + */ + @ApiOperation(value = "获取用户部门id") + @GetMapping("/getUserDeptId") + public AjaxResult getUserDeptId() { + Long deptId = dictDataService.getUserDeptId(); + return AjaxResult.success(deptId); + } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java index abc5c7c..36e5bfa 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java @@ -79,6 +79,9 @@ public class SysUserController extends BaseController { @Autowired private ISysLogService sysLogService; + @Autowired + private ISysDictDataService dictDataService; + /** * 获取用户列表 */ @@ -528,6 +531,8 @@ public class SysUserController extends BaseController { @PostMapping("/deptUserTree") public AjaxResult deptUserTree(@RequestBody SysUser sysUser) { try { + Long deptId = dictDataService.getUserDeptId(); + sysUser.setCompanyId(deptId); return success(deptService.selectDeptUserTree(sysUser)); } catch (Exception e) { logger.error(e.toString(), e); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDeptMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDeptMapper.java index 31a57f6..1f77783 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDeptMapper.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDeptMapper.java @@ -36,7 +36,7 @@ public interface SysDeptMapper * @param roleIds 角色列表 * @return 部门树信息集合 */ - public List selectDeptUserList(@Param("roleIds") Long[] roleIds); + public List selectDeptUserList(@Param("roleIds") Long[] roleIds,@Param("companyId") Long companyId); /** * 根据角色ID查询部门树信息 diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDictDataMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDictDataMapper.java index b78c9f4..34e2e8e 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDictDataMapper.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysDictDataMapper.java @@ -1,6 +1,9 @@ package com.bonus.system.mapper; import java.util.List; + +import com.bonus.system.api.domain.SysDept; +import com.bonus.system.api.domain.SysUser; import org.apache.ibatis.annotations.Param; import com.bonus.system.api.domain.SysDictData; @@ -94,4 +97,8 @@ public interface SysDictDataMapper public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); int getdictDatasInfo(String dictType); + + SysUser getUserDeptId(Long userId); + + SysDept getDeptIdByUserId(Long deptId); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysDictDataService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysDictDataService.java index 6316b8b..abd311b 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysDictDataService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysDictDataService.java @@ -57,4 +57,6 @@ public interface ISysDictDataService * @return 结果 */ public int updateDictData(SysDictData dictData); + + Long getUserDeptId(); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDeptServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDeptServiceImpl.java index 8d557fc..a8d57d3 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDeptServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDeptServiceImpl.java @@ -123,7 +123,7 @@ public class SysDeptServiceImpl implements ISysDeptService @DataScope(deptAlias = "d") public List selectDeptUserTree(SysUser sysUser) { - List depts = deptMapper.selectDeptUserList(sysUser.getRoleIds()); + List depts = deptMapper.selectDeptUserList(sysUser.getRoleIds(),sysUser.getCompanyId()); for (int i = 0; i < 5; i++) { depts = getFilterDepts(depts); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDictDataServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDictDataServiceImpl.java index ee1337c..e045efa 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDictDataServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysDictDataServiceImpl.java @@ -5,6 +5,9 @@ import java.util.Objects; import java.util.stream.Collectors; import com.bonus.common.core.exception.ServiceException; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.system.api.domain.SysDept; +import com.bonus.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.common.security.utils.DictUtils; @@ -142,4 +145,33 @@ public class SysDictDataServiceImpl implements ISysDictDataService } return result; } + + /** + * 获取用户部门id + * @param + * @return + */ + @Override + public Long getUserDeptId() { + Long userId = SecurityUtils.getLoginUser().getUserid(); + SysUser sysUser = dictDataMapper.getUserDeptId(userId); + if (sysUser != null) { + //获取祖籍部门id + SysDept sysDept = dictDataMapper.getDeptIdByUserId(sysUser.getDeptId()); + if (sysDept != null && sysDept.getAncestors() != null) { + String ancestors = sysDept.getAncestors(); + String[] ancestorArray = ancestors.split(","); + + // 计算逗号数量(数组长度-1) + int commaCount = ancestorArray.length - 1; + + // 根据逗号数量决定取哪个值 + if (commaCount == 2) { // 两个逗号,如 "0,100,101" + // 取最后一个数据 + sysUser.setDeptId(Long.valueOf(ancestorArray[ancestorArray.length - 1])); + } + } + } + return sysUser.getDeptId(); + } } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysDeptMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysDeptMapper.xml index bf43191..de226d0 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -120,7 +120,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE d.del_flag = '0' AND d.STATUS = '0' - + + AND (find_in_set(#{companyId}, ancestors) or dept_id = #{companyId} or dept_id = 100) + UNION SELECT @@ -142,6 +144,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} + + AND (find_in_set(#{companyId}, ancestors) or sd.dept_id = #{companyId} or sd.dept_id = 100) + @@ -63,6 +66,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from sys_dict_type where dict_type=#{dictType} and status = '0' + + + delete from sys_dict_data where dict_code = #{dictCode} @@ -108,7 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" status, remark, create_by, - create_time + create_time, + company_id )values( #{dictSort}, #{dictLabel}, @@ -120,7 +143,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{status}, #{remark}, #{createBy}, - sysdate() + sysdate(), + #{companyId} )