From d605391fa5c5ad39ae391d72da66858bdf66ca78 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Sun, 6 Sep 2026 17:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=8C=E5=B7=A5=E7=A6=8F=E5=88=A9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96-1.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WelfareNoticeController.java | 9 +- .../WelfareUserSelectController.java | 11 +- .../service/WelfareProjectService.java | 9 ++ .../impl/WelfareProjectServiceImpl.java | 34 +++++ .../WelfareSelectionSituationServiceImpl.java | 5 +- .../welfare/selectionSituation/index.html | 2 +- .../platform/zhghh5/welfare/select/index.html | 117 +++++++++++++----- 7 files changed, 141 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareNoticeController.java b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareNoticeController.java index 411d28b..cd29432 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareNoticeController.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareNoticeController.java @@ -1,6 +1,5 @@ package com.budwk.app.zhgh.welfare.controller; -import cn.dev33.satoken.annotation.SaCheckLogin; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.result.Result; import com.budwk.app.zhgh.welfare.service.WelfareProjectService; @@ -25,11 +24,10 @@ public class WelfareNoticeController { @Inject private WelfareProjectService projectService; - @At("detail") + @At @Ok("beetl:/platform/zhghh5/welfare/notice/detail.html") - @SaCheckLogin @ApiOperation("福利通知附件详情页") - public void detail() { + public void index() { } /** @@ -38,8 +36,7 @@ public class WelfareNoticeController { * @param id 福利项目 ID * @return JSON 结果,data 中包含项目名称、文件名称、下载地址和 PDF 预览地址 */ - @At("detailData") - @SaCheckLogin + @At @ApiOperation("查询福利通知附件详情") public Result detailData(@Valid String id) { if (StrUtil.isBlank(id)) { diff --git a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareUserSelectController.java b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareUserSelectController.java index ba314fc..1842866 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareUserSelectController.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/controller/WelfareUserSelectController.java @@ -8,7 +8,6 @@ import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.welfare.model.WelfareList; -import com.budwk.app.zhgh.welfare.model.WelfareProject; import com.budwk.app.zhgh.welfare.model.WelfareUserSelection; import com.budwk.app.zhgh.welfare.service.WelfareProjectService; import io.swagger.annotations.ApiOperation; @@ -24,10 +23,8 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; -import java.util.Arrays; import java.util.Date; import java.util.List; -import java.util.Objects; @IocBean @Ok("json:full") @@ -92,8 +89,6 @@ public class WelfareUserSelectController { if (count == 0) { return Result.error("您没有选择的权限"); } - WelfareProject project = dao.fetch(WelfareProject.class, projectId); - Date selectTime = new Date(); String additionalInfoValidationMessage = welfareProjectService.validateSelectionAdditionalInfo(selections, selectTime); if (additionalInfoValidationMessage != null) { @@ -111,9 +106,9 @@ public class WelfareUserSelectController { return Result.error(groupQuantityValidationMessage); } - int sum = Arrays.stream(selections).mapToInt(selection -> Objects.requireNonNullElse(selection.getSelectNum(), 0)).sum(); - if (sum > project.getMultiSelectNum()) { - return Result.error("选择的数量不能超过" + project.getMultiSelectNum()); + String projectQuantityValidationMessage = welfareProjectService.validateProjectSelectionQuantity(projectId, selections); + if (projectQuantityValidationMessage != null) { + return Result.error(projectQuantityValidationMessage); } diff --git a/src/main/java/com/budwk/app/zhgh/welfare/service/WelfareProjectService.java b/src/main/java/com/budwk/app/zhgh/welfare/service/WelfareProjectService.java index 1f1526f..a27082c 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/service/WelfareProjectService.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/service/WelfareProjectService.java @@ -52,6 +52,15 @@ public interface WelfareProjectService extends BaseService { */ String validateGroupSelectionQuantity(String projectId, WelfareUserSelection[] selections); + /** + * 校验福利项目一次提交的总选择份数。 + * + * @param projectId 福利项目 ID,用于读取单选或多选模式及多选数量上限 + * @param selections 用户提交的福利选择数组,每项需包含 selectOptionId 和 selectNum + * @return 校验通过返回 {@code null};超过项目上限或多选项目未配置上限时返回错误提示 + */ + String validateProjectSelectionQuantity(String projectId, WelfareUserSelection[] selections); + /** * 校验福利选择附加信息。同一次提交的全部福利项必须使用相同备注,配送时间字段已停用。 * diff --git a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java index 334aea2..9ba009d 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareProjectServiceImpl.java @@ -201,6 +201,40 @@ public class WelfareProjectServiceImpl extends BaseServiceImpl i return null; } + /** + * 校验福利项目总选择份数。单选项目固定只能选择 1 份,不读取仅供多选项目使用的 + * multiSelectNum;多选项目必须配置有效的数量上限。 + * + * @param projectId 福利项目 ID + * @param selections 当前用户提交的福利选择数据 + * @return 校验通过返回 {@code null},否则返回可直接展示的错误提示 + */ + @Override + public String validateProjectSelectionQuantity(String projectId, WelfareUserSelection[] selections) { + WelfareProject project = fetch(projectId); + if (project == null) { + return "福利项目不存在"; + } + int selectedQuantity = Arrays.stream(selections == null ? new WelfareUserSelection[0] : selections) + .filter(Objects::nonNull) + .mapToInt(selection -> Objects.requireNonNullElse(selection.getSelectNum(), 0)) + .sum(); + boolean multipleSelection = "checkBox".equals(project.getIsCheckBox()); + int maxSelectQuantity; + if (multipleSelection) { + if (project.getMultiSelectNum() == null || project.getMultiSelectNum() <= 0) { + return "福利项目未配置最多选择数量"; + } + maxSelectQuantity = project.getMultiSelectNum(); + } else { + maxSelectQuantity = 1; + } + if (selectedQuantity > maxSelectQuantity) { + return "选择的数量不能超过" + maxSelectQuantity; + } + return null; + } + /** * 校验一次选择提交中的备注。配送时间字段已停用,新提交数据统一清空该字段; * 多项福利的备注必须一致,避免同一次选择出现互相冲突的附加信息。 diff --git a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareSelectionSituationServiceImpl.java b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareSelectionSituationServiceImpl.java index 9338df1..c073789 100644 --- a/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareSelectionSituationServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/welfare/service/impl/WelfareSelectionSituationServiceImpl.java @@ -145,7 +145,7 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl{{ optionRankText(option) }} -
-
+
+
{{ optionBrief(option) }}