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} - + + +