Bladeren bron

更新!

TRX 1 jaar geleden
bovenliggende
commit
cc587d93dc
48 gewijzigde bestanden met toevoegingen van 291 en 100 verwijderingen
  1. 0 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceGroup/DeviceGroupToDeviceModel.java
  2. 1 2
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/DevicePermissModel.java
  3. 0 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/login/LoginCommonModel.java
  4. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/LoginPlatformTokenModel.java
  5. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationMiniModel.java
  6. 27 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserAuditParam.java
  7. 41 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserModel.java
  8. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserSearch.java
  9. 2 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserSimpleModel.java
  10. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/userGroup/UserGroupToUserModel.java
  11. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/userGroup/UserGroupToUserSearch.java
  12. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/orgFace/OrgUserFaceModel.java
  13. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/BookInfoModel.java
  14. 1 2
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoModel.java
  15. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterResultModel.java
  16. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/SchoolUserModel.java
  17. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/visitor/VisitorMainModel.java
  18. 12 2
      FullCardClient/src/main/java/com/zhongshu/card/client/model/visitor/VisitorMainSearch.java
  19. 0 13
      FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/DevicePermissOpenApiModel.java
  20. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/service/feign/OrganizationFeignService.java
  21. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java
  22. 2 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/org/UserAccountService.java
  23. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java
  24. 0 1
      FullCardClient/src/main/java/com/zhongshu/card/client/type/UserState.java
  25. 2 2
      FullCardClient/src/main/java/com/zhongshu/card/client/type/user/OrgUserState.java
  26. 0 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/WeChatController.java
  27. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/MqttFeignController.java
  28. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/OrganizationFeignController.java
  29. 1 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/RequestInfoFeignController.java
  30. 34 11
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationUserController.java
  31. 2 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/SchoolUserController.java
  32. 1 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/OperationLogsController.java
  33. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/UserInfoController.java
  34. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/BaseImpl.java
  35. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/OrganizationUserDaoExtend.java
  36. 11 7
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationUserDaoImpl.java
  37. 14 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/visitor/impl/VisitorMainDaoImpl.java
  38. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/visitor/VisitorMain.java
  39. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissService.java
  40. 1 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/OrganizationUserOpenApiService.java
  41. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/IndexService.java
  42. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java
  43. 108 27
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java
  44. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java
  45. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectCommonConfigService.java
  46. 3 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/SchoolUserServiceImpl.java
  47. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/statistics/OrgUserStatisticsService.java
  48. 2 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/UserAccountServiceImpl.java

+ 0 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceGroup/DeviceGroupToDeviceModel.java

@@ -1,7 +1,6 @@
 package com.zhongshu.card.client.model.devices.deviceGroup;
 
 import com.zhongshu.card.client.model.devices.DeviceInfoModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/DevicePermissModel.java

@@ -4,9 +4,8 @@ import com.github.microservice.models.type.DeviceType;
 import com.zhongshu.card.client.model.base.SuperModel;
 import com.zhongshu.card.client.model.devices.DeviceInfoModel;
 import com.zhongshu.card.client.model.org.DepartmentModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.UserCountSimpleModel;
-import com.zhongshu.card.client.model.org.role.RoleModel;
 import com.zhongshu.card.client.model.org.role.RoleSimpleModel;
 import com.zhongshu.card.client.model.school.AreaSimpleModel;
 import com.zhongshu.card.client.model.school.DictInfoSimpleModel;

+ 0 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/login/LoginCommonModel.java

@@ -1,7 +1,6 @@
 package com.zhongshu.card.client.model.login;
 
 import com.zhongshu.card.client.model.org.OrganizationSimpleModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.UserCountModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/LoginPlatformTokenModel.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.model.org;
 
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationMiniModel.java

