Commit 76dbe420 by 裴大威

Merge branch 'feat-dw-keyword' into 'master'

feat 1001745

See merge request rays/pcloud-book!161
parents f5bfcff8 2689ca5b
package com.pcloud.book.group.biz.impl;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.pcloud.book.advertising.biz.AdvertisingSpaceBiz;
......@@ -66,7 +67,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -239,6 +240,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
}
}
String url = null;
List<ClassifyQrcodeVO> canUserQrcode = Lists.newArrayList();
for (ClassifyQrcodeVO vo : collect) {
if (vo.getUserNumber() >= classify.getChangeNumber()) {
//将二维码修改为已满群状态
......@@ -250,9 +252,14 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
log.info("[前端调用切群接口] getChangeGroupQrCode 处理超出了但是没有更新状态的群 vo:{}", vo);
}
if (vo.getUserNumber() < classify.getChangeNumber()) {
url = vo.getQrcodeUrl();
canUserQrcode.add(vo);
}
}
// 获取群人数最少的可用群二维码返回出去
if (!CollectionUtils.isEmpty(canUserQrcode)) {
ClassifyQrcodeVO vo = canUserQrcode.stream().min(Comparator.comparingInt(ClassifyQrcodeVO::getUserNumber)).orElseGet(ClassifyQrcodeVO::new);
url = StringUtil.isBlank(vo.getQrcodeUrl()) ? null : vo.getQrcodeUrl();
}
if (Objects.isNull(url)) {
// 如果没有群则新增一个
String qrcodeUrl = changeGroupQrCode(classifyId);
......@@ -262,6 +269,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
return url;
}
@Override
public String changeGroupQrCode(Long classifyId) {
return changeGroup(classifyId);
......
......@@ -33,15 +33,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import javax.ws.rs.HEAD;
/**
* @author lily
* @date 2019/4/19 17:03
......@@ -167,35 +164,36 @@ public class SendWeixinRequestTools {
if (ReplyTypeEnum.TEXT.value.equals(sendMessageDTO.getReplyType())) {
String s = nickNameStr + " " + sendMessageDTO.getContent();
StringBuilder sb = new StringBuilder();
boolean isOld = true;
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
sb.append("\n\n本群配有以下资源服务,戳链接立即获取:\n");
List<KeywordDTO> collect = keywords.stream().filter(p -> ReplyTypeEnum.IMAGE.value.equals(p.getReplyType())).collect(Collectors.toList());
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;
for (KeywordDTO keyword : keywords) {
if ((s.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 950) {
if ((s.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 875) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】\n");
if (ReplyTypeEnum.TEXT.value.equals(keyword.getReplyType())) {
sb.append(" ").append(keyword.getContent()).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.getDescription()).append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n");
sb.append(" ").append(keyword.getDescription()).append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n\n");
}
}
} else {
for (KeywordDTO keyword : keywords) {
if ((s.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 977) {
if ((s.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 922) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】");
}
}
}
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb);
groupKeyword.append("\n").append("后续也可以回复【】里的关键词,再次领取");
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb, isOld);
groupKeyword.append("后续也可以回复【】里的关键词,再次领取");
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if (s.length() + groupKeyword.length() >= 1000) {
sendMessageDTO.setContent(s);
......@@ -428,35 +426,36 @@ public class SendWeixinRequestTools {
content.append("本群目的为学习交流和学习辅导,线上资源和工具为图书的增值服务,可根据实际情况配合图书一起使用。");
}
StringBuilder sb = new StringBuilder();
boolean isOld = true;
if (!CollectionUtils.isEmpty(keywords) && isGroupRobot) {
sb.append("\n\n本群配有以下资源服务,戳链接立即获取:\n");
List<KeywordDTO> collect = keywords.stream().filter(p -> ReplyTypeEnum.IMAGE.value.equals(p.getReplyType())).collect(Collectors.toList());
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;
for (KeywordDTO keyword : keywords) {
if ((content.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 950) {
if ((content.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 875) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】\n");
if (ReplyTypeEnum.TEXT.value.equals(keyword.getReplyType())) {
sb.append(" ").append(keyword.getContent()).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.getDescription()).append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n");
sb.append(" ").append(keyword.getDescription()).append(keyword.getContent()).append(UrlUtils.getShortUrl4Own(linkUrl)).append("\n\n");
}
}
} else {
for (KeywordDTO keyword : keywords) {
if ((content.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 977) {
if ((content.length() + sb.length()) >= 1000 && (sb.length() + (keyword.getKeywords() + "\n").length()) >= 922) {
break;
}
sb.append("【").append(keyword.getKeywords()).append("】");
}
}
}
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb);
groupKeyword.append("\n").append("后续也可以回复【】里的关键词,再次领取");
StringBuilder groupKeyword = getGroupKeyword(keywordStatusDTO, sb, isOld);
groupKeyword.append("后续也可以回复【】里的关键词,再次领取");
// 1001692 自定义欢迎语+关键词文案,如果超过300字,关键词拆分出来发
if ((content.length() + sb.length()) >= 1000) {
sendTextMessage(content.toString(), robotId, weixinGroupId, ip);
......@@ -466,18 +465,27 @@ public class SendWeixinRequestTools {
}
}
private static StringBuilder getGroupKeyword(KeywordStatusDTO dto, StringBuilder sb) {
private static StringBuilder getGroupKeyword(KeywordStatusDTO dto, StringBuilder sb, Boolean isOld) {
if (!sb.toString().contains("【") && (dto.getClockOpen() || dto.getRiddleOpen() || dto.getReportOpen())) {
sb.append("\n\n在群内回复以下关键词:\n");
sb.append("\n\n在群内回复以下关键词:");
}
if (dto.getReportOpen()) {
sb.append("【学习报告】");
if (isOld) {
sb.append("\n\n");
}
sb.append("【学习报告】\n回复学习报告,获取个人学习报告,与群成员PK元气值\n\n");
}
if (dto.getRiddleOpen()) {
sb.append("【猜谜语】");
if (isOld && !sb.toString().contains("【学习报告】")) {
sb.append("\n");
}
sb.append("【猜谜语】\n回复猜谜语,开启群游戏,连续答对5题,所有群成员可获得精美礼券\n\n");
}
if (dto.getClockOpen()) {
sb.append("【").append(dto.getClockKeyword()).append("】");
if (isOld && !sb.toString().contains("【学习报告】") && !sb.toString().contains("【猜谜语】")) {
sb.append("\n");
}
sb.append("【").append(dto.getClockKeyword()).append("】\n").append(dto.getClockGuide()).append("\n\n");
}
return sb;
}
......@@ -488,12 +496,11 @@ public class SendWeixinRequestTools {
int i = 0;
List<String> names = new ArrayList<>();
Set<Map.Entry<String, Integer>> entries = nickNames.entrySet();
for (Iterator<Map.Entry<String, Integer>> iterator = entries.iterator(); iterator.hasNext(); ) {
for (Map.Entry<String, Integer> stringIntegerEntry : entries) {
if (i == 5) {
break;
}
Map.Entry<String, Integer> entry = iterator.next();
String key = entry.getKey();
String key = stringIntegerEntry.getKey();
names.add(key);
i++;
}
......
......@@ -422,9 +422,10 @@ public class BookGuideBizImpl implements BookGuideBiz {
@ParamLog("推关学习报告/猜谜语关键词消息")
private KeywordStatusDTO pushLearningReport(GroupClassifyQrcodeDTO classifyQrcodeInfo, String robotId, String weixinGroupId, String ip) {
Boolean reportOpen = false;
Boolean riddleOpen = false;
Boolean clockOpen = false;
boolean reportOpen = false;
boolean riddleOpen = false;
boolean clockOpen = false;
KeywordStatusDTO dto = new KeywordStatusDTO();
if (classifyQrcodeInfo.getHasOpenLearningReport() != null && classifyQrcodeInfo.getHasOpenLearningReport()) {
reportOpen = true;
}
......@@ -435,12 +436,12 @@ public class BookGuideBizImpl implements BookGuideBiz {
WeixinClockDto weixinClockDto = weixinClockGroupClassifyDao.getClockBaseInfoByClassify(classifyQrcodeInfo.getClassifyId());
if (null != weixinClockDto && !StringUtil.isEmpty(weixinClockDto.getClockGuide()) && !StringUtil.isEmpty(weixinClockDto.getClockKeyword())) {
clockOpen = true;
dto.setClockGuide(weixinClockDto.getClockGuide());
dto.setClockKeyword(weixinClockDto.getClockKeyword());
}
KeywordStatusDTO dto = new KeywordStatusDTO();
dto.setReportOpen(reportOpen);
dto.setRiddleOpen(riddleOpen);
dto.setClockOpen(clockOpen);
dto.setClockKeyword(null == weixinClockDto ? StringUtil.EMPTY : weixinClockDto.getClockKeyword());
return dto;
// if (reportOpen && riddleOpen && clockOpen) {
// SendWeixinRequestTools.sendTextMessage("关键词【学习报告】\n 获取个人专属学习报告,与群成员PK元气值\n" +
......
......@@ -23,4 +23,9 @@ public class KeywordStatusDTO {
*/
private String clockKeyword;
/**
* 打卡引导语
*/
private String clockGuide;
}
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