Authored by liangyi.chen@yoho.cn

处理文章详情@用户昵称

... ... @@ -13,15 +13,14 @@ import com.yoho.core.redis.cluster.operations.nosync.YHRedisTemplate;
import com.yoho.core.redis.cluster.operations.nosync.YHValueOperations;
import com.yoho.core.redis.cluster.operations.serializer.RedisKeyBuilder;
import com.yoho.core.rest.client.ServiceCaller;
import com.yoho.error.event.LogEvent;
import com.yoho.service.model.sns.model.enums.GrassInboxBusinessTypeEnum;
import com.yoho.service.model.sns.response.GrassArticleBlockRspBO;
import com.yoho.service.model.social.request.BaseReqBO;
import com.yoho.service.model.social.request.UicUserReqBO;
import com.yoho.service.model.social.response.UserInfoRspBO;
import com.yohobuy.platform.common.enums.ArticleTypeEnum;
import com.yohobuy.platform.common.exception.PlatformException;
import com.yohobuy.platform.common.helper.ImagesHelper;
import com.yohobuy.platform.common.util.CollectionUtil;
import com.yohobuy.platform.common.util.DateUtil;
import com.yohobuy.platform.common.util.SerializeUtils;
import com.yohobuy.platform.common.util.StringUtil;
... ... @@ -29,7 +28,6 @@ import com.yohobuy.platform.dal.grass.*;
import com.yohobuy.platform.dal.grass.model.*;
import com.yohobuy.platform.dal.guang.IAuthorDAO;
import com.yohobuy.platform.dal.guang.model.Author;
import com.yohobuy.platform.dal.product.model.Goods;
import com.yohobuy.platform.grass.cache.UserInfoCacheHelper;
import com.yohobuy.platform.grass.service.IGrassArticleService;
import com.yohobuy.platform.grass.service.IGrassRefreshCacheService;
... ... @@ -1496,6 +1494,7 @@ public class GrassArticleServiceImpl implements IGrassArticleService {
rspBo.setSort(grassArticle.getSort());
//1)文章内容
List<GrassArticleBlock> grassArticleContentList = grassArticleBlockDao.selectByArticleId(articleId);
grassArticleContentList = handleContentWithAt(grassArticleContentList);
List<String> imageList = new ArrayList<>();
String text = "";
for (GrassArticleBlock content : grassArticleContentList) {
... ... @@ -2230,4 +2229,45 @@ public class GrassArticleServiceImpl implements IGrassArticleService {
}
return new ArrayList<>();
}
public List<GrassArticleBlock> handleContentWithAt(List<GrassArticleBlock> blockList){
List<GrassArticleBlock> textBlockList = blockList.stream().filter(articleBlock -> articleBlock.getTemplateKey().equals("text")).collect(Collectors.toList());
List<Integer> uids = Lists.newArrayList();
if(CollectionUtils.isEmpty(blockList)){
return blockList;
}
Pattern p = Pattern.compile("@[0-9]+#");
for (GrassArticleBlock grassArticleBlock : textBlockList) {
String textContent = grassArticleBlock.getContentData();
Matcher m = p.matcher(textContent);
while (m.find()){
String uidStr = m.group();
uids.add(Integer.valueOf(uidStr.replaceAll("@","").replaceAll("#","")));
}
}
List<UserInfoRspBO> userInfoRspBOList = getUsersInfo(uids);
if(CollectionUtils.isNotEmpty(userInfoRspBOList)){
Map<Integer, UserInfoRspBO> userInfoMap = Maps.newHashMap();
userInfoRspBOList.forEach(userInfoRspBO -> {
userInfoMap.put(userInfoRspBO.getUid(), userInfoRspBO);
});
blockList.forEach(grassArticleBlock -> {
String content = grassArticleBlock.getContentData();
Matcher m = p.matcher(content);
while(m.find()){
String uidStr = m.group();
Integer uid = Integer.valueOf(uidStr.replaceAll("@","").replaceAll("#",""));
UserInfoRspBO userInfo = userInfoMap.get(uid);
if(userInfo != null){
content = content.replace(uidStr, "@"+userInfo.getNickName());
}
}
grassArticleBlock.setContentData(content);
});
}
return blockList;
}
}
... ...