From 213e8124837012ab033778a8c1e29503b5c0eb18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=A3=E4=BA=9B=E8=8A=B1=E5=84=BF?= <1156921458@qq.com> Date: Sat, 13 Sep 2025 11:03:26 +0800 Subject: [PATCH] .. --- .../controller/ClientActivityController.java | 2 ++ .../impl/ClientActivityServiceImpl.java | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientActivityController.java b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientActivityController.java index a0a95e0..8880542 100644 --- a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientActivityController.java +++ b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientActivityController.java @@ -9,6 +9,7 @@ import com.budwk.app.client.module.activity.vo.ClientActivitySignVO; import com.budwk.app.module.activity.models.ActUser; import com.budwk.app.module.activity.models.Activity; import com.budwk.app.web.commons.auth.satoken.StpClientUtil; +import lombok.Synchronized; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.FieldFilter; @@ -81,6 +82,7 @@ public class ClientActivityController { @At("/sign-up") @AdaptBy(type = JsonAdaptor.class) @SaCheckLogin(type = StpClientUtil.TYPE) + @Synchronized public synchronized Result signUp(ClientActivitySignVO signVO) { clientActivityService.signUp(signVO); return Result.success(); diff --git a/backend/src/main/java/com/budwk/app/client/module/activity/service/impl/ClientActivityServiceImpl.java b/backend/src/main/java/com/budwk/app/client/module/activity/service/impl/ClientActivityServiceImpl.java index 2443605..8e8dbc5 100644 --- a/backend/src/main/java/com/budwk/app/client/module/activity/service/impl/ClientActivityServiceImpl.java +++ b/backend/src/main/java/com/budwk/app/client/module/activity/service/impl/ClientActivityServiceImpl.java @@ -21,6 +21,7 @@ import org.nutz.lang.util.NutMap; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Collectors; @IocBean(args = {"refer:dao"}) public class ClientActivityServiceImpl extends BaseServiceImpl implements ClientActivityService { @@ -46,12 +47,33 @@ public class ClientActivityServiceImpl extends BaseServiceImpl impleme @Override public void signUp(ClientActivitySignVO signVO) { + List userList = signVO.getUserList(); + + // 检查是否有重复的身份证号 + boolean hasDuplicateIdCard = userList.stream() + .collect(Collectors.groupingBy(ActUser::getIdCard, Collectors.counting())) + .values().stream() + .anyMatch(count -> count > 1); + + // 检查是否有重复的手机号 + boolean hasDuplicatePhone = userList.stream() + .collect(Collectors.groupingBy(ActUser::getPhone, Collectors.counting())) + .values().stream() + .anyMatch(count -> count > 1); + + if(hasDuplicateIdCard){ + throw new BaseException("身份证号重复"); + } + + if(hasDuplicatePhone){ + throw new BaseException("手机号重复"); + } + LocalDateTime now = LocalDateTime.now(); Client_user selfUser = dao().fetch(Client_user.class, StpClientUtil.STP.getLoginIdAsLong()); dao().fetchLinks(selfUser, "unit"); - List userList = signVO.getUserList(); // 首先检查报名人员是否已经在用户表中 for (ActUser user : userList) { Client_user clientUser = dao().fetch(Client_user.class, Cnd.where(Client_user::getIdCard, "=", user.getIdCard()).or(Client_user::getPhone, "=", user.getPhone()));