TRX 1 gadu atpakaļ
vecāks
revīzija
e007298906

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RegisterUserAccountParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.org;
 
 import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.client.type.UserType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotEmpty;
@@ -60,4 +61,6 @@ public class RegisterUserAccountParam {
     @Schema(description = "用户类型", hidden = true)
     private UserType userType = UserType.Consumer;
 
+    private UserState state;
+
 }

+ 42 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/UserCountAboutRoleModel.java

@@ -0,0 +1,42 @@
+package com.zhongshu.card.client.model.org;
+
+import com.google.common.collect.Lists;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.org.role.RoleModel;
+import com.zhongshu.card.client.type.CertificateType;
+import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserLoginType;
+import com.zhongshu.card.client.type.UserState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserCountAboutRoleModel extends UserCountModel {
+
+    @Schema(description = "角色信息")
+    private List<RoleModel> roles = new ArrayList<>();
+
+    private List<String> roleIds;
+
+    public List<String> getRoleIds() {
+        if (ObjectUtils.isNotEmpty(roles)) {
+            return roles.stream().map(it -> it.getId()).collect(Collectors.toUnmodifiableList());
+        }
+        return Lists.newArrayList();
+    }
+
+}

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

@@ -53,9 +53,7 @@ public class UserManagerController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "用户列表-分页查询(所有)", description = "用户列表-分页查询")
     @RequestMapping(value = {"pageAllUser"}, method = {RequestMethod.POST})
-    public ResultContent<Page<UserCountModel>> pageAllUser(
-            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) UserCountSearchParam param) {
+    public ResultContent<Page<UserCountModel>> pageAllUser(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) UserCountSearchParam param) {
         return userAccountService.list(param, pageable);
     }
 

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

@@ -25,6 +25,8 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
     // 查询用户在机构的信息
     OrganizationUser findTopByOrganizationAndUser(Organization organization, UserAccount user);
 
+    OrganizationUser findTopByUserIdAndOid(String userId, String oid);
+
     OrganizationUser findTopByUserAndProjectOid(UserAccount user, String projectOid);
 
     OrganizationUser findTopByOrganizationAndUserAndProjectOid(Organization organization, UserAccount user, String projectOid);

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

@@ -327,7 +327,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         organizationUser.setPhone(userAccount.getPhone());
         organizationUser.setName(userAccount.getName());
         organizationUser.setCardNumber(userAccount.getCardNumber());
-
+        organizationUser.setOid(param.getOrgOid());
         if (organization.getAuthType() == AuthType.Project) {
             organizationUser.setIsOrg(Boolean.FALSE);
         } else {
@@ -608,9 +608,7 @@ public class OrganizationUserServiceImpl extends SuperService {
                             failDetails.add(String.format("%s 机构信息不存在", orgName));
                             continue;
                         }
-                        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(
-                                projectInfo, organization, OrganizationRelationType.ProjectBindOrg
-                        );
+                        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(projectInfo, organization, OrganizationRelationType.ProjectBindOrg);
                         if (ObjectUtils.isEmpty(relation)) {
                             failDetails.add(String.format("%s 机构信息未加入到项目中", orgName));
                             continue;

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

@@ -13,6 +13,7 @@ import com.zhongshu.card.client.model.base.AuthTypeParam;
 import com.zhongshu.card.client.model.base.UserIdModel;
 import com.zhongshu.card.client.model.org.*;
 import com.zhongshu.card.client.model.org.role.RoleModel;
+import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.type.Sex;
@@ -27,7 +28,6 @@ import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.service.base.SuperService;
-import com.zhongshu.card.server.core.service.devices.DevicePermissEventService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
 import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
 import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
@@ -42,6 +42,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
@@ -259,6 +261,10 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent updateOrgUserState(UpdateUserStateParam param) {
+        String userId = "";
+
+        // 初始基本用户信息
+        RegisterUserAccountParam userAccountParam = new RegisterUserAccountParam();
         if (StringUtils.isEmpty(param.getUserId())) {
             // 新增加
             if (StringUtils.isEmpty(param.getName())) {
@@ -274,43 +280,71 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             if (!validateResult.isSuccess()) {
                 return ResultContent.buildFail(validateResult.getMsg());
             }
-
-            // 初始基本用户信息
-            RegisterUserAccountParam userAccountParam = new RegisterUserAccountParam();
             userAccountParam.setLoginName(param.getPhone());
             userAccountParam.setPassword(param.getPassword());
             userAccountParam.setPhone(param.getPhone());
-            userAccountParam.setName(param.getName());
-            ResultContent<String> userAccountContent = registerUserAccount(userAccountParam);
-            if (userAccountContent.isFailed()) {
-                return ResultContent.buildFail(userAccountContent.getMsg());
-            }
-            String userId = userAccountContent.getContent();
-            
         } else {
+            userId = param.getUserId();
+            UserAccount temp = userCountDao.findTopByUserId(userId);
+            userAccountParam.setLoginName(temp.getLoginName());
+            userAccountParam.setPhone(temp.getPhone());
+            userAccountParam.setUserType(temp.getUserType());
+        }
+        userAccountParam.setName(param.getName());
+        userAccountParam.setState(param.getState());
 
+        ResultContent<String> userAccountContent = registerUserAccount(userAccountParam);
+        if (userAccountContent.isFailed()) {
+            return ResultContent.buildFail(userAccountContent.getMsg());
         }
-        String userId = param.getUserId();
+        userId = userAccountContent.getContent();
+
+
         String oid = param.getOid();
         if (StringUtils.isEmpty(oid)) {
             oid = getCurrentOid();
         }
-        Assert.hasText(oid, "oid不能为空");
+        if (StringUtils.isEmpty(oid)) {
+            return ResultContent.buildFail("oid不能为空");
+        }
         Assert.hasText(userId, "userId不能为空");
-        // 价差用户数据
+
+        // 机构信息
         Organization organization = organizationDao.findTopByOid(oid);
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, oid));
         }
+        // 用户数据
         UserAccount temp = userCountDao.findTopByUserId(userId);
         if (ObjectUtils.isEmpty(temp)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, userId));
         }
 
