TRX 1 yıl önce
ebeveyn
işleme
2a559b0b02
33 değiştirilmiş dosya ile 339 ekleme ve 76 silme
  1. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/IDParam.java
  2. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/IDsParam.java
  3. 6 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/OidModel.java
  4. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/ProjectOidParam.java
  5. 2 3
      FullCardClient/src/main/java/com/zhongshu/card/client/model/base/SuperParam.java
  6. 0 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/role/RoleAddParam.java
  7. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/AreaParam.java
  8. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoModel.java
  9. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolBind2UserParam.java
  10. 26 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolChangeParam.java
  11. 13 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolModel.java
  12. 2 2
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolQueryParam.java
  13. 7 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java
  14. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java
  15. 20 0
      FullCardClient/src/main/java/com/zhongshu/card/client/type/CardCancelState.java
  16. 19 12
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/AreaController.java
  17. 26 11
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardController.java
  18. 27 7
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardInfoPoolController.java
  19. 2 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/ProjectBindOrgController.java
  20. 3 5
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/RoleController.java
  21. 14 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/tempMenus/OrgMenuController.java
  22. 4 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/CardInfoPoolDao.java
  23. 2 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/extend/CardInfoPoolDaoExtend.java
  24. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/impl/CardInfoPoolDaoImpl.java
  25. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfo.java
  26. 5 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfoPool.java
  27. 8 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java
  28. 5 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/orgManager/OrganizationManagerServiceImpl.java
  29. 3 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/AreaServiceImpl.java
  30. 54 14
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CardInfoPoolService.java
  31. 73 7
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CardInfoServiceImpl.java
  32. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/DictInfoServiceImpl.java
  33. 2 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/SchoolUserServiceImpl.java

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/IDParam.java

@@ -10,5 +10,6 @@ import java.io.Serializable;
  */
 @Data
 public class IDParam implements Serializable {
+
     private String id;
 }

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/IDsParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.base;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 import java.util.List;
@@ -11,6 +12,9 @@ import java.util.List;
  */
 @Data
 public class IDsParam {
+
+    @NotEmpty
     @Schema(description = "id集合")
     private List<String> ids;
+
 }

+ 6 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/OidModel.java

@@ -1,5 +1,7 @@
 package com.zhongshu.card.client.model.base;
 
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -10,5 +12,9 @@ import java.io.Serializable;
  */
 @Data
 public class OidModel implements Serializable {
+
+    @Schema(description = "结构oid、项目oid")
+    @NotEmpty
     private String oid;
+
 }

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/ProjectOidParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.base;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 2 - 3
FullCardClient/src/main/java/com/zhongshu/card/client/model/base/SuperParam.java

