TRX il y a 1 an
Parent
commit
8a08ec7b30

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

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.model.org;
 
+import com.zhongshu.card.client.utils.type.OrganizationRelationType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -28,4 +29,6 @@ public class OrganizationRelationSearch {
     @Schema(description = "关联的id", hidden = true)
     private String relId;
 
+    @Schema(description = "绑定关联类型")
+    private OrganizationRelationType relationType;
 }

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

@@ -1,5 +1,11 @@
 package com.zhongshu.card.client.service.school;
 
+import com.zhongshu.card.client.model.org.OrganizationRelationSearch;
+import com.zhongshu.card.client.model.school.ShopToSchoolModel;
+import com.zhongshu.card.client.ret.ResultContent;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
 /**
  * 学校绑定商户
  *
@@ -7,4 +13,13 @@ package com.zhongshu.card.client.service.school;
  * @date 2024/6/11
  */
 public interface SchoolBingShopService {
+
+    // 学校绑定商户
+    ResultContent schoolBingShop(String shopOid);
+
+    // 学校删除商户
+    ResultContent deleteSchoolBingShop(String shopOid);
+
+    // 学校商户列表
+    ResultContent<Page<ShopToSchoolModel>> page(OrganizationRelationSearch param, Pageable pageable);
 }

+ 0 - 29
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/CardController.java

@@ -32,34 +32,5 @@ public class CardController {
     @Autowired
     RoleServiceImpl roleService;
 
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "添加-编辑角色", description = "添加-编辑角色")
-    @RequestMapping(value = "addRole", method = {RequestMethod.POST})
-    public ResultContent addRole(@RequestBody RoleAddParam param) {
-        return this.roleService.addRole(param);
-    }
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "角色列表-分页查询", description = "角色列表-分页查询")
-    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
-    public ResultContent<Page<RoleModel>> page(
-            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) RoleSearchParam param) {
-        return roleService.page(param, pageable);
-    }
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "删除角色", description = "删除角色")
-    @RequestMapping(value = "deleteRole", method = {RequestMethod.POST})
-    public ResultContent deleteRole(@RequestBody IDParam param) {
-        return this.roleService.deleteRole(param.getId());
-    }
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "角色详情", description = "角色详情")
-    @RequestMapping(value = "getRole", method = {RequestMethod.POST})
-    public ResultContent<RoleModel> getRole(@RequestBody IDParam param) {
-        return this.roleService.getRole(param.getId());
-    }
 
 }

+ 72 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/OrganizationRelationController.java

@@ -0,0 +1,72 @@
+package com.zhongshu.card.server.core.controller.school;
+
+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.org.OrganizationRelationSearch;
+import com.zhongshu.card.client.model.school.BookInfoAddParam;
+import com.zhongshu.card.client.model.school.BookInfoModel;
+import com.zhongshu.card.client.model.school.BookInfoSearch;
+import com.zhongshu.card.client.model.school.ShopToSchoolModel;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.service.school.BookInfoService;
+import com.zhongshu.card.client.service.school.NoticeInfoService;
+import com.zhongshu.card.client.service.school.SchoolBingShopService;
+import com.zhongshu.card.client.utils.type.OrganizationUserType;
+import com.zhongshu.card.server.core.service.org.RoleServiceImpl;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 学校 通讯录管理
+ *
+ * @author TRX
+ * @date 2024/6/5
+ */
+@RestController
+@RequestMapping("/school/bindShop")
+@Tag(name = "学校-商户管理")
+public class OrganizationRelationController {
+
+    @Autowired
+    RoleServiceImpl roleService;
+
+    @Autowired
+    NoticeInfoService noticeInfoService;
+
+    @Autowired
+    BookInfoService bookInfoService;
+
+    @Autowired
+    SchoolBingShopService schoolBingShopService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "学校添加商户", description = "学校添加商户")
+    @RequestMapping(value = "schoolBingShop", method = {RequestMethod.GET})
+    public ResultContent schoolBingShop(@Parameter(name = "shopOid", description = "商品Oid", example = "") @RequestParam("shopOid") String shopOid) {
+        return this.schoolBingShopService.schoolBingShop(shopOid);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "学校删除商户", description = "学校删除商户")
+    @RequestMapping(value = "deleteSchoolBingShop", method = {RequestMethod.GET})
+    public ResultContent deleteSchoolBingShop(@Parameter(name = "shopOid", description = "商户Oid", example = "") @RequestParam("shopOid") String shopOid) {
+        return this.schoolBingShopService.deleteSchoolBingShop(shopOid);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "商户列表-分页查询", description = "商户列表-分页查询")
+    @RequestMapping(value = {"pageTeacher"}, method = {RequestMethod.POST})
+    public ResultContent<Page<ShopToSchoolModel>> pageTeacher(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) OrganizationRelationSearch param) {
+        return schoolBingShopService.page(param, pageable);
+    }
+
+}

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

@@ -27,4 +27,10 @@ public interface OrganizationRelationDao extends MongoDao<OrganizationRelation>,
 
     // 统计项目已有的学校
     long countByRelOrganizationAndRelationType(Organization relOrganization, OrganizationRelationType relationType);
+
+    OrganizationRelation findTopByMainOrganizationAndRelOrganizationAndRelationType(
+            Organization mainOrganization,
+            Organization relOrganization,
+            OrganizationRelationType relationType
+    );
 }

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

