TRX преди 1 година
родител
ревизия
88bb4c940d
променени са 15 файла, в които са добавени 317 реда и са изтрити 68 реда
  1. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationAddParam.java
  2. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationModel.java
  3. 11 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSearchParam.java
  4. 52 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSimpleModel.java
  5. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUpdateParam.java
  6. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/SchoolAddParam.java
  7. 17 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/SchoolUpdateParam.java
  8. 2 0
      FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java
  9. 0 60
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/IndexController.java
  10. 16 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationController.java
  11. 112 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/UserInfoController.java
  12. 6 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationRelationDao.java
  13. 8 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/impl/OrganizationDaoImpl.java
  14. 5 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/OrganizationRelation.java
  15. 79 5
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

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

@@ -52,6 +52,6 @@ public class OrganizationAddParam extends SuperParam {
     @Schema(description = "密码")
     private String password;
 
-    @Schema(description = "")
+    @Schema(description = "机构状态")
     OrganizationState state;
 }

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

@@ -60,4 +60,7 @@ public class OrganizationModel extends SuperModel {
         return "";
     }
 
+    @Schema(description = "如果是学校,关联的项目信息")
+    private OrganizationSimpleModel projectModel;
+
 }

+ 11 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSearchParam.java

@@ -6,6 +6,8 @@ import com.zhongshu.card.client.utils.type.OrganizationState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/5/31
@@ -47,4 +49,13 @@ public class OrganizationSearchParam extends SuperSearch {
 
     @Schema(description = "状态")
     private OrganizationState state;
+
+    @Schema(description = "项目Oid")
+    private String projectOid;
+
+    @Schema(description = "oid集合", hidden = true)
+    private List<String> oids;
+
+    @Schema(description = "id集合", hidden = true)
+    private List<String> ids;
 }

+ 52 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationSimpleModel.java

