TRX преди 1 година
родител
ревизия
e90e03b520
променени са 25 файла, в които са добавени 296 реда и са изтрити 109 реда
  1. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RoleModel.java
  2. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/org/UserAccountService.java
  3. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/DepartmentDao.java
  4. 0 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationDao.java
  5. 6 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationUserDao.java
  6. 0 24
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/RoleUserDao.java
  7. 4 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/UserCountDao.java
  8. 0 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/OrganizationDaoExtend.java
  9. 0 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/OrganizationUserDaoExtend.java
  10. 0 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/RoleDaoExtend.java
  11. 2 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/extend/UserCountDaoExtend.java
  12. 0 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationDaoImpl.java
  13. 0 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationUserDaoImpl.java
  14. 0 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/RoleDaoImpl.java
  15. 3 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/UserCountDaoImpl.java
  16. 3 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dataConfig/CardDefault.java
  17. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/base/SuperMain.java
  18. 7 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Organization.java
  19. 21 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/OrganizationUser.java
  20. 11 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Role.java
  21. 0 29
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/RoleUser.java
  22. 10 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/UserAccount.java
  23. 24 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/DepartmentServiceImpl.java
  24. 162 5
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java
  25. 36 8
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserAccountServiceImpl.java

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RoleModel.java