@@ -41,14 +41,19 @@ public class OrganizationRelationDaoImpl extends BaseImpl implements Organizatio
     public Page<OrganizationRelation> page(Pageable pageable, OrganizationRelationSearch param) {
         Criteria criteria = new Criteria();
 
-        if(StringUtils.isNotEmpty(param.getMainId())) {
+        if (StringUtils.isNotEmpty(param.getMainId())) {
             criteria.and("mainOrganization").is(Organization.build(param.getMainId()));
         }
 
-        if(StringUtils.isNotEmpty(param.getRelId())) {
+        if (StringUtils.isNotEmpty(param.getRelId())) {
             criteria.and("relOrganization").is(Organization.build(param.getRelId()));
         }
 
+        // 绑定类型
+        if (param.getRelationType() != null) {
+            criteria.and("relationType").is(param.getRelationType());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getMainName())) {

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

@@ -192,7 +192,9 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             }
             organizationRelation.setAuthType(AuthType.School);
             organizationRelation.setMainOrganization(main);
+            organizationRelation.setMainName(main.getName());
             organizationRelation.setRelOrganization(organization);
+            organizationRelation.setRelName(organization.getName());
             organizationRelationDao.save(organizationRelation);
         } else {
             return ResultContent.buildFail(resultContent.getMsg());

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

@@ -1,14 +1,27 @@
 package com.zhongshu.card.server.core.service.school;
 
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.zhongshu.card.client.model.org.OrganizationRelationSearch;
+import com.zhongshu.card.client.model.school.BookInfoModel;
+import com.zhongshu.card.client.model.school.BookInfoSearch;
+import com.zhongshu.card.client.model.school.ShopToSchoolModel;
+import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.service.school.SchoolBingShopService;
+import com.zhongshu.card.client.utils.type.OrganizationRelationType;
 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.domain.school.BookInfo;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 /**
@@ -30,6 +43,91 @@ public class SchoolBingShopServiceImpl extends SuperService implements SchoolBin
     @Autowired
     OrganizationServiceImpl organizationService;
 
+    /**
+     * 商户绑定学校
+     *
+     * @param shopOid
+     * @return
+     */
+    @Override
+    public ResultContent schoolBingShop(String shopOid) {
+        OrganizationRelation relation = null;
+        String oid = getCurrentOid();
+        // 学校信息
+        Organization mainOrganization = organizationDao.findTopByOid(oid);
+        if (mainOrganization.getAuthType() != AuthType.School) {
+            return ResultContent.buildFail(String.format("当前机构不属于学校类型"));
+        }
+        // 商户信息
+        Organization relOrganization = organizationDao.findTopByOid(shopOid);
+        if (ObjectUtils.isEmpty(relOrganization)) {
+            return ResultContent.buildFail(String.format("商户oid不存在:%s", shopOid));
+        }
+        relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(mainOrganization, relOrganization, OrganizationRelationType.ShopToSchool);
+        if (ObjectUtils.isEmpty(relation)) {
+            relation = new OrganizationRelation();
+            initEntity(relation);
+        }
 
+        relation.setMainOrganization(mainOrganization);
+        relation.setMainName(mainOrganization.getName());
+        relation.setRelOrganization(relOrganization);
+        relation.setRelName(relOrganization.getName());
+        relation.setAuthType(mainOrganization.getAuthType());
+        relation.setRelationType(OrganizationRelationType.ShopToSchool);
+        organizationRelationDao.save(relation);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 学校解绑商户信息
+     *
+     * @param shopOid
+     * @return
+     */
+    @Override
+    public ResultContent deleteSchoolBingShop(String shopOid) {
+        String oid = getCurrentOid();
+        // 学校信息
+        Organization mainOrganization = organizationDao.findTopByOid(oid);
+        if (mainOrganization.getAuthType() != AuthType.School) {
+            return ResultContent.buildFail(String.format("当前机构不属于学校类型"));
+        }
+        // 商户信息
+        Organization relOrganization = organizationDao.findTopByOid(shopOid);
+        if (ObjectUtils.isEmpty(relOrganization)) {
+            return ResultContent.buildFail(String.format("商户oid不存在:%s", shopOid));
+        }
+        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(
+                mainOrganization, relOrganization, OrganizationRelationType.ShopToSchool);
+        if (ObjectUtils.isNotEmpty(relation)) {
+            organizationRelationDao.delete(relation);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    @Override
+    public ResultContent<Page<ShopToSchoolModel>> page(OrganizationRelationSearch param, Pageable pageable) {
+        String oid = getCurrentOid();
+        Organization mainOrganization = organizationDao.findTopByOid(oid);
+        if (ObjectUtils.isEmpty(mainOrganization)) {
+            return ResultContent.buildFail(String.format("当前学校信息为空"));
+        }
+        param.setMainId(mainOrganization.getId());
+        param.setRelationType(OrganizationRelationType.ShopToSchool);
+
+        Page<OrganizationRelation> page = organizationRelationDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    public ShopToSchoolModel toModel(OrganizationRelation entity) {
+        ShopToSchoolModel model = new ShopToSchoolModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+            // 统计设备的数量
+
+        }
+        return model;
+    }
 
 }