欢迎来到 榆林市某某通信设备专卖店
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
实现用算法用户推荐 修改 朋友圈 引入RockerMQ service
  来源:榆林市某某通信设备专卖店  更新时间:2024-05-03 07:11:25

实现用算法用户推荐 修改 朋友圈 引入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;

}

}


友情链接lol10.8版本寒冰天赋出装介绍 10.8版本艾希怎么玩长期玩的变态网游私服(十大变态手游下载地址分享)怀旧服祖尔格拉布术士装备掉落大全光遇边陲荒漠的神庙冥想任务完成攻略 边陲荒漠的神庙冥想任务怎么做dnf阿拉德谋略战范哲利斯加点奇迹暖暖第七章必做套装有哪些-第七章必做套装推荐青瓜游乐场我家的安防监控设备dnf增幅和强化的区别仙剑奇侠传2全关卡流程攻略:刺客职业技能加点解析雪梨被封杀后强势归来,咋美成窄脸版阿娇了?!dnf装备如何增幅 dnf装备增幅方法介绍羊了个羊3D版,迄今我见过还原度最佳游戏!还支持微信授权和教程视频dnf异界气息净化书怎么获得(地下城与勇士积分商城兑换攻略)dnf手游韩服怎么转职 角色转职流程介绍Windows 8 C#调用C++编写的Windows运行时组件时空之轮2.5无cd无限蓝p闪版 附隐藏英雄密码及攻略 魔兽防守地图梦幻西游神兜兜购买兑换神兽技巧解析Dnf:韩服更新:剑神、剑皇、念帝、魔枪士等职业伤害调整阵营转换服务常见问题金铲铲新T0「554阿狸」,新晋最强四费卡,阵容强度翻倍!!dnf圣职者转职哪个职业厉害-圣职者转职推荐DNF未精炼的念气结晶有什么用 念气结晶使用方法羊了个羊第二关有人过吗?羊了个羊第二关怎么过?魔兽世界7.25太阳龙宝宝怎么获得《洛克王国》笛小钻技能表图鉴《少数幸运儿》玩家被攻击原因详解 玩家为什么被攻击求生之路2推荐配置(求生之路2需要什么显卡)英雄祭坛悬空岛攻略(三) 悬空岛出征介绍及岛屿怎么打羊了个羊6月25日攻略《奇迹暖暖》联盟6-3新漫画的灵感怎么高分搭配方案参考(图文)魔兽TBC怀旧服专业推荐(wow裁缝专业搭配攻略)电波表的工作原理是什么?DNF:全身增幅30什么概念?13E战力召唤出现,全服排名“第一”魔兽世界2012美酒节坐骑、成就及攻略暗黑破坏神不朽死灵法师怎么玩 死灵法师玩法攻略《洛克王国》笛小钻技能表图鉴DNF女圣职者哪个职业厉害 四职业对比分析 TOP1:圣骑士...英雄联盟AD第一推线女王!万金油轮子妈再度归来
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

5.8574

Copyright © 2024 Powered by 榆林市某某通信设备专卖店   sitemap