@@ -25,6 +25,7 @@ public class OrganizationMiniModel {
     @Schema(description = "编码、项目ID、机构编号")
     private String code;
 
+    @Schema(description = "机构logo")
     private String logo;
 
     @Schema(description = "机构类型")

+ 27 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserAuditParam.java

@@ -0,0 +1,27 @@
+package com.zhongshu.card.client.model.org.orgUser;
+
+import com.zhongshu.card.client.type.user.OrgUserState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2025/2/24
+ */
+@Data
+public class OrganizationUserAuditParam {
+
+    @NotEmpty
+    @Schema(description = "数据id")
+    private String id;
+
+    @NotNull
+    @Schema(description = "数据状态")
+    private OrgUserState orgUserState;
+
+    @Schema(description = "审核备注")
+    private String reViewReMark;
+
+}

+ 41 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserModel.java → FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserModel.java

@@ -1,13 +1,18 @@
-package com.zhongshu.card.client.model.org;
+package com.zhongshu.card.client.model.org.orgUser;
 
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.org.DepartmentModel;
+import com.zhongshu.card.client.model.org.OrganizationMiniModel;
+import com.zhongshu.card.client.model.org.UserCountSimpleModel;
 import com.zhongshu.card.client.model.org.role.RoleSimpleModel;
 import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
 import com.zhongshu.card.client.type.CertificateType;
 import com.zhongshu.card.client.type.OrganizationUserType;
 import com.zhongshu.card.client.type.Sex;
 import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.card.client.type.user.OrgAddType;
+import com.zhongshu.card.client.type.user.OrgUserState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -29,6 +34,40 @@ import java.util.stream.Collectors;
 @NoArgsConstructor
 public class OrganizationUserModel extends SuperModel {
 
+    @Schema(description = "用户添加方式:管理员后台添加、注册")
+    private OrgAddType addType;
+
+    private String addTypeStr;
+
+    public String getAddTypeStr() {
+        if (addType != null) {
+            return addType.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "申审核用户状态")
+    private OrgUserState orgUserState;
+
+    private String orgUserStateStr;
+
+    public String getOrgUserStateStr() {
+        if (orgUserState != null) {
+            return orgUserState.getRemark();
+        }
+        return "";
+    }
+
+    //-------------------审核信息 start---------------------
+    @Schema(description = "审核用户")
+    private String reViewUserId;
+
+    @Schema(description = "审核时间")
+    private Long reViewTime;
+
+    @Schema(description = "审核备注")
+    private String reViewReMark;
+
     @Schema(description = "机构信息")
     private OrganizationMiniModel organization;
 
@@ -41,6 +80,7 @@ public class OrganizationUserModel extends SuperModel {
         return "";
     }
 
+    //-----------------------用户信息 start-------------------
     @Schema(description = "用户信息")
     private UserCountSimpleModel user;
 

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSearch.java → FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserSearch.java

@@ -1,4 +1,4 @@
-package com.zhongshu.card.client.model.org;
+package com.zhongshu.card.client.model.org.orgUser;
 
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.SuperSearch;

+ 2 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSimpleModel.java → FullCardClient/src/main/java/com/zhongshu/card/client/model/org/orgUser/OrganizationUserSimpleModel.java

@@ -1,5 +1,6 @@
-package com.zhongshu.card.client.model.org;
+package com.zhongshu.card.client.model.org.orgUser;
 
+import com.zhongshu.card.client.model.org.DepartmentModel;
 import com.zhongshu.card.client.model.org.role.RoleModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/userGroup/UserGroupToUserModel.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.client.model.org.userGroup;
 
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/userGroup/UserGroupToUserSearch.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.client.model.org.userGroup;
 
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/orgFace/OrgUserFaceModel.java

@@ -1,7 +1,7 @@
 package com.zhongshu.card.client.model.projectAbout.orgFace;
 
 import com.zhongshu.card.client.model.base.SuperModel;
-import com.zhongshu.card.client.model.org.OrganizationUserSimpleModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.org.UserCountSimpleModel;
 import com.zhongshu.card.client.type.common.AuditState;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/BookInfoModel.java

@@ -3,7 +3,7 @@ package com.zhongshu.card.client.model.school;
 import com.zhongshu.card.client.model.base.SuperModel;
 import com.zhongshu.card.client.model.org.DepartmentModel;
 import com.zhongshu.card.client.model.org.OrganizationModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.UserCountModel;
 import com.zhongshu.card.client.type.BookState;
 import com.zhongshu.card.client.type.OrganizationUserType;

+ 1 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoModel.java

@@ -1,9 +1,8 @@
 package com.zhongshu.card.client.model.school;
 
 import com.zhongshu.card.client.model.base.SuperModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.UserCountModel;
-import com.zhongshu.card.client.type.CardCancelState;
 import com.zhongshu.card.client.type.school.CardState;
 import com.zhongshu.card.client.type.school.CardType;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterResultModel.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.client.model.school;
 
-import com.zhongshu.card.client.model.org.OrganizationUserSimpleModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.org.UserCountModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/SchoolUserModel.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.client.model.school;
 
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import lombok.Data;
 
 import java.util.List;

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/visitor/VisitorMainModel.java

@@ -2,7 +2,7 @@ package com.zhongshu.card.client.model.visitor;
 
 import com.zhongshu.card.client.model.base.SuperModel;
 import com.zhongshu.card.client.model.devices.DeviceInfoSimpleModel;
-import com.zhongshu.card.client.model.org.OrganizationUserSimpleModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.org.UserCountSimpleModel;
 import com.zhongshu.card.client.type.visitor.VisitorApplyType;
 import com.zhongshu.card.client.type.visitor.VisitorState;

+ 12 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/visitor/VisitorMainSearch.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.visitor;
 
 import com.zhongshu.card.client.model.base.SuperSearch;
+import com.zhongshu.card.client.type.visitor.VisitorApplyType;
 import com.zhongshu.card.client.type.visitor.VisitorState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -24,6 +25,9 @@ public class VisitorMainSearch extends SuperSearch {
     @Schema(description = "最终状态")
     private List<VisitorState> finalStates;
 
+    @Schema(description = "申请方式,预约类型")
+    private VisitorApplyType applyType;
+
     //-----------------------被访人 start--------------------------
     @Schema(description = "被访人,也是审核人的用户userId")
     private String visitorUserId;
@@ -80,12 +84,18 @@ public class VisitorMainSearch extends SuperSearch {
     @Schema(description = "关联用户信息是否脱敏显示")
     private Boolean isDesen;
 
-    @Schema(description = "到访开始时间")
+    @Schema(description = "预约开始时间(用户申请是填的时间)")
     private Long visitorStartTime;
 
-    @Schema(description = "到访结束时间")
+    @Schema(description = "预约结束时间")
     private Long visitorEndTime;
 
     @Schema(description = "是否是超时离开")
     private Boolean isOverTimeLeave;
+
+    @Schema(description = "实际到访时间 开始")
+    private Long startFirstVisitTime;
+
+    @Schema(description = "实际到访时间 结算")
+    private Long endFirstVisitTime;
 }

+ 0 - 13
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/DevicePermissOpenApiModel.java

@@ -1,26 +1,13 @@
 package com.zhongshu.card.client.openApi.model;
 
 import com.github.microservice.models.type.DeviceType;
-import com.zhongshu.card.client.model.devices.DeviceInfoModel;
-import com.zhongshu.card.client.model.org.DepartmentModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
-import com.zhongshu.card.client.model.org.UserCountSimpleModel;
-import com.zhongshu.card.client.model.org.role.RoleModel;
-import com.zhongshu.card.client.model.school.AreaSimpleModel;
-import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
 import com.zhongshu.card.client.openApi.base.SuperAPIModel;
 import com.zhongshu.card.client.type.DataState;
-import com.zhongshu.card.client.type.OnLineState;
 import com.zhongshu.card.client.type.Sex;
-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 java.util.ArrayList;
-import java.util.List;
 
 /**
  * @author TRX

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/feign/OrganizationFeignService.java

@@ -2,6 +2,7 @@ package com.zhongshu.card.client.service.feign;
 
 import com.zhongshu.card.client.model.org.*;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import org.springframework.cloud.openfeign.FeignClient;

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java

@@ -3,6 +3,7 @@ package com.zhongshu.card.client.service.org;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.project.ProjectSaveParam;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;

+ 2 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/service/org/UserAccountService.java

@@ -4,13 +4,14 @@ 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.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.web.PageableDefault;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java

@@ -1,7 +1,7 @@
 package com.zhongshu.card.client.service.school;
 
 import com.zhongshu.card.client.model.org.OrgUserDetailParam;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.org.SchoolUserCountParam;
 import com.zhongshu.card.client.model.school.CardInfoModel;
 import com.zhongshu.card.client.model.school.ImportResultModel;

+ 0 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/type/UserState.java

@@ -6,7 +6,6 @@ import lombok.Getter;
  * 用户在机构的状态
  */
 public enum UserState {
-
     Normal("正常"),
     Locked("禁用"),
     ;

+ 2 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/type/user/OrgUserState.java

@@ -3,12 +3,12 @@ package com.zhongshu.card.client.type.user;
 import lombok.Getter;
 
 /**
- *
+ * 项目中的用户审核状态
  */
 public enum OrgUserState {
-    Formal("正式"),
     Unaudited("审核中"),
     Refusal("已拒绝"),
+    Formal("正式"),
     ;
 
     @Getter

+ 0 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/WeChatController.java

@@ -1,8 +1,6 @@
 package com.zhongshu.card.server.core.controller;
 
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.operLogs.OperationLogsAddParam;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import com.zhongshu.card.client.model.wechat.UnlimitedQRCodeParam;
 import com.zhongshu.card.server.core.service.wxQRCode.WeChatService;
 import io.swagger.v3.oas.annotations.Operation;

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/MqttFeignController.java

@@ -1,8 +1,8 @@
 package com.zhongshu.card.server.core.controller.feign;
 
 import com.zhongshu.card.client.model.mqtt.SendMessageModel;
-import com.zhongshu.card.client.model.org.*;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.server.core.service.mqtt.MqttServiceImpl;
 import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.Operation;

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/OrganizationFeignController.java

@@ -2,6 +2,7 @@ package com.zhongshu.card.server.core.controller.feign;
 
 import com.zhongshu.card.client.model.org.*;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.service.org.OrganizationService;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import io.swagger.v3.oas.annotations.Hidden;

+ 1 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/feign/RequestInfoFeignController.java

@@ -1,8 +1,7 @@
 package com.zhongshu.card.server.core.controller.feign;
 
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.mqtt.SendMessageModel;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.payment.RequestInfoSaveParam;
 import com.zhongshu.card.server.core.service.payment.RequestInfoService;
 import io.swagger.v3.oas.annotations.Hidden;

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

@@ -7,10 +7,11 @@ import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
 import com.zhongshu.card.client.model.org.OrgUserDetailParam;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.org.UserCountAddParam;
 import com.zhongshu.card.client.model.org.register.UserCountRegisterParam;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserAuditParam;
 import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
 import com.zhongshu.card.client.service.org.UserAccountService;
@@ -62,15 +63,6 @@ public class OrganizationUserController {
         return organizationUserService.saveOrgUser(param);
     }
 
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "小程序注册用户", description = "小程序注册用户")
-    @RequestMapping(value = {"registerProjectUser"}, method = {RequestMethod.POST})
-    public ResultContent registerProjectUser(@RequestBody UserCountRegisterParam param) {
-        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
-        Assert.hasText(param.getPhone(), "phone不能为空");
-        return organizationUserService.registerProjectUser(param);
-    }
-
     @ResourceAuth(value = "user", type = AuthType.User)
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
     @Operation(summary = "机构绑定用户", description = "机构绑定用户,机构已存在 用户已存在")
@@ -174,4 +166,35 @@ public class OrganizationUserController {
         return organizationUserService.getCurrentOrgs(param.getProjectOid());
     }
 
+    //----------------------- 用户注册 start------------------
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "小程序注册用户", description = "小程序注册用户")
+    @RequestMapping(value = {"registerProjectUser"}, method = {RequestMethod.POST})
+    public ResultContent registerProjectUser(@RequestBody UserCountRegisterParam param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        Assert.hasText(param.getPhone(), "phone不能为空");
+        return organizationUserService.registerProjectUser(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "项目注册用户列表-分页查询", description = "项目注册用户列表-分页查询")
+    @RequestMapping(value = {"registerPage"}, method = {RequestMethod.POST})
+    public ResultContent<Page<OrganizationUserModel>> registerPage(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) OrganizationUserSearch param) {
+        param.setIsSearchProject(Boolean.TRUE);
+        param.setNotAuthType(AuthType.Project);
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        param.setAddType(OrgAddType.Register);
+        return userAccountService.pageOrgUser(param, pageable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "审核注册用户", description = "审核注册用户")
+    @RequestMapping(value = {"auditOrgUser"}, method = {RequestMethod.POST})
+    public ResultContent auditOrgUser(@RequestBody @Valid OrganizationUserAuditParam param) {
+        return organizationUserService.auditOrgUser(param);
+    }
+
+
 }

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/SchoolUserController.java

@@ -6,8 +6,8 @@ import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.org.OrgUserDetailParam;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.org.SchoolUserCountParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
 import com.zhongshu.card.client.model.school.RegisterBindSchoolParam;

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

@@ -6,8 +6,7 @@ import com.zhongshu.card.client.model.operLogs.OperationLogsAddParam;
 import com.zhongshu.card.client.model.operLogs.OperationLogsModel;
 import com.zhongshu.card.client.model.operLogs.OperationLogsSearchParam;
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.org.OrgUserDetailParam;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.server.core.service.user.OperationLogsService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/UserInfoController.java

@@ -7,6 +7,8 @@ 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.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.service.org.OrganizationService;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.type.UserState;

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/BaseImpl.java

@@ -38,6 +38,7 @@ public abstract class BaseImpl {
     public Criteria buildCriteriaNotOid(SuperSearch param) {
         Criteria criteria = new Criteria();
         criteria.and("isDelete").is(Boolean.FALSE);
+
         if (ObjectUtils.isNotEmpty(param.getTimes()) && param.getTimes().size() == 2) {
             param.setStartTime(param.getTimes().get(0));
             param.setEndTime(param.getTimes().get(1));

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/OrganizationUserDaoExtend.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.server.core.dao.org.extend;
 
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;

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

@@ -1,7 +1,7 @@
 package com.zhongshu.card.server.core.dao.org.impl;
 
 import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.org.DepartmentDao;
 import com.zhongshu.card.server.core.dao.org.RoleDao;
@@ -95,12 +95,16 @@ public class OrganizationUserDaoImpl extends BaseImpl implements OrganizationUse
 
         // 机构类型
         if (param.getAuthType() != null) {
-            criteria.and("authType").is(param.getAuthType());
-        }
-
-        // 不属于某种类型机构
-        if (param.getNotAuthType() != null) {
-            criteria.and("authType").ne(param.getNotAuthType());
+            if (param.getNotAuthType() != null) {
+                criteria.and("authType").is(param.getAuthType()).ne(param.getNotAuthType());
+            } else {
+                criteria.and("authType").is(param.getAuthType());
+            }
+        } else {
+            // 不属于某种类型机构
+            if (param.getNotAuthType() != null) {
+                criteria.and("authType").ne(param.getNotAuthType());
+            }
         }
 
         // 在机构里是否是管理员

+ 14 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/visitor/impl/VisitorMainDaoImpl.java

@@ -109,6 +109,10 @@ public class VisitorMainDaoImpl extends BaseImpl implements VisitorMainDaoExtend
             criteria.and("openId").is(param.getOpenId());
         }
 
+        if (param.getApplyType() != null) {
+            criteria.and("applyType").is(param.getApplyType());
+        }
+
         // 类型
         if (ObjectUtils.isNotEmpty(param.getVisitorTypes())) {
             criteria.and("visitorType").in(param.getVisitorTypes());
@@ -123,7 +127,7 @@ public class VisitorMainDaoImpl extends BaseImpl implements VisitorMainDaoExtend
             criteria.and("reViewSuccess").is(param.getReViewSuccess());
         }
 
-        // 到访时间
+        // 预约到访时间
         if (!CommonUtil.longIsEmpty(param.getVisitorStartTime()) && !CommonUtil.longIsEmpty(param.getVisitorEndTime())) {
             criteria.and("startTime").gte(param.getVisitorStartTime()).lte(param.getVisitorEndTime());
         } else if (!CommonUtil.longIsEmpty(param.getVisitorStartTime()) && CommonUtil.longIsEmpty(param.getVisitorEndTime())) {
@@ -132,6 +136,15 @@ public class VisitorMainDaoImpl extends BaseImpl implements VisitorMainDaoExtend
             criteria.and("startTime").lte(param.getVisitorEndTime());
         }
 
+        // 实际到访时间
+        if (!CommonUtil.longIsEmpty(param.getStartFirstVisitTime()) && !CommonUtil.longIsEmpty(param.getEndFirstVisitTime())) {
+            criteria.and("firstVisitTime").gte(param.getStartFirstVisitTime()).lte(param.getEndFirstVisitTime());
+        } else if (!CommonUtil.longIsEmpty(param.getStartFirstVisitTime()) && CommonUtil.longIsEmpty(param.getEndFirstVisitTime())) {
+            criteria.and("firstVisitTime").gte(param.getStartFirstVisitTime());
+        } else if (CommonUtil.longIsEmpty(param.getStartFirstVisitTime()) && !CommonUtil.longIsEmpty(param.getEndFirstVisitTime())) {
+            criteria.and("firstVisitTime").lte(param.getEndFirstVisitTime());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getName())) {

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/visitor/VisitorMain.java

@@ -42,7 +42,7 @@ public class VisitorMain extends SuperMain {
     @Schema(description = "最终状态")
     private VisitorState finalState;
 
-    @Schema(description = "申请方式")
+    @Schema(description = "申请方式,预约类型")
     private VisitorApplyType applyType;
 
     @Schema(description = "邀请用户userId")

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissService.java

@@ -9,7 +9,7 @@ import com.zhongshu.card.client.model.base.IDsParam;
 import com.zhongshu.card.client.model.devices.permiss.DevicePermissModel;
 import com.zhongshu.card.client.model.devices.permiss.DevicePermissParam;
 import com.zhongshu.card.client.model.devices.permiss.DevicePermissSearch;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.type.DataOperationType;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;

+ 1 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/OrganizationUserOpenApiService.java

@@ -2,8 +2,7 @@ package com.zhongshu.card.server.core.service.openAPI;
 
 import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.openApi.model.OrganizationUserOpenApiModel;
 import com.zhongshu.card.client.openApi.params.OrganizationUserOpenApiSearch;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/IndexService.java

@@ -1,6 +1,5 @@
 package com.zhongshu.card.server.core.service.org;
 
-import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.client.content.ResultState;
 import com.github.microservice.auth.client.model.LoginTokenModel;
 import com.github.microservice.auth.client.model.UserAuthLoginModel;
@@ -14,6 +13,7 @@ import com.github.microservice.core.util.net.IPUtil;
 import com.zhongshu.card.client.model.login.LoginBusModel;
 import com.zhongshu.card.client.model.login.LoginCommonModel;
 import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.setting.PlatFormLoginConfig;
 import com.zhongshu.card.client.model.wechat.PhoneModel;
 import com.zhongshu.card.client.model.wechat.WechatPhoneNumber;

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

@@ -17,6 +17,7 @@ import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
 import com.github.microservice.netdisk.client.service.NetDiskAccountService;
 import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.project.ProjectSaveParam;
 import com.zhongshu.card.client.service.org.OrganizationService;
 import com.zhongshu.card.client.type.*;

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

@@ -8,9 +8,13 @@ import com.github.microservice.auth.client.service.RoleService;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.core.util.bean.BeanUtil;
 import com.github.microservice.net.ResultContent;
+import com.github.microservice.net.ResultMessage;
 import com.google.common.collect.Lists;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
 import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserAuditParam;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.org.register.UserCountRegisterParam;
 import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.paySetting.paySetting.OrgPayShowSettingModel;
@@ -19,6 +23,7 @@ import com.zhongshu.card.client.model.school.ExcelUserParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
 import com.zhongshu.card.client.model.school.RegisterBindSchoolParam;
 import com.zhongshu.card.client.type.*;
+import com.zhongshu.card.client.type.config.RegisterExamineType;
 import com.zhongshu.card.client.type.user.OrgAddType;
 import com.zhongshu.card.client.type.user.OrgUserState;
 import com.zhongshu.card.client.utils.DateUtils;
@@ -270,6 +275,19 @@ public class OrganizationUserServiceImpl extends SuperService {
             return ResultContent.buildFail(passResult.getMsg());
         }
 
+        // 验证角色是否合法
+        List<String> roleIds = projectCommonConfig.getRoleIds();
+        if (ObjectUtils.isEmpty(roleIds)) {
+            return ResultContent.buildFail("项目未配置可选择的角色");
+        }
+        String _tempRoleId = param.getRoleIds().get(0);
+        List<Role> visitorRoles = roleServiceImpl.getVisitorRoles(projectOid);
+        if (ObjectUtils.isEmpty(visitorRoles)) {
+            return ResultContent.buildFail("项目未配置游客角色");
+        }
+        // 是否是游客用户注册
+        boolean isVisitor = visitorRoles.stream().anyMatch(it -> it.getId().equals(_tempRoleId));
+
         String loginName = phone;
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
         if (ObjectUtils.isEmpty(userAccount)) {
@@ -303,12 +321,14 @@ public class OrganizationUserServiceImpl extends SuperService {
             return ResultContent.buildFail("用户不存在");
         }
         OrganizationUser orgUser = organizationUserDao.findTopByUserAndProjectOidOrderByCreateTimeDesc(userAccount, projectOid);
+        // 如果用户已存在,并且状态不为已拒绝,就代表用户已存在
         if (ObjectUtils.isNotEmpty(orgUser) && orgUser.getOrgUserState() != OrgUserState.Refusal) {
             return ResultContent.buildFail("用户已存在");
         }
 
         OrgBindUserAllParam orgBindUserAllParam = new OrgBindUserAllParam();
         BeanUtils.copyProperties(param, orgBindUserAllParam);
+
         if (ObjectUtils.isNotEmpty(orgUser)) {
             orgBindUserAllParam.setId(orgUser.getId());
         }
@@ -319,25 +339,44 @@ public class OrganizationUserServiceImpl extends SuperService {
         orgBindUserAllParam.setPositionId(param.getPositionId());
         orgBindUserAllParam.setDepartmentId(param.getDepartmentId());
         orgBindUserAllParam.setRoleIds(param.getRoleIds());
-        orgBindUserAllParam.setState(UserState.Normal);
         orgBindUserAllParam.setIsAdmin(param.getIsAdmin());
         orgBindUserAllParam.setRemark(param.getRemark());
         orgBindUserAllParam.setProjectOid(param.getProjectOid());
 
         // 注册方式
         orgBindUserAllParam.setAddType(OrgAddType.Register);
+        // 用户审核状态
         OrgUserState orgUserState = null;
+        // 用户状态
+        UserState state = null;
+        // 是否需要审核
+        boolean isExamine = false;
         if (projectCommonConfig.getIsExamineRegister() != null && projectCommonConfig.getIsExamineRegister()) {
+            if (projectCommonConfig.getExamineType() == RegisterExamineType.All) {
+                isExamine = true;
+            } else if (projectCommonConfig.getExamineType() == RegisterExamineType.Formal) {
+                if (!isVisitor) {
+                    isExamine = true;
+                }
+            } else {
+                isExamine = true;
+            }
+        }
+
+        if (isExamine) {
             // 如果需要审核
             orgUserState = OrgUserState.Unaudited;
             orgBindUserAllParam.setReViewTime(null);
             orgBindUserAllParam.setReViewReMark("");
+            state = UserState.Locked;
         } else {
             orgUserState = OrgUserState.Formal;
             orgBindUserAllParam.setReViewTime(System.currentTimeMillis());
             orgBindUserAllParam.setReViewReMark("不需要审核");
+            state = UserState.Normal;
         }
         orgBindUserAllParam.setOrgUserState(orgUserState);
+        orgBindUserAllParam.setState(state);
 
         // 绑定用户到机构
         ResultContent<OrganizationUser> bindUserContent = orgBindUser(orgBindUserAllParam);
@@ -349,6 +388,34 @@ public class OrganizationUserServiceImpl extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 用户审核
+     *
+     * @return
+     */
+    public ResultContent auditOrgUser(OrganizationUserAuditParam param) {
+        OrganizationUser organizationUser = organizationUserDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(organizationUser)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        if (param.getOrgUserState() != OrgUserState.Unaudited) {
+            return ResultContent.buildFail("数据已审核");
+        }
+        BeanUtils.copyProperties(param, organizationUser);
+        if (param.getOrgUserState() == OrgUserState.Formal) {
+            // 同意
+            organizationUser.setState(UserState.Normal);
+        } else if (param.getOrgUserState() == OrgUserState.Refusal) {
+            // 拒绝
+            organizationUser.setState(UserState.Locked);
+        }
+        organizationUser.setReViewUserId(getCurrentUserId());
+        organizationUser.setReViewTime(System.currentTimeMillis());
+        organizationUserDao.save(organizationUser);
+
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 机构绑定用户 (角色、部门、职位都以新的为准)
      * 用户基本信息已存在
@@ -362,9 +429,10 @@ public class OrganizationUserServiceImpl extends SuperService {
         if (StringUtils.isEmpty(param.getUserId())) {
             return ResultContent.buildFail("userId不能为空");
         }
-        if (StringUtils.isEmpty(param.getOrgOid())) {
-            return ResultContent.buildFail("orgOid不能为空");
-        }
+        // 绑定的机构可以为空 02-24
+//        if (StringUtils.isEmpty(param.getOrgOid())) {
+//            return ResultContent.buildFail("orgOid不能为空");
+//        }
 
         UserAccount userAccount = userCountDao.findTopByUserId(param.getUserId());
         if (ObjectUtils.isEmpty(userAccount)) {
@@ -372,14 +440,18 @@ public class OrganizationUserServiceImpl extends SuperService {
         }
         String projectOid = param.getProjectOid();
         boolean isUpdate = false;
+        String userId = userAccount.getUserId();
 
         // 要绑定的机构 (不是项目)
-        Organization organization = organizationDao.findTopByOid(param.getOrgOid());
-        if (ObjectUtils.isEmpty(organization)) {
-            return ResultContent.buildFail(String.format("机构信息不存在:%s", param.getOrgOid()));
+        Organization organization = null;
+        OidAboutInfo oidAboutInfo = null;
+        if (StringUtils.isNotEmpty(param.getOrgOid())) {
+            organization = organizationDao.findTopByOid(param.getOrgOid());
+            if (ObjectUtils.isEmpty(organization)) {
+                return ResultContent.buildFail(String.format("机构信息不存在:%s", param.getOrgOid()));
+            }
+            oidAboutInfo = organizationManagerService.getOidAboutInfo(organization.getOid());
         }
-        String userId = userAccount.getUserId();
-        OidAboutInfo oidAboutInfo = organizationManagerService.getOidAboutInfo(organization.getOid());
 
         OrganizationUser codeTemp = null;
         if (StringUtils.isNotEmpty(param.getCode())) {
@@ -407,6 +479,7 @@ public class OrganizationUserServiceImpl extends SuperService {
             organizationUser = new OrganizationUser();
             initEntity(organizationUser);
             BeanUtils.copyProperties(param, organizationUser);
+
             // 在机构中的用户类型
             organizationUser.setUserType(OrganizationUserType.Consumer);
         } else {
@@ -422,26 +495,41 @@ public class OrganizationUserServiceImpl extends SuperService {
             roleServiceImpl.userRemoveRole(userId, oldRoles);
         }
 
-        organizationUser.setOid(organization.getOid());
-        organizationUser.setOrganization(organization);
-        organizationUser.setUser(userAccount);
-        organizationUser.setUserId(userAccount.getUserId());
-        organizationUser.setCreateUserId(getCurrentUserId());
-        organizationUser.setSex(userAccount.getSex());
+        if (organization != null) {
+            organizationUser.setOid(organization.getOid());
+            organizationUser.setOrganization(organization);
+            organizationUser.setAuthType(organization.getAuthType());
+            if (organization.getAuthType() == AuthType.Project || organization.getAuthType() == AuthType.Platform) {
+                organizationUser.setIsOrg(Boolean.FALSE);
+            } else {
+                organizationUser.setIsOrg(Boolean.TRUE);
+            }
+        } else {
+            organizationUser.setIsOrg(Boolean.FALSE);
+        }
+        organizationUser.setProjectOid(projectOid);
+        if (ObjectUtils.isNotEmpty(oidAboutInfo)) {
+            organizationUser.setAboutOid(oidAboutInfo.getOid());
+            organizationUser.setAboutAuthType(oidAboutInfo.getAuthType());
+        }
 
         List<Role> roles = new ArrayList<>();
         Department department = null;
+        // 角色信息
         if (ObjectUtils.isNotEmpty(param.getRoleIds())) {
             roles = roleDao.findByIdIn(param.getRoleIds());
         }
+        // 部门信息
         if (ObjectUtils.isNotEmpty(param.getDepartmentId())) {
             department = departmentDao.findTopById(param.getDepartmentId());
         }
+        // 位置信息
         DictInfo position = null;
         if (StringUtils.isNotEmpty(param.getPositionId())) {
             position = dictInfoDao.findTopById(param.getPositionId());
         }
 
+        // 如果机构是平台
         if (organization.getAuthType() == AuthType.Platform) {
             // 判断是否是超级管理员
             if (userAccount.getUserType() == UserType.SuperAdmin) {
@@ -463,23 +551,15 @@ public class OrganizationUserServiceImpl extends SuperService {
         // 设置部门
         organizationUser.setDepartment(department);
 
-        organizationUser.setProjectOid(projectOid);
-        organizationUser.setAboutOid(oidAboutInfo.getOid());
-        organizationUser.setAboutAuthType(oidAboutInfo.getAuthType());
-        organizationUser.setAuthType(organization.getAuthType());
-        if (StringUtils.isNotEmpty(param.getProjectOid())) {
-            organizationUser.setProjectOid(param.getProjectOid());
-        }
         // 用户信息
+        organizationUser.setUser(userAccount);
+        organizationUser.setUserId(userAccount.getUserId());
+        organizationUser.setCreateUserId(getCurrentUserId());
+        organizationUser.setSex(userAccount.getSex());
         organizationUser.setPhone(userAccount.getPhone());
         organizationUser.setName(userAccount.getName());
         organizationUser.setCardNumber(userAccount.getCardNumber());
         organizationUser.setOid(param.getOrgOid());
-        if (organization.getAuthType() == AuthType.Project || organization.getAuthType() == AuthType.Platform) {
-            organizationUser.setIsOrg(Boolean.FALSE);
-        } else {
-            organizationUser.setIsOrg(Boolean.TRUE);
-        }
         organizationUserDao.save(organizationUser);
 
         // 发送用户信息变更事件,用以下发用户 权限关联的用户信息
@@ -496,6 +576,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         } else {
             log.error("权限中心:绑定机构和用户关系出错:{}", resultContent.getMsg());
         }
+        // 更新其他关联表的用户冗余信息
         userInfoSyncService.updateProjectAboutInfoByOrgUserDataId(organizationUser.getId());
         return ResultContent.buildSuccess(organizationUser);
     }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java

@@ -11,7 +11,7 @@ import com.github.microservice.net.ResultMessage;
 import com.google.common.collect.Lists;
 import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.org.OidAboutInfo;
-import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
 import com.zhongshu.card.client.model.school.*;
 import com.zhongshu.card.client.service.school.CardInfoService;
 import com.zhongshu.card.client.type.CardCancelState;

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

@@ -197,6 +197,7 @@ public class ProjectCommonConfigService extends SuperService {
                     model.setRoles(roleService.toModels(roles));
                 }
             } else {
+                // 查询项目的访客角色
                 List<Role> roles = roleService.getVisitorRoles(entity.getProjectOid());
                 if (ObjectUtils.isNotEmpty(roles)) {
                     roleModels = roleService.toModels(roles);

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/SchoolUserServiceImpl.java

@@ -5,6 +5,9 @@ import cn.afterturn.easypoi.excel.entity.ImportParams;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.core.util.bean.BeanUtil;
 import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/statistics/OrgUserStatisticsService.java

@@ -1,6 +1,6 @@
 package com.zhongshu.card.server.core.service.statistics;
 
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;

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

@@ -14,6 +14,8 @@ 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.RoleSimpleModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSearch;
 import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
 import com.zhongshu.card.client.service.org.UserAccountService;
@@ -480,7 +482,6 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent<Page<OrganizationUserModel>> pageOrgUser(OrganizationUserSearch param, Pageable pageable) {
-        initSearchParam(param);
         Page<OrganizationUser> page = organizationUserDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toOrgUserModel));
     }