Commit 7178fbbd by 裴大威

feat 1001695 微信群关键词多于x时加推关键词列表

parent 2f5076af
......@@ -140,14 +140,6 @@ public class SendWeixinRequestTools {
if (ListUtils.isEmpty(replyMessages)) {
return;
}
StringBuilder sb = new StringBuilder();
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n");
for (KeywordDTO keyword : keywords) {
sb.append("【").append(keyword.getKeywords()).append("】 ");
}
}
StringBuilder groupKeyword = getGroupKeyword(dto, sb);
int i = 0;
for (ReplyMessageVO replyMessageVO : replyMessages) {
SendMessageDTO sendMessageDTO = new SendMessageDTO();
......@@ -158,6 +150,18 @@ public class SendWeixinRequestTools {
if (StringUtils.isNotEmpty(nickNameStr)) {
if (ReplyTypeEnum.TEXT.value.equals(sendMessageDTO.getReplyType())) {
String s = nickNameStr + " " + sendMessageDTO.getContent();
StringBuilder sb = new StringBuilder();
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n");
for (KeywordDTO keyword : keywords) {
// 关键词长度和欢迎语长度之和超过300会拆分成两条,若拆分之后关键词长度还是大于300则只发300以内的部分
if ((s.length() + sb.length()) >= 300 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 277) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】");
}
}
StringBuilder groupKeyword = getGroupKeyword(dto, sb);
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if (s.length() + groupKeyword.length() >= 300) {
sendMessageDTO.setContent(s);
......@@ -381,7 +385,10 @@ public class SendWeixinRequestTools {
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n");
for (KeywordDTO keyword : keywords) {
sb.append("【").append(keyword.getKeywords()).append("】 ");
if ((content.length() + sb.length()) >= 300 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 277) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】");
}
}
StringBuilder groupKeyword = getGroupKeyword(dto, sb);
......@@ -399,13 +406,13 @@ public class SendWeixinRequestTools {
sb.append("\n\n在群内回复以下关键词:\n");
}
if (dto.getReportOpen()) {
sb.append("【学习报告】 ");
sb.append("【学习报告】");
}
if (dto.getRiddleOpen()) {
sb.append("【猜谜语】 ");
sb.append("【猜谜语】");
}
if (dto.getClockOpen()) {
sb.append("【").append(dto.getClockKeyword()).append("】 ");
sb.append("【").append(dto.getClockKeyword()).append("】");
}
return sb;
}
......
......@@ -368,7 +368,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
}
//获取公众号基本信息
AccountSettingDto wechatInfo = qrcodeSceneConsr.getWechatInfo(classifyQrcodeInfo.getChannelId());
//获取关键词信息(改成10个了) 刘娜需求 1001282 群不推送关键词
//获取关键词信息(改成10个了,20190911周磊改成不限制了,但是开发要求必须要加限制,所以先限制40个) 刘娜需求 1001282 群不推送关键词
List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getBookGroupId());
Boolean isHaveKeywords = !ListUtils.isEmpty(keywords);
final Boolean groupRobot = wechatGroupConsr.isGroupRobot(robotId);
......
......@@ -430,7 +430,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
@Override
@ParamLog("获取5个关键词(改成10个了)")
@ParamLog("获取5个关键词(改成10个了,20190911周磊改成不限制了,但是开发要求必须要加限制,所以先限制40个)")
public List<KeywordDTO> listFiveKeyword(Long classifyId, Long bookGroupId) {
//获取是否单独设置关键词
List<KeywordDTO> keywords = bookKeywordDao.listFiveKeyword(classifyId, bookGroupId);
......@@ -569,7 +569,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
log.info("[关键词消息回复] redisContent:{} insertBookKeywordRecord return", redisContent);
return true;
} else {
JedisClusterUtils.setJson("BOOK:KEYWORD:" + weixinGroupId + "-" + replyKeywordDTO.getKeywordId(), replyKeywordDTO.getKeywordId(), 30);
// 60s不回复同一关键词 20190916降低消息量方案之一
JedisClusterUtils.setJson("BOOK:KEYWORD:" + weixinGroupId + "-" + replyKeywordDTO.getKeywordId(), replyKeywordDTO.getKeywordId(), 60);
insertBookKeywordRecord(dto, replyKeywordDTO.getKeywordId(), userWxId, weixinGroupId, true);
}
return false;
......@@ -627,7 +628,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
replyKeywordDTO.setLinkUrl(linkUrl);
}
String redisContent = JedisClusterUtils.getJson("BOOK:KEYWORD:" + weixinGroupId + "-" + replyKeywordDTO.getKeywordId(), String.class);
// 同一群10秒内不回复同一关键词
// 同一群10秒内不回复同一关键词,60s不回复同一关键词 20190916降低消息量方案之一
if (insertBookKeywordRecord(weixinGroupId, userWxId, replyKeywordDTO, classifyQrcodeInfo, redisContent)) {
return;
}
......
......@@ -149,7 +149,7 @@
AND
k.is_delete = 0
AND classify_id = #{classifyId}
AND book_group_id = #{bookGroupId} order by bk.rank, bk.id desc limit 10
AND book_group_id = #{bookGroupId} order by bk.rank, bk.id desc limit 40
</select>
<select id="getKeywordId" resultType="ReplyKeywordDTO" parameterType="map">
......
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