Commit 44251279 by 郑永强

合并早晚报消息

parent 14343e0c
......@@ -89,6 +89,9 @@ public class AdNewsBizImpl implements AdNewsBiz {
private static final String AD_EVENING_NEWS_SCHEDULE_PRE = "AD_EVENING_NEWS_SCHEDULE_";
// 发送消息的长度限制
private static final Integer SEND_MESSAGE_LENGTH=300;
@Value("${wechat.group.link.prefix}")
private String wechatGroupLinkPrefix;
......@@ -304,7 +307,7 @@ public class AdNewsBizImpl implements AdNewsBiz {
adNews.setShortUrl(UrlUtils.getShortUrl4Own(transferUrl));
}
}
// 将多条需要发送的早晚报拼接成300字符一组的消息
// 将多条需要发送的早晚报拼接成小于字数限制一组的消息
contents = this.concatContent(adNewsList);
// 将对应群的消息发送出去
this.sendAdNewsToWechatGroup(adNewsSet, new ArrayList<GroupQrcodeFoAdDTO>() {{
......@@ -393,6 +396,21 @@ public class AdNewsBizImpl implements AdNewsBiz {
if (StringUtil.isEmpty(robotId)) {
LOGGER.info("发送编辑端早晚报未找到小号" + weixinGroupId);
}
// 如果正文内容的长度小于1,说明文字少于限制数,那么就可以合并发送
if(contents.size()==1){
String temp = contents.get(0);
if (!StringUtil.isEmpty(startContent)) { temp = startContent.concat("\n").concat(temp); }
if (!StringUtil.isEmpty(endContent)) { temp = temp.concat("\n").concat(endContent); }
// 判断合并后的字数长度是否大于限制
if(temp.length() <= SEND_MESSAGE_LENGTH){
// 直接发送合并后的消息
sendAdNewsText(temp, robotId, weixinGroupId);
return;
}
}
if (!StringUtil.isEmpty(startContent)) {
//发送开场语
sendAdNewsText(startContent, robotId, weixinGroupId);
......@@ -428,10 +446,10 @@ public class AdNewsBizImpl implements AdNewsBiz {
}
/**
* 将内容拼接为300字符一条数据项的数组【微信目前单次消息发送字符长度为300
* 将内容拼接为 SEND_MESSAGE_LENGTH 字符一条数据项的数组【微信目前单次消息发送字符长度存在字数限制
* 拼接内容大致为
* 1.xxxxxxxxxxx 2.xxxxxxxxxx 3.xxxxxxxx 【假设此条数据加下一条数据【4.xxx】 就大于300字符,那就先将之前的存一条到数组】
* 4.xxxxx 5.xxxxxxx 【多余300字符再重新拼接,以此循环下去】
* 1.xxxxxxxxxxx 2.xxxxxxxxxx 3.xxxxxxxx 【假设此条数据加下一条数据【4.xxx】 就大于限制数,那就先将之前的存一条到数组】
* 4.xxxxx 5.xxxxxxx 【多余限制数的字符再重新拼接,以此循环下去】
*
* @param adNewsList
* @return
......@@ -442,8 +460,8 @@ public class AdNewsBizImpl implements AdNewsBiz {
int i = 1;
for (AdNews adNews : adNewsList) {
String temp = content + i + "." + adNews.getTitle() + adNews.getShortUrl() + "\n";
if (temp.length() >= 300) {
// 如果本次拼接后的长度大于 300,那么将之前拼接的内容存入数组
if (temp.length() >= SEND_MESSAGE_LENGTH) {
// 如果本次拼接后的长度大于限制数,那么将之前拼接的内容存入数组
contents.add(content);
// 重置 content 的内容
content = i + "." + adNews.getTitle() + adNews.getShortUrl() + "\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment