欢迎来到 成都市某某轴承有限责任公司
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
实现用算法用户推荐 修改 朋友圈 引入RockerMQ service
  来源:成都市某某轴承有限责任公司  更新时间:2024-04-29 01:56:01

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

}

}


友情链接魔兽世界野外坐骑大盘点:珍稀与神秘一网打尽!魔兽世界野外坐骑大盘点:珍稀与神秘一网打尽!《战锤末世鼠疫2》测试服1.05版本更新内容 3月30日更新内容《魔兽世界》8.0猫德大秘境天赋加点推荐 猫德大秘境天赋点法一览dnf游戏框变扁(dnf聊天框大小怎么调)原神稻妻地图怎么开 稻妻地图打开方法我的世界怎么去天堂详细方法介绍DNF:旭旭宝宝新增幅目标来了!不料首战告捷,全身18更进一步DNF手游不灭之王波罗丁称号攻略(打造专属于你的最强角色,让你在DNF手游中称霸天下!)DNF:虚祖人自制史诗改版提升率详解,你是否需要一对青龙臂铠?Error in website request魔兽世界霍迪尔之子声望开启任务 霍迪尔声望系列任务流程《王者荣耀》野怪什么时候刷新 野怪刷新时间介绍lol手游选哪个赠送英雄 英雄联盟手游自选英雄推荐高中寒假日记800字魔兽世界怎么查看世界boss掉落 世界boss掉落查看方法《阴阳师》2018全新特殊现世召唤阵 神秘图案助你召唤SSRdnf红字装备怎么净化?dnf红字装备怎么去掉红字?《英雄联盟》聊天时为什么有人喜欢发"1"?发的"1"都有哪些意思?P3猫德心得和各boss的两句话经验DNF:关于剑神三觉被动改变流心系技能效果的讲解,我感觉流心三连更帅了金铲铲之战艾克共振出装-S9极地艾克主c阵容装备推荐CF手游钻石抽奖技巧 钻石如何抽到永久武器《王者荣耀》实战练习通关阵容推荐lol一区叫什么?《逆战》2023年12月14日1.0.1.127版本停服维护公告光遇5月31日任务攻略 5.31每日任务图文详解20232023dnf高级炉岩碳怎么获取(刷炉岩碳的8个方法分享)光遇7月15日每日任务怎么完成 7月15日每日任务《光遇》宋小宝复刻先祖兑换表介绍fgo第六章高文怎么打《保卫萝卜4》头等大事第14关通关攻略英雄联盟军神战甲皮肤多少钱DNF:体验服剑神剑帝特色加强确实回档,但是是整个国庆版本回档!安卓手机游戏破解平台有哪些《炉石传说》中的这些BUG,实际上是正常哒!tbc血精灵术士能买哪些坐骑-魔兽世界血精灵法师的坐骑在哪里买?DNF基本无解、柳哲宣70版本蓝拳PK加点分享玩什么游戏能 一个人玩,又不用动脑筋 还能消磨时间?2023好玩的大型3d角色扮演网络游戏有哪些 大型3D角色扮演手游推荐
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.1978

Copyright © 2024 Powered by 成都市某某轴承有限责任公司   sitemap