From 33bcdc42e7ad12dea172834a4fa278743bf8528d Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Fri, 6 Mar 2026 11:50:29 +0800 Subject: [PATCH] commit --- .../com/budwk/app/base/sms/SmsService.java | 29 +++++++++++++++++ .../sms/impl/jshvc/SmsJshvcServiceImpl.java | 15 +++++++++ .../app/sys/controller/SysMsgController.java | 32 +++++++++++++++++++ .../com/budwk/app/sys/models/Sys_msg.java | 6 ++++ .../sys/services/impl/SysMsgServiceImpl.java | 10 +++--- .../sys/msg/msgManage/msgManageForm.js | 15 +++++++-- .../platform/sys/msg/msgManage/viewUser.js | 2 +- 7 files changed, 102 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/budwk/app/base/sms/SmsService.java b/src/main/java/com/budwk/app/base/sms/SmsService.java index 1a7b6f6..4281afe 100644 --- a/src/main/java/com/budwk/app/base/sms/SmsService.java +++ b/src/main/java/com/budwk/app/base/sms/SmsService.java @@ -69,6 +69,14 @@ public interface SmsService { */ void sendSinglePicTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl, String picUrl); + /** + * 群发普通消息(多人接收相同内容) + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 消息内容(必填) + * @return void + */ + void massSendMessage(List loginNames, String content); + /** * 群发普通消息(多人接收相同内容) * @param loginNames 接收人工号列表(必填,不能为空列表) @@ -78,6 +86,16 @@ public interface SmsService { */ void massSendMessage(List loginNames, String title, String content); + /** + * 群发短信文本卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @return + */ + void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl); + /** * 群发短信文本卡片消息 * @param loginNames 接收人工号列表(必填,不能为空列表) @@ -89,6 +107,17 @@ public interface SmsService { */ void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl); + /** + * 群发图文卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @param picUrl 图片链接(必填) + * @return + */ + void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl); + /** * 群发图文卡片消息 * @param loginNames 接收人工号列表(必填,不能为空列表) diff --git a/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java b/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java index 247bdab..f30ae47 100644 --- a/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java +++ b/src/main/java/com/budwk/app/base/sms/impl/jshvc/SmsJshvcServiceImpl.java @@ -60,6 +60,11 @@ public class SmsJshvcServiceImpl implements SmsService { this.massSendPicTextCard(List.of(loginName), title, content, pcUrl, mobileUrl, picUrl); } + @Override + public void massSendMessage(List loginNames, String content) { + this.massSendMessage(loginNames, "智慧工会", content); + } + @Override public void massSendMessage(List loginNames, String title, String content) { List list = loginNames.stream().map(loginName -> { @@ -70,6 +75,11 @@ public class SmsJshvcServiceImpl implements SmsService { this.doSend(WxSendType_Constants.TEXT, list, title, content, null, null, null); } + @Override + public void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl) { + this.massSendTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl); + } + @Override public void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl) { List list = loginNames.stream().map(loginName -> { @@ -80,6 +90,11 @@ public class SmsJshvcServiceImpl implements SmsService { this.doSend(WxSendType_Constants.TEXT_CARD, list, title, content, pcUrl, mobileUrl, null); } + @Override + public void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl) { + this.massSendPicTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl, picUrl); + } + @Override public void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl) { List list = loginNames.stream().map(loginName -> { diff --git a/src/main/java/com/budwk/app/sys/controller/SysMsgController.java b/src/main/java/com/budwk/app/sys/controller/SysMsgController.java index 0f538d0..16d31ff 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysMsgController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysMsgController.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.RepeatSubmit; import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; @@ -16,16 +17,23 @@ import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.services.SysMsgService; import com.budwk.app.sys.services.SysMsgUserService; import com.budwk.app.sys.services.SysUserService; +import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.club.model.ClubUser; +import com.budwk.app.zhgh.club.model.SysClub; +import com.budwk.app.zhgh.club.service.SysClubService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.Strings; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -47,6 +55,8 @@ public class SysMsgController { private SysMsgUserService sysMsgUserService; @Inject private SysUserService sysUserService; + @Inject + private SysClubService sysClubService; @At({"/", "/list/?"}) @Ok("beetl:/platform/sys/msg/index.html") @@ -197,6 +207,28 @@ public class SysMsgController { if (Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) { cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); } + + SqlExpressionGroup group = new SqlExpressionGroup(); + if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { + if(AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + group.or("u.unionId", "=", SecurityUtil.getUnionId()); + } + if(AuthUtil.hasRoleOr(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_MANAGER.name(),RoleConstant.CLUB_SECRETARY.name())) { + List myManageClub = sysClubService.getMyManageClub(); + if(Lang.isNotEmpty(myManageClub)) { + List list = myManageClub.stream().map(SysClub::getId).toList(); + List clubUsers = sysClubService.dao().query(ClubUser.class, Cnd.where(ClubUser::getClubId, "in", list)); + if(Lang.isNotEmpty(clubUsers)) { + List clubUserList = clubUsers.stream().map(ClubUser::getUserId).distinct().toList(); + group.or("u.id", "in", clubUserList); + } + } + } + } + if(!group.isEmpty()) { + cnd.and(group); + } + sql.setCondition(cnd); return Result.success().addData(sysUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql)); } catch (Exception e) { diff --git a/src/main/java/com/budwk/app/sys/models/Sys_msg.java b/src/main/java/com/budwk/app/sys/models/Sys_msg.java index a58497e..ebb7245 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_msg.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_msg.java @@ -57,6 +57,12 @@ public class Sys_msg extends BaseModel implements Serializable { @Many(field = "msgId") private List userList; + @Column + @Comment("同步企业微信") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean wechatEnterprise; + @Column @Comment("是否需要反馈") @ColDefine(type = ColType.BOOLEAN) 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 cf38b46..8026e68 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 @@ -105,10 +105,12 @@ public class SysMsgServiceImpl extends BaseServiceImpl implements SysMs // for (String loginName : loginNames) { // smsService.send(loginName, sysMsg.getTitle(), sysMsg.getNote()); // } - ThreadUtil.execute(() -> { - //smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); - }); - + if(sysMsg.getWechatEnterprise()) { + ThreadUtil.execute(() -> { + //smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); + smsService.massSendMessage(loginNames, HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),""))); + }); + } return sysMsg; } diff --git a/src/main/resources/views/platform/sys/msg/msgManage/msgManageForm.js b/src/main/resources/views/platform/sys/msg/msgManage/msgManageForm.js index c7fab10..5c989d1 100644 --- a/src/main/resources/views/platform/sys/msg/msgManage/msgManageForm.js +++ b/src/main/resources/views/platform/sys/msg/msgManage/msgManageForm.js @@ -7,6 +7,15 @@ const MSG_FORM_TEMPLATE = { + + +
+ (温馨提醒:如选择是,将会同步发送到企业微信,同时“链接地址”、“是否需要反馈”、“消息附件”可无需填写。) +
+ + + +
@@ -58,7 +67,7 @@ const MSG_FORM_TEMPLATE = {
- + @@ -136,6 +145,7 @@ const MSG_FORM_TEMPLATE = { title: [{ required: true, message: "必填", trigger: ["blur", "change"] }], note: [{ required: true, message: "必填", trigger: ["blur", "change"] }], needBack: [{ required: true, message: "必填", trigger: ["blur", "change"] }], + wechatEnterprise: [{ required: true, message: "必填", trigger: ["blur", "change"] }], type: [{ required: true, message: "必填", trigger: ["blur", "change"] }] }, selectDialogVisible: false, @@ -216,7 +226,8 @@ const MSG_FORM_TEMPLATE = { this.formData = { id: "", type: "user", - needBack: false + needBack: false, + wechatEnterprise: false, } if (this.$refs["addForm"]) this.$refs["addForm"].resetFields() }, diff --git a/src/main/resources/views/platform/sys/msg/msgManage/viewUser.js b/src/main/resources/views/platform/sys/msg/msgManage/viewUser.js index 8d9a60e..f245687 100644 --- a/src/main/resources/views/platform/sys/msg/msgManage/viewUser.js +++ b/src/main/resources/views/platform/sys/msg/msgManage/viewUser.js @@ -3,7 +3,7 @@ const VIEW_USER_TEMPLATE = {
- +