From f4c82c5c33cca59c05646ef08556162e124f8a41 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Wed, 10 Jun 2026 14:47:07 +0800 Subject: [PATCH] commit --- .../manage/SmartBenefitsManageController.java | 29 +++------ .../service/SmartBenefitsActivityService.java | 11 ++++ .../SmartBenefitsActivityServiceImpl.java | 46 +++++++++++++ .../activity/smartbenefits/manage/index.html | 64 +++++++++++++++---- 4 files changed, 118 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/controller/manage/SmartBenefitsManageController.java b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/controller/manage/SmartBenefitsManageController.java index 7f865a38..4e09a935 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/controller/manage/SmartBenefitsManageController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/controller/manage/SmartBenefitsManageController.java @@ -10,9 +10,6 @@ import com.budwk.app.flow.entity.ProcessInstance; import com.budwk.app.flow.enums.ProcessInstanceStateEnum; import com.budwk.app.sys.models.Sys_home_activity; import com.budwk.app.sys.models.Sys_unit; -import com.budwk.app.sys.models.Sys_user; -import com.budwk.app.sys.services.SysMsgService; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.smartbenefits.models.*; import com.budwk.app.zhgh.activity.smartbenefits.service.SmartBenefitsActivityService; import com.budwk.app.zhgh.club.model.SysClub; @@ -26,6 +23,8 @@ import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -53,8 +52,6 @@ public class SmartBenefitsManageController { @Inject private SmartBenefitsActivityService smartBenefitsActivityManageService; @Inject - private SysMsgService sysMsgService; - @Inject private Dao dao; @At("") @@ -245,24 +242,14 @@ public class SmartBenefitsManageController { @Ok("json:full") @ApiOperation("通知报名人员") @SaCheckPermission("smartbenefits.manage") - public Result sendNotify(@Param("activityId") String activityId, @Param("content") String content) { - if (StrUtil.isBlank(activityId) || StrUtil.isBlank(content)) { + public Result sendNotify(@Param("activityId") String activityId, @Param("courseIds") String courseIds, @Param("content") String content) { + if (StrUtil.isBlank(activityId) || StrUtil.isBlank(courseIds) || StrUtil.isBlank(content)) { return Result.error("参数不完整"); } - // 查询该活动下所有报名人员(state=1为正常报名) - List userList = dao.query(SmartBenefitsUser.class, Cnd.where("activityId", "=", activityId).and("state", "=", 1)); - if (userList.isEmpty()) { - return Result.error("该活动暂无报名人员"); + List courseIdList = Json.fromJsonAsList(String.class, courseIds); + if (Lang.isEmpty(courseIdList)) { + return Result.error("请选择要通知的分活动"); } - // 获取所有报名人员的userId - List userIds = userList.stream().map(SmartBenefitsUser::getUserId).distinct().toList(); - // 查询用户信息获取loginname - List sysUsers = dao.query(Sys_user.class, Cnd.where("id", "in", userIds)); - List loginNames = sysUsers.stream().map(Sys_user::getLoginname).filter(StrUtil::isNotBlank).toList(); - if (loginNames.isEmpty()) { - return Result.error("未找到有效的报名人员"); - } - sysMsgService.sendMsg(loginNames, "智享惠生活活动通知", content, SecurityUtil.getUserId()); - return Result.success("通知发送成功"); + return smartBenefitsActivityManageService.sendNotify(activityId, courseIdList, content); } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/SmartBenefitsActivityService.java b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/SmartBenefitsActivityService.java index 53e50609..6aa686de 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/SmartBenefitsActivityService.java +++ b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/SmartBenefitsActivityService.java @@ -2,6 +2,7 @@ package com.budwk.app.zhgh.activity.smartbenefits.service; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; import com.budwk.app.zhgh.activity.smartbenefits.models.SmartBenefitsActivity; import com.budwk.app.zhgh.activity.smartbenefits.models.SmartBenefitsCourse; @@ -132,4 +133,14 @@ public interface SmartBenefitsActivityService extends BaseService courseIds, String content); } diff --git a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/impl/SmartBenefitsActivityServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/impl/SmartBenefitsActivityServiceImpl.java index 6bbc0d52..4c801b83 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/impl/SmartBenefitsActivityServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/smartbenefits/service/impl/SmartBenefitsActivityServiceImpl.java @@ -3,8 +3,11 @@ package com.budwk.app.zhgh.activity.smartbenefits.service.impl; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.sys.models.Sys_home_activity; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.services.SysMsgService; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.smartbenefits.models.*; @@ -41,6 +44,8 @@ public class SmartBenefitsActivityServiceImpl extends BaseServiceImpl courseIds, String content) { + if (StrUtil.isBlank(activityId) || Lang.isEmpty(courseIds) || StrUtil.isBlank(content)) { + return Result.error("参数不完整"); + } + + // 按主活动和所选分活动限定通知范围,仅发送给正常报名人员;state=3 是候补转正常后的状态。 + List userList = dao().query( + SmartBenefitsUser.class, + Cnd.where("activityId", "=", activityId) + .and("courseId", "in", courseIds) + .and("state", "in", List.of(1, 3)) + ); + if (Lang.isEmpty(userList)) { + return Result.error("所选分活动暂无报名人员"); + } + + List userIds = userList.stream() + .map(SmartBenefitsUser::getUserId) + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + if (Lang.isEmpty(userIds)) { + return Result.error("未找到有效的报名人员"); + } + + List sysUsers = dao().query(Sys_user.class, Cnd.where("id", "in", userIds)); + List loginNames = sysUsers.stream() + .map(Sys_user::getLoginname) + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + if (Lang.isEmpty(loginNames)) { + return Result.error("未找到有效的报名人员"); + } + + sysMsgService.sendMsg(loginNames, "智享惠生活活动通知", content, SecurityUtil.getUserId()); + return Result.success("通知发送成功"); + } } diff --git a/src/main/resources/views/platform/zhgh/activity/smartbenefits/manage/index.html b/src/main/resources/views/platform/zhgh/activity/smartbenefits/manage/index.html index 02f23784..e25e2fa4 100644 --- a/src/main/resources/views/platform/zhgh/activity/smartbenefits/manage/index.html +++ b/src/main/resources/views/platform/zhgh/activity/smartbenefits/manage/index.html @@ -130,6 +130,21 @@ layout("/layouts/platform.html"){ :visible.sync="notifyDialogVisible" :close-on-click-modal="false" width="50%"> + + + + 取 消 - 发 送 + 发 送 @@ -175,6 +190,10 @@ layout("/layouts/platform.html"){ notifyDialogVisible: false, notifyContent: '', notifyActivityId: '', + notifyCourseIds: [], + notifyCourseList: [], + notifyCourseLoading: false, + notifyLoading: false, } }, methods: { @@ -206,28 +225,51 @@ layout("/layouts/platform.html"){ openNotifyDialog(row) { this.notifyActivityId = row.id this.notifyContent = '' + this.notifyCourseIds = [] + this.notifyCourseList = [] this.notifyDialogVisible = true + this.notifyCourseLoading = true + this.$axios.post("/platform/smartbenefits/manage/findOne", { id: row.id }) + .then((resp) => { + if (resp.code === 0) { + this.notifyCourseList = resp.data.courseList || [] + } else { + this.$message.warning(resp.msg) + } + }) + .finally(() => { + this.notifyCourseLoading = false + }) }, - async sendNotify() { + sendNotify() { + if (this.notifyCourseIds.length === 0) { + this.$message.warning('请选择要通知的分活动') + return + } if (!this.notifyContent.trim()) { this.$message.warning('请输入通知内容') return } - this.$confirm("确认发送通知给所有报名人员吗?", "提示", { + this.$confirm("确认发送通知给所选分活动的报名人员吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" - }).then(async () => { - const resp = await this.$axios.post(loc() + "/sendNotify", { + }).then(() => { + this.notifyLoading = true + this.$axios.post(loc() + "/sendNotify", { activityId: this.notifyActivityId, + courseIds: JSON.stringify(this.notifyCourseIds), content: this.notifyContent + }).then((resp) => { + if (resp.code === 0) { + this.$message.success(resp.msg) + this.notifyDialogVisible = false + } else { + this.$message.warning(resp.msg) + } + }).finally(() => { + this.notifyLoading = false }) - if (resp.code === 0) { - this.$message.success(resp.msg) - this.notifyDialogVisible = false - } else { - this.$message.warning(resp.msg) - } }).catch(() => {}) }, async activityStatusChange(notice, val, id) {