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 d49621f..1a7b6f6 100644 --- a/src/main/java/com/budwk/app/base/sms/SmsService.java +++ b/src/main/java/com/budwk/app/base/sms/SmsService.java @@ -100,4 +100,11 @@ public interface SmsService { * @return */ void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl); + + /** + * 消息撤回 + * @param msgId 消息Id + * @return + */ + void recallMsg(String msgId); } 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 3e39fe6..247bdab 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 @@ -8,6 +8,8 @@ import com.wisedu.casp.sdk.api.mc.SendMsgResponse; import com.wisedu.casp.sdk.api.mc.constants.MsgType_Constants; import com.wisedu.casp.sdk.api.mc.constants.SendType_Constants; import com.wisedu.casp.sdk.api.mc.constants.WxSendType_Constants; +import com.wisedu.casp.sdk.api.mc.recallMsg.RecallMsgRequest; +import com.wisedu.casp.sdk.api.mc.recallMsg.RecallMsgResponse; import com.wisedu.casp.sdk.core.Client; import com.wisedu.casp.sdk.core.DefaultClient; import lombok.extern.slf4j.Slf4j; @@ -28,55 +30,6 @@ import java.util.List; @IocBean public class SmsJshvcServiceImpl implements SmsService { - private void doSend(String sendType, - List receivers, - String title, - String content, - String pcUrl, - String mobileUrl, - String picUrl) { - - if (Lang.isEmpty(receivers)) { - log.error("send fail by receivers is null"); - return; - } - try { - // 创建客户端 - Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); - SendMsgRequest request = new SendMsgRequest(); - request.setSubject(title); - request.setContent(content); - request.setMsgType(MsgType_Constants.COMMON); - request.setSendType(SendType_Constants.WECHAT_ENTERPRISE); - request.setWxSendType(sendType); - request.setReceivers(receivers); - - if (WxSendType_Constants.TEXT_CARD.equals(sendType)) { - request.setPcUrl(pcUrl); - request.setMobileUrl(mobileUrl); - request.setUrlDesc("点击查看详情"); - } - if (WxSendType_Constants.NEWS.equals(sendType)) { - request.setPcUrl(pcUrl); - request.setMobileUrl(mobileUrl); - request.setUrlDesc("点击查看详情"); - request.setQyWeChatImgUrl(picUrl); - } - - log.info("发送企业微信通知,请求参数:{}", Json.toJson(request)); - SendMsgResponse response = client.execute(request); - log.info("发送企业微信通知,接口响应数据:{}", Json.toJson(response)); - - if (response.isSuccess() && response.getStatus() == 200) { - log.info("发送企业微信通知成功: {}, msg: {}", response.getStatus(), response.getMsg()); - } else { - log.info("发送企业微信通知失败:{}", response.getMsg()); - } - } catch (Exception e) { - log.error("发送企业微信通知失败", e); - } - } - @Override public void sendSingleMessage(String loginName, String content) { this.sendSingleMessage(loginName, "智慧工会", content); @@ -136,4 +89,70 @@ public class SmsJshvcServiceImpl implements SmsService { }).toList(); this.doSend(WxSendType_Constants.NEWS, list, title, content, pcUrl, mobileUrl, picUrl); } + + @Override + public void recallMsg(String msgId) { + try { + Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); + RecallMsgRequest request = new RecallMsgRequest(); + request.setMsgId(msgId); + + log.info("撤回企业微信消息,请求参数:{}", Json.toJson(request)); + RecallMsgResponse response = client.execute(request); + log.info("撤回企业微信消息,接口响应数据:{}", Json.toJson(response)); + } catch (Exception e) { + log.error("撤回企业微信消息失败", e); + } + } + + private void doSend(String sendType, + List receivers, + String title, + String content, + String pcUrl, + String mobileUrl, + String picUrl) { + + if (Lang.isEmpty(receivers)) { + log.error("send fail by receivers is null"); + return; + } + try { + // 创建客户端 + Client client = new DefaultClient(TodoPlatformConfig.TODO_PLATFORM_BASE_URL, TodoPlatformConfig.TODO_APP_ID, TodoPlatformConfig.TODO_APP_SECRET); + SendMsgRequest request = new SendMsgRequest(); + request.setSubject(title); + request.setContent(content); + request.setMsgType(MsgType_Constants.COMMON); + request.setSendType(SendType_Constants.WECHAT_ENTERPRISE); + request.setWxSendType(sendType); + request.setReceivers(receivers); + + if (WxSendType_Constants.TEXT_CARD.equals(sendType)) { + request.setPcUrl(pcUrl); + request.setMobileUrl(mobileUrl); + request.setUrlDesc("查看详情"); + } + if (WxSendType_Constants.NEWS.equals(sendType)) { + request.setPcUrl(pcUrl); + request.setMobileUrl(mobileUrl); + request.setUrlDesc("查看详情"); + request.setQyWeChatImgUrl(picUrl); + } + + log.info("发送企业微信通知,请求参数:{}", Json.toJson(request)); + SendMsgResponse response = client.execute(request); + log.info("发送企业微信通知,接口响应数据:{}", Json.toJson(response)); + + if (response.isSuccess() && response.getStatus() == 200) { + // TODO 消息Id,后面可以存着,撤回要用到 + String msgId = response.getMsgId(); + log.info("发送企业微信通知成功: {}, msg: {}", response.getStatus(), response.getMsg()); + } else { + log.info("发送企业微信通知失败:{}", response.getMsg()); + } + } catch (Exception e) { + log.error("发送企业微信通知失败", e); + } + } } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java index 388aec1..da465e9 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java @@ -82,6 +82,6 @@ public class WechatEnterpriseMessageSendStrategy implements GlobalMessageSendStr return; } List list = users.stream().map(Sys_user::getLoginname).toList(); - smsService.massSendTextCard(list, title, content, config.getStr("pcUrl"), config.getStr("mobileUrl")); + smsService.massSendTextCard(list, "智慧工会", content, config.getStr("pcUrl"), config.getStr("mobileUrl")); } }