交友项目【首页推荐,今日佳人,佳人信息】
目录
1:首页推荐
1.1:接口地址
1.2:流程分析
1.3:代码实现
2:今日佳人
1.1:接口地址
1.2:流程分析
1.3:代码实现
3:佳人信息
1.1:接口地址
1.2:流程分析
1.3:代码实现
1:首页推荐
1.1:接口地址
1.2:流程分析
1.3:代码实现
与前端交互的app-server模块
controller层实现
@GetMapping("/recommendation")public ResponseEntity findAllrecommendation(RecommendPageVo recommendPageVo){ResultList allrecommendation = recommendService.findAllrecommendation(recommendPageVo, UserHolder.getUserId());return ResponseEntity.ok(allrecommendation);}
service层实现
@DubboReferenceprivate RecommendUserApi recommendUserApi;@DubboReferenceprivate UserInfoApi userInfoApi;public ResultList findAllrecommendation(RecommendPageVo recommendPageVo, Long userId) {ResultList allrecommendation = recommendUserApi.findAllrecommendation(recommendPageVo, userId);List<RecommendUser> items = (List<RecommendUser>)allrecommendation.getItems();//根据ids查询详情List<Long> ids = CollUtil.getFieldValues(items, "userId", Long.class);//构建条件UserInfo userInfo = new UserInfo();userInfo.setGender(recommendPageVo.getGender());userInfo.setAge(Integer.valueOf(recommendPageVo.getAge()));System.out.println(userInfo);Map<Long, UserInfo> map = userInfoApi.findByids(ids, userInfo);List<UserInfoVo> userInfoList = new ArrayList<>();for (RecommendUser item : items) {UserInfo userInfo1 = map.get(item.getUserId());UserInfoVo userInfoVo = new UserInfoVo();if (userInfo1 !=null){userInfoVo.setId(userInfo1.getId());userInfoVo.setAge(userInfo1.getAge());userInfoVo.setAvatar(userInfo1.getAvatar());userInfoVo.setGender(userInfo1.getGender());userInfoVo.setFateValue(item.getScore().intValue());userInfoVo.setNickname(userInfo1.getNickname());String[] split = userInfo1.getTags().split(",");userInfoVo.setTags(split);userInfoList.add(userInfoVo);}}allrecommendation.setItems(userInfoList);return allrecommendation;}
统一封装接口的模块
/*** @Author 爱吃豆的土豆、* @Date 2023/4/7 16:09*/
public interface RecommendUserApi {ResultList findAllrecommendation(RecommendPageVo recommendPageVo, Long userId);UserInfoVo findtodayBest(Long userId);UserInfoVo findUserInfo(Long id, Long userId);
}
mongo提供者模块(提供相关接口的实现)
@Overridepublic ResultList findAllrecommendation(RecommendPageVo recommendPageVo, Long userId) {Criteria criteria = Criteria.where("toUserId").is(userId);//查询总数Query query = new Query(criteria);long count = mongoTemplate.count(query, RecommendUser.class);//查询当前页的数据列表Query querylimit = new Query(criteria).limit(recommendPageVo.getPagesize()).skip((recommendPageVo.getPage() - 1)*recommendPageVo.getPagesize()).with(Sort.by(Sort.Order.desc("score")));List<RecommendUser> recommendUserList = mongoTemplate.find(querylimit, RecommendUser.class);ResultList resultList = new ResultList<>();resultList.setItems(recommendUserList);//设置列表//设置当前页码resultList.setPage(recommendPageVo.getPage());//设置总记录数resultList.setCounts((int) count);//设置页大小resultList.setPagesize(recommendPageVo.getPagesize());//设置总页数resultList.setPages((int) (count/recommendPageVo.getPagesize()));return resultList;}
2:今日佳人
1.1:接口地址
1.2:流程分析
缘分值是根据平台算法推算出的缘分值得分,将用户的缘分值存放到mongodb数据库中,这里通过当前登录用户的id,在系统中找到该用户的所有推荐用户,将推荐用户的缘分值进行降序找到最高缘分值用户,进行展示今日佳人。
1.3:代码实现
与前端交互的app-server模块
controller层实现
@GetMapping("/todayBest")public ResponseEntity findtodayBest(){UserInfoVo userInfoVo = recommendService.findtodayBest(UserHolder.getUserId());return ResponseEntity.ok(userInfoVo);}
service层实现
public UserInfoVo findtodayBest(Long userId) {UserInfoVo userInfoVo = recommendUserApi.findtodayBest(userId);return userInfoVo;}
统一封装接口的模块
UserInfoVo findtodayBest(Long userId);
提供者模块(提供相关接口的实现)
@Overridepublic UserInfoVo findtodayBest(Long userId) {Query query = new Query();//创建等值判断Criteria criteria = Criteria.where("toUserId").is(userId);Sort by = Sort.by(Sort.Order.desc("score"));query.addCriteria(criteria);query.with(by);RecommendUser one = mongoTemplate.findOne(query, RecommendUser.class);//查询数据UserInfo userInfo = userInfoMapper.selectById(one.getUserId());UserInfoVo userInfoVo = new UserInfoVo();userInfoVo.setId(userInfo.getId());userInfoVo.setTags(userInfo.getTags().split(","));userInfoVo.setAge(userInfo.getAge());userInfoVo.setNickname(userInfo.getNickname());userInfoVo.setGender(userInfo.getGender());userInfoVo.setAvatar(userInfo.getAvatar());userInfoVo.setFateValue(one.getScore().intValue());return userInfoVo;}
3:佳人信息
1.1:接口地址
1.2:流程分析
通过接收到前端传入的用户id,在MySQL数据库中查询找到对应的用户信息封装返回。
1.3:代码实现
与前端交互的app-server模块
controller层实现
@GetMapping("/{id}/personalInfo")public ResponseEntity personalInfo(@PathVariable("id") Long id){UserInfoVo userInfoVo = recommendService.findUserInfo(id,UserHolder.getUserId());return ResponseEntity.ok(userInfoVo);}
service层实现
public UserInfoVo findUserInfo(Long id, Long userId) {if (id == userId){UserInfo user = userInfoApi.findUser(userId);UserInfoVo userInfoVo = UserInfoVo.init(user, 100);return userInfoVo;}return recommendUserApi.findUserInfo(id,userId);}
UserInfoVo.init()静态方法:在对象内部处理信息的封装
public static UserInfoVo init(UserInfo userInfo,Integer fateValue) {UserInfoVo userInfoVo = new UserInfoVo();BeanUtils.copyProperties(userInfo,userInfoVo);String[] split = userInfo.getTags().split(",");userInfoVo.tags = split;userInfoVo.setFateValue(fateValue);return userInfoVo;}
统一封装接口的模块
public UserInfo findUser(Long id);
提供者模块(提供相关接口的实现)
@Overridepublic UserInfo findUser(Long id) {UserInfo userInfo = this.userInfoMapper.selectById(id);return userInfo;}
相关文章:

交友项目【首页推荐,今日佳人,佳人信息】
目录 1:首页推荐 1.1:接口地址 1.2:流程分析 1.3:代码实现 2:今日佳人 1.1:接口地址 1.2:流程分析 1.3:代码实现 3:佳人信息 1.1:接口地址 1.2&am…...

kafka-5 kafka的高吞吐量和高可用性
kafka的高吞吐量和高可用性 6.1 高吞吐量6.2 高可用(HA) 6.1 高吞吐量 kafka的高吞吐量主要是由4方面保证的: (1)顺序读写磁盘 Kafka是将消息持久化到本地磁盘中的,一般人会认为磁盘读写性能差ÿ…...

Jmeter前置处理器和后置处理器
1. 后置处理器(Post Processor) 本质上是⼀种对sampler发出请求后接受到的响应数据进⾏处理 (后处理)的⽅法 正则表达式后置处理器 (1)引⽤名称:下⼀个请求要引⽤的参数名称,如填写title,则可…...

手把手带你了解《线程池》
文章目录 线程池的概念池的目的线程池的优势为什么从池子里拿线程更高效?构造方法参数讲解线程拒绝策略模拟实现线程池一个线程池设置多少线程合适? 线程池的概念 线程池:提前把线程准备好,创建线程不是直接从系统申请࿰…...

idea中使用git工具
目录 一、IDEA中配置git二、git操作将项目设置成git仓库 一、IDEA中配置git 打开idea,点击File–>Settings 点击版本控制,然后点击git 将你的git.exe安装目录填到下面位置 点击test可以看到显示了版本,说明配置成功 二、git操作 将项目设…...

剖析DLL(动态链接库)的使用方法
为了更好地理解和应用dll,我们首先需要了解dll的概念和原理。 一、dll(Dynamic Link Library)的概念 dll是一种动态链接库,它是在Windows操作系统中广泛使用的一种机制,它允许程序在运行时调用动态链接库中的函数。d…...

第二章 设计模式七大原则
文章目录 前言一、单一职责 🍧1、单一职责原则注意事项和细节2、代码实现2、1 错误示例2、2 正确示例但有缺陷2、3 最终形态 二、接口隔离原则 🥩1、代码示例 三、依赖倒转原则 🥥1、代码示例2、依赖关系传递的三种方式 四、里氏替换原则 &am…...

计网第五章.运输层—TCP报文的首部
以下来自湖科大计算机网络公开课笔记及个人所搜集资料 TCP报文格式如下: 那6个标志位对应的中文名: 下面是按TCP首部的顺序介绍各个字段: 源端口和目的端口分别是表示发送TCP报文段的应用进程。从网络编程角度,进程里创建sock…...

程序员最新赚钱指南!
程序员们的主要收入来源 1️⃣首先,我们要明白程序员无论编程开发多么努力,随着时间推移,受年龄、生活、健康等因素,程序员们都会面临职业天花板,这是大多数人不可规避的一个事实。 2️⃣其次,这几年因为…...

如何快速获取淘宝商品的详细信息?看这里就够了
taobao.item_get 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,…...

id生成器
使用说明 ⚠️ 所有使用id的业务场景,应该在数据库层设置合理的唯一索引 功能 自增id 基于 redis 自增 redis 中的key为:[spring.application.name].idGenetate.[key] ⚠️ key 在不同的业务不应该重复使用,否则单号无法连续使用 private f…...

为什么许多人吐槽C++11,那些语法值得我们学习呢?
致前行的人: 人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定冷静,学习如何从慌乱中找到生机。 目录 1.C11简介 2.统一的列表初始化 2.1 {}初始化 …...

千耘农机导航的“星地一体”能力究竟是什么?
伴随农业机械化和智能化的发展,越来越多的人开始使用农机自动驾驶系统助力耕作,千耘农机导航的“星地一体”能力可有效解决信号受限的问题,实现作业提效。究竟什么是“星地一体”,又是如何解决智能化农机作业的痛点的?…...

(数字图像处理MATLAB+Python)第四章图像正交变换-第四、五节:Radon变换和小波变换
文章目录 一:Radon变换(1)Radon变换原理(2)Radon变换实现(3)Radon变换性质(4)Radon变换应用 二:小波变换(1)小波A:定义B&a…...

舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
返回至系列文章导航博客 1 简介 在中医智能舌诊项目中需要舌体胖瘦的自动分析 舌体胖瘦是中医诊断中重要的观察依据,。胖大舌“舌色淡白,舌体胖嫩,比正常舌大而厚,甚至充满口腔”,主脾肾阳虚,气化失常&am…...

牛顿法、梯度下降法与拟牛顿法
牛顿法、梯度下降法与拟牛顿法 0 引言1 关于泰勒展开式1.1 原理1.2 例子 2 牛顿法2.1 x 为一维2.2 x 为多维 3 梯度下降法4 拟牛顿法4.1 拟牛顿条件4.2 DFP 算法4.3 BFGS 算法4.4 L-BFGS 算法 0 引言 机器学习中在求解非线性优化问题时,常用的是梯度下降法和拟牛顿…...

带你浅谈下Quartz的简单使用
Scheduler 每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题(jobDetail的实例也是新的) Quzrtz 定时任务默认都是并发执行,不会等待上一次任务执行完毕,只要间隔时间到就会执…...

C++ cout格式化输出
称为“流操纵算子”),使用更加方便。 C cout成员方法格式化输出 《C输入流和输出流》一节中,已经针对 cout 讲解了一些常用成员方法的用法。除此之外,ostream 类中还包含一些可实现格式化输出的成员方法,这些成员方法…...

查询练习:复制表的数据作为条件查询
查询某课程成绩比该课程平均成绩低的 score 表。 -- 查询平均分 SELECT c_no, AVG(degree) FROM score GROUP BY c_no; -------------------- | c_no | AVG(degree) | -------------------- | 3-105 | 87.6667 | | 3-245 | 76.3333 | | 6-166 | 81.6667 | ------…...

Thymeleaf select回显并选中多个
语法: selected"selected" 或 selectedtrue ${#strings.indexOf(name,frag)} 或者 ${#lists.contains(list, element)} 或者 ${#strings.contains(name,ez)} 或者 ${#strings.containsIgnoreCase(name,ez)} 都可以实现。 多选示例 : &…...

【Go 基础】变量
1. 变量 Go 语言是静态类型语言,由于编译时,编译器会检查变量的类型,所以要求所有的变量都要有明确的类型 。 变量在使用前,需要先声明。声明类型,就约定了你这个变量只能赋该类型的值。 1.1 变量声明 格式&#x…...

国网B接口语音对讲和广播技术探究及与GB28181差别
接口描述 在谈国网B接口的语音广播和语音对讲的时候,大家会觉得,国网B接口是不是和GB28181大同小异?实际上确实信令有差别,但是因为要GB28181设备接入测的对接,再次做国网B接口就简单多了。 语音对讲和广播包括信令接…...

非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法
哈喽大家好啊!我想分享一下,非计算机专业的学生如何转行成为程序员。首先,我先介绍一下我的情况。我是18年毕业的,大学学的专业是土木工程,与计算机一点关系都没有。但是在大学时,我对程序员比较感兴趣。本…...

2023年最新网络安全渗透工程师面试题汇总!不看亏大了!
技术面试问题 CTF 说一个印象深刻的CTF的题目 Padding Oracle->CBC->密码学(RSA/AES/DSA/SM) CRC32 反序列化漏洞 sql二次注入 第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助get_magic_quotes_gpc 对其中的特殊字符进行了转义&…...

红黑树(C++实现)
文章目录 红黑树的概念红黑树的性质红黑树结点的定义红黑树的插入红黑树的查找红黑树的验证检测是否满足二叉搜索树检测是否满足红黑树的性质 红黑树与AVL树的比较包含上述功能的红黑树代码 红黑树的概念 红黑树,是一棵二叉搜索树,但在每一个结点上增加一个存储位表示结点的颜色…...

leetcode尊享面试 100 题 - 1427. 字符串的左右移
尊享面试 100 题是Leetcode会员专享题单 1427. 字符串的左右移 力扣题目链接 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] [direction, amount]: direction 可以为 0 (表示左移)或 1 (表…...

进来看看!跨境电商要这样选品才能做出爆款
今天要聊的是跨境电商怎么做系列的第三期,前面两期聊完平台和货源之后,就到了选品。目前网络上很多都是告诉你不同平台要怎么选品。龙哥这期有些不同,不会和你说哪个品类最受欢迎,而是告诉你你要怎么去选择出适合自己、适合市场的…...

什么是深度学习?
目录 简介 深度学习的由来 深度学习未来的趋势 总结 简介 深度学习是在20世纪80年代被提出来的,主要是由加拿大的计算机科学家Geoffrey Hinton、Yoshua Bengio、Yann LeCun等人发起的。Geoffrey Hinton等人在经过多年的研究和实践之后,…...

追梦之旅【数据结构篇】——看看小白试如何利用C语言“痛”撕堆排序
追梦之旅【数据结构篇】——看看小白试如何利用C语言“痛”撕堆排序 ~😎 前言🙌堆的应用 —— 堆排序算法:堆排序算法源代码分享运行结果测试截图: 总结撒花💞 😎博客昵称:博客小梦 ὠ…...

python版pytorch模型转openvino及调用
一、openvino安装 参看官方文档https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html 安装命令是根据上面的选择生成。这里安装了pytorch和onnx依赖。 二、pytorch模型转opnvino模型推理 import os import time import cv2 import nu…...