欢迎来到 南平市某某自动化科技培训学校
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
实现用算法用户推荐 修改 朋友圈 引入RockerMQ service
  来源:南平市某某自动化科技培训学校  更新时间:2024-04-30 08:53:36

实现用算法用户推荐 修改 朋友圈 引入RockerMQ service




service 修改 朋友圈 引入RockerMQ service





import cn.hutool.core.bean.BeanUtil;

import cn.hutool.core.collection.CollUtil;

import cn.hutool.core.convert.Convert;

import cn.hutool.core.date.DateUtil;

import cn.hutool.core.util.ObjectUtil;

import cn.hutool.core.util.StrUtil;

import com.alibaba.dubbo.config.annotation.Reference;

import com.tanhua.common.pojo.User;

import com.tanhua.common.pojo.UserInfo;

import com.tanhua.common.service.PicUploadService;

import com.tanhua.common.utils.RelativeDateFormat;

import com.tanhua.common.utils.UserThreadLocal;

import com.tanhua.common.vo.PicUploadResult;

import com.tanhua.dubbo.server.api.QuanZiApi;

import com.tanhua.dubbo.server.api.VisitorsApi;

import com.tanhua.dubbo.server.pojo.Comment;

import com.tanhua.dubbo.server.pojo.Publish;

import com.tanhua.dubbo.server.pojo.Visitors;

import com.tanhua.dubbo.server.vo.PageInfo;

import com.tanhua.server.vo.CommentVo;

import com.tanhua.server.vo.PageResult;

import com.tanhua.server.vo.QuanZiVo;

import com.tanhua.server.vo.VisitorsVo;

import org.apache.commons.lang3.StringUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.web.multipart.MultipartFile;

import java.util.*;

@Service