@@ -12,4 +12,8 @@ import lombok.Data;
 public class RoleModel extends SuperModel {
     @Schema(description = "名称")
     private String name;
+
+    @Schema(description = "角色编码")
+    private String code;
+
 }

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

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-public interface UserCountService {
+public interface UserAccountService {
 
     @Operation(summary = "编辑-添加用户", description = "编辑添加用户")
     @RequestMapping(value = "update", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)

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

@@ -19,5 +19,5 @@ public interface DepartmentDao extends MongoDao<Department> {
 
     Department findByName(String name);
 
-    List<Department> findByParentId(String parentId);
+    List<Department> findByParentIdAndOid(String parentId, String oid);
 }

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

@@ -3,9 +3,7 @@ package com.zhongshu.card.server.core.dao.org;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.dao.org.extend.OrganizationDaoExtend;
-import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 
 /**
  * @author TRX

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

@@ -6,6 +6,7 @@ import com.zhongshu.card.server.core.dao.org.extend.OrganizationUserDaoExtend;
 import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
 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;
 
 /**
  * @author TRX
@@ -15,4 +16,9 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
 
     OrganizationUser findTopById(String id);
 
+    // 查询用户在机构的信息
+    OrganizationUser findTopByOrganizationAndUser(Organization organization, UserAccount user);
+
+    // 用户是否存在
+    Boolean existsByOrganizationAndUser(Organization organization, UserAccount user);
 }

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

@@ -1,24 +0,0 @@
-package com.zhongshu.card.server.core.dao.org;
-
-import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
-import com.zhongshu.card.server.core.dao.org.extend.RoleDaoExtend;
-import com.zhongshu.card.server.core.domain.org.Role;
-import com.zhongshu.card.server.core.domain.org.RoleUser;
-import com.zhongshu.card.server.core.domain.org.UserCount;
-
-import java.util.List;
-
-/**
- * @author TRX
- * @date 2024/3/21
- */
-public interface RoleUserDao extends MongoDao<RoleUser> {
-
-    RoleUser findTopById(String id);
-
-    // 查询用户在 结构的角色
-    List<RoleUser> findByUserCountAndOid(UserCount userCount,String oid);
-
-    // 删除所有用户在结构的角色
-    void deleteByUserCountAndOid(UserCount userCount,String oid);
-}

+ 4 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/UserCountDao.java

@@ -2,16 +2,16 @@ package com.zhongshu.card.server.core.dao.org;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
-import com.zhongshu.card.server.core.domain.org.UserCount;
+import com.zhongshu.card.server.core.domain.org.UserAccount;
 
 /**
  * @author TRX
  * @date 2024/3/21
  */
-public interface UserCountDao extends MongoDao<UserCount>, UserCountDaoExtend {
+public interface UserCountDao extends MongoDao<UserAccount>, UserCountDaoExtend {
 
-    UserCount findTopById(String id);
+    UserAccount findTopById(String id);
 
-    UserCount findTopByUserId(String userId);
+    UserAccount findTopByUserId(String userId);
 
 }

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

@@ -1,9 +1,7 @@
 package com.zhongshu.card.server.core.dao.org.extend;
 
 import com.zhongshu.card.client.model.org.OrganizationSearchParam;
-import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 

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

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

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

@@ -1,9 +1,7 @@
 package com.zhongshu.card.server.core.dao.org.extend;
 
 import com.zhongshu.card.client.model.org.RoleSearchParam;
-import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.server.core.domain.org.Role;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 

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

@@ -1,7 +1,7 @@
 package com.zhongshu.card.server.core.dao.org.extend;
 
 import com.zhongshu.card.client.model.org.UserCountSearchParam;
-import com.zhongshu.card.server.core.domain.org.UserCount;
+import com.zhongshu.card.server.core.domain.org.UserAccount;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
@@ -11,5 +11,5 @@ import org.springframework.data.domain.Pageable;
  * @Version: 1.0
  */
 public interface UserCountDaoExtend {
-    Page<UserCount> page(Pageable pageable, UserCountSearchParam param);
+    Page<UserAccount> page(Pageable pageable, UserCountSearchParam param);
 }

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

@@ -2,12 +2,9 @@ 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.OrganizationSearchParam;
-import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.org.extend.OrganizationDaoExtend;
-import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;

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

@@ -2,12 +2,9 @@ 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.UserCountSearchParam;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.org.extend.OrganizationUserDaoExtend;
-import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;

+ 0 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/RoleDaoImpl.java

@@ -2,14 +2,10 @@ 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.RoleSearchParam;
-import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.org.extend.RoleDaoExtend;
-import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Role;
-import com.zhongshu.card.server.core.domain.org.UserCount;
 import com.zhongshu.card.server.core.util.CommonUtil;
-import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;

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

@@ -4,7 +4,7 @@ import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
 import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.org.extend.UserCountDaoExtend;
-import com.zhongshu.card.server.core.domain.org.UserCount;
+import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -35,7 +35,7 @@ public class UserCountDaoImpl extends BaseImpl implements UserCountDaoExtend {
     private DBHelper dbHelper;
 
     @Override
-    public Page<UserCount> page(Pageable pageable, UserCountSearchParam param) {
+    public Page<UserAccount> page(Pageable pageable, UserCountSearchParam param) {
         Criteria criteria = new Criteria();
 
         //
@@ -82,7 +82,7 @@ public class UserCountDaoImpl extends BaseImpl implements UserCountDaoExtend {
         Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);
-        return dbHelper.pages(query, pageable, UserCount.class);
+        return dbHelper.pages(query, pageable, UserAccount.class);
     }
 
 }

+ 3 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dataConfig/CardDefault.java

@@ -6,11 +6,13 @@ package com.zhongshu.card.server.core.dataConfig;
  */
 public class CardDefault {
 
-    public static final String SUPER_ADMIN_NAME = "admin";
+    public static final String SUPER_ADMIN_NAME = "18723497166";
 
 
     /**
      * 默认密码
      */
     public static final String DEFAULT_PASSWORD = "123abc";
+
+    public static final String DEFAULT_ROLE_NAME = "管理员";
 }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/base/SuperMain.java

@@ -12,7 +12,7 @@ import lombok.Data;
 public class SuperMain extends SuperEntity {
 
     @Schema(description = "排序")
-    private Long sort = 0l;
+    private Long sort = 1l;
 
     @Schema(description = "备注")
     private String remark;

+ 7 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Organization.java

@@ -26,6 +26,9 @@ public class Organization extends SuperMain {
     @Indexed
     private String name;
 
+    @Schema(description = "编码")
+    private String code;
+
     @Schema(description = "统一社会信用代码")
     @Indexed
     private String orgCode;
@@ -61,11 +64,11 @@ public class Organization extends SuperMain {
     private AuthType authType = AuthType.Enterprise;
 
     @Schema(description = "状态")
-    private OrganizationState state;
+    private OrganizationState state = OrganizationState.Normal;
 
     public static Organization build(String id) {
-        Organization enterprise = new Organization();
-        enterprise.setId(id);
-        return enterprise;
+        Organization entity = new Organization();
+        entity.setId(id);
+        return entity;
     }
 }

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

@@ -1,5 +1,6 @@
 package com.zhongshu.card.server.core.domain.org;
 
+import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -10,6 +11,9 @@ import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 用户加入的机构
  *
@@ -33,16 +37,20 @@ public class OrganizationUser extends SuperMain {
     @Schema(description = "用户信息")
     @Indexed
     @DBRef(lazy = true)
-    private UserCount user;
+    private UserAccount user;
 
     @Schema(description = "用户ID")
     private String userId;
 
+    @Schema(description = "工号")
+    @Indexed
+    private String code;
+
     @Schema(description = "登录名")
     private String loginName;
 
     @Schema(description = "用户手机号")
-    @Indexed(unique = true)
+    @Indexed
     private String phone;
 
     @Schema(description = "姓名")
@@ -54,4 +62,15 @@ public class OrganizationUser extends SuperMain {
 
     @Schema(description = "是否是企业管理员")
     private Boolean isAdmin = Boolean.FALSE;
+
+    @Schema(description = "机构类型")
+    private AuthType authType = AuthType.Enterprise;
+
+    @Schema(description = "角色信息")
+    @DBRef(lazy = true)
+    private List<Role> roles = new ArrayList<>();
+
+    @Schema(description = "部门信息")
+    @DBRef(lazy = true)
+    private List<Department> departments = new ArrayList<>();
 }

+ 11 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Role.java

@@ -4,6 +4,7 @@ import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.util.Set;
@@ -23,6 +24,9 @@ public class Role extends SuperMain {
     @Schema(description = "名称")
     private String name;
 
+    @Schema(description = "角色编码")
+    private String code;
+
     @Schema(description = "是否管理角色")
     @Indexed
     private boolean isAdmin = false;
@@ -31,6 +35,13 @@ public class Role extends SuperMain {
     @Indexed
     private Set<String> auth;
 
+    @Indexed
+    private String roleGroupId;
+
+    @Schema(description = "操作人")
+    @DBRef(lazy = true)
+    private UserAccount creator;
+
     /**
      * 构建角色
      *

+ 0 - 29
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/RoleUser.java

@@ -1,29 +0,0 @@
-package com.zhongshu.card.server.core.domain.org;
-
-import com.zhongshu.card.server.core.domain.base.SuperMain;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springframework.data.mongodb.core.index.Indexed;
-import org.springframework.data.mongodb.core.mapping.DBRef;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * 用户角色管理 (一个用户在一个结构可能有多个角色)
- * @author TRX
- * @date 2024/5/31
- */
-@Data
-@Document
-public class RoleUser extends SuperMain {
-
-    @Schema(description = "角色信息")
-    @DBRef(lazy = true)
-    @Indexed
-    private Role role;
-
-    @Schema(description = "用户信息信息")
-    @DBRef(lazy = true)
-    @Indexed
-    private UserCount userCount;
-
-}

+ 10 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/UserCount.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/UserAccount.java

@@ -12,6 +12,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
  * 用户账号信息
+ *
  * @author TRX
  * @date 2024/5/30
  */
@@ -21,7 +22,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @NoArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 @Builder
-public class UserCount extends SuperMain {
+public class UserAccount extends SuperMain {
 
     @Schema(description = "用户ID(由鉴权中心颁发)")
     @Indexed
@@ -34,7 +35,7 @@ public class UserCount extends SuperMain {
     @Indexed(unique = true)
     private String phone;
 
-   @Schema(description = "姓名")
+    @Schema(description = "姓名")
     @Indexed
     private String name;
 
@@ -45,7 +46,7 @@ public class UserCount extends SuperMain {
     @Schema(description = "头像")
     private String profilePic;
 
-   @Schema(description = "性别")
+    @Schema(description = "性别")
     private Sex sex;
 
     @Schema(description = "地址")
@@ -59,4 +60,10 @@ public class UserCount extends SuperMain {
 
     @Schema(description = "用户类型")
     UserType userType;
+
+    @Schema(description = "是否已修改了密码 (登录时提示)")
+    private Boolean isUpdatedPsw;
+
+    @Schema(description = "是否登录过")
+    private Boolean isLogined;
 }

+ 24 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/DepartmentImpl.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/DepartmentServiceImpl.java

@@ -11,6 +11,7 @@ import com.zhongshu.card.client.utils.ITree;
 import com.zhongshu.card.client.utils.TreeUtil;
 import com.zhongshu.card.server.core.dao.org.DepartmentDao;
 import com.zhongshu.card.server.core.domain.org.Department;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.service.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
@@ -29,7 +30,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Service
-public class DepartmentImpl extends SuperService implements DepartmentService {
+public class DepartmentServiceImpl extends SuperService implements DepartmentService {
 
     @Autowired
     DepartmentDao departmentDao;
@@ -52,7 +53,7 @@ public class DepartmentImpl extends SuperService implements DepartmentService {
             String oid = authHelper.getOrgId();
             param.setOid(oid);
         }
-        if(CommonUtil.longIsEmpty(param.getSort())) {
+        if (CommonUtil.longIsEmpty(param.getSort())) {
             param.setSort(1L);
         }
         Department department = null;
@@ -69,8 +70,28 @@ public class DepartmentImpl extends SuperService implements DepartmentService {
         return ResultContent.buildSuccess(department);
     }
 
+    /**
+     * 初始机构部门信息
+     *
+     * @param organization
+     * @return
+     */
+    public ResultContent initOrgDepartment(Organization organization) {
+        String oid = organization.getOid();
+        List<Department> departments = departmentDao.findByParentIdAndOid(ITree.ROOT_ID, oid);
+        if (ObjectUtils.isEmpty(departments)) {
+            Department department = new Department();
+            department.setOid(oid);
+            department.setName(organization.getName());
+            department.setParentId(ITree.ROOT_ID);
+            departmentDao.save(department);
+        }
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 删除部门
+     *
      * @param id
      * @return
      */
@@ -91,7 +112,7 @@ public class DepartmentImpl extends SuperService implements DepartmentService {
      */
     @Override
     public ResultContent<List<ITree>> getDepartmentTree(String oid) {
-        if(StringUtils.isEmpty(oid)) {
+        if (StringUtils.isEmpty(oid)) {
             oid = authHelper.getOrgId();
         }
         List<Department> list = departmentDao.findByOidOrderBySortAsc(oid);

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

@@ -1,24 +1,34 @@
 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.RoleGroupModel;
+import com.github.microservice.auth.client.model.RoleModel;
+import com.github.microservice.auth.client.model.UserAuthModel;
+import com.github.microservice.auth.client.model.UserModel;
 import com.github.microservice.auth.client.service.OrganizationUserService;
 import com.github.microservice.auth.client.service.RoleService;
 import com.github.microservice.auth.client.service.UserService;
+import com.github.microservice.auth.client.type.LoginType;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.org.OrganizationAddParam;
 import com.zhongshu.card.client.model.org.OrganizationModel;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.service.org.OrganizationService;
-import com.zhongshu.card.server.core.dao.org.OrganizationDao;
-import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.card.server.core.dao.org.*;
+import com.zhongshu.card.server.core.dataConfig.CardDefault;
+import com.zhongshu.card.server.core.domain.org.*;
 import com.zhongshu.card.server.core.util.BeanUtils;
-import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * 机构管理
  *
@@ -44,6 +54,21 @@ public class OrganizationServiceImpl implements OrganizationService {
     @Autowired
     UserService userService;
 
+    @Autowired
+    UserCountDao userCountDao;
+
+    @Autowired
+    UserAccountServiceImpl userAccountService;
+
+    @Autowired
+    private OrganizationUserDao organizationUserDao;
+
+    @Autowired
+    RoleDao roleDao;
+
+    @Autowired
+    DepartmentServiceImpl departmentService;
+
     public ResultContent addOrganization(OrganizationAddParam param) {
         Organization organization = new Organization();
 
@@ -54,12 +79,13 @@ public class OrganizationServiceImpl implements OrganizationService {
     @Override
     public ResultContent initSuperOrganization() {
         String oid = "";
-        Organization organization = organizationDao.findByAuthType(AuthType.Platform);
+        AuthType authType = AuthType.Project;
+        Organization organization = organizationDao.findByAuthType(authType);
         if (ObjectUtils.isEmpty(organization)) {
             log.info("initSuperOrganization 开始初始平台结构信息");
             com.github.microservice.auth.client.model.OrganizationModel organizationModel = new com.github.microservice.auth.client.model.OrganizationModel();
             organizationModel.setName("全卡项目平台");
-            organizationModel.setAuthType(AuthType.Platform);
+            organizationModel.setAuthType(authType);
             organizationModel.setRemark("系统自动初始化");
             com.github.microservice.auth.client.content.ResultContent<String>
                     resultContent = organizationService.add(organizationModel);
@@ -75,12 +101,143 @@ public class OrganizationServiceImpl implements OrganizationService {
                 log.info("initSuperOrganization {}", msg);
                 return ResultContent.buildFail(msg);
             }
+
+            // 保存企业信息
+            organization = new Organization();
+            organization.setAuthType(authType);
+            organization.setOid(oid);
+            organization.setName(organizationModel.getName());
+            organization.setRemark(organizationModel.getRemark());
+            organization.setCode("000001");
+            organization.setContactPhone(CardDefault.SUPER_ADMIN_NAME);
+            organizationDao.save(organization);
+            // 初始用户信息
+            initOrganization(organization);
         } else {
             oid = organization.getOid();
         }
         return ResultContent.buildSuccess(oid);
     }
 
+    /**
+     * 初始 结构用户这些信息
+     *
+     * @param organization
+     * @return
+     */
+    public ResultContent initOrganization(Organization organization) {
+        String userId = "";
+        com.github.microservice.auth.client.content.ResultContent<UserModel> userModelResult =
+                userService.queryFromLoginType(LoginType.Phone, organization.getContactPhone());
+        if (userModelResult.getState() != ResultState.Success) {
+            //未注册
+            //TODO 权限中心: 注册用户
+            com.github.microservice.auth.client.content.ResultContent<String> addModelResult = userService.add(
+                    UserAuthModel.builder().loginType(LoginType.Phone).loginValue(organization.getContactPhone())
+                            .passWord(CardDefault.DEFAULT_PASSWORD).build());
+            userId = addModelResult.getContent();
+            log.info("初始权限中心 用户成功:{}", userId);
+        } else {
+            userId = userModelResult.getContent().getUserId();
+        }
+
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+        if (userAccount == null) {
+            // 初始企业中心的用户
+            userAccount = userAccountService.initUserAccountOrg(userId, organization);
+        }
+
+        if (!organizationUserDao.existsByOrganizationAndUser(organization, userAccount)) {
+            //本地: 绑定机构和用户的关系
+            OrganizationUser organizationUser = new OrganizationUser();
+            organizationUser.setCode("0000001");
+            organizationUser.setUser(userAccount);
+            organizationUser.setOrganization(organization);
+            organizationUser.setName(userAccount.getName());
+            organizationUser.setPhone(userAccount.getPhone());
+            organizationUser.setIsAdmin(Boolean.TRUE);
+            organizationUser.setState(UserState.Normal);
+            organizationUser.setUserId(userAccount.getUserId());
+            organizationUser.setAuthType(organization.getAuthType());
+            organizationUserDao.save(organizationUser);
+
+            // 权限中心:用户和机构的关系
+            com.github.microservice.auth.client.content.ResultContent<Void> resultContent = organizationUserService.update(organization.getOid(), new String[]{userId});
+            if (resultContent.getState() == ResultState.Success) {
+                log.info("权限中心:绑定机构和用户关系成功");
+            } else {
+                log.error("权限中心:绑定机构和用户关系出错:{}", resultContent.getMsg());
+            }
+        }
+        initResource(organization, userId);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 初始角色等信息
+     *
+     * @param organization
+     * @param userId
+     * @return
+     */
+    public ResultContent initResource(Organization organization, String userId) {
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+
+        String oid = organization.getOid();
+        // 权限中心: 角色组
+        RoleGroupModel admin = new RoleGroupModel();
+        admin.setName(CardDefault.DEFAULT_ROLE_NAME);
+        admin.setRemark(CardDefault.DEFAULT_ROLE_NAME);
+        admin.setOrganizationId(oid);
+        admin.setIdentity(Set.of(AuthConstant.Admin));
+        com.github.microservice.auth.client.content.ResultContent<String> updateRoleGroupAdmin = roleService.updateRoleGroup(admin);
+        String groupId = updateRoleGroupAdmin.getContent();
+        log.info("初始权限中心角色组成功:{}", groupId);
+
+        Role adminRole = null;
+        if (!StringUtils.isEmpty(groupId)) {
+            Set<String> auth = Set.of(AuthConstant.Admin);
+            // 权限中心: 角色信息
+            RoleModel roleModel = new RoleModel();
+            roleModel.setOrganizationId(oid);
+            roleModel.setName(CardDefault.DEFAULT_ROLE_NAME);
+            roleModel.setRemark(CardDefault.DEFAULT_ROLE_NAME);
+            roleModel.setAuth(auth);
+            com.github.microservice.auth.client.content.ResultContent<String> updateRole =
+                    roleService.updateRole(roleModel);
+            roleService.addRoleToRoleGroup(groupId, new String[]{updateRole.getContent()});
+            log.info("权限中心:初始角色和角色组关系成功");
+
+            // 添加本地角色信息
+            adminRole = new Role();
+            adminRole.setCode("manager");
+            adminRole.setAuth(auth);
+            adminRole.setOid(oid);
+            adminRole.setRoleGroupId(groupId);
+            adminRole.setName(CardDefault.DEFAULT_ROLE_NAME);
+            adminRole.setRemark(CardDefault.DEFAULT_ROLE_NAME);
+            adminRole.setAdmin(true);
+            roleDao.save(adminRole);
+
+            //权限中心: 将用户添加进管理员角色组
+            roleService.addUserToRoleGroup(groupId, new String[]{userId});
+            log.info("权限中心:绑定角色和用户关系成功");
+        }
+
+        // 本地:保存用户角色信息
+        if (ObjectUtils.isNotEmpty(adminRole)) {
+            OrganizationUser organizationUser = organizationUserDao.findTopByOrganizationAndUser(organization, userAccount);
+            organizationUser.setRoles(List.of(adminRole));
+            organizationUserDao.save(organizationUser);
+        }
+
+        // 本地:初始顶级部门
+        departmentService.initOrgDepartment(organization);
+
+        log.info("-------------初始换所有成功-------------");
+        return ResultContent.buildSuccess();
+    }
+
     public OrganizationModel toModel(Organization entity) {
         OrganizationModel model = new OrganizationModel();
         if (ObjectUtils.isNotEmpty(entity)) {

+ 36 - 8
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserCountServiceImpl.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserAccountServiceImpl.java

@@ -6,9 +6,12 @@ import com.zhongshu.card.client.model.org.UserCountModel;
 import com.zhongshu.card.client.model.org.UserCountSearchParam;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.ret.ResultMessage;
-import com.zhongshu.card.client.service.org.UserCountService;
+import com.zhongshu.card.client.service.org.UserAccountService;
+import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
-import com.zhongshu.card.server.core.domain.org.UserCount;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -28,16 +31,16 @@ import java.io.Serializable;
 @Slf4j
 @Service
 @Primary
-public class UserCountServiceImpl implements UserCountService, Serializable {
+public class UserAccountServiceImpl implements UserAccountService, Serializable {
 
     @Autowired
     UserCountDao userCountDao;
 
     @Override
     public ResultContent update(UserCountAddParam param) {
-        UserCount userCount = new UserCount();
+        UserAccount userCount = new UserAccount();
         if (StringUtils.isNotEmpty(param.getUserId())) {
-            UserCount userCount1 = userCountDao.findTopByUserId(param.getUserId());
+            UserAccount userCount1 = userCountDao.findTopByUserId(param.getUserId());
             if (ObjectUtils.isEmpty(userCount1)) {
                 return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getUserId()));
             }
@@ -45,17 +48,42 @@ public class UserCountServiceImpl implements UserCountService, Serializable {
 
         // 在授权中心添加用户
 
-
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 初始化一个 账号信息 (创建机构时用)
+     *
+     * @return
+     */
+    public UserAccount initUserAccountOrg(String uid, Organization entity) {
+        UserAccount userAccount = userCountDao.findTopByUserId(uid);
+        if (ObjectUtils.isEmpty(userAccount)) {
+            userAccount = new UserAccount();
+            userAccount.setUserId(uid);
+            userAccount.setPhone(entity.getContactPhone());
+            userAccount.setLoginName(entity.getContactName());
+            if (!StringUtils.isEmpty(entity.getContactPhone())) {
+                userAccount.setName("用户" + entity.getContactPhone());
+            } else {
+                userAccount.setName("用户");
+            }
+            userAccount.setIsLogined(false);
+            userAccount.setIsUpdatedPsw(false);
+            userAccount.setState(UserState.Normal);
+            userAccount.setSex(Sex.Male);
+            userCountDao.save(userAccount);
+        }
+        return userAccount;
+    }
+
     @Override
     public ResultContent<Page<UserCountModel>> list(UserCountSearchParam param, Pageable pageable) {
-        Page<UserCount> page = userCountDao.page(pageable, param);
+        Page<UserAccount> page = userCountDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
     }
 
-    public UserCountModel toModel(UserCount entity) {
+    public UserCountModel toModel(UserAccount entity) {
         UserCountModel model = new UserCountModel();
         if (ObjectUtils.isNotEmpty(entity)) {
             BeanUtils.copyProperties(entity, model);