@@ -19,11 +19,10 @@ public class SuperParam implements Serializable {
     @Schema(description = "数据ID", example = "")
     private String id = null;
 
-    @Schema(description = "所属机构ID", hidden = true)
-    @Hidden
+    @Schema(description = "所属机构ID")
     private String oid;
 
-    @Schema(description = "所属项目oid")
+    @Schema(description = "所属项目oid", hidden = true)
     private String projectOid;
 
     @Schema(description = "数据主题的oid", hidden = true)

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

@@ -27,7 +27,6 @@ public class RoleAddParam extends SuperParam {
     private RoleType roleType = RoleType.Custom;
 
     @Schema(description = "角色类型")
-    @NotNull
     private AuthType authType;
 
     @NotNull

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/AreaParam.java

@@ -4,6 +4,7 @@ import com.zhongshu.card.client.model.base.SuperParam;
 import com.zhongshu.card.client.utils.ITree;
 import com.zhongshu.card.client.type.DataState;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 /**
@@ -12,6 +13,8 @@ import lombok.Data;
  */
 @Data
 public class AreaParam extends SuperParam {
+
+    @NotEmpty
     @Schema(description = "区域名称")
     private String name;
 
@@ -24,6 +27,7 @@ public class AreaParam extends SuperParam {
     @Schema(description = "上级ID")
     private String parentId = ITree.ROOT_ID;
 
+    @NotEmpty
     @Schema(description = "所属类型")
     private String dictInfoId;
 }

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

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

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

@@ -20,6 +20,6 @@ public class CardInfoPoolBind2UserParam {
     private String poolId;
 
     @Schema(description = "用户userId")
-    @NotEmpty(message = "用户userId")
+    @NotEmpty(message = "userId不能为空")
     private String userId;
 }

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolChangeParam.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.school;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.CardCancelState;
+import com.zhongshu.card.client.type.school.CardType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/30
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardInfoPoolChangeParam {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "作废状态")
+    private CardCancelState cancelState;
+
+}

+ 13 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolModel.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.school;
 
 import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.CardCancelState;
 import com.zhongshu.card.client.type.school.CardType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -45,4 +46,16 @@ public class CardInfoPoolModel extends SuperModel {
     @Schema(description = "绑定用户userId")
     private String useUserId;
 
+    @Schema(description = "作废状态")
+    private CardCancelState cardCancelState = CardCancelState.Common;
+
+    private String cardCancelStateStr;
+
+    public String getCardCancelStateStr() {
+        if (cardCancelState != null) {
+            return cardCancelState.getRemark();
+        }
+        return "";
+    }
+
 }

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

@@ -17,9 +17,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class CardInfoPoolQueryParam {
 
-    @Schema(description = "学校oid")
+    @Schema(description = "项目oid")
     @NotEmpty(message = "oid不能为空")
-    private String schoolOid;
+    private String oid;
 
     @Schema(description = "搜索的卡号")
     private String code;

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

@@ -19,7 +19,10 @@ public interface CardInfoService {
     // 从卡池选择卡片绑定到个人
     ResultContent bindCardFromPool(String poolId, String userId);
 
-    ResultContent<List<CardInfoModel>> getCurrentUserOrgAll();
+    // 解绑用户卡片
+    ResultContent unBindCard(String id);
+
+    ResultContent<List<CardInfoModel>> getCurrentUserOrgAll(String oid);
 
     List<CardInfoModel> getUserOrgAllCard(String userId, String oid);
 
@@ -57,4 +60,7 @@ public interface CardInfoService {
     // 卡片作废
     ResultContent cardCancel(String id);
 
+    // 恢复作废
+    ResultContent restoreCardCancel(String id);
+
 }

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

@@ -35,7 +35,7 @@ public interface SchoolUserService {
     ResultContent<List<CardInfoModel>> getUserOrgAllCard(OrgUserDetailParam param);
 
     // 得到绑定到机构的卡片列表
-    ResultContent<List<CardInfoModel>> getCurrentUserOrgAll();
+    ResultContent<List<CardInfoModel>> getCurrentUserOrgAll(String oid);
 
     // 得到用户所有的卡片列表
     ResultContent<List<CardInfoModel>> getCurrentUserAllCard();

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/CardCancelState.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.type;
+
+import lombok.Getter;
+
+/**
+ * 作废状态
+ */
+public enum CardCancelState {
+    Common("正常"),
+    Cancel("已作废"),
+
+    ;
+
+    @Getter
+    private String remark;
+
+    CardCancelState(String remark) {
+        this.remark = remark;
+    }
+}

+ 19 - 12
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/AreaController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/AreaController.java

@@ -1,4 +1,4 @@
-package com.zhongshu.card.server.core.controller.school;
+package com.zhongshu.card.server.core.controller.orgManager;
 
 import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
@@ -12,19 +12,33 @@ import com.zhongshu.card.client.service.school.AreaService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.Assert;
 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 javax.validation.Valid;
+
+/**
+ * 项目的区域管理
+ */
 @RestController
 @RequestMapping("/school/area")
-@Tag(name = "学校-区域管理")
+@Tag(name = "项目-区域管理")
 public class AreaController {
 
     @Autowired
     AreaService areaService;
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "添加-编辑区域-通用", description = "添加-编辑区域")
+    @RequestMapping(value = "addArea", method = {RequestMethod.POST})
+    public ResultContent addArea(@RequestBody @Valid AreaParam param) {
+        Assert.hasText(param.getOid(), "oid不能为空");
+        return this.areaService.addArea(param);
+    }
+
     @ResourceAuth(value = "areaManager", type = AuthType.Platform, remark = "区域管理_区域列表_1_Menu")
     @ResourceAuth(value = "areaManager", type = AuthType.Project, remark = "区域管理_区域列表_1_Menu")
     @ResourceAuth(value = "areaManager", type = AuthType.School, remark = "区域管理_区域列表_1_Menu")
@@ -34,22 +48,14 @@ public class AreaController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到机构区域树-通用", description = "得到机构区域树")
     @RequestMapping(value = "getManagerAreaTree", method = {RequestMethod.POST})
-    public ResultContent getManagerAreaTree(@RequestBody OidModel param) {
+    public ResultContent getManagerAreaTree(@RequestBody @Valid OidModel param) {
         return this.areaService.getAreaTree(param.getOid());
     }
 
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "添加-编辑区域-通用", description = "添加-编辑区域")
-    @RequestMapping(value = "addArea", method = {RequestMethod.POST})
-    public ResultContent addArea(@RequestBody AreaParam param) {
-        return this.areaService.addArea(param);
-    }
-
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到机构区域树-通用", description = "得到机构区域树")
     @RequestMapping(value = "getAreaTree", method = {RequestMethod.POST})
-    public ResultContent getAreaTree(@RequestBody OidModel param) {
+    public ResultContent getAreaTree(@RequestBody @Valid OidModel param) {
         return this.areaService.getAreaTree(param.getOid());
     }
 
@@ -57,6 +63,7 @@ public class AreaController {
     @Operation(summary = "删除区域-通用", description = "删除区域")
     @RequestMapping(value = "deleteArea", method = {RequestMethod.POST})
     public ResultContent deleteArea(@RequestBody IDParam param) {
+        Assert.hasText(param.getId(), "id不能为空");
         return this.areaService.deleteArea(param.getId());
     }
 

+ 26 - 11
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/CardController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardController.java

@@ -1,9 +1,10 @@
-package com.zhongshu.card.server.core.controller.school;
+package com.zhongshu.card.server.core.controller.orgManager;
 
 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.IDParam;
+import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.org.OrgUserDetailParam;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
@@ -27,23 +28,23 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/school/card")
-@Tag(name = "学校-卡片管理")
+@Tag(name = "项目-卡片管理")
 public class CardController {
 
     @Autowired
-    SchoolUserService schoolUserService;
+    private SchoolUserService schoolUserService;
 
     @Autowired
-    CardInfoService cardInfoService;
+    private CardInfoService cardInfoService;
 
     @Autowired
-    AuthHelper authHelper;
+    private AuthHelper authHelper;
 
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "得到当前用户所在校园的所有卡片", description = "得到当前用户所在校园的所有卡片")
+    @Operation(summary = "得到当前用户所在项目-机构的所有卡片", description = "得到当前用户所在项目-机构的所有卡片")
     @RequestMapping(value = {"getCurrentUserOrgAll"}, method = {RequestMethod.GET})
-    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
-        return schoolUserService.getCurrentUserOrgAll();
+    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll(OidModel param) {
+        return cardInfoService.getCurrentUserOrgAll(param.getOid());
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
@@ -144,19 +145,33 @@ public class CardController {
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "挂失作废(园区操作)", description = "挂失作废(园区操作)")
+    @Operation(summary = "作废卡片(园区操作)", description = "作废卡片(园区操作)")
     @RequestMapping(value = {"cardCancel"}, method = {RequestMethod.POST})
     public ResultContent cardCancel(@RequestBody IDParam param) {
         return cardInfoService.cardCancel(param.getId());
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "挂恢复作废(园区操作)", description = "挂恢复作废(园区操作)")
+    @RequestMapping(value = {"restoreCardCancel"}, method = {RequestMethod.POST})
+    public ResultContent restoreCardCancel(@RequestBody IDParam param) {
+        return cardInfoService.restoreCardCancel(param.getId());
+    }
+
     //----------------------------园区卡片操作 end --------------------------
 
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "从卡池选择卡片绑定到个人(已登录)", description = "从卡池选择卡片绑定到个人")
     @RequestMapping(value = {"bindCardFromPool"}, method = {RequestMethod.POST})
-    public ResultContent bindCardFromPool(@RequestBody IDParam param) {
-        return cardInfoService.bindCardFromPool(param.getId(), null);
+    public ResultContent bindCardFromPool(@RequestBody @Valid CardInfoPoolBind2UserParam param) {
+        return cardInfoService.bindCardFromPool(param.getPoolId(), param.getUserId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "解除绑定", description = "解除绑定")
+    @RequestMapping(value = {"unBindCard"}, method = {RequestMethod.POST})
+    public ResultContent<CardInfoModel> unBindCard(@RequestBody IDParam param) {
+        return cardInfoService.unBindCard(param.getId());
     }
 
     @Operation(summary = "从卡池选择卡片绑定到个人(未登录)", description = "从卡池选择卡片绑定到个人")

+ 27 - 7
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/CardInfoPoolController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardInfoPoolController.java

@@ -1,13 +1,12 @@
-package com.zhongshu.card.server.core.controller.school;
+package com.zhongshu.card.server.core.controller.orgManager;
 
 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.IDParam;
+import com.zhongshu.card.client.model.base.IDsParam;
+import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.service.school.CardInfoService;
-import com.zhongshu.card.client.service.school.SchoolUserService;
 import com.zhongshu.card.server.core.service.school.CardInfoPoolService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -19,6 +18,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.web.PageableDefault;
 import org.springframework.http.MediaType;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -27,12 +27,14 @@ import java.io.IOException;
 import java.util.List;
 
 /**
+ * 项目的卡池管理
+ *
  * @author TRX
  * @date 2024/6/5
  */
 @RestController
 @RequestMapping("/school/cardPool")
-@Tag(name = "学校-卡片池管理")
+@Tag(name = "项目-卡片池管理")
 public class CardInfoPoolController {
 
     @Autowired
@@ -68,23 +70,41 @@ public class CardInfoPoolController {
         return cardInfoPoolService.restoreCardInfoPool(param);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "作废状态改变", description = "作废状态改变")
+    @RequestMapping(value = {"cancelStateChange"}, method = {RequestMethod.POST})
+    public ResultContent<CardInfoPoolModel> cancelStateChange(
+            @RequestBody CardInfoPoolChangeParam param) {
+        return cardInfoPoolService.cancelStateChange(param);
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "池卡删除卡片", description = "池卡删除卡片")
     @RequestMapping(value = {"deleteCardInfoPool"}, method = {RequestMethod.POST})
     public ResultContent<CardInfoPoolModel> deleteCardInfoPool(@RequestBody IDParam param) {
+        Assert.hasText(param.getId(), "id不能为空");
         return cardInfoPoolService.deleteCardInfoPool(param.getId());
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "池卡批量删除卡片", description = "池卡批量删除卡片")
+    @RequestMapping(value = {"deleteByIds"}, method = {RequestMethod.POST})
+    public ResultContent<CardInfoPoolModel> deleteByIds(@RequestBody @Valid IDsParam param) {
+        return cardInfoPoolService.deleteByIds(param);
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "importCardPool", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, method = RequestMethod.POST)
     @Operation(summary = "园区卡池导入", description = "园区卡池导入")
     public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request,
             HttpServletResponse response,
-            @RequestPart("file") MultipartFile file) throws IOException {
+            @RequestPart("file") MultipartFile file,
+            OidModel oidModel
+    ) throws IOException {
         if (file == null || file.isEmpty()) {
             return ResultContent.buildFail("文件不能为空");
         }
-        return cardInfoPoolService.importCardPool(request, response, file);
+        return cardInfoPoolService.importCardPool(request, response, file, oidModel.getOid());
     }
 
     @Operation(summary = "池卡搜索卡片", description = "池卡搜索卡片")

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

@@ -19,6 +19,7 @@ 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.util.Assert;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -36,8 +37,6 @@ public class ProjectBindOrgController {
     private ProjectBindOrgServiceImpl projectBindOrgService;
 
     //------------------------------机构管理 start----------------------
-//    @ResourceAuth(value = "projectBindOrg", type = AuthType.Platform, remark = "项目机构管理_绑定项目_2_Button")
-//    @ResourceAuth(value = "projectBindOrg", type = AuthType.Project, remark = "项目机构管理_绑定项目_2_Button")
     @ResourceAuth(value = "user", type = AuthType.User)
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
     @Operation(summary = "项目绑定机构-保存", description = "项目绑定机构-保存")
@@ -46,8 +45,6 @@ public class ProjectBindOrgController {
         return this.projectBindOrgService.projectBindOrg(param);
     }
 
-//    @ResourceAuth(value = "projectOrgPage", type = AuthType.Platform, remark = "项目机构管理_机构列表_1_Menu")
-//    @ResourceAuth(value = "projectOrgPage", type = AuthType.Project, remark = "项目机构管理_机构列表_1_Menu")
     @ResourceAuth(value = "user", type = AuthType.User)
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
     @Operation(summary = "项目机构列表-分页查询", description = "项目机构列表-分页查询")
@@ -64,6 +61,7 @@ public class ProjectBindOrgController {
     @RequestMapping(value = "getProjectOrgList", method = {RequestMethod.POST})
     public ResultContent<List<OrganizationMiniModel>> getProjectOrgList(
             @RequestBody ProjectOidParam param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
         return this.projectBindOrgService.getProjectOrgList(param.getProjectOid());
     }
 

+ 3 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/RoleController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/RoleController.java

@@ -1,4 +1,4 @@
-package com.zhongshu.card.server.core.controller.org;
+package com.zhongshu.card.server.core.controller.orgManager;
 
 import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
@@ -38,6 +38,7 @@ public class RoleController {
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.Project, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.School, remark = "")
+    @ResourceAuth(value = AuthConstant.Admin, type = AuthType.BusinessMain, remark = "")
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "添加-编辑角色", description = "添加-编辑角色")
     @RequestMapping(value = "addRole", method = {RequestMethod.POST})
@@ -66,9 +67,6 @@ public class RoleController {
         return roleService.page(param, pageable);
     }
 
-//    @ResourceAuth(value = "roleDelete", type = AuthType.Platform, remark = "角色管理_删除角色_3_Button")
-//    @ResourceAuth(value = "roleDelete", type = AuthType.Project, remark = "角色管理_删除角色_3_Button")
-//    @ResourceAuth(value = "roleDelete", type = AuthType.School, remark = "角色管理_删除角色_3_Button")
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.Project, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.School, remark = "")
@@ -99,7 +97,7 @@ public class RoleController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到机构所有角色(根据oid查询)", description = "得到机构所有角色(根据oid查询)")
     @RequestMapping(value = "getAllRoles", method = {RequestMethod.POST})
-    public ResultContent getAllRoles(@RequestBody OidModel param) {
+    public ResultContent getAllRoles(@RequestBody @Valid OidModel param) {
         return this.roleService.getAllRoles(param.getOid());
     }
 

+ 14 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/tempMenus/OrgMenuController.java

@@ -351,5 +351,19 @@ public class OrgMenuController {
     }
 
 
+    @ResourceAuth(value = "openapi", type = AuthType.Project, remark = "OpenAPI权限_OpenAPI调用_1_Menu")
+    @ResourceAuth(value = "openapi", type = AuthType.School, remark = "OpenAPI权限_OpenAPI调用_1_Menu")
+    @ResourceAuth(value = "openapi", type = AuthType.BusinessMain, remark = "OpenAPI权限_OpenAPI调用_1_Menu")
+    @ResourceAuth(value = "openapi", type = AuthType.CommonOrg, remark = "OpenAPI权限_OpenAPI调用_1_Menu")
+//    @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform, remark = "")
+//    @ResourceAuth(value = AuthConstant.Admin, type = AuthType.Project, remark = "")
+//    @ResourceAuth(value = AuthConstant.Admin, type = AuthType.School, remark = "")
+//    @ResourceAuth(value = AuthConstant.Admin, type = AuthType.BusinessMain, remark = "")
+//    @ResourceAuth(value = AuthConstant.Admin, type = AuthType.CommonOrg, remark = "")
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @RequestMapping(value = "openapi", method = {RequestMethod.GET})
+    public ResultContent openapi() {
+        return ResultContent.buildSuccess();
+    }
 
 }

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/CardInfoPoolDao.java

@@ -26,5 +26,9 @@ public interface CardInfoPoolDao extends MongoDao<CardInfoPool>, CardInfoPoolDao
     // 模糊搜索10张卡片
     List<CardInfoPool> findTop10BySchoolOidAndCodeLike(String schoolOid, String code);
 
+    List<CardInfoPool> findTop10ByOidAndCodeLike(String oid, String code);
+
     boolean existsByCodeAndProjectOid(String code, String projectOid);
+
+    boolean existsByCode(String code);
 }

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

@@ -13,5 +13,7 @@ import org.springframework.data.domain.Pageable;
  * @Version: 1.0
  */
 public interface CardInfoPoolDaoExtend {
+
     Page<CardInfoPool> page(Pageable pageable, CardInfoPoolSearch param);
+
 }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/impl/CardInfoPoolDaoImpl.java

@@ -37,7 +37,7 @@ public class CardInfoPoolDaoImpl extends BaseImpl implements CardInfoPoolDaoExte
         if (ObjectUtils.isNotEmpty(param.getOid())) {
             criteria.and("oid").is(param.getOid());
         }
-
+        // 所属项目oid
         if (ObjectUtils.isNotEmpty(param.getProjectOid())) {
             criteria.and("projectOid").is(param.getProjectOid());
         }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfo.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.server.core.domain.school;
 
+import com.zhongshu.card.client.type.CardCancelState;
 import com.zhongshu.card.client.type.school.CardState;
 import com.zhongshu.card.client.type.school.CardType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
@@ -67,5 +68,4 @@ public class CardInfo extends SuperMain {
 
     @Schema(description = "校园名称")
     private String orgName;
-
 }

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfoPool.java

@@ -1,5 +1,7 @@
 package com.zhongshu.card.server.core.domain.school;
 
+import com.zhongshu.card.client.type.CardCancelState;
+import com.zhongshu.card.client.type.school.CardState;
 import com.zhongshu.card.client.type.school.CardType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -37,6 +39,9 @@ public class CardInfoPool extends SuperMain {
     @Schema(description = "是否已使用")
     private Boolean isUsed = Boolean.FALSE;
 
+    @Schema(description = "作废状态")
+    private CardCancelState cardCancelState = CardCancelState.Common;
+
     @Schema(description = "使用绑定时间")
     private Long useTime;
 

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java

@@ -267,6 +267,14 @@ public abstract class SuperService {
         Assert.hasText(param.getProjectOid(), "projectOid不能为空");
     }
 
+    public void checkParamOid(SuperParam param) {
+        Assert.hasText(param.getOid(), "oid不能为空");
+    }
+
+    public void checkParamOid(SuperSearch param) {
+        Assert.hasText(param.getOid(), "oid不能为空");
+    }
+
     public OperationLogsAddParam initLog(String userId) {
         return CommonUtil.initLog(request, userId);
     }

+ 5 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/orgManager/OrganizationManagerServiceImpl.java

@@ -254,8 +254,12 @@ public class OrganizationManagerServiceImpl extends SuperService {
         if (ObjectUtils.isNotEmpty(organization)) {
             aboutInfo.setOid(oid);
             aboutInfo.setAuthType(organization.getAuthType());
+
             AuthType authType = organization.getAuthType();
-            // todo
+            if (authType == AuthType.Project) {
+                aboutInfo.setProjectOid(oid);
+            }
+
         } else {
             aboutInfo.setOid(oid);
         }

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

@@ -54,7 +54,7 @@ public class AreaServiceImpl extends SuperService implements AreaService {
      */
     @Override
     public ResultContent<Area> addArea(AreaParam param) {
-        initDefaultUserAndOidCheck(param);
+        initDefaultUserAndOidNoExcept(param);
 
         if (CommonUtil.longIsEmpty(param.getSort())) {
             param.setSort(1L);
@@ -98,10 +98,12 @@ public class AreaServiceImpl extends SuperService implements AreaService {
             dictInfo = dictInfoDao.findTopById(param.getDictInfoId());
         }
         entity.setDictInfo(dictInfo);
+
         OidAboutInfo oidAboutInfo = organizationManagerService.getOidAboutInfo(param.getOid());
         entity.setProjectOid(oidAboutInfo.getProjectOid());
         entity.setAboutOid(oidAboutInfo.getOid());
         entity.setAboutAuthType(oidAboutInfo.getAuthType());
+
         areaDao.save(entity);
         return ResultContent.buildSuccess(entity);
     }

+ 54 - 14
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CardInfoPoolService.java

@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.google.common.collect.Lists;
+import com.zhongshu.card.client.model.base.IDsParam;
 import com.zhongshu.card.client.model.org.OidAboutInfo;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
@@ -15,6 +16,7 @@ import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.school.CardInfoPool;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import jakarta.servlet.http.HttpServletRequest;
@@ -50,6 +52,9 @@ public class CardInfoPoolService extends SuperService {
     @Autowired
     OrganizationDao organizationDao;
 
+    @Autowired
+    OrganizationManagerServiceImpl organizationManagerService;
+
     /**
      * 保存卡片信息
      *
@@ -57,7 +62,9 @@ public class CardInfoPoolService extends SuperService {
      * @return
      */
     public ResultContent saveCardInfoPool(CardInfoPoolParam param) {
+        checkParamOid(param);
         initDefaultUserAndOid(param);
+
         CardInfoPool entity = null;
         // 这是学校的oid
         String oid = param.getOid();
@@ -66,12 +73,9 @@ public class CardInfoPoolService extends SuperService {
             return ResultContent.buildFail(String.format("机构不存在:%s", param.getOid()));
         }
 
-        OidAboutInfo oidAboutInfo = organizationService.getOidAboutOrgInfo(oid);
-
+        OidAboutInfo oidAboutInfo = organizationManagerService.getOidAboutInfo(oid);
         String projectOid = oidAboutInfo.getProjectOid();
-        String schoolOid = oidAboutInfo.getSchoolOid();
-
-        // 学校唯一
+        // 项目唯一
         CardInfoPool temp = cardInfoPoolDao.findTopByCodeAndProjectOid(param.getCode(), projectOid);
         if (StringUtils.isNotEmpty(param.getId())) {
             entity = cardInfoPoolDao.findTopById(param.getId());
@@ -89,7 +93,9 @@ public class CardInfoPoolService extends SuperService {
         }
         BeanUtils.copyProperties(param, entity);
         entity.setProjectOid(projectOid);
-        entity.setSchoolOid(schoolOid);
+        entity.setAboutAuthType(oidAboutInfo.getAuthType());
+        entity.setAboutOid(oidAboutInfo.getOid());
+
         if (entity.getIsUsed() == null) {
             entity.setIsUsed(Boolean.FALSE);
         }
@@ -105,7 +111,9 @@ public class CardInfoPoolService extends SuperService {
      * @return
      */
     public ResultContent<Page<CardInfoPoolModel>> page(CardInfoPoolSearch param, Pageable pageable) {
-        initOidSearchParam(param);
+        checkParamOid(param);
+        initOidSearchParamNoCheckOid(param);
+
         Page<CardInfoPool> page = cardInfoPoolDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
     }
@@ -140,6 +148,16 @@ public class CardInfoPoolService extends SuperService {
         return ResultContent.buildSuccess(toModel(entity));
     }
 
+    public ResultContent<CardInfoPoolModel> cancelStateChange(CardInfoPoolChangeParam param) {
+        CardInfoPool entity = cardInfoPoolDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        entity.setCardCancelState(param.getCancelState());
+        cardInfoPoolDao.save(entity);
+        return ResultContent.buildSuccess(toModel(entity));
+    }
+
     /**
      * 删除卡片
      *
@@ -155,6 +173,17 @@ public class CardInfoPoolService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 批量删除
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent deleteByIds(IDsParam param) {
+        cardInfoPoolDao.deleteAllById(param.getIds());
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 导入 学校卡片excel
      *
@@ -163,13 +192,19 @@ public class CardInfoPoolService extends SuperService {
      * @param file
      * @return
      */
-    public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
-        // 当前的学校
-        String oid = getCurrentOid();
+    public ResultContent<ImportResultModel> importCardPool(
+            HttpServletRequest request,
+            HttpServletResponse response,
+            MultipartFile file,
+            String oid
+    ) {
+        // 当前的机构
+        if (StringUtils.isEmpty(oid)) {
+            oid = getCurrentOid();
+        }
         Assert.hasText(oid, "oid不能为空");
 
-        OidAboutInfo oidAboutInfo = organizationService.getOidAboutOrgInfo(oid);
-
+        OidAboutInfo oidAboutInfo = organizationManagerService.getOidAboutInfo(oid);
         String projectOid = oidAboutInfo.getProjectOid();
         String schoolOid = oidAboutInfo.getSchoolOid();
 
@@ -197,7 +232,7 @@ public class CardInfoPoolService extends SuperService {
 
                     if (b) {
                         // 检查是否已存在 code
-                        boolean exit = cardInfoPoolDao.existsByCodeAndProjectOid(param1.getCode(), projectOid);
+                        boolean exit = cardInfoPoolDao.existsByCode(param1.getCode());
                         if (exit) {
                             b = false;
                         }
@@ -210,6 +245,10 @@ public class CardInfoPoolService extends SuperService {
                         BeanUtils.copyProperties(param1, pool, "cardType");
                         pool.setSchoolOid(schoolOid);
                         pool.setProjectOid(projectOid);
+                        pool.setOid(oid);
+                        pool.setAboutOid(oidAboutInfo.getOid());
+                        pool.setAboutAuthType(oidAboutInfo.getAuthType());
+
                         // 初始状态为  未使用
                         pool.setIsUsed(Boolean.FALSE);
                         // 对比出卡片类型
@@ -239,8 +278,9 @@ public class CardInfoPoolService extends SuperService {
         if (StringUtils.isEmpty(param.getCode())) {
             return ResultContent.buildSuccess(Lists.newArrayList());
         }
+
         // 查询前十的卡片数据
-        List<CardInfoPool> list = cardInfoPoolDao.findTop10BySchoolOidAndCodeLike(param.getSchoolOid(), param.getCode());
+        List<CardInfoPool> list = cardInfoPoolDao.findTop10ByOidAndCodeLike(param.getOid(), param.getCode());
         List<CardInfoPoolSimpleModel> models = new ArrayList<>();
         if (ObjectUtils.isNotEmpty(list)) {
             models = list.stream().map(this::toSimpleModel).collect(Collectors.toList());

+ 73 - 7
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CardInfoServiceImpl.java

@@ -9,6 +9,7 @@ import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
 import com.zhongshu.card.client.service.school.CardInfoService;
+import com.zhongshu.card.client.type.CardCancelState;
 import com.zhongshu.card.client.type.CardOperationType;
 import com.zhongshu.card.client.type.school.CardState;
 import com.zhongshu.card.server.core.dao.school.CardInfoDao;
@@ -23,6 +24,7 @@ import com.zhongshu.card.server.core.domain.school.CardInfoLossRecord;
 import com.zhongshu.card.server.core.domain.school.CardInfoPool;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
 import com.zhongshu.card.server.core.service.user.UserAccountServiceImpl;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -73,6 +75,9 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     @Autowired
     UserAccountServiceImpl userAccountService;
 
+    @Autowired
+    OrganizationManagerServiceImpl organizationManagerService;
+
     /**
      * 添加或修改卡片信息
      *
@@ -81,13 +86,16 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
      */
     @Override
     public ResultContent addCardInfo(CardInfoParam param) {
+        checkParamOid(param);
         initDefaultUserParam(param);
         if (StringUtils.isEmpty(param.getCode())) {
             return ResultContent.buildFail("code不能为空");
         }
         String oid = param.getOid();
+
         String code = param.getCode();
         CardInfo cardInfo = new CardInfo();
+
         CardInfo temp = cardInfoDao.findByCode(code);
         if (StringUtils.isNotEmpty(param.getId())) {
             cardInfo = cardInfoDao.findTopById(param.getId());
@@ -102,7 +110,8 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
                 return ResultContent.buildFail(String.format("卡号已存在:%s", code));
             }
         }
-        BeanUtils.copyProperties(param, cardInfo, "cardState");
+        BeanUtils.copyProperties(param, cardInfo, "cardState", "isCanceled");
+
         if (cardInfo.getCardState() == null) {
             cardInfo.setCardState(CardState.Enable);
         }
@@ -110,11 +119,16 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             Organization organization = organizationDao.findTopByOid(oid);
             cardInfo.setOrganization(organization);
         }
+        OidAboutInfo oidAboutInfo = organizationManagerService.getOidAboutInfo(oid);
         UserAccount account = userCountDao.findTopByUserId(param.getUserId());
         cardInfo.setUserAccount(account);
         cardInfo.setUserId(account.getUserId());
         cardInfo.setUserName(account.getName());
         cardInfo.setPhone(account.getPhone());
+
+        cardInfo.setProjectOid(oidAboutInfo.getProjectOid());
+        cardInfo.setAboutOid(oidAboutInfo.getOid());
+        cardInfo.setAboutAuthType(oidAboutInfo.getAuthType());
         cardInfoDao.save(cardInfo);
 
         return ResultContent.buildSuccess();
@@ -129,13 +143,22 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     @Transactional
     @Override
     public ResultContent bindCardFromPool(String poolId, String userId) {
+        if (StringUtils.isEmpty(userId)) {
+            return ResultContent.buildFail("userId不能为空");
+        }
+        if (StringUtils.isEmpty(poolId)) {
+            return ResultContent.buildFail("poolId不能为空");
+        }
         // 卡池数据
         CardInfoPool cardInfoPool = cardInfoPoolDao.findTopById(poolId);
         if (ObjectUtils.isEmpty(cardInfoPool)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, poolId));
         }
-        if (StringUtils.isEmpty(userId)) {
-            userId = getCurrentUserId();
+        if (cardInfoPool.getIsUsed() != null && cardInfoPool.getIsUsed()) {
+            return ResultContent.buildFail(String.format("卡片已使用:%s", cardInfoPool.getCode()));
+        }
+        if (cardInfoPool.getCardCancelState() != null && cardInfoPool.getCardCancelState() != CardCancelState.Common) {
+            return ResultContent.buildFail(String.format("卡片:%s", cardInfoPool.getCardCancelState().getRemark()));
         }
         // 用户信息
         UserAccount account = userCountDao.findTopByUserId(userId);
@@ -144,7 +167,6 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         }
 
         String code = cardInfoPool.getCode();
-        String projectOid = cardInfoPool.getProjectOid();
         CardInfo cardInfo = cardInfoDao.findByCode(code);
         if (ObjectUtils.isNotEmpty(cardInfo)) {
             return ResultContent.buildFail(String.format("卡号已存在:%s", code));
@@ -155,8 +177,12 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         cardInfo.setName(cardInfoPool.getName());
         cardInfo.setCode(cardInfoPool.getCode());
         cardInfo.setCardType(cardInfoPool.getCardType());
+
         cardInfo.setProjectOid(cardInfoPool.getProjectOid());
         cardInfo.setSchoolOid(cardInfoPool.getSchoolOid());
+        cardInfo.setAboutAuthType(cardInfoPool.getAboutAuthType());
+        cardInfo.setAboutOid(cardInfoPool.getAboutOid());
+
         cardInfo.setCardState(CardState.Enable);
         cardInfo.setUserAccount(account);
         cardInfo.setUserId(userId);
@@ -173,15 +199,38 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 解绑卡片
+     *
+     * @param id
+     * @return
+     */
+    @Transactional
+    public ResultContent unBindCard(String id) {
+        CardInfo cardInfo = cardInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        // 删除用户的卡片
+        cardInfoDao.delete(cardInfo);
+
+        // 恢复卡池的数据
+        CardInfoPool cardInfoPool = cardInfoPoolDao.findTopByCode(cardInfo.getCode());
+        if (ObjectUtils.isNotEmpty(cardInfoPool)) {
+            cardInfoPool.setIsUsed(Boolean.FALSE);
+            cardInfoPoolDao.save(cardInfoPool);
+        }
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 得到当前用户所在 学校的所有卡片
      *
      * @return
      */
     @Override
-    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
+    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll(String oid) {
         String userId = getCurrentUserId();
-        String oid = getCurrentOid();
         return ResultContent.buildSuccess(getUserOrgAllCard(userId, oid));
     }
 
@@ -519,7 +568,6 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     public ResultContent cardCancel(String id) {
         Assert.hasText(id, "id不能为空");
         String userId = getCurrentUserId();
-        UserAccount userAccount = userCountDao.findTopByUserId(userId);
         CardInfo cardInfo = cardInfoDao.findTopById(id);
         if (ObjectUtils.isEmpty(cardInfo)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
@@ -535,6 +583,24 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    @Override
+    public ResultContent restoreCardCancel(String id) {
+        Assert.hasText(id, "id不能为空");
+        String userId = getCurrentUserId();
+        CardInfo cardInfo = cardInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        initUpdateEntity(cardInfo);
+
+        // 设置是否作废:否
+        cardInfo.setIsCanceled(Boolean.FALSE);
+        cardInfo.setCancelUserId(userId);
+        cardInfo.setCancelTime(System.currentTimeMillis());
+        cardInfoDao.save(cardInfo);
+        return ResultContent.buildSuccess();
+    }
+
     //----------------------------园区卡片操作 end --------------------------
 
 

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

@@ -124,6 +124,7 @@ public class DictInfoServiceImpl extends SuperService implements DictInfoService
     @Override
     public ResultContent<Page<DictInfoParam>> page(DictInfoSearch param, Pageable pageable) {
         initSearchParamCheckOid(param);
+
         Page<DictInfo> page = dictInfoDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
     }

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

@@ -296,14 +296,13 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
     }
 
     /**
-     * 得到当前用户子啊机构的所有卡片
+     * 得到当前用户机构的所有卡片
      *
      * @return
      */
     @Override
-    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
+    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll(String oid) {
         String userId = getCurrentUserId();
-        String oid = getCurrentOid();
         Assert.hasText(userId, "userId不能为空");
         Assert.hasText(oid, "oid不能为空");
         List<CardInfoModel> cardInfos = cardInfoService.getUserOrgAllCard(userId, oid);