@@ -0,0 +1,52 @@
+package com.zhongshu.card.client.model.org;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.utils.type.OrganizationState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+public class OrganizationSimpleModel extends SuperModel {
+
+    @Schema(description = "机构名称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+
+    @Schema(description = "logo")
+    private String logo;
+
+    @Schema(description = "地址")
+    private String address;
+
+    @Schema(description = " 行政区划编码")
+    private String adminDivisionItemCode;
+
+    @Schema(description = "经度")
+    private String mapLon;
+
+    @Schema(description = "纬度")
+    private String mapLat;
+
+    @Schema(description = "机构类型")
+    private AuthType authType = AuthType.Enterprise;
+
+    @Schema(description = "状态")
+    private OrganizationState state;
+
+    private String stateStr;
+
+    public String getStateStr(){
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
+}

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

@@ -2,6 +2,7 @@ package com.zhongshu.card.client.model.org;
 
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.utils.type.OrganizationState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -51,4 +52,7 @@ public class OrganizationUpdateParam  {
 
     @Schema(description = "纬度")
     private String mapLat;
+
+    @Schema(description = "机构状态")
+    OrganizationState state;
 }

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

@@ -10,6 +10,6 @@ import lombok.Data;
 @Data
 public class SchoolAddParam extends OrganizationAddParam{
     @Schema(description = "项目ID 取oid")
-    private String projectId;
+    private String projectOid;
 
 }

+ 17 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/SchoolUpdateParam.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.client.model.org;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 学校编辑的
+ *
+ * @author TRX
+ * @date 2024/6/4
+ */
+@Data
+public class SchoolUpdateParam extends OrganizationUpdateParam {
+    @Schema(description = "项目ID 取oid")
+    private String projectOid;
+
+}

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

@@ -22,6 +22,8 @@ public interface OrganizationService {
     // 添加学校
     public ResultContent addSchool(SchoolAddParam param);
 
+    ResultContent updateSchool(SchoolUpdateParam param);
+
     public ResultContent update(OrganizationUpdateParam param);
 
     public ResultContent<OrganizationModel> getDetail(String oid);

+ 0 - 60
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/IndexController.java

@@ -75,64 +75,4 @@ public class IndexController {
         return result;
     }
 
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "得到当前用户信息", description = "得到当前用户信息")
-    @RequestMapping(value = {"getCurrentDetail"}, method = {RequestMethod.POST})
-    public ResultContent<UserCountDetailsModel> getCurrentDetail(@RequestBody AuthTypeParam param) {
-        if (param.getAuthType() == null) {
-            return ResultContent.buildFail("authType 不能为空");
-        }
-        return userAccountService.getCurrentDetail(param);
-    }
-
-
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "查询用户加入的平台数据列表", description = "查询用户加入的 平台数据列表")
-    @RequestMapping(value = {"getUserPlatform"}, method = {RequestMethod.GET})
-    public ResultContent<List<OrganizationModel>> getUserPlatform() {
-        OrganizationUserSearch param = new OrganizationUserSearch();
-        param.setAuthType(AuthType.Platform);
-        param.setState(UserState.Normal);
-        return organizationService.getUserOrgList(param);
-    }
-
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "查询用户加入的 项目数据列表", description = "查询用户加入的 项目数据列表")
-    @RequestMapping(value = {"getUserProject"}, method = {RequestMethod.GET})
-    public ResultContent<List<OrganizationModel>> getUserProject() {
-        OrganizationUserSearch param = new OrganizationUserSearch();
-        param.setAuthType(AuthType.Project);
-        param.setState(UserState.Normal);
-        return organizationService.getUserOrgList(param);
-    }
-
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "查询用户加入的 学校数据列表", description = "查询用户加入的 学校数据列表")
-    @RequestMapping(value = {"getUserSchool"}, method = {RequestMethod.GET})
-    public ResultContent<List<OrganizationModel>> getUserSchool() {
-        OrganizationUserSearch param = new OrganizationUserSearch();
-        param.setAuthType(AuthType.School);
-        param.setState(UserState.Normal);
-        return organizationService.getUserOrgList(param);
-    }
-
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "查询用户加入的 商家数据列表", description = "查询用户加入的 商家数据列表")
-    @RequestMapping(value = {"getUserShop"}, method = {RequestMethod.GET})
-    public ResultContent<List<OrganizationModel>> getUserShop() {
-        OrganizationUserSearch param = new OrganizationUserSearch();
-        param.setAuthType(AuthType.Shop);
-        param.setState(UserState.Normal);
-        return organizationService.getUserOrgList(param);
-    }
-
-    @ResourceAuth(value = "user",type = AuthType.User)
-    @Operation(summary = "查询用户加入的 企业数据列表", description = "查询用户加入的 企业数据列表")
-    @RequestMapping(value = {"getUserEnterprise"}, method = {RequestMethod.GET})
-    public ResultContent<List<OrganizationModel>> getUserEnterprise() {
-        OrganizationUserSearch param = new OrganizationUserSearch();
-        param.setAuthType(AuthType.Enterprise);
-        param.setState(UserState.Normal);
-        return organizationService.getUserOrgList(param);
-    }
 }

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

@@ -65,7 +65,23 @@ public class OrganizationController {
         return this.organizationService.addSchool(param);
     }
 
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "学校-编辑", description = "学校-编辑")
+    @RequestMapping(value = "updateSchool", method = {RequestMethod.POST})
+    public ResultContent updateSchool(@RequestBody SchoolUpdateParam param) {
+        Assert.hasText(param.getId(), "id不能为空");
+        return this.organizationService.updateSchool(param);
+    }
 
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "学校列表-分页查询", description = "学校列表-分页查询")
+    @RequestMapping(value = {"pageSchool"}, method = {RequestMethod.POST})
+    public ResultContent<Page<OrganizationModel>> pageSchool(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) OrganizationSearchParam param) {
+        param.setAuthType(AuthType.School);
+        return organizationService.page(param, pageable);
+    }
     //------------------------------学校管理 end------------------------
 
     @ResourceAuth(value = "user",type = AuthType.User)

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