public class QuanZiService {

@Reference(version = "1.0.0")

private QuanZiApi quanZiApi;

@Reference(version = "1.0.0")

private VisitorsApi visitorsApi;

@Autowired

private UserService userService;

@Autowired

private UserInfoService userInfoService;

@Autowired

private PicUploadService picUploadService;

@Autowired

private QuanziMQService quanziMQService;

public PageResult queryPublishList(Integer page,实现 Integer pageSize) {

//分析:通过dubbo中的服务查询用户的好友动态

//通过mysql查询用户的信息 ,回写到结果对象中(QuanZiVo)

PageResult pageResult = new PageResult();

pageResult.setPage(page);

pageResult.setPagesize(pageSize);

//直接从ThreadLocal中获取对象

User user = UserThreadLocal.get();

//通过dubbo查询数据

PageInfo<Publish> pageInfo = this.quanZiApi.queryPublishList(user.getId(),用算友圈引入 page, pageSize);

List<Publish> records = pageInfo.getRecords();

if (CollUtil.isEmpty(records)) {

return pageResult;

}

pageResult.setItems(this.fillQuanZiVo(records));

return pageResult;

}

/

**

* 填充用户信息

*

* @param userInfo

* @param quanZiVo

*/

private void fillUserInfoToQuanZiVo(UserInfo userInfo, QuanZiVo quanZiVo) {

BeanUtil.copyProperties(userInfo, quanZiVo, "id");

quanZiVo.setGender(userInfo.getSex().name().toLowerCase());

quanZiVo.setTags(StringUtils.split(userInfo.getTags(), ','));

//当前用户

User user = UserThreadLocal.get();

quanZiVo.setCommentCount(0); //TODO 评论数

quanZiVo.setDistance("1.2公里"); //TODO 距离

quanZiVo.setHasLiked(this.quanZiApi.queryUserIsLike(user.getId(), quanZiVo.getId()) ? 1 : 0); //是否点赞(1是 ,0否)

quanZiVo.setLikeCount(Convert.toInt(this.quanZiApi.queryLikeCount(quanZiVo.getId()))); //点赞数

quanZiVo.setHasLoved(this.quanZiApi.queryUserIsLove(user.getId(),法用 quanZiVo.getId()) ? 1 : 0); //是否喜欢(1是,0否)

quanZiVo.setLoveCount(Convert.toInt(this.quanZiApi.queryLoveCount(quanZiVo.getId()))); //喜欢数

}

/

**

* 根据查询到的户推publish集合填充QuanZiVo对象

*

* @param records

* @return

*/

private List<QuanZiVo> fillQuanZiVo(List<Publish> records) {

List<QuanZiVo> quanZiVoList = new ArrayList<>();

records.forEach(publish -> {

QuanZiVo quanZiVo = new QuanZiVo();

quanZiVo.setId(publish.getId().toHexString());

quanZiVo.setTextContent(publish.getText());

quanZiVo.setImageContent(publish.getMedias().toArray(new String[]{ }));

quanZiVo.setUserId(publish.getUserId());

quanZiVo.setCreateDate(RelativeDateFormat.format(new Date(publish.getCreated())));

quanZiVoList.add(quanZiVo);

});

//查询用户信息

List<Object> userIds = CollUtil.getFieldValues(records, "userId");

List<UserInfo> userInfoList = this.userInfoService.queryUserInfoByUserIdList(userIds);

for (QuanZiVo quanZiVo : quanZiVoList) {

//找到对应的用户信息

for (UserInfo userInfo : userInfoList) {

if (quanZiVo.getUserId().longValue() == userInfo.getUserId().longValue()) {

this.fillUserInfoToQuanZiVo(userInfo, quanZiVo);

break;

}

}

}

return quanZiVoList;

}

/

**

* 发布动态

*

* @param textContent

* @param location

* @param latitude

* @param longitude

* @param multipartFile

* @return

*/

public String savePublish(String textContent,

String location,

String latitude,

String longitude,

MultipartFile[] multipartFile) {

//查询当前的登录信息

User user = UserThreadLocal.get();

Publish publish = new Publish();

publish.setUserId(user.getId());

publish.setText(textContent);

publish.setLocationName(location);

publish.setLatitude(latitude);

publish.setLongitude(longitude);

publish.setSeeType(1);

List<String> picUrls = new ArrayList<>();

//图片上传

for (MultipartFile file : multipartFile) {

PicUploadResult picUploadResult = this.picUploadService.upload(file);

picUrls.add(picUploadResult.getName());

}

publish.setMedias(picUrls);

String publishId = this.quanZiApi.savePublish(publish);

if(StrUtil.isNotEmpty(publishId)){

//发送消息

this.quanziMQService.publishMsg(publishId);

}

return publishId;

}

public PageResult queryRecommendPublishList(Integer page, Integer pageSize) {

//分析 :通过dubbo中的服务查询系统推荐动态

//通过mysql查询用户的信息,回写到结果对象中(QuanZiVo)

PageResult pageResult = new PageResult();

pageResult.setPage(page);

pageResult.setPagesize(pageSize);

//直接从ThreadLocal中获取对象

User user = UserThreadLocal.get();

//通过dubbo查询数据

PageInfo<Publish> pageInfo = this.quanZiApi.queryRecommendPublishList(user.getId(),荐修 page, pageSize);

List<Publish> records = pageInfo.getRecords();

if (CollUtil.isEmpty(records)) {

return pageResult;

}

pageResult.setItems(this.fillQuanZiVo(records));

return pageResult;

}

/

**

* 动态点赞

* @param publishId

* @return

*/

public Long likeComment(String publishId) {

User user = UserThreadLocal.get();

Boolean result = this.quanZiApi.likeComment(user.getId(), publishId);

if (result) {

//发消息

this.quanziMQService.likePublishMsg(publishId);

//查询点赞数

return this.quanZiApi.queryLikeCount(publishId);

}

return null;

}

/

**

* 动态的取消点赞

*

* @param publishId

* @return

*/

public Long disLikeComment(String publishId) {

User user = UserThreadLocal.get();

Boolean result = this.quanZiApi.disLikeComment(user.getId(), publishId);

if (result) {

//发消息

this.quanziMQService.disLikePublishMsg(publishId);

//查询点赞数

return this.quanZiApi.queryLikeCount(publishId);

}

return null;

}

public Long loveComment(String publishId) {

User user = UserThreadLocal.get();

//喜欢

Boolean result = this.quanZiApi.loveComment(user.getId(), publishId);

if(result){

//发消息

this.quanziMQService.lovePublishMsg(publishId);

//查询喜欢数

return this.quanZiApi.queryLoveCount(publishId);

}

return null;

}

public Long disLoveComment(String publishId) {

User user = UserThreadLocal.get();

//取消喜欢

Boolean result = this.quanZiApi.disLoveComment(user.getId(), publishId);

if(result){

//发消息

this.quanziMQService.disLovePublishMsg(publishId);

//查询喜欢数

return this.quanZiApi.queryLoveCount(publishId);

}

return null;

}

public QuanZiVo queryById(String publishId) {

Publish publish = this.quanZiApi.queryPublishById(publishId);

if (publish == null) {

return null;

}

//发消息

this.quanziMQService.queryPublishMsg(publishId);

return this.fillQuanZiVo(Arrays.asList(publish)).get(0);

}

/

**

* 查询评论列表

*

* @param publishId

* @param page

* @param pageSize

* @return

*/

public PageResult queryCommentList(String publishId, Integer page, Integer pageSize) {

PageResult pageResult = new PageResult();

pageResult.setPage(page);

pageResult.setPagesize(pageSize);

User user = UserThreadLocal.get();

//查询评论列表数据

PageInfo<Comment> pageInfo = this.quanZiApi.queryCommentList(publishId, page, pageSize);

List<Comment> records = pageInfo.getRecords();

if(CollUtil.isEmpty(records)){

return pageResult;

}

//查询用户信息

List<Object> userIdList = CollUtil.getFieldValues(records, "userId");

List<UserInfo> userInfoList = this.userInfoService.queryUserInfoByUserIdList(userIdList);

List<CommentVo> result = new ArrayList<>();

for (Comment record : records) {

CommentVo commentVo = new CommentVo();

commentVo.setContent(record.getContent());

commentVo.setId(record.getId().toHexString());

commentVo.setCreateDate(DateUtil.format(new Date(record.getCreated()), "HH:mm"));

//是否点赞

commentVo.setHasLiked(this.quanZiApi.queryUserIsLike(user.getId(), commentVo.getId()) ? 1 : 0);

//点赞数

commentVo.setLikeCount(Convert.toInt(this.quanZiApi.queryLikeCount(commentVo.getId())));

for (UserInfo userInfo : userInfoList) {

if(ObjectUtil.equals(record.getUserId(), userInfo.getUserId())){

commentVo.setAvatar(userInfo.getLogo());

commentVo.setNickname(userInfo.getNickName());

break;

}

}

result.add(commentVo);

}

pageResult.setItems(result);

return pageResult;

}

/

**

* 发表评论

* @param publishId

* @param content

* @return

*/

public Boolean saveComments(String publishId, String content) {

User user = UserThreadLocal.get();

Boolean result = this.quanZiApi.saveComment(user.getId(), publishId, content);

if(result){

//发消息

this.quanziMQService.commentPublishMsg(publishId);

}

return result;

}

public PageResult queryAlbumList(Long userId, Integer page, Integer pageSize) {

PageResult pageResult = new PageResult();

pageResult.setPage(page);

pageResult.setPagesize(pageSize);

//查询数据

PageInfo<Publish> pageInfo = this.quanZiApi.queryAlbumList(userId, page, pageSize);

if(CollUtil.isEmpty(pageInfo.getRecords())){

return pageResult;

}

//填充数据

pageResult.setItems(this.fillQuanZiVo(pageInfo.getRecords()));

return pageResult;

}

public List<VisitorsVo> queryVisitorsList() {

User user = UserThreadLocal.get();

List<Visitors> visitorsList = this.visitorsApi.queryMyVisitor(user.getId());

if (CollUtil.isEmpty(visitorsList)) {

return Collections.emptyList();

}

List<Object> userIds = CollUtil.getFieldValues(visitorsList, "visitorUserId");

List<UserInfo> userInfoList = this.userInfoService.queryUserInfoByUserIdList(userIds);

List<VisitorsVo> visitorsVoList = new ArrayList<>();

for (Visitors visitor : visitorsList) {

for (UserInfo userInfo : userInfoList) {

if (ObjectUtil.equals(visitor.getVisitorUserId(), userInfo.getUserId())) {

VisitorsVo visitorsVo = new VisitorsVo();

visitorsVo.setAge(userInfo.getAge());

visitorsVo.setAvatar(userInfo.getLogo());

visitorsVo.setGender(userInfo.getSex().name().toLowerCase());

visitorsVo.setId(userInfo.getUserId());

visitorsVo.setNickname(userInfo.getNickName());

visitorsVo.setTags(StringUtils.split(userInfo.getTags(), ','));

visitorsVo.setFateValue(visitor.getScore().intValue());

visitorsVoList.add(visitorsVo);

break;

}

}

}

return visitorsVoList;

}

}


