TRX 1 год назад
Родитель
Сommit
0d43775bdb

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

@@ -40,4 +40,10 @@ public class CardInfoModel extends SuperModel {
 
     @Schema(description = "所属用户UserId")
     private String userId;
+
+    @Schema(description = "学校oid")
+    private String schoolOid;
+
+    @Schema(description = "项目oid")
+    private String projectOid;
 }

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

@@ -17,6 +17,9 @@ public interface CardInfoService {
     // 添加编辑卡片
     ResultContent addCardInfo(CardInfoParam param);
 
+    // 从卡池选择卡片绑定到个人
+    ResultContent bindCardFromPool(String poolId);
+
     ResultContent<List<CardInfoModel>> getCurrentUserOrgAll();
 
     List<CardInfoModel> getUserOrgAllCard(String userId, String oid);

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

@@ -71,6 +71,13 @@ public class CardController {
         return cardInfoService.addCardInfo(param);
     }
 
+    @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());
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "删除卡片", description = "用户添加-编辑卡片信息")
     @RequestMapping(value = {"deleteCardInfo"}, method = {RequestMethod.POST})

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

@@ -42,6 +42,15 @@ public class CardInfo extends SuperMain {
     @Schema(description = "卡片状态")
     private CardState cardState;
 
+    @Schema(description = "是否作废")
+    private Boolean isCanceled = Boolean.FALSE;
+
+    @Schema(description = "作废时间")
+    private Long cancelTime;
+
+    @Schema(description = "作废时间")
+    private String cancelUserId;
+
     @Schema(description = "所属用户")
     @DBRef(lazy = true)
     private UserAccount userAccount;
@@ -52,6 +61,9 @@ public class CardInfo extends SuperMain {
     @Schema(description = "用户名称")
     private String userName;
 
+    @Schema(description = "电话")
+    private String phone;
+
     @Schema(description = "所属机构")
     @DBRef(lazy = true)
     private Organization organization;

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

@@ -14,11 +14,13 @@ import com.zhongshu.card.client.utils.type.school.CardState;
 import com.zhongshu.card.server.core.dao.CardInfoDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
+import com.zhongshu.card.server.core.dao.school.CardInfoPoolDao;
 import com.zhongshu.card.server.core.dao.user.CardInfoLossRecordDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.school.CardInfo;
 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.util.BeanUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -58,6 +60,9 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     @Autowired
     CardInfoLossRecordDao cardInfoLossRecordDao;
 
+    @Autowired
+    CardInfoPoolDao cardInfoPoolDao;
+
     /**
      * 添加或修改卡片信息
      *
@@ -88,7 +93,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             }
         }
         BeanUtils.copyProperties(param, cardInfo, "cardState");
-        if(cardInfo.getCardState() == null) {
+        if (cardInfo.getCardState() == null) {
             cardInfo.setCardState(CardState.Enable);
         }
         if (StringUtils.isNotEmpty(oid)) {
@@ -99,8 +104,53 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         cardInfo.setUserAccount(account);
         cardInfo.setUserId(account.getUserId());
         cardInfo.setUserName(account.getName());
+        cardInfo.setPhone(account.getPhone());
+        cardInfoDao.save(cardInfo);
+
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 从卡池选择卡片绑定到个人
+     *
+     * @param poolId
+     * @return
+     */
+    @Transactional
+    @Override
+    public ResultContent bindCardFromPool(String poolId) {
+        CardInfoPool cardInfoPool = cardInfoPoolDao.findTopById(poolId);
+        if (ObjectUtils.isEmpty(cardInfoPool)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, poolId));
+        }
+        String code = cardInfoPool.getCode();
+        String projectOid = cardInfoPool.getProjectOid();
+        CardInfo cardInfo = cardInfoDao.findByCode(code);
+        if (ObjectUtils.isNotEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format("卡号已存在:%s", code));
+        }
+        cardInfo = new CardInfo();
+        initEntity(cardInfo);
+        String userId = getCurrentUserId();
+        UserAccount account = userCountDao.findTopByUserId(userId);
+        cardInfo.setName(cardInfoPool.getName());
+        cardInfo.setCode(cardInfoPool.getCode());
+        cardInfo.setCardType(cardInfoPool.getCardType());
+        cardInfo.setProjectOid(cardInfoPool.getProjectOid());
+        cardInfo.setSchoolOid(cardInfoPool.getSchoolOid());
+        cardInfo.setCardState(CardState.Enable);
+        cardInfo.setUserAccount(account);
+        cardInfo.setUserId(userId);
+        cardInfo.setUserName(account.getName());
+        cardInfo.setPhone(account.getPhone());
         cardInfoDao.save(cardInfo);
 
+        // 标记卡池这张卡一使用
+        cardInfoPool.setIsUsed(Boolean.TRUE);
+        cardInfoPool.setUseUserId(userId);
+        cardInfoPool.setUseTime(System.currentTimeMillis());
+        cardInfoPoolDao.save(cardInfoPool);
+
         return ResultContent.buildSuccess();
     }
 
@@ -144,6 +194,15 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             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();
     }