+        OrgBindUserAllParam orgBindUserAllParam = new OrgBindUserAllParam();
+        orgBindUserAllParam.setUserId(userId);
+        // 要绑定的机构
+        orgBindUserAllParam.setOrgOid(organization.getOid());
+        orgBindUserAllParam.setRoleIds(param.getRoleIds());
+        orgBindUserAllParam.setState(param.getState());
+        orgBindUserAllParam.setRemark(param.getRemark());
+        orgBindUserAllParam.setProjectOid(organization.getOid());
         OrganizationUser organizationUser = organizationUserDao.findTopByOrganizationAndUser(organization, temp);
         if (ObjectUtils.isNotEmpty(organizationUser)) {
-            organizationUser.setState(param.getState());
-            organizationUserDao.save(organizationUser);
+            orgBindUserAllParam.setId(organizationUser.getId());
+            orgBindUserAllParam.setCode(organizationUser.getCode());
+            if (organizationUser.getPosition() != null) {
+                orgBindUserAllParam.setPositionId(organizationUser.getPosition().getId());
+            }
+            if (organizationUser.getDepartment() != null) {
+                orgBindUserAllParam.setDepartmentId(organizationUser.getDepartment().getId());
+            }
+        } else {
+            orgBindUserAllParam.setIsAdmin(Boolean.FALSE);
+        }
+        // 绑定用户到机构
+        ResultContent<OrganizationUser> bindUserContent = organizationUserService.orgBindUser(orgBindUserAllParam);
+        if (bindUserContent.isFailed()) {
+            return ResultContent.buildFail(bindUserContent.getMsg());
         }
         return ResultContent.buildSuccess();
     }
@@ -549,8 +583,21 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent<Page<UserCountModel>> list(UserCountSearchParam param, Pageable pageable) {
+        String oid = param.getOid();
+        if (StringUtils.isEmpty(oid)) {
+            oid = getCurrentOid();
+        }
         Page<UserAccount> page = userCountDao.page(pageable, param);
-        return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
+        List<UserCountAboutRoleModel> models = new ArrayList<>();
+        List<UserAccount> list = page.getContent();
+        if (ObjectUtils.isNotEmpty(list)) {
+            String finalOid = oid;
+            models = list.parallelStream().map(it -> {
+                return toAboutRoleModel(it, finalOid);
+            }).collect(Collectors.toUnmodifiableList());
+        }
+        Page<UserCountAboutRoleModel> page1 = new PageImpl<>(models, PageRequest.of(page.getNumber(), page.getSize(), page.getSort()), page.getTotalElements());
+        return ResultContent.buildSuccess(page1);
     }
 
     /**
@@ -595,6 +642,23 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         return model;
     }
 
+    public UserCountAboutRoleModel toAboutRoleModel(UserAccount entity, String oid) {
+        UserCountAboutRoleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new UserCountAboutRoleModel();
+            BeanUtils.copyProperties(entity, model);
+            // 角色
+            if (StringUtils.isNotEmpty(oid)) {
+                OrganizationUser organizationUser = organizationUserDao.findTopByUserIdAndOid(entity.getUserId(), oid);
+                if (ObjectUtils.isNotEmpty(organizationUser)) {
+                    model.setRoles(roleServiceImpl.toModels(organizationUser.getRoles()));
+                    model.setRemark(organizationUser.getRemark());
+                }
+            }
+        }
+        return model;
+    }
+
     /**
      * 用户的基本信息 (简介模型)
      *