@@ -0,0 +1,112 @@
+package com.zhongshu.card.server.core.controller.org;
+
+import com.github.microservice.auth.client.model.LoginTokenModel;
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.AuthTypeParam;
+import com.zhongshu.card.client.model.org.LoginParam;
+import com.zhongshu.card.client.model.org.OrganizationModel;
+import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.UserCountDetailsModel;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.ret.ResultState;
+import com.zhongshu.card.client.service.org.OrganizationService;
+import com.zhongshu.card.client.service.org.UserAccountService;
+import com.zhongshu.card.client.utils.type.UserState;
+import com.zhongshu.card.server.core.service.org.IndexService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/6/4
+ */
+@RestController
+@RequestMapping("userInfo")
+@Tag(name = "登录用户相关信息")
+public class UserInfoController {
+
+    @Autowired
+    IndexService indexService;
+
+    @Autowired
+    OrganizationService organizationService;
+
+    @Autowired
+    AuthHelper authHelper;
+
+    @Autowired
+    UserAccountService userAccountService;
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "得到当前用户信息", description = "得到当前用户信息")
+    @RequestMapping(value = {"getCurrentDetail"}, method = {RequestMethod.POST})
+    public ResultContent<UserCountDetailsModel> getCurrentDetail(@RequestBody AuthTypeParam param) {
+        if (param.getAuthType() == null) {
+            return ResultContent.buildFail("authType 不能为空");
+        }
+        return userAccountService.getCurrentDetail(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的平台数据列表", description = "查询用户加入的 平台数据列表")
+    @RequestMapping(value = {"getUserPlatform"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserPlatform() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Platform);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 项目数据列表", description = "查询用户加入的 项目数据列表")
+    @RequestMapping(value = {"getUserProject"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserProject() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Project);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 学校数据列表", description = "查询用户加入的 学校数据列表")
+    @RequestMapping(value = {"getUserSchool"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserSchool() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.School);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 商家数据列表", description = "查询用户加入的 商家数据列表")
+    @RequestMapping(value = {"getUserShop"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserShop() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Shop);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 企业数据列表", description = "查询用户加入的 企业数据列表")
+    @RequestMapping(value = {"getUserEnterprise"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserEnterprise() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Enterprise);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+}

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

@@ -1,5 +1,6 @@
 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.domain.org.Department;
 import com.zhongshu.card.server.core.domain.org.Organization;
@@ -19,5 +20,9 @@ public interface OrganizationRelationDao extends MongoDao<OrganizationRelation>
 
     List<OrganizationRelation> findByMainOrganization(Organization mainOrganization);
 
-    OrganizationRelation findTopByMainOrganization(Organization mainOrganization);
+    OrganizationRelation findTopByMainOrganizationAndAuthType(Organization mainOrganization, AuthType authType);
+
+    List<OrganizationRelation> findByRelOrganizationAndAuthType(Organization relOrganization, AuthType authType);
+
+    long countByRelOrganizationAndAuthType(Organization relOrganization, AuthType authType);
 }

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

@@ -51,6 +51,14 @@ public class OrganizationDaoImpl extends BaseImpl implements OrganizationDaoExte
             criteria.and("authType").is(param.getAuthType());
         }
 
+        if (ObjectUtils.isNotEmpty(param.getOids())) {
+            criteria.and("oid").in(param.getOids());
+        }
+
+        if (ObjectUtils.isNotEmpty(param.getIds())) {
+            criteria.and("id").in(param.getIds());
+        }
+
         if (!CommonUtil.longIsEmpty(param.getStartTime()) && !CommonUtil.longIsEmpty(param.getEndTime())) {
             criteria.and("createTime").gte(param.getStartTime()).and("createTime").lte(param.getEndTime());
         }

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/OrganizationRelation.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.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -23,7 +24,11 @@ public class OrganizationRelation extends SuperMain {
     @DBRef(lazy = true)
     private Organization mainOrganization;
 
+    @Schema(description = "主数据的类型")
+    AuthType authType = AuthType.Project;
+
     @Schema(description = "关联数据")
     @DBRef(lazy = true)
     private Organization relOrganization;
+
 }

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

@@ -165,11 +165,11 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
      */
     @Override
     public ResultContent addSchool(SchoolAddParam param) {
-        Assert.hasText(param.getProjectId(), "projectId 项目ID不能为空");
+        Assert.hasText(param.getProjectOid(), "projectId 项目ID不能为空");
         Assert.hasText(param.getPassword(), "密码不能为空");
         Assert.hasText(param.getContactPhone(), "手机号不能为空");
 
-        String projectId = param.getProjectId();
+        String projectId = param.getProjectOid();
         Organization organization = organizationDao.findTopByOid(projectId);
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildSuccess(String.format("项目不存在:%s", projectId));
@@ -185,10 +185,11 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         ResultContent<Organization> resultContent = addOrganization(addParam);
         if (resultContent.isSuccess()) {
             Organization main = resultContent.getContent();
-            OrganizationRelation organizationRelation = organizationRelationDao.findTopByMainOrganization(main);
+            OrganizationRelation organizationRelation = organizationRelationDao.findTopByMainOrganizationAndAuthType(main, AuthType.School);
             if (ObjectUtils.isEmpty(organizationRelation)) {
                 organizationRelation = new OrganizationRelation();
             }
+            organizationRelation.setAuthType(AuthType.School);
             organizationRelation.setMainOrganization(main);
             organizationRelation.setRelOrganization(organization);
             organizationRelationDao.save(organizationRelation);
@@ -198,6 +199,44 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 编辑学校
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent updateSchool(SchoolUpdateParam param) {
+        Assert.hasText(param.getProjectOid(), "projectId 项目ID不能为空");
+        Assert.hasText(param.getContactPhone(), "手机号不能为空");
+
+        String projectId = param.getProjectOid();
+        Organization organization = organizationDao.findTopByOid(projectId);
+        if (ObjectUtils.isEmpty(organization)) {
+            return ResultContent.buildSuccess(String.format("项目不存在:%s", projectId));
+        }
+        Organization main = organizationDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(main)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        if (param.getState() == null) {
+            param.setState(OrganizationState.Normal);
+        }
+        BeanUtils.copyProperties(param, main);
+
+        // 找出关联的项目
+        OrganizationRelation organizationRelation = organizationRelationDao.findTopByMainOrganizationAndAuthType(main, AuthType.School);
+        if (ObjectUtils.isEmpty(organizationRelation)) {
+            organizationRelation = new OrganizationRelation();
+        }
+        organizationRelation.setAuthType(AuthType.School);
+        organizationRelation.setMainOrganization(main);
+        organizationRelation.setRelOrganization(organization);
+        organizationRelationDao.save(organizationRelation);
+
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 编辑机构 (编辑基本信息)
      *
@@ -253,6 +292,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
 
         // 删除部门
 
+
         return ResultContent.buildSuccess();
     }
 
@@ -283,8 +323,22 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             param.setStartTime(startTime);
             param.setEndTime(endTime);
         }
+
+        // 学校查询的特有参数
+        if (param.getAuthType() == AuthType.School) {
+            if (StringUtils.isNotEmpty(param.getProjectOid())) {
+                Organization organization = organizationDao.findTopByOid(param.getProjectOid());
+                List<OrganizationRelation> list = organizationRelationDao.findByRelOrganizationAndAuthType(organization, AuthType.School);
+                if (ObjectUtils.isNotEmpty(list)) {
+                    List<String> oids = list.stream().map(it -> {
+                        return it.getOid();
+                    }).collect(Collectors.toList());
+                    param.setOids(oids);
+                }
+            }
+        }
         Page<Organization> page = organizationDao.page(pageable, param);
-        return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
     }
 
     /**
@@ -306,7 +360,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             param.setEndTime(endTime);
         }
         Page<Organization> page = organizationDao.page(pageable, param);
-        return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toProjectModel));
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toProjectModel));
     }
 
     /**
@@ -541,6 +595,14 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         OrganizationModel model = new OrganizationModel();
         if (ObjectUtils.isNotEmpty(entity)) {
             BeanUtils.copyProperties(entity, model);
+            // 判断不同的类型
+            if(entity.getAuthType() == AuthType.School) {
+                // 学校:查询出关联的项目信息
+                OrganizationRelation organization = organizationRelationDao.findTopByMainOrganizationAndAuthType(entity, AuthType.School);
+                if (ObjectUtils.isNotEmpty(organization)) {
+                    model.setProjectModel(toSimpleModel(organization.getRelOrganization()));
+                }
+            }
         }
         return model;
     }
@@ -553,9 +615,21 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
      */
     public ProjectOrgModel toProjectModel(Organization entity) {
         ProjectOrgModel model = new ProjectOrgModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+            // 统计学校数量
+            Long number = organizationRelationDao.countByRelOrganizationAndAuthType(entity, AuthType.School);
+            model.setSchoolNumber(number);
+        }
+        return model;
+    }
+
+    public OrganizationSimpleModel toSimpleModel(Organization entity) {
+        OrganizationSimpleModel model = new OrganizationSimpleModel();
         if (ObjectUtils.isNotEmpty(entity)) {
             BeanUtils.copyProperties(entity, model);
         }
         return model;
     }
+
 }