TRX 1 год назад
Родитель
Сommit
1aebbffe43

+ 2 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSearch.java

@@ -61,4 +61,6 @@ public class OrganizationUserSearch extends SuperSearch {
     @Schema(description = "机构类型")
     private AuthType notAuthType;
 
+    @Schema(description = "是否是机构类型")
+    private Boolean isOrg;
 }

+ 3 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationUserController.java

@@ -70,11 +70,11 @@ public class OrganizationUserController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "项目用户列表-分页查询", description = "项目用户列表-分页查询")
     @RequestMapping(value = {"projectUserPage"}, method = {RequestMethod.POST})
-    public ResultContent<Page<OrganizationUserModel>> projectUserPage(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) OrganizationUserSearch param) {
+    public ResultContent<Page<OrganizationUserModel>> projectUserPage(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) OrganizationUserSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
         // 项目用户 包括项目下所有的机构的用户
         param.setIsSearchProject(Boolean.TRUE);
-        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        param.setIsOrg(Boolean.TRUE);
         return userAccountService.projectUserPage(param, pageable);
     }
 

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/UserManagerController.java

@@ -43,7 +43,7 @@ public class UserManagerController {
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "禁用-启用用户", description = "禁用-启用用户")
+    @Operation(summary = "平台修改用户信息", description = "平台修改用户信息")
     @RequestMapping(value = {"updateOrgUserState"}, method = {RequestMethod.POST})
     public ResultContent updateOrgUserState(@RequestBody UpdateUserStateParam param) {
         return userAccountService.updateOrgUserState(param);

+ 5 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationUserDao.java

@@ -27,14 +27,17 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
 
     OrganizationUser findTopByUserIdAndOid(String userId, String oid);
 
-    OrganizationUser findTopByUserAndProjectOid(UserAccount user, String projectOid);
+    OrganizationUser findTopByUserAndProjectOidAndIsOrg(UserAccount user, String projectOid, Boolean isOrg);
 
-    OrganizationUser findTopByOrganizationAndUserAndProjectOid(Organization organization, UserAccount user, String projectOid);
+    OrganizationUser findTopByOrganizationAndUserAndProjectOid(
+            Organization organization, UserAccount user, String projectOid);
 
     OrganizationUser findTopByOrganizationAndUserAndState(Organization organization, UserAccount user, UserState state);
 
     OrganizationUser findTopByCodeAndOrganization(String code, Organization organization);
 
+    OrganizationUser findTopByCodeAndProjectOid(String code, String projectOid);
+
     // 用户是否存在
     Boolean existsByOrganizationAndUser(Organization organization, UserAccount user);
 

+ 6 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationUserDaoImpl.java

@@ -107,6 +107,11 @@ public class OrganizationUserDaoImpl extends BaseImpl implements OrganizationUse
             criteria.and("projectOid").is(param.getProjectOid());
         }
 
+        // 搜索是否是结构的用户
+        if (param.getIsOrg() != null) {
+            criteria.and("isOrg").is(param.getIsOrg());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         // 用户名称
@@ -130,11 +135,7 @@ public class OrganizationUserDaoImpl extends BaseImpl implements OrganizationUse
         // 关键字搜索
         if (StringUtils.isNotEmpty(param.getKeyWord())) {
             Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
-            criteria.orOperator(
-                    Criteria.where("name").regex(pattern),
-                    Criteria.where("phone").regex(pattern),
-                    Criteria.where("code").regex(pattern)
-            );
+            criteria.orOperator(Criteria.where("name").regex(pattern), Criteria.where("phone").regex(pattern), Criteria.where("code").regex(pattern));
         }
 
         Sort sort = buildSort(param);

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/OrganizationUser.java

@@ -93,6 +93,6 @@ public class OrganizationUser extends SuperMain {
     @DBRef(lazy = true)
     private Department department;
 
-    @Schema(description = "是否是机构类型")
+    @Schema(description = "是否是机构类型,如果用户只加入项目,没加入项目的机构中,则isOrg:false")
     private Boolean isOrg = Boolean.FALSE;
 }

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

@@ -208,72 +208,16 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
 
         //todo  同步名称至openApi网关
         signService.syncBusinessName(organization.getOid(), organization.getName());
-        // 把管理员用户
+
+        // 把管理员用户加入到项目中
         organizationUserServiceImpl.orgBindManager(organization, userAccounts);
+
+        // 创建项目的文件中心账号
         com.github.microservice.netdisk.client.content.ResultContent<String> resultContent = netDiskAccountService.create(organization.getOid());
         log.info("创建文件账号: {}", resultContent.getState());
         return ResultContent.buildSuccess();
     }
 
