소스 검색

学校功能

TRX 1 년 전
부모
커밋
7b3e4ddbd6

+ 31 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationRelationSearch.java

@@ -0,0 +1,31 @@
+package com.zhongshu.card.client.model.org;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/6/11
+ */
+@Data
+public class OrganizationRelationSearch {
+
+    @Schema(description = "主Oid", hidden = true)
+    private String mainOid;
+
+    @Schema(description = "主ID", hidden = true)
+    private String mainId;
+
+    @Schema(description = "主名称")
+    private String mainName;
+
+    @Schema(description = "关联的Oid", hidden = true)
+    private String relOid;
+
+    @Schema(description = "关联的名称")
+    private String relName;
+
+    @Schema(description = "关联的id", hidden = true)
+    private String relId;
+
+}

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/ShopToSchoolModel.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.model.school;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.org.OrganizationModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 学校绑定的商户信息
+ *
+ * @author TRX
+ * @date 2024/6/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ShopToSchoolModel extends OrganizationModel {
+    @Schema(description = "商户的设备数量")
+    private Long deviceNumber = 0l;
+}

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

@@ -1,6 +1,5 @@
-package com.zhongshu.card.client.service.org;
+package com.zhongshu.card.client.service.school;
 
-import com.zhongshu.card.client.model.org.DepartmentParam;
 import com.zhongshu.card.client.model.school.CollegeParam;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.utils.ITree;

+ 10 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolBingShopService.java

@@ -0,0 +1,10 @@
+package com.zhongshu.card.client.service.school;
+
+/**
+ * 学校绑定商户
+ *
+ * @author TRX
+ * @date 2024/6/11
+ */
+public interface SchoolBingShopService {
+}

+ 19 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/type/OrganizationRelationType.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.client.utils.type;
+
+import lombok.Getter;
+
+/**
+ *
+ */
+public enum OrganizationRelationType {
+    SchoolToProject("学校绑定项目"),
+    ShopToSchool("商户绑定学校"),
+    ;
+
+    @Getter
+    private String remark;
+
+    OrganizationRelationType(String remark) {
+        this.remark = remark;
+    }
+}

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

@@ -4,11 +4,9 @@ import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.OidModel;
-import com.zhongshu.card.client.model.org.DepartmentParam;
 import com.zhongshu.card.client.model.school.CollegeParam;
 import com.zhongshu.card.client.ret.ResultContent;
