From 751d75b51a19c521364af730f5d6ea95fc25c871 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 11 三月 2026 18:04:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
index 3330f51..eac9104 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
@@ -5,6 +5,7 @@
 import com.xiaopeng.api.model.operation.XpWhitelist;
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.operation.constant.I18nKeyConstant;
 import com.xiaopeng.operation.mapper.XpInvitationCodeMapper;
 import com.xiaopeng.operation.mapper.XpWhitelistMapper;
 import com.xiaopeng.operation.query.InvitationPageListQuery;
@@ -31,6 +32,7 @@
 
     @Autowired
     private XpWhitelistMapper xpWhitelistMapper;
+    private static final long INVITATION_CODE_LIMIT = 500L;
     @Override
     public PageInfo<XpInvitationCode> pageList(InvitationPageListQuery query) {
         PageInfo<XpInvitationCode> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
@@ -48,6 +50,16 @@
 
     @Override
     public R add(String phones) {
+        long existing = this.count();
+        long incoming = Arrays.stream(Optional.ofNullable(phones).orElse("").split(","))
+                .map(String::trim)
+                .filter(StringUtils::hasLength)
+                .count();
+        if (existing >= INVITATION_CODE_LIMIT || existing + incoming > INVITATION_CODE_LIMIT) {
+            return R.fail(String.format("系统最多只能有%d个邀请码,当前已有%d个,本次新增%d个,无法生成", INVITATION_CODE_LIMIT, existing, incoming),
+                    I18nKeyConstant.INVITATION_LIMIT_EXCEEDED);
+        }
+
         Map<String, Long> codeMap = this.list().stream()
                 .collect(Collectors.toMap(XpInvitationCode::getInvitationCode, XpInvitationCode::getId));
         if (StringUtils.hasLength(phones)){

--
Gitblit v1.7.1