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

这篇具有很好参考价值的文章主要介绍了交友项目【首页推荐,今日佳人,佳人信息】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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层实现

    @DubboReference
    private RecommendUserApi recommendUserApi;
    @DubboReference
    private 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提供者模块(提供相关接口的实现)

    @Override
    public 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);

提供者模块(提供相关接口的实现)

    @Override
    public 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);

提供者模块(提供相关接口的实现)文章来源地址https://www.toymoban.com/news/detail-419853.html

    @Override
    public UserInfo findUser(Long id) {
        UserInfo userInfo = this.userInfoMapper.selectById(id);
        return userInfo;
    }

到了这里,关于交友项目【首页推荐,今日佳人,佳人信息】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)

    需要全部源码请点赞关注收藏后评论区留言~~~ 假定用户打开一个旅游App想看看哪里风景比较优美,那么App应当展示各地的风景名声图片,为了让界面不太呆板,可以考虑交错显示风景图片,接着用户向下拉动页面,想要刷新界面浏览更多的图片,此时App界面响应下拉刷新手势

    2024年02月08日
    浏览(44)
  • flutter开发实战-实现首页分类目录入口切换功能

    。 在开发中经常遇到首页的分类入口,如美团的美食团购、打车等入口,左右切换还可以分页更多展示。 在pubspec.yaml引入 由于我这里按照一页8条展示,两行四列展示格式。 当列表list传入的控件时候,一共的页数为 通过列表,一页数量计算每一页应该展示多少个按钮。 一

    2024年02月14日
    浏览(51)
  • 5月29日,今日信息差

    1、鸥维数据平台正式上线:收录数据超 10 亿条 涵盖至乡镇街道,目前唯一提供乡镇数据的数据平台, 拥有超过三万多乡镇、街道基层数据 2、中国核电:预计核电电价 短期内不会有下调风险 3、波音将在零部件供应链等领域与越南合作,将在 直升机、运输和投资发展航空设

    2024年02月07日
    浏览(31)
  • 5月31日,今日信息差

    1、在2023中关村论坛的重大科技成果专场发布会上,一批 面向世界科技前沿、面向经济主战场、面向国家重大需求、面向人民生命健康 的重大科技成果正式发布,涵盖通用视觉大模型、30微米厚度柔性可折叠玻璃、钠离子电池、新一代人造太阳、北斗卫星通信融入大众智能手

    2024年02月07日
    浏览(26)
  • 5月2日,今日信息差

    1、小鹏G9下半年将在广州黄埔区开展自动驾驶载客测试 2、海南自贸港完成首单进境飞机喷涂及维修业务 3、B站举办第二届纪录片开放周,向全国用户免费开放3572部纪录片 4、马云被东京大学聘为客座教授 5、李家超:港车北上是推动大湾区区内经济融合发展的另一重要里程碑

    2024年02月02日
    浏览(21)
  • 5月17日,今日信息差

    ​1、中老铁路运输货物 突破2000万吨 。其中,跨境货运量超400万吨, 货值达177亿元 2、北京首个 5.5G实验基站 在昌平区的国际信息港 建设开通,5.5G将在速率、时延、连接规模和能耗方面全面超越现有5G ,实现下行万兆和上行千兆的峰值速率、毫秒级时延和低成本千亿物联

    2024年02月05日
    浏览(30)
  • 5月10日,今日信息差

    1、今年618前夕,京东App12.0全新上线。可通过天天低价、N天最低价、价保天数等标签的露出,让用户直接买到最低价商品 2、国资委召开中央企业乡村振兴工作会议 3、百度“盲人导航眼镜”专利获授权。摘要显示,本外观设计产品用于为盲人用户的出行进行导航,并且可以用

    2024年02月03日
    浏览(30)
  • 4月24日,今日信息差

    1、一季度全国城镇新增就业297万人,稳就业政策将优化调整 2、伦敦金属交易所调整部分商品保证金标准 3、亚洲最大推力 700 吨液体火箭发动机试验台考台试车圆满成功 4、我国将在 2033 年前后实施「长征九号」重型火箭两发试验箭飞行验证 5、全球知名 IT 巨头纬创泰州工厂

    2023年04月25日
    浏览(32)
  • 6月14日,今日信息差

    1、 人社部:人口红利没有消失,新的人才红利正在形成 。从素质看,人口素质稳步提升,2022年16至59岁劳动年龄人口平均受教育年限达到10.9年,我们的人口红利没有消失,新的人才红利正在形成 2、 人社部:稳妥实施好养老保险全 国统筹,进一步完善个人养老金配套政策

    2024年02月09日
    浏览(27)
  • 5月7日,今日信息差

    1、美国批准“大便口服药”,粪便移植口服药Vowst是FDA批准的第一个利用“健康人类大便”做成的口服药丸,这使患者不必再忍受从肛门塞入的难堪与不便 2、知乎:世卫组织宣布新冠疫情不再构成「国际关注的突发公共卫生事件」,这意味着什么?目前全球疫情形势如何?

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包