Эх сурвалжийг харах

机构查询共用接口更改

caozixuan 3 жил өмнө
parent
commit
45d158440d

+ 5 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysOrgController.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
@@ -95,8 +96,10 @@ public class SysOrgController {
      */
     @ApiOperation(value = "根据类型查询机构")
     @RequestMapping(value = "/find_by_type", method = RequestMethod.POST)
-    public Result findByType(@ApiParam(value = "机构类型") @RequestParam OrgTypeEnum orgType) {
-        return ResultUtil.ok(sysOrgService.findDeepByOrgIdAndType(orgType));
+    public Result findByType(@ApiParam(value = "机构类型") @RequestParam OrgTypeEnum orgType,
+                             @ApiParam(value = "某机构下的集合") @RequestParam(required = false) String orgId,
+                             @ApiParam(value = "是否使用当前用户所在机构的数据权限") @RequestParam(required = false) boolean auth) {
+        return ResultUtil.ok(sysOrgService.findDeepByOrgIdAndType(orgType, SystemConstant.convertIdToLong(orgId),auth));
     }
 
 }

+ 5 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -87,10 +87,11 @@ public interface SysOrgService extends IService<SysOrg> {
     List<SysOrg> findByConnectByRootOrgId(Long orgId);
 
     /**
-     * 根据机构类型和机构id查询它和它下级所有符合条件的机构
-     *
+     * 查询符合条件的机构
      * @param orgTypeEnum 机构类型
-     * @return 机构集合
+     * @param orgId 某机构下级的全部符合条件的机构
+     * @param auth 使用当前用户所在机构数据权限的机构
+     * @return 符合条件的机构
      */
-    List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum);
+    List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum,Long orgId,boolean auth);
 }

+ 12 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -16,11 +16,9 @@ import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
-import com.qmth.teachcloud.common.mapper.SysUserMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.apache.ibatis.annotations.Case;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -301,20 +299,26 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     }
 
     @Override
-    public List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum) {
+    public List<SysOrg> findDeepByOrgIdAndType(OrgTypeEnum orgTypeEnum, Long orgId, boolean auth) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        Set<Long> orgIds = null;
-        if (OrgTypeEnum.TEACHING_ROOM.equals(orgTypeEnum)) {
-            orgIds = teachcloudCommonService.listSubOrgIds(null);
+        Set<Long> orgIds = new HashSet<>(); // 下级机构集合
+        Set<Long> authOrgIdSet = new HashSet<>(); // 当前用户数据权限下的机构集合
+        Set<Long> orgIdSet = new HashSet<>(); // 输入机构下的所有下级机构集合
+        if (auth) {
+            authOrgIdSet = teachcloudCommonService.listSubOrgIds(null);
         }
+        if (SystemConstant.longNotNull(orgId)) {
+            orgIdSet = teachcloudCommonService.listSubOrgIds(orgId);
+        }
+        orgIds.addAll(authOrgIdSet);
+        orgIds.addAll(orgIdSet);
         QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId)
                 .eq(SysOrg::getType, orgTypeEnum)
                 .eq(SysOrg::getEnable, true);
-        if (Objects.nonNull(orgIds)) {
+        if (orgIds.size() > 0) {
             queryWrapper.lambda().in(SysOrg::getId, orgIds);
         }
-
         return this.list(queryWrapper);
     }
 }