From 5f300e45aeaea8abaabdc57671a78682b0baced5 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <1179705413@qq.com> Date: Wed, 21 Oct 2026 09:08:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(novel-admin):=20=E4=BF=AE=E5=A4=8D=E9=82=80?= =?UTF-8?q?=E8=AF=B7=E7=A0=81=E6=A0=A1=E9=AA=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java2nb/novel/service/AuthorService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/novel-admin/src/main/java/com/java2nb/novel/service/AuthorService.java b/novel-admin/src/main/java/com/java2nb/novel/service/AuthorService.java index 74a9ef0..250ab07 100644 --- a/novel-admin/src/main/java/com/java2nb/novel/service/AuthorService.java +++ b/novel-admin/src/main/java/com/java2nb/novel/service/AuthorService.java @@ -103,7 +103,14 @@ public class AuthorService { public void codeSave(AuthorCode authorCode) { if (StringUtils.isBlank(authorCode.getInviteCode())) { - authorCode.setInviteCode(RandomStringUtils.randomAlphanumeric(8)); + // 未填写时随机生成,与已有邀请码重复则重新生成 + String inviteCode; + do { + inviteCode = RandomStringUtils.randomAlphanumeric(8); + } while (codeExists(inviteCode)); + authorCode.setInviteCode(inviteCode); + } else if (codeExists(authorCode.getInviteCode())) { + throw biz("邀请码已存在,请更换后重新提交"); } if (authorCode.getValidityTime() == null) { authorCode.setValidityTime(new Date(System.currentTimeMillis() + 30L * 24 * 3600 * 1000)); @@ -114,6 +121,14 @@ public class AuthorService { authorCodeMapper.insertSelective(authorCode); } + /** + * 邀请码是否已存在 + */ + private boolean codeExists(String inviteCode) { + return authorCodeMapper.count(c -> + c.where(AuthorCodeDynamicSqlSupport.inviteCode, isEqualTo(StringUtils.trim(inviteCode)))) > 0; + } + public void codeUpdate(AuthorCode authorCode) { throw biz("邀请码不支持修改,如需调整请删除后重新新增"); }