mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-14 06:03:42 +08:00
Url解析组件优化,server端映射调整
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.abin.mallchat.common.chat.domain.entity.msg;
|
package com.abin.mallchat.common.chat.domain.entity.msg;
|
||||||
|
|
||||||
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -23,7 +24,7 @@ import java.util.Map;
|
|||||||
public class MessageExtra implements Serializable {
|
public class MessageExtra implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
//url跳转链接
|
//url跳转链接
|
||||||
private Map<String, String> urlTitleMap;
|
private Map<String, UrlInfo> urlContentMap;
|
||||||
//消息撤回详情
|
//消息撤回详情
|
||||||
private MsgRecall recall;
|
private MsgRecall recall;
|
||||||
//艾特的uid
|
//艾特的uid
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.abin.mallchat.common.common.utils.FutureUtils;
|
import com.abin.mallchat.common.common.utils.FutureUtils;
|
||||||
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jsoup.Connection;
|
import org.jsoup.Connection;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
@@ -30,7 +29,7 @@ public abstract class AbstractUrlDiscover implements UrlDiscover {
|
|||||||
private static final Pattern PATTERN = Pattern.compile("((http|https)://)?(www.)?([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?");
|
private static final Pattern PATTERN = Pattern.compile("((http|https)://)?(www.)?([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?");
|
||||||
|
|
||||||
|
|
||||||
@javax.annotation.Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public Map<String, UrlInfo> getUrlContentMap(String content) {
|
public Map<String, UrlInfo> getUrlContentMap(String content) {
|
||||||
|
|
||||||
@@ -83,4 +82,5 @@ public abstract class AbstractUrlDiscover implements UrlDiscover {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,18 +14,18 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class PrioritizedUrlDiscover extends AbstractUrlDiscover {
|
public class PrioritizedUrlDiscover extends AbstractUrlDiscover {
|
||||||
|
|
||||||
private final List<UrlDiscover> urlTitleDiscovers = new ArrayList<>(2);
|
private final List<UrlDiscover> urlDiscovers = new ArrayList<>(2);
|
||||||
|
|
||||||
public PrioritizedUrlDiscover() {
|
public PrioritizedUrlDiscover() {
|
||||||
urlTitleDiscovers.add(new CommonUrlDiscover());
|
urlDiscovers.add(new CommonUrlDiscover());
|
||||||
urlTitleDiscovers.add(new WxUrlDiscover());
|
urlDiscovers.add(new WxUrlDiscover());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getTitle(Document document) {
|
public String getTitle(Document document) {
|
||||||
for (UrlDiscover urlDiscover : urlTitleDiscovers) {
|
for (UrlDiscover urlDiscover : urlDiscovers) {
|
||||||
String urlTitle = urlDiscover.getTitle(document);
|
String urlTitle = urlDiscover.getTitle(document);
|
||||||
if (StrUtil.isNotBlank(urlTitle)) {
|
if (StrUtil.isNotBlank(urlTitle)) {
|
||||||
return urlTitle;
|
return urlTitle;
|
||||||
@@ -37,7 +37,7 @@ public class PrioritizedUrlDiscover extends AbstractUrlDiscover {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Document document) {
|
public String getDescription(Document document) {
|
||||||
for (UrlDiscover urlDiscover : urlTitleDiscovers) {
|
for (UrlDiscover urlDiscover : urlDiscovers) {
|
||||||
String urlDescription = urlDiscover.getDescription(document);
|
String urlDescription = urlDiscover.getDescription(document);
|
||||||
if (StrUtil.isNotBlank(urlDescription)) {
|
if (StrUtil.isNotBlank(urlDescription)) {
|
||||||
return urlDescription;
|
return urlDescription;
|
||||||
@@ -49,7 +49,7 @@ public class PrioritizedUrlDiscover extends AbstractUrlDiscover {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getImage(String url, Document document) {
|
public String getImage(String url, Document document) {
|
||||||
for (UrlDiscover urlDiscover : urlTitleDiscovers) {
|
for (UrlDiscover urlDiscover : urlDiscovers) {
|
||||||
String urlImage = urlDiscover.getImage(url,document);
|
String urlImage = urlDiscover.getImage(url,document);
|
||||||
if (StrUtil.isNotBlank(urlImage)) {
|
if (StrUtil.isNotBlank(urlImage)) {
|
||||||
return urlImage;
|
return urlImage;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.abin.mallchat.custom.chat.domain.vo.response;
|
package com.abin.mallchat.custom.chat.domain.vo.response;
|
||||||
|
|
||||||
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -50,7 +51,7 @@ public class ChatMessageResp {
|
|||||||
private String content;
|
private String content;
|
||||||
@ApiModelProperty("消息链接映射-废弃")
|
@ApiModelProperty("消息链接映射-废弃")
|
||||||
@Deprecated
|
@Deprecated
|
||||||
private Map<String, String> urlTitleMap;
|
private Map<String, UrlInfo> urlContentMap;
|
||||||
@ApiModelProperty("消息类型 1正常文本 2.撤回消息")
|
@ApiModelProperty("消息类型 1正常文本 2.撤回消息")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
@ApiModelProperty("消息内容不同的消息类型,内容体不同,见https://www.yuque.com/snab/mallcaht/rkb2uz5k1qqdmcmd")
|
@ApiModelProperty("消息内容不同的消息类型,内容体不同,见https://www.yuque.com/snab/mallcaht/rkb2uz5k1qqdmcmd")
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.abin.mallchat.custom.chat.domain.vo.response.msg;
|
package com.abin.mallchat.custom.chat.domain.vo.response.msg;
|
||||||
|
|
||||||
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -22,7 +23,7 @@ public class TextMsgResp {
|
|||||||
@ApiModelProperty("消息内容")
|
@ApiModelProperty("消息内容")
|
||||||
private String content;
|
private String content;
|
||||||
@ApiModelProperty("消息链接映射")
|
@ApiModelProperty("消息链接映射")
|
||||||
private Map<String, String> urlTitleMap;
|
private Map<String, UrlInfo> urlContentMap;
|
||||||
@ApiModelProperty("艾特的uid")
|
@ApiModelProperty("艾特的uid")
|
||||||
private List<Long> atUidList;
|
private List<Long> atUidList;
|
||||||
@ApiModelProperty("父消息,如果没有父消息,返回的是null")
|
@ApiModelProperty("父消息,如果没有父消息,返回的是null")
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class MessageAdapter {
|
|||||||
messageVO.setSendTime(message.getCreateTime());
|
messageVO.setSendTime(message.getCreateTime());
|
||||||
AbstractMsgHandler msgHandler = MsgHandlerFactory.getStrategyNoNull(message.getType());
|
AbstractMsgHandler msgHandler = MsgHandlerFactory.getStrategyNoNull(message.getType());
|
||||||
messageVO.setBody(msgHandler.showMsg(message));
|
messageVO.setBody(msgHandler.showMsg(message));
|
||||||
messageVO.setUrlTitleMap(Optional.ofNullable(message.getExtra()).map(MessageExtra::getUrlTitleMap).orElse(null));
|
messageVO.setUrlContentMap(Optional.ofNullable(message.getExtra()).map(MessageExtra::getUrlContentMap).orElse(null));
|
||||||
Message replyMessage = replyMap.get(message.getReplyMsgId());
|
Message replyMessage = replyMap.get(message.getReplyMsgId());
|
||||||
|
|
||||||
//回复消息
|
//回复消息
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.abin.mallchat.common.common.domain.enums.YesOrNoEnum;
|
|||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
import com.abin.mallchat.common.common.utils.AssertUtil;
|
||||||
import com.abin.mallchat.common.common.utils.SensitiveWordUtils;
|
import com.abin.mallchat.common.common.utils.SensitiveWordUtils;
|
||||||
import com.abin.mallchat.common.common.utils.discover.PrioritizedUrlDiscover;
|
import com.abin.mallchat.common.common.utils.discover.PrioritizedUrlDiscover;
|
||||||
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import com.abin.mallchat.common.user.domain.entity.User;
|
import com.abin.mallchat.common.user.domain.entity.User;
|
||||||
import com.abin.mallchat.common.user.domain.enums.RoleEnum;
|
import com.abin.mallchat.common.user.domain.enums.RoleEnum;
|
||||||
import com.abin.mallchat.common.user.service.IRoleService;
|
import com.abin.mallchat.common.user.service.IRoleService;
|
||||||
@@ -91,8 +92,8 @@ public class TextMsgHandler extends AbstractMsgHandler {
|
|||||||
|
|
||||||
}
|
}
|
||||||
//判断消息url跳转
|
//判断消息url跳转
|
||||||
Map<String, String> urlTitleMap = URL_TITLE_DISCOVER.getContentTitleMap(body.getContent());
|
Map<String, UrlInfo> urlContentMap = URL_TITLE_DISCOVER.getUrlContentMap(body.getContent());
|
||||||
extra.setUrlTitleMap(urlTitleMap);
|
extra.setUrlContentMap(urlContentMap);
|
||||||
//艾特功能
|
//艾特功能
|
||||||
if (CollectionUtil.isNotEmpty(body.getAtUidList())) {
|
if (CollectionUtil.isNotEmpty(body.getAtUidList())) {
|
||||||
extra.setAtUidList(body.getAtUidList());
|
extra.setAtUidList(body.getAtUidList());
|
||||||
@@ -106,7 +107,7 @@ public class TextMsgHandler extends AbstractMsgHandler {
|
|||||||
public Object showMsg(Message msg) {
|
public Object showMsg(Message msg) {
|
||||||
TextMsgResp resp = new TextMsgResp();
|
TextMsgResp resp = new TextMsgResp();
|
||||||
resp.setContent(msg.getContent());
|
resp.setContent(msg.getContent());
|
||||||
resp.setUrlTitleMap(Optional.ofNullable(msg.getExtra()).map(MessageExtra::getUrlTitleMap).orElse(null));
|
resp.setUrlContentMap(Optional.ofNullable(msg.getExtra()).map(MessageExtra::getUrlContentMap).orElse(null));
|
||||||
resp.setAtUidList(Optional.ofNullable(msg.getExtra()).map(MessageExtra::getAtUidList).orElse(null));
|
resp.setAtUidList(Optional.ofNullable(msg.getExtra()).map(MessageExtra::getAtUidList).orElse(null));
|
||||||
//回复消息
|
//回复消息
|
||||||
Optional<Message> reply = Optional.ofNullable(msg.getReplyMsgId())
|
Optional<Message> reply = Optional.ofNullable(msg.getReplyMsgId())
|
||||||
|
|||||||
Reference in New Issue
Block a user