当前位置: 首页 > news >正文

交友项目【首页推荐,今日佳人,佳人信息】

目录

1:首页推荐

1.1:接口地址

1.2:流程分析

1.3:代码实现

2:今日佳人

1.1:接口地址

1.2:流程分析

1.3:代码实现

3:佳人信息

1.1:接口地址

1.2:流程分析

1.3:代码实现


1:首页推荐

1.1:接口地址

地址: http://192.168.136.160:3000/project/19/interface/api/118

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:接口地址

地址: http://192.168.136.160:3000/project/19/interface/api/103

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:接口地址

地址: http://192.168.136.160:3000/project/19/interface/api/103

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&#xff1a;首页推荐 1.1&#xff1a;接口地址 1.2&#xff1a;流程分析 1.3&#xff1a;代码实现 2&#xff1a;今日佳人 1.1&#xff1a;接口地址 1.2&#xff1a;流程分析 1.3&#xff1a;代码实现 3&#xff1a;佳人信息 1.1&#xff1a;接口地址 1.2&am…...

kafka-5 kafka的高吞吐量和高可用性

kafka的高吞吐量和高可用性 6.1 高吞吐量6.2 高可用&#xff08;HA&#xff09; 6.1 高吞吐量 kafka的高吞吐量主要是由4方面保证的&#xff1a; &#xff08;1&#xff09;顺序读写磁盘 Kafka是将消息持久化到本地磁盘中的&#xff0c;一般人会认为磁盘读写性能差&#xff…...

Jmeter前置处理器和后置处理器

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

手把手带你了解《线程池》

文章目录 线程池的概念池的目的线程池的优势为什么从池子里拿线程更高效&#xff1f;构造方法参数讲解线程拒绝策略模拟实现线程池一个线程池设置多少线程合适&#xff1f; 线程池的概念 线程池&#xff1a;提前把线程准备好&#xff0c;创建线程不是直接从系统申请&#xff0…...

idea中使用git工具

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

剖析DLL(动态链接库)的使用方法

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

第二章 设计模式七大原则

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

计网第五章.运输层—TCP报文的首部

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

程序员最新赚钱指南!

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

如何快速获取淘宝商品的详细信息?看这里就够了

taobao.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes,…...

id生成器

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

为什么许多人吐槽C++11,那些语法值得我们学习呢?

致前行的人&#xff1a; 人生像攀登一座山&#xff0c;而找寻出路&#xff0c;却是一种学习的过程&#xff0c;我们应当在这过程中&#xff0c;学习稳定冷静&#xff0c;学习如何从慌乱中找到生机。 目录 1.C11简介 2.统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 …...

千耘农机导航的“星地一体”能力究竟是什么?

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

(数字图像处理MATLAB+Python)第四章图像正交变换-第四、五节:Radon变换和小波变换

文章目录 一&#xff1a;Radon变换&#xff08;1&#xff09;Radon变换原理&#xff08;2&#xff09;Radon变换实现&#xff08;3&#xff09;Radon变换性质&#xff08;4&#xff09;Radon变换应用 二&#xff1a;小波变换&#xff08;1&#xff09;小波A&#xff1a;定义B&a…...

舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)

返回至系列文章导航博客 1 简介 在中医智能舌诊项目中需要舌体胖瘦的自动分析 舌体胖瘦是中医诊断中重要的观察依据&#xff0c;。胖大舌“舌色淡白&#xff0c;舌体胖嫩&#xff0c;比正常舌大而厚&#xff0c;甚至充满口腔”&#xff0c;主脾肾阳虚&#xff0c;气化失常&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 引言 机器学习中在求解非线性优化问题时&#xff0c;常用的是梯度下降法和拟牛顿…...

带你浅谈下Quartz的简单使用

Scheduler 每次执行&#xff0c;都会根据JobDetail创建一个新的Job实例&#xff0c;这样就可以规避并发访问的问题&#xff08;jobDetail的实例也是新的&#xff09; Quzrtz 定时任务默认都是并发执行&#xff0c;不会等待上一次任务执行完毕&#xff0c;只要间隔时间到就会执…...

C++ cout格式化输出

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

查询练习:复制表的数据作为条件查询

查询某课程成绩比该课程平均成绩低的 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回显并选中多个

语法&#xff1a; selected"selected" 或 selectedtrue ${#strings.indexOf(name,frag)} 或者 ${#lists.contains(list, element)} 或者 ${#strings.contains(name,ez)} 或者 ${#strings.containsIgnoreCase(name,ez)} 都可以实现。 多选示例 &#xff1a; &…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...