This commit is contained in:
那些花儿
2025-09-13 11:03:26 +08:00
parent a72fe2095d
commit 213e812483
2 changed files with 25 additions and 1 deletions
@@ -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();
@@ -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<Activity> implements ClientActivityService {
@@ -46,12 +47,33 @@ public class ClientActivityServiceImpl extends BaseServiceImpl<Activity> impleme
@Override
public void signUp(ClientActivitySignVO signVO) {
List<ActUser> 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<ActUser> 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()));