TRX 1 tahun lalu
induk
melakukan
ba95ef29ca

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

@@ -20,7 +20,6 @@ public class CardInfoPoolBind2OrgUserParam {
     private String poolId;
 
     @Schema(description = "机构用户id")
-    @NotEmpty(message = "id不能为空")
     private String id;
 
     private String remark;

+ 2 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java

@@ -26,6 +26,8 @@ public interface CardInfoService {
     // 绑定
     ResultContent bindCardFromPoolByOrgId(String poolId, String id, String remark);
 
+    ResultContent bindByCode(String code);
+
     // 解绑用户卡片
     ResultContent unBindCard(String id);
 

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

@@ -3,6 +3,7 @@ package com.zhongshu.card.server.core.controller.projectAbout;
 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.CodeParam;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
@@ -205,6 +206,13 @@ public class CardController {
         return cardInfoService.bindCardFromPoolByOrgId(param.getPoolId(), param.getId(), "");
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "根据卡号绑定(小程序使用)", description = "根据卡号绑定")
+    @RequestMapping(value = {"bindByCode"}, method = {RequestMethod.POST})
+    public ResultContent bindByCode(@RequestBody @Valid CodeParam param) {
+        return cardInfoService.bindByCode(param.getCode());
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "解除绑定", description = "解除绑定")
     @RequestMapping(value = {"unBindCard"}, method = {RequestMethod.POST})

+ 66 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java

@@ -278,6 +278,72 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    @Transactional
+    @Override
+    public ResultContent bindByCode(String code) {
+        // 卡池数据
+        CardInfoPool cardInfoPool = cardInfoPoolDao.findTopByCode(code);
+        if (ObjectUtils.isEmpty(cardInfoPool)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, code));
+        }
+        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()));
+        }
+        String userId = getCurrentUserId();
+        String projectOid = getCurrentProjectOid();
+
+        List<OrganizationUser> organizationUsers = organizationUserService.getUserOrgList(userId, projectOid);
+        if (ObjectUtils.isEmpty(organizationUsers)) {
+            return ResultContent.buildFail("用户未加入机构");
+        }
+        OrganizationUser organizationUser = organizationUsers.get(0);
+
+        // 用户信息
+        UserAccount account = userCountDao.findTopByUserId(userId);
+        if (ObjectUtils.isEmpty(account)) {
+            return ResultContent.buildFail("机构用户信息为空");
+        }
+        CardInfo cardInfo = cardInfoDao.findByCode(code);
+        if (ObjectUtils.isNotEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format("卡号已存在:%s", code));
+        }
+        cardInfo = new CardInfo();
+        initEntity(cardInfo);
+
+        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.setOid(cardInfoPool.getOid());
+        cardInfo.setOrganization(organizationUser.getOrganization());
+        cardInfo.setOrganizationUser(organizationUser);
+
+        cardInfo.setCardState(CardState.Enable);
+        cardInfo.setUserAccount(account);
+        cardInfo.setUserId(userId);
+        cardInfo.setUserName(account.getName());
+        cardInfo.setPhone(account.getPhone());
+        cardInfo.setRemark("用户搜索绑定");
+        cardInfoDao.save(cardInfo);
+
+        // 标记卡池这张卡已使用
+        cardInfoPool.setIsUsed(Boolean.TRUE);
+        cardInfoPool.setUseUserId(userId);
+        cardInfoPool.setUseTime(System.currentTimeMillis());
+        cardInfoPoolDao.save(cardInfoPool);
+
+        // 用户卡片增多
+        devicePermissEventService.sendUserInfoChangeEvent(cardInfo.getUserId(), cardInfo.getProjectOid());
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 解绑卡片
      *