-    /**
-     * 保存机构信息
-     *
-     * @param param
-     * @return
-     */
-    @Transactional
-    public ResultContent saveOrg(ProjectSaveParam param) {
-        AuthType authType = param.getAuthType();
-        String code = param.getCode();
-        if (StringUtils.isEmpty(code)) {
-            code = NextNoUtil.getNextNo(authType.getCode().toUpperCase());
-            param.setCode(code);
-        }
-        String name = param.getName();
-        if (ObjectUtils.isEmpty(param.getManagerUserIds())) {
-            return ResultContent.buildFail("项目负责人不能为空");
-        }
-        String currentOid = getCurrentOid();
-        List<UserAccount> userAccounts = userAccountService.getUserAccounts(param.getManagerUserIds());
-        if (userAccounts.size() != param.getManagerUserIds().size()) {
-            return ResultContent.buildFail("managerUserIds错误");
-        }
-        Organization organization = null;
-        Organization nameOrganization = organizationDao.findTopByNameAndAuthType(name, authType);
-        if (StringUtils.isNotEmpty(param.getId())) {
-            organization = organizationDao.findTopById(param.getId());
-            if (ObjectUtils.isEmpty(organization)) {
-                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
-            }
-            if (ObjectUtils.isNotEmpty(nameOrganization) && !nameOrganization.getId().equals(organization.getId())) {
-                return ResultContent.buildFail(String.format(ResultMessage.NAME_EXIST, param.getName()));
-            }
-            BeanUtils.copyProperties(param, organization, "code");
-            initUpdateEntity(organization);
-        } else {
-            if (ObjectUtils.isNotEmpty(nameOrganization)) {
-                return ResultContent.buildFail(String.format(ResultMessage.NAME_EXIST, param.getName()));
-            }
-            // 初始权限中心的机构信息
-            ResultContent<String> initOrgContent = authCenterAddOrgInfo(name, authType, param.getRemark());
-            if (initOrgContent.isFailed()) {
-                return ResultContent.buildFail(initOrgContent.getMsg());
-            }
-            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());
-            organizationDao.save(organization);
-        }
-        organizationUserServiceImpl.orgBindManager(organization, userAccounts);
-        return ResultContent.buildSuccess();
-    }
-
     /**
      * 当前用户能查看 项目分页数据
      *

+ 16 - 7
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -154,8 +154,10 @@ public class OrganizationUserServiceImpl extends SuperService {
         String projectOid = param.getProjectOid();
         // 判断是否存在
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
+
         if (ObjectUtils.isNotEmpty(userAccount)) {
-            OrganizationUser tempOrgUser = organizationUserDao.findTopByUserAndProjectOid(userAccount, projectOid);
+            // 判断是否存在
+            OrganizationUser tempOrgUser = organizationUserDao.findTopByUserAndProjectOidAndIsOrg(userAccount, projectOid, Boolean.TRUE);
             if (ObjectUtils.isNotEmpty(tempOrgUser)) {
                 if (ObjectUtils.isEmpty(temp) || !temp.getId().equals(tempOrgUser.getId())) {
                     return ResultContent.buildFail(String.format("用户已加入该项目:%s", loginName));
@@ -236,7 +238,8 @@ public class OrganizationUserServiceImpl extends SuperService {
 
         OrganizationUser codeTemp = null;
         if (StringUtils.isNotEmpty(param.getCode())) {
-            codeTemp = organizationUserDao.findTopByCodeAndOrganization(param.getCode(), organization);
+            // code 在整个项目部重复
+            codeTemp = organizationUserDao.findTopByCodeAndProjectOid(param.getCode(), projectOid);
         }
         OrganizationUser organizationUser = null;
         if (StringUtils.isNotEmpty(param.getId())) {
@@ -357,6 +360,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         List<OrganizationUser> oldList = organizationUserDao.findByOrganizationAndIsAdmin(organization, Boolean.TRUE);
 
         List<String> newIds = new ArrayList<>();
+        // 得到项目的管理员角色
         List<Role> adminRole = roleServiceImpl.getOrgAdminRoles(organization.getOid());
         for (UserAccount userAccount : userAccounts) {
             OrgBindUserParam _param = new OrgBindUserParam();
@@ -365,7 +369,7 @@ public class OrganizationUserServiceImpl extends SuperService {
             _param.setIsAdmin(Boolean.TRUE);
             _param.setRoleIds(adminRole.stream().map(it -> it.getId()).collect(Collectors.toList()));
             _param.setProjectOid(organization.getOid());
-            OrganizationUser temp = buildOrgUserInfo(_param);
+            OrganizationUser temp = buildProjectManagerUserInfo(_param);
             if (temp != null) {
                 newIds.add(temp.getId());
             }
@@ -401,12 +405,12 @@ public class OrganizationUserServiceImpl extends SuperService {
     }
 
     /**
-     * 用户绑定机构
+     * 项目的管理员绑定到项目中
      *
      * @param param
      * @return
      */
