Commit 4d78f867 by 裴大威

Merge branch 'feature-lz-1001822' into 'master'

修改欢迎语

See merge request rays/pcloud-book!193
parents f0680452 0a0994b8
...@@ -336,47 +336,8 @@ public class SendWeixinRequestTools { ...@@ -336,47 +336,8 @@ public class SendWeixinRequestTools {
content.append("本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。"); content.append("本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。");
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean isOld = true; boolean isOld = createGuideMessageBase(isGroupRobot, keywords, classifyQrcodeInfo, sb, dto.getAccountSettingDto(), content.length());
boolean haveKeyword = !CollectionUtils.isEmpty(keywords) && isGroupRobot; StringBuilder groupKeyword = createGroupKeyword(keywordStatusDTO, classifyQrcodeInfo, sb, isOld, dto.getAccountSettingDto());
if (haveKeyword) {
List<KeywordDTO> collect = keywords.stream()
.filter(p -> (ReplyTypeEnum.IMAGE.value.equals(p.getReplyType()) || ReplyTypeEnum.TEXT.value.equals(p.getReplyType())))
.collect(Collectors.toList());
// 1001745 包含图片和文字则不合并关键词详情,其他情况走之前的模式
if (CollectionUtils.isEmpty(collect)){
isOld = false;
sb.append("\n\n本群配有以下资源服务,戳链接立即获取:\n");
for (KeywordDTO keyword : keywords) {
if (sb.length() + (keyword.getKeywords() + "\n").length() >= 730) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】\n");
if (ReplyTypeEnum.LINK.value.equals(keyword.getReplyType()) || ReplyTypeEnum.APP.value.equals(keyword.getReplyType())) {
String linkUrl = SendWeixinRequestTools.splitUrlNew(dto.getAccountSettingDto(), keyword.getLinkUrl(), classifyQrcodeInfo.getBookGroupId(), classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getGroupQrcodeId());
sb.append(" ").append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n\n");
}
}
} else {
sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n");
for (KeywordDTO keyword : keywords) {
if ((content.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 892) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】");
}
}
}
// 运营关键词
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb, isOld);
if (haveKeyword && !isOld) {
groupKeyword.append("后续也可以回复【】里的关键词,再次领取");
}
// 拼接反馈链接
AccountSettingDto accountSettingDto = dto.getAccountSettingDto();
String feedbackUrl = "*common/C"+classifyQrcodeInfo.getChannelId()+"/A0/feedback/suggest?groupQrcodeId=" + classifyQrcodeInfo.getGroupQrcodeId();
String url = splitUrl(accountSettingDto, feedbackUrl);
LOGGER.info("发送欢迎语反馈链接feedbackUrl:{}, url:{}", feedbackUrl, url);
groupKeyword.append("\n\n群资源与书上介绍不符?点这里反馈\n->").append(UrlUtils.getShortUrl4Own(url));
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发 // 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if ((content.length() + sb.length()) >= 1000) { if ((content.length() + sb.length()) >= 1000) {
sendTextMessage(content.toString(), robotId, weixinGroupId, ip); sendTextMessage(content.toString(), robotId, weixinGroupId, ip);
...@@ -386,7 +347,6 @@ public class SendWeixinRequestTools { ...@@ -386,7 +347,6 @@ public class SendWeixinRequestTools {
} }
} }
@ParamLog("发送欢迎语消息") @ParamLog("发送欢迎语消息")
public static void sendGuideMessage(SendGuideMessageDTO dto) { public static void sendGuideMessage(SendGuideMessageDTO dto) {
if (Objects.isNull(dto) || CollectionUtils.isEmpty(dto.getReplyMessages())) { if (Objects.isNull(dto) || CollectionUtils.isEmpty(dto.getReplyMessages())) {
...@@ -412,70 +372,78 @@ public class SendWeixinRequestTools { ...@@ -412,70 +372,78 @@ public class SendWeixinRequestTools {
if (ReplyTypeEnum.TEXT.value.equals(sendMessageDTO.getReplyType())) { if (ReplyTypeEnum.TEXT.value.equals(sendMessageDTO.getReplyType())) {
String s = nickNameStr + " " + sendMessageDTO.getContent(); String s = nickNameStr + " " + sendMessageDTO.getContent();
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean isOld = createGuideMessageBase(isGroupRobot, keywords, classifyQrcodeInfo, sb, dto.getAccountSettingDto(), s.length());
StringBuilder groupKeyword = createGroupKeyword(keywordStatusDTO, classifyQrcodeInfo, sb, isOld, dto.getAccountSettingDto());
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if (s.length() + groupKeyword.length() >= 1000) {
sendMessageDTO.setContent(s);
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
sendMessageDTO.setContent(groupKeyword.toString().replaceFirst("\n\n", ""));
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
i++;
continue;
} else {
sendMessageDTO.setContent(s + groupKeyword.toString());
}
} else {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(nickNameStr);
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setWxGroupId(weixinGroupId);
sendTextMessageVO.setIp(ip);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
// }
}
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
i++;
}
}
private static boolean createGuideMessageBase(Boolean isGroupRobot, List<KeywordDTO> keywords, GroupClassifyQrcodeDTO classifyQrcodeInfo, StringBuilder sb, AccountSettingDto accountSettingDto, int length) {
boolean isOld = true; boolean isOld = true;
boolean haveKeyword = !CollectionUtils.isEmpty(keywords) && isGroupRobot; boolean haveKeyword = !CollectionUtils.isEmpty(keywords) && isGroupRobot;
if (haveKeyword) { if (haveKeyword) {
List<KeywordDTO> collect = keywords.stream() List<KeywordDTO> collect = keywords.stream()
.filter(p -> (ReplyTypeEnum.IMAGE.value.equals(p.getReplyType()) || ReplyTypeEnum.TEXT.value.equals(p.getReplyType()))) .filter(p -> (ReplyTypeEnum.IMAGE.value.equals(p.getReplyType()) || ReplyTypeEnum.TEXT.value.equals(p.getReplyType())))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 1001745 包含图片则不合并关键词详情 // 1001745 包含图片和文字则不合并关键词详情,其他情况走之前的模式
if (CollectionUtils.isEmpty(collect)){ if (CollectionUtils.isEmpty(collect)) {
isOld = false; isOld = false;
sb.append("\n\n本群配有以下资源服务,戳链接立即获取:\n"); sb.append("\n\n本群配有以下资源服务,戳链接或回复相应关键词立即获取:\n");
for (KeywordDTO keyword : keywords) { for (KeywordDTO keyword : keywords) {
if (sb.length() + (keyword.getKeywords() + "\n").length() >= 730) { if (sb.length() + (keyword.getKeywords() + "\n").length() >= 730) {
break; break;
} }
sb.append("【").append(keyword.getKeywords()).append("】\n"); sb.append("关键词:").append(keyword.getKeywords()).append("\n");
if (ReplyTypeEnum.LINK.value.equals(keyword.getReplyType()) || ReplyTypeEnum.APP.value.equals(keyword.getReplyType())) { if (ReplyTypeEnum.LINK.value.equals(keyword.getReplyType()) || ReplyTypeEnum.APP.value.equals(keyword.getReplyType())) {
String linkUrl = SendWeixinRequestTools.splitUrlNew(dto.getAccountSettingDto(), keyword.getLinkUrl(), classifyQrcodeInfo.getBookGroupId(), classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getGroupQrcodeId()); String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, keyword.getLinkUrl(), classifyQrcodeInfo.getBookGroupId(), classifyQrcodeInfo.getClassifyId(), classifyQrcodeInfo.getGroupQrcodeId());
sb.append(" ").append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n\n"); sb.append(" ").append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n\n");
} }
} }
} else { } else {
sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n"); sb.append("\n\n在群内回复以下关键词,领取任务或资源:\n");
for (KeywordDTO keyword : keywords) { for (KeywordDTO keyword : keywords) {
if ((s.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 892) { if ((length + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 892) {
break; break;
} }
sb.append("【").append(keyword.getKeywords()).append("】"); sb.append("【").append(keyword.getKeywords()).append("】");
} }
} }
} }
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb, isOld); return isOld;
if (haveKeyword && !isOld) {
groupKeyword.append("后续也可以回复【】里的关键词,再次领取");
} }
private static StringBuilder createGroupKeyword(KeywordStatusDTO keywordStatusDTO, GroupClassifyQrcodeDTO classifyQrcodeInfo, StringBuilder sb, boolean isOld, AccountSettingDto accountSettingDto) {
// 运营关键词
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb, isOld);
// 拼接反馈链接 // 拼接反馈链接
AccountSettingDto accountSettingDto = dto.getAccountSettingDto(); String feedbackUrl = "*common/C" + classifyQrcodeInfo.getChannelId() + "/A0/feedback/suggest?groupQrcodeId=" + classifyQrcodeInfo.getGroupQrcodeId();
String feedbackUrl = "*common/C"+classifyQrcodeInfo.getChannelId()+"/A0/feedback/suggest?groupQrcodeId=" + classifyQrcodeInfo.getGroupQrcodeId();
String url = splitUrl(accountSettingDto, feedbackUrl); String url = splitUrl(accountSettingDto, feedbackUrl);
LOGGER.info("发送欢迎语反馈链接feedbackUrl:{}, url:{}", feedbackUrl, url); LOGGER.info("发送欢迎语反馈链接feedbackUrl:{}, url:{}", feedbackUrl, url);
groupKeyword.append("\n\n群资源与书上介绍不符?点这里反馈\n->").append(UrlUtils.getShortUrl4Own(url)); groupKeyword.append("\n\n群资源与书上介绍不符?点这里反馈\n->").append(UrlUtils.getShortUrl4Own(url));
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发 return groupKeyword;
if (s.length() + groupKeyword.length() >= 1000) {
sendMessageDTO.setContent(s);
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
sendMessageDTO.setContent(groupKeyword.toString().replaceFirst("\n\n", ""));
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
i++;
continue;
} else {
sendMessageDTO.setContent(s + groupKeyword.toString());
}
} else {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(nickNameStr);
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setWxGroupId(weixinGroupId);
sendTextMessageVO.setIp(ip);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
// }
}
sendMessage(sendMessageDTO, robotId, weixinGroupId, ip, code);
i++;
}
} }
/** /**
...@@ -486,36 +454,50 @@ public class SendWeixinRequestTools { ...@@ -486,36 +454,50 @@ public class SendWeixinRequestTools {
* @return 最终发送内容 * @return 最终发送内容
*/ */
private static StringBuilder getGroupKeyword(KeywordStatusDTO dto, StringBuilder sb, Boolean isOld) { private static StringBuilder getGroupKeyword(KeywordStatusDTO dto, StringBuilder sb, Boolean isOld) {
if (!sb.toString().contains("【") && (dto.getClockOpen() || dto.getRiddleOpen() || dto.getReportOpen())) { String currentContent = sb.toString();
if (!currentContent.contains("关键词") && (dto.getClockOpen() || dto.getRiddleOpen() || dto.getReportOpen())) {
// 检查是否包含关键词
sb.append("\n\n在群内回复以下关键词:\n"); sb.append("\n\n在群内回复以下关键词:\n");
} }
if (dto.getReportOpen()) {
if(isOld) {
// 旧流程直接输出关键词, 不用考虑换行问题
if(dto.getReportOpen()) {
sb.append("【学习报告】"); sb.append("【学习报告】");
if (!isOld) {
sb.append("\n回复学习报告,获取个人学习报告,与群成员PK元气值\n\n");
} }
if(dto.getRiddleOpen()) {
sb.append("【猜谜语】");
} }
if (dto.getRiddleOpen()) { if(dto.getClockOpen()) {
if (!isOld && !sb.toString().contains("【学习报告】")) { sb.append("【").append(dto.getClockKeyword()).append("】");
sb.append("\n");
} }
sb.append("【猜谜语】");
if (!isOld) {
sb.append("\n回复猜谜语,开启群游戏,连续答对5题,所有群成员可获得精美礼券\n\n");
} }
else {
//新流程在每个关键词开头检查前面是否有关键词输出, 并决定是否需要添加空行
boolean hasItem = false;
if(dto.getReportOpen()) {
sb.append("关键词:学习报告\n回复学习报告,获取个人学习报告,与群成员PK元气值");
hasItem = true;
} }
if (dto.getClockOpen()) { if(dto.getRiddleOpen()) {
if (!isOld && !sb.toString().contains("【学习报告】") && !sb.toString().contains("【猜谜语】")) { addEmptyLineWhenHasItem(hasItem,sb);
sb.append("\n"); sb.append("关键词:猜谜语\n回复猜谜语,开启群游戏,连续答对5题,所有群成员可获得精美礼券");
hasItem = true;
} }
sb.append("【").append(dto.getClockKeyword()).append("】"); if(dto.getClockOpen()) {
if (!isOld) { addEmptyLineWhenHasItem(hasItem,sb);
sb.append("\n").append(dto.getClockGuide()).append("\n\n"); sb.append("关键词:").append(dto.getClockKeyword()).append("\n").append(dto.getClockGuide());
} }
} }
return sb; return sb;
} }
private static void addEmptyLineWhenHasItem(boolean hasItem, StringBuilder sb) {
if(hasItem){
sb.append("\n\n");
}
}
private static String getNickNameStr(String weixinGroupId) { private static String getNickNameStr(String weixinGroupId) {
StringBuilder nameStr = new StringBuilder(); StringBuilder nameStr = new StringBuilder();
Map<String, Integer> nickNames = JedisClusterUtils.getJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, Map.class); Map<String, Integer> nickNames = JedisClusterUtils.getJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, Map.class);
......
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