Url解析组件优化,server端映射调整

This commit is contained in:
zhaoqichao
2023-07-05 18:12:17 +08:00
parent 27a7709f08
commit b516e51bc9
7 changed files with 19 additions and 15 deletions

View File

@@ -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

View File

@@ -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;
} }
} }

View File

@@ -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;

View File

@@ -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")

View File

@@ -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")

View File

@@ -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());
//回复消息 //回复消息

View File

@@ -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())