-    private OrganizationUser buildOrgUserInfo(OrgBindUserParam param) {
+    private OrganizationUser buildProjectManagerUserInfo(OrgBindUserParam param) {
         Organization organization = param.getOrganization();
         UserAccount userAccount = param.getUserAccount();
         Boolean isAdmin = param.getIsAdmin();
@@ -419,10 +423,12 @@ public class OrganizationUserServiceImpl extends SuperService {
                 organizationUser = new OrganizationUser();
                 organizationUser.setState(UserState.Normal);
                 organizationUser.setCode("");
+                initEntityNoCheckOid(organizationUser);
             } else {
                 if (ObjectUtils.isNotEmpty(organizationUser.getRoles())) {
                     roles = organizationUser.getRoles();
                 }
+                initUpdateEntity(organizationUser);
             }
             if (ObjectUtils.isNotEmpty(param.getRoleIds())) {
                 roles.addAll(roleDao.findByIdIn(param.getRoleIds()));
@@ -438,13 +444,16 @@ public class OrganizationUserServiceImpl extends SuperService {
             organizationUser.setIsAdmin(isAdmin);
 
             organizationUser.setAboutOid(organization.getOid());
-            organizationUser.setAuthType(organization.getAuthType());
-
             organizationUser.setProjectOid(param.getProjectOid());
             if (ObjectUtils.isNotEmpty(roles)) {
                 roles = roles.stream().distinct().collect(Collectors.toUnmodifiableList());
             }
             organizationUser.setRoles(roles);
+            if (organization.getAuthType() == AuthType.Platform || organization.getAuthType() == AuthType.Project) {
+                organizationUser.setIsOrg(Boolean.FALSE);
+            } else {
+                organizationUser.setIsOrg(Boolean.TRUE);
+            }
             organizationUserDao.save(organizationUser);
 
             // 绑定角色

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

@@ -790,6 +790,13 @@ public class RoleServiceImpl extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 用户绑定到角色中
+     *
+     * @param userId
+     * @param roles
+     * @return
+     */
     public ResultContent userBindRoles(String userId, List<Role> roles) {
         if (StringUtils.isNotEmpty(userId) && ObjectUtils.isNotEmpty(roles)) {
             String[] roleGroupIds = roles.stream().map(it -> it.getRoleGroupId()).collect(Collectors.toList()).toArray(String[]::new);

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/UserAccountServiceImpl.java

@@ -303,6 +303,7 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         userAccountParam.setName(param.getName());
         userAccountParam.setState(param.getState());
 
+        // 基础用户信息维护
         ResultContent<String> userAccountContent = registerUserAccount(userAccountParam);
         if (userAccountContent.isFailed()) {
             return ResultContent.buildFail(userAccountContent.getMsg());