Commit 1ffad909 by 裴大威

feat edit msg frequency

parent 3242cb51
......@@ -25,6 +25,7 @@ import com.sdk.wxgroup.WxGroupSDK;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Iterator;
......@@ -133,11 +134,19 @@ public class SendWeixinRequestTools {
}
@ParamLog("发送欢迎语消息")
public static void sendGuideMessage(List<ReplyMessageVO> replyMessages, String robotId, String weixinGroupId, String ip, Integer code) {
public static void sendGuideMessage(List<ReplyMessageVO> replyMessages, String robotId, String weixinGroupId, Boolean isGroupRobot, List<KeywordDTO> keywords, String ip, Integer code) {
//JedisClusterUtils.del("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId);
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("】 ");
}
sb.append(",领取任务或资源");
}
int i = 0;
for (ReplyMessageVO replyMessageVO : replyMessages) {
SendMessageDTO sendMessageDTO = new SendMessageDTO();
......@@ -147,9 +156,14 @@ public class SendWeixinRequestTools {
LOGGER.info("发送欢迎语" + nickNameStr);
if (StringUtils.isNotEmpty(nickNameStr)) {
if (ReplyTypeEnum.TEXT.value.equals(sendMessageDTO.getReplyType())) {
sendMessageDTO.setContent(nickNameStr + " " + sendMessageDTO.getContent());
sendMessageDTO.setContent(nickNameStr + " " + sendMessageDTO.getContent() + sb.toString());
} else {
sendAtMessage(nickNameStr, robotId, weixinGroupId, ip);
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(nickNameStr);
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setWxGroupId(weixinGroupId);
sendTextMessageVO.setIp(ip);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
}
}
......@@ -191,16 +205,16 @@ public class SendWeixinRequestTools {
}
}
private static void sendAtMessage(String nickNameStr,String robotId,String weixinGroupId, String ip){
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(nickNameStr);
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setWxGroupId(weixinGroupId);
sendTextMessageVO.setIp(ip);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
// private static void sendAtMessage(String nickNameStr,String robotId,String weixinGroupId, String ip){
//
// SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
// sendTextMessageVO.setContent(nickNameStr);
// sendTextMessageVO.setAltId(robotId);
// sendTextMessageVO.setWxGroupId(weixinGroupId);
// sendTextMessageVO.setIp(ip);
// WxGroupSDK.sendTextMessage(sendTextMessageVO);
//
// }
private static String addLinkParam(String url, Long groupQrcodeId, Long classifyId, Long bookGroupId) {
if (StringUtil.isEmpty(url)) {
......@@ -340,21 +354,28 @@ public class SendWeixinRequestTools {
// WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
public static void sendDefaultMessage(String groupName, String robotId, String weixinGroupId, Boolean isHaveKeywords, String ip) {
String content = getNickNameStr(weixinGroupId);
public static void sendDefaultMessage(String groupName, String robotId, String weixinGroupId, Boolean isHaveKeywords, Boolean isGroupRobot, List<KeywordDTO> keywords, String ip) {
StringBuilder content = new StringBuilder(getNickNameStr(weixinGroupId));
if (StringUtil.isEmpty(groupName)) {
content += " 欢迎加入本群!";
content.append(" 欢迎加入本群!");
} else {
content += " 欢迎加入" + groupName + "!";
content.append(" 欢迎加入").append(groupName).append("!");
}
if(isHaveKeywords){
content = content + "本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。在群内回复以下关键词领取任务或资源:";
// content = content + "本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。在群内回复以下关键词领取任务或资源:";
content.append("本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。\n\n在群内回复以下关键词:\n");
}
sendTextMessage(content, robotId, weixinGroupId, ip);
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
for (KeywordDTO keyword : keywords) {
content.append("【").append(keyword.getKeywords()).append("】 ");
}
}
content.append(",领取任务或资源");
sendTextMessage(content.toString(), robotId, weixinGroupId, ip);
}
private static String getNickNameStr(String weixinGroupId) {
String nameStr = "";
StringBuilder nameStr = new StringBuilder();
Map<String, Integer> nickNames = JedisClusterUtils.getJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, Map.class);
int i = 0;
List<String> names = new ArrayList<>();
......@@ -371,11 +392,11 @@ public class SendWeixinRequestTools {
for (String nickName : names) {
nickNames.remove(nickName);
if (StringUtils.isNotEmpty(nickName)) {
nameStr = nameStr + "@" + nickName + " ";
nameStr.append("@").append(nickName).append(" ");
}
}
JedisClusterUtils.setJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, nickNames, 600);
return nameStr;
return nameStr.toString();
}
@ParamLog("欢迎语中推送关键词信息")
......
......@@ -376,50 +376,21 @@ public class BookGuideBizImpl implements BookGuideBiz {
GroupQrcodeBaseInfoVO groupInfo = groupQrcodeBiz.getBaseById(classifyQrcodeInfo.getGroupQrcodeId());
//推送消息 刘娜需求 1001282 群不推送关键词
// 若非之前的机器人则不回复普通关键词
SendWeixinRequestTools.sendDefaultMessage(groupInfo == null ? "" : groupInfo.getGroupName(), robotId, weixinGroupId, isHaveKeywords, pushAddUserMessageDTO.getIp());
SendWeixinRequestTools.sendDefaultMessage(groupInfo == null ? "" : groupInfo.getGroupName(), robotId, weixinGroupId, isHaveKeywords, groupRobot, keywords, pushAddUserMessageDTO.getIp());
} else {
//处理链接
handleUrl(replyMessages, wechatInfo, classifyQrcodeInfo);
//推送消息
SendWeixinRequestTools.sendGuideMessage(replyMessages, robotId, weixinGroupId, pushAddUserMessageDTO.getIp(), SendMessageTypeEnum.GROUP.getCode());
SendWeixinRequestTools.sendGuideMessage(replyMessages, robotId, weixinGroupId, groupRobot, keywords, pushAddUserMessageDTO.getIp(), SendMessageTypeEnum.GROUP.getCode());
//新增欢迎语应用触发记录
addGuideAppTouchRecord(replyMessages,weixinGroupId,classifyQrcodeInfo.getBookGroupId(),classifyQrcodeInfo.getClassifyId());
}
//获取关键词信息(改成10个了)刘娜需求 1001282 群不推送关键词
if (groupRobot) {
SendWeixinRequestTools.sendKeywordsInfo(keywords, robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
}
//如果设置了群学习报告,加一个群学习报告的关键词
pushLearningReport(classifyQrcodeInfo,robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
if (bookGuide != null && bookGuide.getIsRecommend() != null && bookGuide.getIsRecommend() == 1) {
//推送公众号消息
SendWeixinRequestTools.sendAccountMessage(weixinGroupId, bookGuide.getRecommendLanguage(), robotId, wechatInfo, pushAddUserMessageDTO.getIp());
}
//校验该群是否与微信群打卡有关
/*List<Long> bookClockInfoIdList = bookClockCheck.checkGroupIsClock(classifyQrcodeInfo);
if(!ListUtils.isEmpty(bookClockInfoIdList)){
Map<String,Object> paramMap = new HashMap<>();
int i = 0;
List<BookClockKeywordDTO> bookClockKeywordDTOList = new ArrayList<>();
for (Long bookClockInfoId:bookClockInfoIdList) {
i++;
if(i >= 5){
break;
}
paramMap.put("bookClockInfoId",bookClockInfoId);
List<BookClockKeywordDTO> bookClockKeywordDTOS = bookClockKeywordDao.getKeywordsByInfoId(paramMap);
bookClockKeywordDTOList.addAll(bookClockKeywordDTOS);
if(i%2 == 0){
log.info("欢迎语中推送关键词信息,bookClockKeywordDTOList="+bookClockKeywordDTOList);
SendWeixinRequestTools.sendClockKeywordsInfo(bookClockKeywordDTOList, robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
bookClockKeywordDTOList.clear();
}else if(i == bookClockInfoIdList.size()){
SendWeixinRequestTools.sendClockKeywordsInfo(bookClockKeywordDTOList, robotId, weixinGroupId, pushAddUserMessageDTO.getIp());
bookClockKeywordDTOList.clear();
}
}
}*/
}
@ParamLog("推关学习报告/猜谜语关键词消息")
......
......@@ -545,7 +545,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
log.info("[关键词消息回复] redisContent:{} insertBookKeywordRecord return", redisContent);
return true;
} else {
JedisClusterUtils.setJson("BOOK:KEYWORD:" + weixinGroupId + "-" + replyKeywordDTO.getKeywordId(), replyKeywordDTO.getKeywordId(), 10);
JedisClusterUtils.setJson("BOOK:KEYWORD:" + weixinGroupId + "-" + replyKeywordDTO.getKeywordId(), replyKeywordDTO.getKeywordId(), 30);
insertBookKeywordRecord(dto, replyKeywordDTO.getKeywordId(), userWxId, weixinGroupId, true);
}
return false;
......
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