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/controller/XpInvitationCodeController.java | 37 ++++++++++++++++++++++++++++++++++++-
1 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
index 0879dd1..d1492e6 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -6,6 +6,7 @@
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.io.resource.ClassPathResource;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -67,6 +68,7 @@
private MessageSource messageSource;
private static final Pattern CHINESE_PATTERN = Pattern.compile("\\p{IsHan}");
+ private static final long INVITATION_CODE_LIMIT = 500L;
@ApiOperation(value = "邀请码管理分页列表",response = XpInvitationCode.class)
@PostMapping("/api/v1/invitation/pageList")
@@ -82,6 +84,18 @@
@ApiOperation(value = "生成邀请码")
@Transactional
public R add(@RequestBody InvitationAddDto dto){
+ long existing = xpInvitationCodeService.count();
+ long incoming = Arrays.stream(Optional.ofNullable(dto.getPhones()).orElse("").split(","))
+ .map(String::trim)
+ .filter(StringUtils::hasLength)
+ .count();
+ if (existing >= INVITATION_CODE_LIMIT || existing + incoming > INVITATION_CODE_LIMIT) {
+ String msg = messageSource.getMessage(I18nKeyConstant.INVITATION_LIMIT_EXCEEDED,
+ new Object[]{INVITATION_CODE_LIMIT, existing, incoming},
+ I18nKeyConstant.INVITATION_LIMIT_EXCEEDED,
+ LocaleContextHolder.getLocale());
+ return R.fail(msg);
+ }
return xpInvitationCodeService.add(dto.getPhones());
}
/**
@@ -158,6 +172,16 @@
}
if (CollectionUtils.isEmpty(invitationCodeImportExcels)) {
return R.fail(messageSource.getMessage(I18nKeyConstant.INVITATION_IMPORT_DATA_EMPTY, null, I18nKeyConstant.INVITATION_IMPORT_DATA_EMPTY, LocaleContextHolder.getLocale()));
+ }
+
+ long existing = xpInvitationCodeService.count();
+ long incoming = invitationCodeImportExcels.size();
+ if (existing >= INVITATION_CODE_LIMIT || existing + incoming > INVITATION_CODE_LIMIT) {
+ String msg = messageSource.getMessage(I18nKeyConstant.INVITATION_LIMIT_EXCEEDED,
+ new Object[]{INVITATION_CODE_LIMIT, existing, incoming},
+ I18nKeyConstant.INVITATION_LIMIT_EXCEEDED,
+ LocaleContextHolder.getLocale());
+ return R.fail(msg);
}
// 批量校验:账号必须为手机号;邀请码不能为空且不能包含中文;同时校验文件内重复/数据库已存在
@@ -320,5 +344,16 @@
xpInvitationCodeService.removeBatchByIds(longs);
return R.ok();
}
-
+
+ @ApiOperation(value = "校验生成邀请码的手机号是否合法")
+ @PostMapping("/api/v1/invitation/validateCode")
+ public R<Boolean> validateCode(@RequestParam String phone){
+ if (!PhoneUtil.isMobile(phone)){
+ return R.ok(false);
+ }
+ List<XpInvitationCode> existsList = xpInvitationCodeService.lambdaQuery()
+ .in(XpInvitationCode::getBindAccount, phone)
+ .list();
+ return R.ok(CollUtil.isEmpty(existsList));
+ }
}
--
Gitblit v1.7.1