Commit f45d1464 by 裴大威

Merge branch 'fix-pcloudAgentRecord' into 'master'

bug 1020214 解决小睿出版社收录无响应的问题

See merge request rays/pcloud-book!381
parents 7394cd54 de3cc30f
......@@ -547,44 +547,46 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
//判断是否是平台端配置的小号,如果是,走平台端
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(sendTextDTO.getWxId());
if (pcloudRobot!=null){
// 小睿对话索要出版社信息
boolean _continue = replySelfKeywordTemplate(sendTextDTO);
// 判断是否需要继续走下去
if(!_continue) { return; }
sendPcloudKeyword(sendTextDTO,pcloudRobot);
return;
}
if (SendMessageTypeEnum.SELF.getCode().equals(sendTextDTO.getCode())) {
// 小睿对话索要出版社信息
boolean _continue = replySelfKeywordTemplate(sendTextDTO);
if(_continue) {
dealBookGroupCipher(sendTextDTO);
//判断是否为某个群分类名称
inviteToGroupByKeyword(sendTextDTO);
//智能机器人新版个人号回复
dealSelfShortBookName(sendTextDTO);
//回复关键词
replySelfKeyword(sendTextDTO);
}
dealBookGroupCipher(sendTextDTO);
//判断是否为某个群分类名称
inviteToGroupByKeyword(sendTextDTO);
//智能机器人新版个人号回复
dealSelfShortBookName(sendTextDTO);
//回复关键词
replySelfKeyword(sendTextDTO);
}
}
@ParamLog("小睿根据书名推送匹配的资源")
private boolean replySelfKeywordTemplate(SendTextDTO sendTextDTO) {
String content = sendTextDTO.getTextContent();
String redisKey = "replySelfKeywordTemplate:"+sendTextDTO.getWxId()+":"+sendTextDTO.getWechatUserId();
List<SelfRobotKeywordReplyTemplate> replyTemplateList = selfRobotKeywordReplyTemplateDao.getList();
// 解析出《》的书名
Pattern pattern = Pattern.compile("《(.*?)》");
Matcher matcher = pattern.matcher(content);
// 如果匹配不到,在匹配出版社
if (!matcher.find() || matcher.group(1).trim().isEmpty()) {
// 解析出版社 出版社:
int index = content.indexOf("出版社:");
// 再匹配不到,直接返回,并走接下来的逻辑
if(index == -1) {
index = content.indexOf("出版社:");
if(index == -1)
return true;
}
String agentName = content.substring(index + 4);
if(StringUtil.isNotNull(agentName)){
try {
String content = sendTextDTO.getTextContent();
String redisKey = "replySelfKeywordTemplate:"+sendTextDTO.getWxId()+":"+sendTextDTO.getWechatUserId();
List<SelfRobotKeywordReplyTemplate> replyTemplateList = selfRobotKeywordReplyTemplateDao.getList();
// 解析出《》的书名
Pattern pattern = Pattern.compile("《(.*?)》");
Matcher matcher = pattern.matcher(content);
// 如果匹配不到,在匹配出版社
if (!matcher.find() || matcher.group(1).trim().isEmpty()) {
// 解析出版社 出版社:
int index = content.indexOf("出版社:");
// 再匹配不到,直接返回,并走接下来的逻辑
if(index == -1) {
index = content.indexOf("出版社:");
if(index == -1)
return true;
}
String agentName = content.substring(index + 4);
// 如果出版社名称为空,则直接return走非关键逻辑
if(StringUtil.isEmpty(agentName)){ return true; }
// 从redis取出书名
String bookName = JedisClusterUtils.get(redisKey);
// 删掉书名
......@@ -601,51 +603,56 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(2)).findFirst();
sendText(sendTextDTO, replyTemplate.get().getReplyContentTemplate());
return false;
}
}
String bookName = matcher.group(1).trim();
// 根据书名查询到 bookIds
List<Long> bookIds = bookDao.getBookIdsByBookName(bookName);
if(ListUtils.isEmpty(bookIds)){
// 将书名写入redis暂存
JedisClusterUtils.set(redisKey, bookName);
// 如果bookIds没有值,则回复模板状态3
// 呃,小睿刚才仔细的找了下,发现书刊的配套资源我这边还没有呢,要不等小睿看完整理好后再给你吧
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(3)).findFirst();
sendText(sendTextDTO, replyTemplate.get().getReplyContentTemplate().replace("${bookName}",bookName));
} else {
// 根据bookIds查询资源数;
Integer totalCount = channelConsr.getMessageCountByBookIds(bookIds);
if(totalCount > 0){
// 信息录入
SelfRobotBookRecord selfRobotBookRecord = new SelfRobotBookRecord();
selfRobotBookRecord.setWxUserId(sendTextDTO.getWechatUserId());
selfRobotBookRecord.setAltId(sendTextDTO.getWxId());
selfRobotBookRecord.setBookName(bookName);
selfRobotBookRecord.setStatus(3);
selfRobotBookRecordDao.insert(selfRobotBookRecord);
// 如果有书有资源,则转换链接,并推送链接给用户
Map<String,String> paramMap = new HashMap<>();
paramMap.put("wxId",sendTextDTO.getWechatUserId());
paramMap.put("robotWxId",sendTextDTO.getWxId());
paramMap.put("bookName",URLEncoder.encode(bookName));
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(4)).findFirst();
sendText(sendTextDTO,appendUrlParams(replyTemplate.get().getReplyContentTemplate(),paramMap));
} else{
// 信息录入
SelfRobotBookRecord selfRobotBookRecord = new SelfRobotBookRecord();
selfRobotBookRecord.setWxUserId(sendTextDTO.getWechatUserId());
selfRobotBookRecord.setAltId(sendTextDTO.getWxId());
selfRobotBookRecord.setBookName(bookName);
selfRobotBookRecord.setStatus(1);
selfRobotBookRecordDao.insert(selfRobotBookRecord);
// 如果有书但没有资源,则回复模板状态1
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(1)).findFirst();
String bookName = matcher.group(1).trim();
// 根据书名查询到 bookIds
List<Long> bookIds = bookDao.getBookIdsByBookName(bookName);
if(ListUtils.isEmpty(bookIds)){
// 将书名写入redis暂存
JedisClusterUtils.set(redisKey, bookName);
// 如果bookIds没有值,则回复模板状态3
// 呃,小睿刚才仔细的找了下,发现书刊的配套资源我这边还没有呢,要不等小睿看完整理好后再给你吧
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(3)).findFirst();
sendText(sendTextDTO, replyTemplate.get().getReplyContentTemplate().replace("${bookName}",bookName));
return false;
} else {
// 根据bookIds查询资源数;
Integer totalCount = channelConsr.getMessageCountByBookIds(bookIds);
if(totalCount > 0){
// 信息录入
SelfRobotBookRecord selfRobotBookRecord = new SelfRobotBookRecord();
selfRobotBookRecord.setWxUserId(sendTextDTO.getWechatUserId());
selfRobotBookRecord.setAltId(sendTextDTO.getWxId());
selfRobotBookRecord.setBookName(bookName);
selfRobotBookRecord.setStatus(3);
selfRobotBookRecordDao.insert(selfRobotBookRecord);
// 如果有书有资源,则转换链接,并推送链接给用户
Map<String,String> paramMap = new HashMap<>();
paramMap.put("wxId",sendTextDTO.getWechatUserId());
paramMap.put("robotWxId",sendTextDTO.getWxId());
paramMap.put("bookName",URLEncoder.encode(bookName));
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(4)).findFirst();
sendText(sendTextDTO,appendUrlParams(replyTemplate.get().getReplyContentTemplate(),paramMap));
} else{
// 信息录入
SelfRobotBookRecord selfRobotBookRecord = new SelfRobotBookRecord();
selfRobotBookRecord.setWxUserId(sendTextDTO.getWechatUserId());
selfRobotBookRecord.setAltId(sendTextDTO.getWxId());
selfRobotBookRecord.setBookName(bookName);
selfRobotBookRecord.setStatus(1);
selfRobotBookRecordDao.insert(selfRobotBookRecord);
// 如果有书但没有资源,则回复模板状态1
Optional<SelfRobotKeywordReplyTemplate> replyTemplate = replyTemplateList.stream().filter(x -> x.getStatus().equals(1)).findFirst();
sendText(sendTextDTO, replyTemplate.get().getReplyContentTemplate().replace("${bookName}",bookName));
}
return false;
}
} catch (Exception e) {
log.info("小睿收集出版社信息异常;异常信息:" + e.getMessage());
return true;
}
return false;
}
@ParamLog("发送平台端小号的")
......
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