From 91af382d2a1fa1edbc6c1e2890933623d94bee3b Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Mon, 27 Apr 2026 15:18:11 +0800 Subject: [PATCH] commit --- .../sys/services/impl/SysMsgServiceImpl.java | 9 ++-- .../app/task/job/SysUserAllRenewJob.java | 5 +-- .../manage/SmartBenefitsManageController.java | 30 +++++++++++++ .../manage/TrainSignUpManageController.java | 30 +++++++++++++ .../activity/smartbenefits/manage/index.html | 42 +++++++++++++++++++ .../activity/trainSignUp/manage/index.html | 42 +++++++++++++++++++ 6 files changed, 148 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java index cf38b46c..ad4eaff8 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java @@ -1,8 +1,6 @@ package com.budwk.app.sys.services.impl; import cn.hutool.core.thread.ThreadUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HtmlUtil; import com.budwk.app.base.constant.RedisConstant; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.base.sms.SmsService; @@ -102,11 +100,10 @@ public class SysMsgServiceImpl extends BaseServiceImpl implements SysMs }); //发送学校平台消息 -// for (String loginName : loginNames) { -// smsService.send(loginName, sysMsg.getTitle(), sysMsg.getNote()); -// } + smsService.massSendMessage(loginNames, sysMsg.getNote()); + ThreadUtil.execute(() -> { - //smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); +// smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); }); return sysMsg; diff --git a/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java b/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java index 6d20f369..9100dbed 100644 --- a/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java +++ b/src/main/java/com/budwk/app/task/job/SysUserAllRenewJob.java @@ -1,15 +1,12 @@ package com.budwk.app.task.job; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; import com.budwk.app.base.param.ConditionGroup; import com.budwk.app.sys.enums.SysDataUpdateMode; -import com.budwk.app.sys.models.Sys_user_source; import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.services.SysDataUserPullService; import com.budwk.app.sys.services.SysDataUserUpdateService; import lombok.extern.slf4j.Slf4j; -import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -57,6 +54,6 @@ public class SysUserAllRenewJob implements Job { param.setUpdateMode(SysDataUpdateMode.ALL.name()); param.setConditionGroup(conditionGroup); - // sysDataUserUpdateService.update(param); + sysDataUserUpdateService.update(param); } } 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 17903e97..c85326c9 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,6 +10,9 @@ 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; @@ -50,6 +53,8 @@ public class SmartBenefitsManageController { @Inject private SmartBenefitsActivityService smartBenefitsActivityManageService; @Inject + private SysMsgService sysMsgService; + @Inject private Dao dao; @At("") @@ -235,4 +240,29 @@ public class SmartBenefitsManageController { } return Result.success(result); } + + @At + @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)) { + return Result.error("参数不完整"); + } + // 查询该活动下所有报名人员(state=1为正常报名) + List userList = dao.query(SmartBenefitsUser.class, Cnd.where("activityId", "=", activityId).and("state", "=", 1)); + if (userList.isEmpty()) { + 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("通知发送成功"); + } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpManageController.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpManageController.java index 343e43ff..1160ec1a 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpManageController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpManageController.java @@ -10,8 +10,11 @@ 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.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.trainSignUp.models.*; import com.budwk.app.zhgh.activity.trainSignUp.service.TrainSignUpActivityService; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.services.SysMsgService; import com.budwk.app.zhgh.club.model.SysClub; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -50,6 +53,8 @@ public class TrainSignUpManageController { @Inject private TrainSignUpActivityService trainSignUpActivityManageService; @Inject + private SysMsgService sysMsgService; + @Inject private Dao dao; @At("") @@ -235,4 +240,29 @@ public class TrainSignUpManageController { } return Result.success(result); } + + @At + @Ok("json:full") + @ApiOperation("通知报名人员") + @SaCheckPermission("trainSignUp.manage") + public Result sendNotify(@Param("activityId") String activityId, @Param("content") String content) { + if (StrUtil.isBlank(activityId) || StrUtil.isBlank(content)) { + return Result.error("参数不完整"); + } + // 查询该活动下所有报名人员(state=1为正常报名) + List userList = dao.query(TrainSignUpUser.class, Cnd.where("activityId", "=", activityId).and("state", "=", 1)); + if (userList.isEmpty()) { + return Result.error("该活动暂无报名人员"); + } + // 获取所有报名人员的userId + List userIds = userList.stream().map(TrainSignUpUser::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("通知发送成功"); + } } 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 d425b760..ed2eef34 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 @@ -90,6 +90,7 @@ layout("/layouts/platform.html"){ 活动二维码 签到二维码 + 通知报名人员 查看 编辑 删除 @@ -123,6 +124,23 @@ layout("/layouts/platform.html"){ 关 闭 + + + + + + 取 消 + 发 送 + + @@ -154,6 +172,9 @@ layout("/layouts/platform.html"){ ], codeDialogVisible: false, activityUrl: '', + notifyDialogVisible: false, + notifyContent: '', + notifyActivityId: '', } }, methods: { @@ -182,6 +203,27 @@ layout("/layouts/platform.html"){ makeCode(row) { this.$refs.codeRef.initData(row) }, + openNotifyDialog(row) { + this.notifyActivityId = row.id + this.notifyContent = '' + this.notifyDialogVisible = true + }, + async sendNotify() { + if (!this.notifyContent.trim()) { + this.$message.warning('请输入通知内容') + return + } + const resp = await this.$axios.post(loc() + "/sendNotify", { + activityId: this.notifyActivityId, + content: this.notifyContent + }) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.notifyDialogVisible = false + } else { + this.$message.warning(resp.msg) + } + }, async activityStatusChange(notice, val, id) { const resp = await this.$axios.post(loc() + "/activityStatusChange", { notice: notice, isDisabled: val, id }) if (resp.code === 0) { diff --git a/src/main/resources/views/platform/zhgh/activity/trainSignUp/manage/index.html b/src/main/resources/views/platform/zhgh/activity/trainSignUp/manage/index.html index 19d6b61e..c4c070ce 100644 --- a/src/main/resources/views/platform/zhgh/activity/trainSignUp/manage/index.html +++ b/src/main/resources/views/platform/zhgh/activity/trainSignUp/manage/index.html @@ -90,6 +90,7 @@ layout("/layouts/platform.html"){ 活动二维码 签到二维码 + 通知报名人员 查看 编辑 删除 @@ -123,6 +124,23 @@ layout("/layouts/platform.html"){ 关 闭 + + + + + + 取 消 + 发 送 + + @@ -154,6 +172,9 @@ layout("/layouts/platform.html"){ ], codeDialogVisible: false, activityUrl: '', + notifyDialogVisible: false, + notifyContent: '', + notifyActivityId: '', } }, methods: { @@ -182,6 +203,27 @@ layout("/layouts/platform.html"){ makeCode(row) { this.$refs.codeRef.initData(row) }, + openNotifyDialog(row) { + this.notifyActivityId = row.id + this.notifyContent = '' + this.notifyDialogVisible = true + }, + async sendNotify() { + if (!this.notifyContent.trim()) { + this.$message.warning('请输入通知内容') + return + } + const resp = await this.$axios.post(loc() + "/sendNotify", { + activityId: this.notifyActivityId, + content: this.notifyContent + }) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.notifyDialogVisible = false + } else { + this.$message.warning(resp.msg) + } + }, async activityStatusChange(notice, val, id) { const resp = await this.$axios.post(loc() + "/activityStatusChange", { notice: notice, isDisabled: val, id }) if (resp.code === 0) {