交友项目【首页推荐,今日佳人,佳人信息】
目录
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)} 都可以实现。 多选示例 : &…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
