TRX 1 ano atrás
pai
commit
c824b57728

+ 8 - 8
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationController.java

@@ -40,14 +40,6 @@ public class OrganizationController {
         return this.organizationService.saveProjectInfo(param);
     }
 
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
-    @Operation(summary = "项目-编辑", description = "项目-编辑")
-    @RequestMapping(value = "updateProject", method = {RequestMethod.POST})
-    public ResultContent updateProject(@RequestBody ProjectUpdateParam param) {
-        return this.organizationService.updateProject(param);
-    }
-
     @ResourceAuth(value = "user", type = AuthType.User)
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
     @Operation(summary = "项目列表-分页查询", description = "项目列表-分页查询")
@@ -59,6 +51,14 @@ public class OrganizationController {
         return organizationService.pageProject(param, pageable);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
+    @Operation(summary = "项目-编辑", description = "项目-编辑")
+    @RequestMapping(value = "updateProject", method = {RequestMethod.POST})
+    public ResultContent updateProject(@RequestBody ProjectUpdateParam param) {
+        return this.organizationService.updateProject(param);
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到平台管理端的机构数据", description = "得到平台管理端的机构数据")
     @RequestMapping(value = "getPlatformInfo", method = {RequestMethod.GET})

+ 14 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationDaoImpl.java

@@ -42,12 +42,13 @@ public class OrganizationDaoImpl extends BaseImpl implements OrganizationDaoExte
         if (ObjectUtils.isNotEmpty(param.getOid())) {
             criteria.and("oid").is(param.getOid());
         }
-
-        if(param.getState() != null) {
+        // 状态
+        if (param.getState() != null) {
             criteria.and("state").is(param.getState());
         }
 
-        if(param.getAuthType() != null) {
+        // 类型
+        if (param.getAuthType() != null) {
             criteria.and("authType").is(param.getAuthType());
         }
 
@@ -59,6 +60,16 @@ public class OrganizationDaoImpl extends BaseImpl implements OrganizationDaoExte
             criteria.and("id").in(param.getIds());
         }
 
+        // 所属项目oid
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        if (StringUtils.isNotEmpty(param.getManagerUserId())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getManagerUserId() + ".*$");
+            criteria.and("managerUserIds").is(pattern);
+        }
+
         if (!CommonUtil.longIsEmpty(param.getStartTime()) && !CommonUtil.longIsEmpty(param.getEndTime())) {
             criteria.and("createTime").gte(param.getStartTime()).and("createTime").lte(param.getEndTime());
         }

+ 15 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java

@@ -119,6 +119,9 @@ public abstract class SuperService {
             if (StringUtils.isEmpty(oid)) {
                 entity.setOid(getCurrentOid());
             }
+            if (StringUtils.isEmpty(entity.getId())) {
+                entity.setId(null);
+            }
             UserAccount account = getCurrentUserAccount();
             if (account != null) {
                 if (StringUtils.isEmpty(entity.getCreateUserId())) {
@@ -227,6 +230,18 @@ public abstract class SuperService {
         }
     }
 
+    public void initSearchParam(SuperSearch param) {
+        List<Long> times = param.getTimes();
+        if (ObjectUtils.isNotEmpty(times) && times.size() == 2) {
+            Long startTime = times.get(0);
+            startTime = DateUtils.getDayStartTime(startTime);
+            Long endTime = times.get(1);
+            endTime = DateUtils.getDayEndTime(endTime);
+            param.setStartTime(startTime);
+            param.setEndTime(endTime);
+        }
+    }
+
     public OperationLogsAddParam initLog(String userId) {
         return CommonUtil.initLog(request, userId);
     }

+ 24 - 22
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

@@ -97,6 +97,9 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
     @Autowired
     OrganizationUserServiceImpl organizationUserServiceImpl;
 
+    @Autowired
+    RoleServiceImpl roleServiceImpl;
+
     /**
      * 保存项目信息
      *
@@ -144,17 +147,37 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             String oid = initOrgContent.getContent();
             organization = new Organization();
             BeanUtils.copyProperties(param, organization);
+            initEntityNoCheckOid(organization);
+
             organization.setOid(oid);
             organization.setProjectOid(oid);
             organization.setAboutOid(currentOid);
             organization.setCreateUserId(getCurrentUserId());
-            initEntity(organization);
             organizationDao.save(organization);
         }
         organizationUserServiceImpl.orgBindManager(organization, userAccounts);
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 当前用户能查看 项目分页数据
+     *
+     * @param param
+     * @param pageable
+     * @return
+     */
+    @Override
+    public ResultContent<Page<ProjectOrgModel>> pageProject(OrganizationSearchParam param, Pageable pageable) {
+        initSearchParam(param);
+        String userId = getCurrentUserId();
+        Boolean isSuperAdmin = roleServiceImpl.isSuperAdmin(userId);
+        if (isSuperAdmin == null || !isSuperAdmin) {
+            // 不是平台管理员,只能查看自己为项目负责人的数据
+            param.setManagerUserId(userId);
+        }
+        Page<Organization> page = organizationDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toProjectModel));
+    }
 
     //------------------------------------------------------------------------------------
 
@@ -760,27 +783,6 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         return orgs;
     }
 
-    /**
-     * 分页数据
-     *
-     * @param param
-     * @param pageable
-     * @return
-     */
-    @Override
-    public ResultContent<Page<OrganizationModel>> pageProject(OrganizationSearchParam param, Pageable pageable) {
-        List<Long> times = param.getTimes();
-        if (ObjectUtils.isNotEmpty(times) && times.size() == 2) {
-            Long startTime = times.get(0);
-            startTime = DateUtils.getDayStartTime(startTime);
-            Long endTime = times.get(1);
-            endTime = DateUtils.getDayEndTime(endTime);
-            param.setStartTime(startTime);
-            param.setEndTime(endTime);
-        }
-        Page<Organization> page = organizationDao.page(pageable, param);
-        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toProjectModel));
-    }
 
     /**
      * 查询所有可用的项目

+ 62 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/RoleServiceImpl.java

@@ -388,6 +388,68 @@ public class RoleServiceImpl extends SuperService {
         return ResultContent.buildSuccess(roleModel);
     }
 
+    /**
+     * 判断用户是否是超级管理员
+     *
+     * @param userId
+     * @return
+     */
+    public boolean isSuperAdmin(String userId) {
+        Set<String> auth = getUserAllAuths(userId);
+        return auth.contains(AuthConstant.SuperAdmin);
+    }
+
+    /**
+     * 得到用户在平台(平台机构)的所有的权限
+     *
+     * @param userId
+     * @return
+     */
+    public Set<String> getUserAllAuths(String userId) {
+        Set<String> auth = new HashSet<>();
+        if (StringUtils.isEmpty(userId)) {
+            return auth;
+        }
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+        if (ObjectUtils.isEmpty(userAccount)) {
+            return auth;
+        }
+        List<OrganizationUser> organizationUsers = organizationUserDao.findByUserAndAuthType(userAccount, AuthType.Platform);
+        if (ObjectUtils.isEmpty(organizationUsers)) {
+            return auth;
+        }
+        for (OrganizationUser organizationUser : organizationUsers) {
+            Organization organization = organizationUser.getOrganization();
+            String oid = organization.getOid();
+
+            var roleGroupModels = roleService.listRoleGroupFromOrganizationUser(oid, userId).getContent();
+            if (!CollectionUtils.isEmpty(roleGroupModels)) {
+                roleGroupModels.stream().forEach(roleGroup -> {
+                    if (!CollectionUtils.isEmpty(roleGroup.getRoleId())) {
+                        roleGroup.getRoleId().stream().forEach(it -> {
+                            var role = roleService.getRole(it).getContent();
+                            if (role != null && !CollectionUtils.isEmpty(role.getAuth())) {
+                                auth.addAll(role.getAuth());
+                            }
+                        });
+                    }
+                });
+            }
+
+            List<Role> roles = organizationUser.getRoles();
+            if (ObjectUtils.isNotEmpty(roles)) {
+                List<Role> _list = roles.stream().filter(it -> {
+                    return it.getIsAdmin();
+                }).collect(Collectors.toList());
+                // 如果角色是管理员角色,就把 Admin权限标识返回
+                if (ObjectUtils.isNotEmpty(_list)) {
+                    auth.add(AuthConstant.Admin);
+                }
+            }
+        }
+        return auth;
+    }
+
     /**
      * 得到当前用户单企业的权限
      *