友情链接DNF攻略:刃影神话装备获取与变换材料来源解析剑宗心得和装备搭配 DNF剑宗刷图加点分享明朝那些事儿作文1000字(精选六篇)dnf力法技能加点大全 力法加点魔兽世界9月21日更新:PVP乱斗再临 熊猫人时空漫游开启摆摊致富经 看完你就完全了解梦幻的摆摊技巧最火的变态手游盒子十大排名 超级变态手游盒子最新排名dnf阿修罗辅助装备附魔宝珠推荐 装备搭配和附魔最佳选择LOL兽灵行者打野出装符文 狂暴强力乌迪尔怎么玩赛尔号页游:盘点那些进化之后改变属性的精灵变迁史!(2009-2023.1)dnf525改版后净化的灵魂结晶怎么得原神校园【七十四】出发!去稻妻....结婚?《奥特曼传奇英雄》缤纷开学季,福利送不停遗落的神殿DNF那些职业能够不增幅或者红七以下增幅就很强能够打高端副本?通信工程师:FTTH装维类试题考试答案(最新版)魔兽世界怀旧服:P3就开始嫌弃卡拉赞?作为TBC常青树,P5也得刷任务战怎么玩,设备之战任务怎么做《DOTA2》影魔进阶玩法魔兽世界怀旧服盗贼开锁技能怎么练介绍_魔兽世界怀旧服盗贼开锁技能怎么练是什么新浪魔兽世界吐槽神秘任务大揭秘:《寻仙手游》隐藏任务指南!LOL亚运选手首次公开采访,Letme透露:7点起床,饭点必须吃饭!DNF韩服4.15更新 决斗场第七赛季新地下城小朋友一个人玩的游戏有哪些2022 十大适合小朋友一个人玩的游戏推荐dnf手游独角兽砍价在哪里,dnf手游限定独角兽选哪个比较好DNF95版本搬砖教学 勤劳多搬砖买多个春节礼包御龙在天重剑刺杀技能加点,与重剑有关的游戏技能评测魔兽世界悬崖伏击任务怎么做魔兽世界悬崖伏击任务怎么完成飞剑入道九州仙剑传激活码 亲测有效5个换码汇总第一周数字解密答案 17173DNF专区每周更新DNF小知识:7月14即将结束活动删除道具一览魔兽世界 布甲幻化-魔兽牧师幻化十大排行现在还有多少人在玩DNF?都是什么人?神秘任务大揭秘:《寻仙手游》隐藏任务指南!DNF3月17日每日数字解密答案公布DNF小知识:7月14即将结束活动删除道具一览DNF刃影护石怎么选择 刃影CP护石选择攻略魔兽世界怀旧服:暴风城监狱的囚犯中国流失海外的十大国宝排行榜!它们都是华夏灿烂文化的载体
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2052

Copyright © 2024 Powered by 南平市某某自动化科技培训学校   sitemap