-import com.zhongshu.card.client.service.org.CollegeService;
-import com.zhongshu.card.client.service.org.DepartmentService;
+import com.zhongshu.card.client.service.school.CollegeService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/school/college")
-@Tag(name = "院级管理")
+@Tag(name = "学校-院级管理")
 public class CollegeController {
 
     @Autowired

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

@@ -2,6 +2,8 @@ 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.client.utils.type.OrganizationRelationType;
+import com.zhongshu.card.server.core.dao.org.extend.OrganizationRelationDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Department;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
@@ -12,17 +14,17 @@ import java.util.List;
  * @author TRX
  * @date 2024/3/21
  */
-public interface OrganizationRelationDao extends MongoDao<OrganizationRelation> {
+public interface OrganizationRelationDao extends MongoDao<OrganizationRelation>, OrganizationRelationDaoExtend {
 
     OrganizationRelation findTopById(String id);
 
-    void deleteByMainOrganization(Organization mainOrganization);
+    void deleteByMainOrganizationAndRelationType(Organization mainOrganization, OrganizationRelationType relationType);
 
-    List<OrganizationRelation> findByMainOrganization(Organization mainOrganization);
+    OrganizationRelation findTopByMainOrganizationAndRelationType(Organization mainOrganization,
+            OrganizationRelationType relationType);
 
-    OrganizationRelation findTopByMainOrganizationAndAuthType(Organization mainOrganization, AuthType authType);
+    List<OrganizationRelation> findByRelOrganizationAndRelationType(Organization relOrganization, OrganizationRelationType relationType);
 
-    List<OrganizationRelation> findByRelOrganizationAndAuthType(Organization relOrganization, AuthType authType);
-
-    long countByRelOrganizationAndAuthType(Organization relOrganization, AuthType authType);
+    // 统计项目已有的学校
+    long countByRelOrganizationAndRelationType(Organization relOrganization, OrganizationRelationType relationType);
 }

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

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.org.extend;
+
+import com.zhongshu.card.client.model.org.OrganizationRelationSearch;
+import com.zhongshu.card.client.model.org.RoleSearchParam;
+import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
+import com.zhongshu.card.server.core.domain.org.Role;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface OrganizationRelationDaoExtend {
+    Page<OrganizationRelation> page(Pageable pageable, OrganizationRelationSearch param);
+}

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

@@ -0,0 +1,72 @@
+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.OrganizationRelationSearch;
+import com.zhongshu.card.client.model.org.RoleSearchParam;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.org.extend.OrganizationRelationDaoExtend;
+import com.zhongshu.card.server.core.dao.org.extend.RoleDaoExtend;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
+import com.zhongshu.card.server.core.domain.org.Role;
+import com.zhongshu.card.server.core.util.CommonUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class OrganizationRelationDaoImpl extends BaseImpl implements OrganizationRelationDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<OrganizationRelation> page(Pageable pageable, OrganizationRelationSearch param) {
+        Criteria criteria = new Criteria();
+
+        if(StringUtils.isNotEmpty(param.getMainId())) {
+            criteria.and("mainOrganization").is(Organization.build(param.getMainId()));
+        }
+
+        if(StringUtils.isNotEmpty(param.getRelId())) {
+            criteria.and("relOrganization").is(Organization.build(param.getRelId()));
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+        if (StringUtils.isNotEmpty(param.getMainName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getMainName() + ".*$");
+            criterias.add(Criteria.where("mainName").is(pattern));
+        }
+        if (StringUtils.isNotEmpty(param.getRelName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getRelName() + ".*$");
+            criterias.add(Criteria.where("relName").is(pattern));
+        }
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+        criteria.and("isDelete").is(Boolean.FALSE);
+        Sort sort = Sort.by(Sort.Order.desc("createTime"));
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, OrganizationRelation.class);
+    }
+
+}

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

@@ -1,6 +1,7 @@
 package com.zhongshu.card.server.core.domain.org;
 
 import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.utils.type.OrganizationRelationType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -24,6 +25,9 @@ public class OrganizationRelation extends SuperMain {
     @DBRef(lazy = true)
     private Organization mainOrganization;
 
+    @Schema(description = "主名称")
+    private String mainName;
+
     @Schema(description = "主数据的类型")
     AuthType authType = AuthType.Project;
 
@@ -31,4 +35,10 @@ public class OrganizationRelation extends SuperMain {
     @DBRef(lazy = true)
     private Organization relOrganization;
 
+    @Schema(description = "关联的名称")
+    private String relName;
+
+    @Schema(description = "绑定关联类型")
+    private OrganizationRelationType relationType;
+
 }

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

@@ -17,10 +17,7 @@ import com.zhongshu.card.client.model.org.*;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.ret.ResultMessage;
 import com.zhongshu.card.client.service.org.OrganizationService;
-import com.zhongshu.card.client.utils.type.OrganizationState;
-import com.zhongshu.card.client.utils.type.OrganizationUserType;
-import com.zhongshu.card.client.utils.type.RoleType;
-import com.zhongshu.card.client.utils.type.UserState;
+import com.zhongshu.card.client.utils.type.*;
 import com.zhongshu.card.server.core.dao.org.*;
 import com.zhongshu.card.server.core.dataConfig.CardDefault;
 import com.zhongshu.card.server.core.domain.org.*;
@@ -188,7 +185,8 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         ResultContent<Organization> resultContent = addOrganization(addParam);
         if (resultContent.isSuccess()) {
             Organization main = resultContent.getContent();
-            OrganizationRelation organizationRelation = organizationRelationDao.findTopByMainOrganizationAndAuthType(main, AuthType.School);
+            OrganizationRelation organizationRelation = organizationRelationDao
+                    .findTopByMainOrganizationAndRelationType(main, OrganizationRelationType.SchoolToProject);
             if (ObjectUtils.isEmpty(organizationRelation)) {
                 organizationRelation = new OrganizationRelation();
             }
@@ -228,13 +226,15 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         BeanUtils.copyProperties(param, main);
 
         // 找出关联的项目
-        OrganizationRelation organizationRelation = organizationRelationDao.findTopByMainOrganizationAndAuthType(main, AuthType.School);
+        OrganizationRelation organizationRelation = organizationRelationDao
+                .findTopByMainOrganizationAndRelationType(main, OrganizationRelationType.SchoolToProject);
         if (ObjectUtils.isEmpty(organizationRelation)) {
             organizationRelation = new OrganizationRelation();
         }
         organizationRelation.setAuthType(AuthType.School);
         organizationRelation.setMainOrganization(main);
         organizationRelation.setRelOrganization(organization);
+        organizationRelation.setRelationType(OrganizationRelationType.SchoolToProject);
         organizationRelationDao.save(organizationRelation);
 
         return ResultContent.buildSuccess();
@@ -336,8 +336,10 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         // 学校查询的特有参数
         if (param.getAuthType() == AuthType.School) {
             if (StringUtils.isNotEmpty(param.getProjectOid())) {
+                // 查询项目已绑定的学校数据
                 Organization organization = organizationDao.findTopByOid(param.getProjectOid());
-                List<OrganizationRelation> list = organizationRelationDao.findByRelOrganizationAndAuthType(organization, AuthType.School);
+                List<OrganizationRelation> list = organizationRelationDao
+                        .findByRelOrganizationAndRelationType(organization, OrganizationRelationType.SchoolToProject);
                 if (ObjectUtils.isNotEmpty(list)) {
                     List<String> oids = list.stream().map(it -> {
                         return it.getOid();
@@ -611,7 +613,8 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             // 判断不同的类型
             if (entity.getAuthType() == AuthType.School) {
                 // 学校:查询出关联的项目信息
-                OrganizationRelation organization = organizationRelationDao.findTopByMainOrganizationAndAuthType(entity, AuthType.School);
+                OrganizationRelation organization = organizationRelationDao
+                        .findTopByMainOrganizationAndRelationType(entity, OrganizationRelationType.SchoolToProject);
                 if (ObjectUtils.isNotEmpty(organization)) {
                     model.setProjectModel(toSimpleModel(organization.getRelOrganization()));
                 }
@@ -644,7 +647,8 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         if (ObjectUtils.isNotEmpty(entity)) {
             BeanUtils.copyProperties(entity, model);
             // 统计学校数量
-            Long number = organizationRelationDao.countByRelOrganizationAndAuthType(entity, AuthType.School);
+            Long number = organizationRelationDao
+                    .countByRelOrganizationAndRelationType(entity, OrganizationRelationType.SchoolToProject);
             model.setSchoolNumber(number);
         }
         return model;

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/CollegeServiceImpl.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CollegeServiceImpl.java

@@ -1,10 +1,10 @@
-package com.zhongshu.card.server.core.service.org;
+package com.zhongshu.card.server.core.service.school;
 
 import com.zhongshu.card.client.model.school.CollegeModel;
 import com.zhongshu.card.client.model.school.CollegeParam;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.ret.ResultMessage;
-import com.zhongshu.card.client.service.org.CollegeService;
+import com.zhongshu.card.client.service.school.CollegeService;
 import com.zhongshu.card.client.utils.ITree;
 import com.zhongshu.card.client.utils.TreeUtil;
 import com.zhongshu.card.client.utils.type.DataState;

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

@@ -0,0 +1,35 @@
+package com.zhongshu.card.server.core.service.school;
+
+import com.zhongshu.card.client.service.school.SchoolBingShopService;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.org.OrganizationRelationDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 学校绑定商户的管理服务
+ *
+ * @author TRX
+ * @date 2024/6/11
+ */
+@Slf4j
+@Service
+public class SchoolBingShopServiceImpl extends SuperService implements SchoolBingShopService {
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    @Autowired
+    OrganizationRelationDao organizationRelationDao;
+
+    @Autowired
+    OrganizationServiceImpl organizationService;
+
+
+
+}