diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccCardMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccCardMapper.java
index c7c4ce8..65a4b0a 100644
--- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccCardMapper.java
+++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccCardMapper.java
@@ -10,6 +10,9 @@ import com.bonus.canteen.core.account.domain.AccCard;
* @date 2025-04-20
*/
public interface AccCardMapper {
+
+ public int selectAccCardCountByUserId(Long userId);
+
/**
* 查询人员卡片资料
*
diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccCardServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccCardServiceImpl.java
index 5e49341..fcdd78a 100644
--- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccCardServiceImpl.java
+++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccCardServiceImpl.java
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
import com.bonus.canteen.core.account.mapper.AccCardMapper;
import com.bonus.canteen.core.account.domain.AccCard;
import com.bonus.canteen.core.account.service.IAccCardService;
+import org.springframework.util.CollectionUtils;
import static com.bonus.canteen.core.order.constants.OrderStateEnum.CANCEL;
@@ -77,6 +78,11 @@ public class AccCardServiceImpl implements IAccCardService {
accCard.setUserId(accInfo.getUserId());
accCard.setCardStatus(CardStatusEnum.NORMAL.getKey());
accCard.setCardType(CardTypeEnum.IC_CARD.getKey());
+ // 发卡前校验是否卡已存在, 已退卡的可以再发放
+ int cardCountByUserId= accCardMapper.selectAccCardCountByUserId(accInfo.getUserId());
+ if (cardCountByUserId > 0) {
+ throw new ServiceException("此用户" + accInfo.getUserId() + "已有卡, 不能再次发放");
+ }
int count = accCardMapper.insertAccCard(accCard);
saveAccCardChangeRecord(accCard);
return count;
diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccCardMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccCardMapper.xml
index c25a644..e787506 100644
--- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccCardMapper.xml
+++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccCardMapper.xml
@@ -63,7 +63,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and ac.card_source_type = #{cardSourceType}
-
+
+
+