diff --git a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java index b601d07..68c8ce5 100644 --- a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java +++ b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java @@ -86,7 +86,7 @@ public class ClientGroupController { // return Result.error("您还没加入任何团队"); return Result.success(); } - Sql sql = Sqls.create("select * from act_group where id=@id").setParam("id", groupUser.getGroupId()); + Sql sql = Sqls.create("select * from act_group where id=@id and isOpen = 1").setParam("id", groupUser.getGroupId()); sql.setCallback(Sqls.callback.map()); NutMap map = (NutMap) dao.execute(sql).getResult(); Sql sqlGroupUser = Sqls.create(""" @@ -104,7 +104,7 @@ public class ClientGroupController { WHERE t1.groupId=@groupId ORDER BY t1.isLeader DESC - """).setParam("groupId", map.getString("id")); + """).setParam("groupId", map.getString("id", "")); List groupUsers = clientActivityService.listMap(sqlGroupUser); map.put("groupUsers", groupUsers); NutMap leader = groupUsers.stream().filter(nutMap -> nutMap.getBoolean("isLeader")).findFirst().orElse(null); @@ -168,7 +168,7 @@ public class ClientGroupController { @SaCheckLogin(type = StpClientUtil.TYPE) public Result listGroupRank(Long activityId) { if (activityId == null) { - return Result.error("活动ID不能为空"); + return Result.error("未获取到报名活动"); } Sql sql = Sqls.create(""" @@ -183,6 +183,7 @@ public class ClientGroupController { LEFT JOIN act_group t2 ON t2.id = t1.groupId\s WHERE t1.activityId = @activityId + AND t2.isOpen = true """); sql.setParam("activityId", activityId); List list = clientActivityService.listMap(sql); diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActBigScreenController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActBigScreenController.java index fd11834..2e0c2c1 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActBigScreenController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActBigScreenController.java @@ -60,7 +60,7 @@ public class ActBigScreenController { @Ok("json:full") public Result score(Long activityId) { if (activityId == null) { - return Result.error("活动ID不能为空"); + return Result.error("未获取到报名活动"); } Sql sql = Sqls.create(""" SELECT diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java index 43fe0d2..6ea95ac 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java @@ -16,6 +16,7 @@ import com.budwk.app.module.activity.vo.ActUnGroupUserVo; import com.budwk.app.web.commons.slog.annotation.SLog; import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -29,6 +30,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.validation.Valid; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -231,6 +233,8 @@ public class ActGroupController { for (int i = 0; i < actGroups.length; i++) { actGroups[i].setActivityId(activityId); actGroups[i].setSort(i + 1); + // 设置为非公开 + actGroups[i].setIsOpen(false); dao.insert(actGroups[i]); for (ActGroupUser user : actGroups[i].getGroupUsers()) { user.setActivityId(activityId); @@ -275,4 +279,15 @@ public class ActGroupController { return Result.success(); } + + + @At + @SaCheckPermission("activity.group") + @SLog(tag = "活动分组", msg = "发布分组结果") + public Result releaseGroupResult(@Valid String activityId){ + dao.update(ActGroup.class, Chain.make("isOpen", true), + Cnd.where(ActGroup::getActivityId, "=", activityId)); + return Result.success(); + } + } diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java index 6c2dcdc..5f07a5b 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java @@ -124,7 +124,9 @@ public class ActUserController { user.setActivityId(activityId); user.setUnitName(vo.getUnitName()); } - dao.insertOrUpdate(doSignUserList); + if (Lang.isNotEmpty(doSignUserList)) { + dao.insertOrUpdate(doSignUserList); + } } // 找出不在系统的人,添加到client_user表中,再添加报名记录 diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActGroup.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActGroup.java index 1d225c0..568ad3b 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/models/ActGroup.java +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActGroup.java @@ -54,4 +54,8 @@ public class ActGroup extends BaseModel { @Many(field = "groupId") private List groupUsers; + @Column + @Comment("是否公开") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isOpen; } diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActGroupServiceImpl.java b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActGroupServiceImpl.java index e956610..09debdf 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActGroupServiceImpl.java +++ b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActGroupServiceImpl.java @@ -67,7 +67,7 @@ public class ActGroupServiceImpl extends BaseServiceImpl implements Ac List males = new ArrayList<>(genderMap.getOrDefault("男", Collections.emptyList())); List females = new ArrayList<>(genderMap.getOrDefault("女", Collections.emptyList())); - // 不再排序!保持原始顺序或打乱(避免系统性偏差) + // 保持原始顺序或打乱(避免系统性偏差) Collections.shuffle(males); Collections.shuffle(females); @@ -81,45 +81,6 @@ public class ActGroupServiceImpl extends BaseServiceImpl implements Ac optimizeBySwapping(groups, maxIterations); -// // 分离男女用户 -// Map> genderMap = signUpUserList.stream() -// .collect(Collectors.groupingBy(user -> "男".equals(user.getSex()) ? "男" : "女")); -// -// List males = genderMap.getOrDefault("男", Collections.emptyList()); -// List females = genderMap.getOrDefault("女", Collections.emptyList()); -// -// // 随机化列表 -// Collections.shuffle(males); -// Collections.shuffle(females); -// -// // 尝试分配 -// List unassignedUsers = new ArrayList<>(); -// -// int maleIndex = 0, femaleIndex = 0; -// while (maleIndex < males.size() || femaleIndex < females.size()) { -// boolean assigned = false; -// for (List group : groups) { -// if (group.size() < groupVo.getOneGroupLimitUserNum()) { -// int currentMaleCount = (int) group.stream().filter(u -> "男".equals(u.getSex())).count(); -// int currentFemaleCount = (int) group.stream().filter(u -> "女".equals(u.getSex())).count(); -// -// if (maleIndex < males.size() && (groupVo.getManUserNum() == -1 || currentMaleCount < groupVo.getManUserNum())) { -// group.add(males.get(maleIndex++)); -// assigned = true; -// } else if (femaleIndex < females.size() && (groupVo.getWomanUserNum() == -1 || currentFemaleCount < groupVo.getWomanUserNum())) { -// group.add(females.get(femaleIndex++)); -// assigned = true; -// } -// } -// } -// if (!assigned) { -// break; -// } -// } -// -// unassignedUsers.addAll(males.subList(maleIndex, males.size())); -// unassignedUsers.addAll(females.subList(femaleIndex, females.size())); -// // 往组别表里面添加记录 List groupList = IntStream.range(0, groups.size()) .mapToObj(index -> { @@ -136,6 +97,7 @@ public class ActGroupServiceImpl extends BaseServiceImpl implements Ac }).collect(Collectors.toList()); actGroup.setGroupUsers(userList); + actGroup.setIsOpen(false); return actGroup; }).toList(); diff --git a/backend/src/main/resources/views/platform/activity/group/index.html b/backend/src/main/resources/views/platform/activity/group/index.html index fb3148a..454454a 100644 --- a/backend/src/main/resources/views/platform/activity/group/index.html +++ b/backend/src/main/resources/views/platform/activity/group/index.html @@ -73,6 +73,8 @@ layout("/layouts/platform_1.html"){ 手动分组 + + 发布分组结果 @@ -91,6 +93,12 @@ layout("/layouts/platform_1.html"){ {{row.leaderPhone}} + + +