微信聊天小程序——(五、添加好友)

article/2025/8/25 14:20:38

五、添加好友


步骤一、通过搜索添加好友

具体效果:

思路:

  • 本质上来讲,就是通过输入框得到好友账号信息,之后再数据库中查询,最后返回并渲染查询结果。
  • 首先,得到输入框的值,并传递到我们的页面data中
  • 当点击搜索按钮的时候,在数据库用户表中查询
  • 查询成功之后,当点击申请添加时,执行添加好友步骤
  • 添加好友成功,返回初始页面

在我们的添加好友页面:

在js文件中:

addFriend(e)

  // 功能:当点击添加好友的时候,创建关于用户和对应好友的聊天表// 思路:1.通过获取对应数组的角标,获取对应的用户信息userList中//      2.将用户和对应好友的用户信息都作为数据库表信息,添加到我们的数据库表中

getValue(e)

 // 功能:获取输入框的值,实时传递给data

search()

// 功能:根据从data中按到的inputValue,在数据表的好友表中查询是否存在这个好友
const app=getApp();
const util= require("../../utils/utils")
Page({data: {},onLoad(options) {},// 功能:获取输入框的值,实时传递给datagetValue(e){console.log(e.detail.value)this.setData({inputValue: e.detail.value})},// 功能:根据从data中按到的inputValue,在数据表的好友表中查询是否存在这个好友search(){var that = this;wx.cloud.database().collection('chat_users1').where({num: Number(that.data.inputValue)}).get({success(res){console.log(res)that.setData({user:res.data[0]})}})},// 功能:当点击添加好友的时候,添加好友
// 思路:1.和好友页面,发出添加好友申请逻辑一样// 功能:当点击添加好友的时候,创建关于用户和对应好友的聊天表// 思路:1.通过获取对应数组的角标,获取对应的用户信息userList中//      2.将用户和对应好友的用户信息都作为数据库表信息,添加到我们的数据库表中
addFriend(e){var that=this;wx.cloud.database().collection("chat_record1").add({data:{userA_faceImg:app.globalData.userInfo.faceImg,//头像userA_id:app.globalData.userInfo._id,//唯一身份标识符userA_nickName:app.globalData.userInfo.nickName,//昵称userB_faceImg:that.data.user.faceImg,//头像userB_id:that.data.user._id,//唯一身份标识符userB_nickName:that.data.user.nickName,//昵称isFriend:0,//是否是好友,0代表发送请求,1代表是好友record:[],//聊天内容进行记录,time:util.formatTime(new Date())},success(res){console.log(res)wx.showToast({title: '发送请求成功',})}})
},})

在wxml文件中:


<input class="input_in" placeholder="请输入账号" bindinput="getValue" type="text" />
<button bindtap="search" type="primary">搜索</button><block><view class="one_row"><view class="photo_text"> <image class="photo" src="{{user.faceImg}}"></image><view >{{user.nickName}}</view></view><view  bindtap="addFriend" class="text">添加好友</view>
</view>

在wxss文件中:

.input_in{padding: 10rpx 10rpx;border: 2rpx solid rgb(180, 196, 196);border-radius: 4rpx;margin: 10rpx 10rpx;
}
.one_row{display: flex;flex-direction: row;justify-content: space-between;align-items: center;
}
.photo{width: 150rpx ;height: 150rpx;border-radius: 50%;margin: 20rpx 20rpx;
}
.photo_text{display: flex;flex-direction: row;align-items: center;
}
.text{margin: 20rpx 20rpx;
}

步骤二、如何避免搜索时重复添加好友

具体效果:
在这里插入图片描述

思路:

  • 在显示我们的好友信息的时候进行一个判断
  • 如果在我们的好友记录表中,这个好友的信息存在,说明我们之前发出过好友申请
    这个时候,在进行一个判。如果判断结果为isFriend为1,说明已经为好友,这个时候,设置我们本地的data中一个参数fridens,来判断是否我们显示添加好友信息。
  • 通过判断我们与好友的添加状态,我们显示已添加、添加好友、正在申请中等等状态
  • 做一个判断,只有点击添加好友状态的时候,我们才进行添加好友的操作。

在我们搜索页面中:

在js文件:

添加了一个判断好友状态

  getValue(e)// 功能:获取输入框的值,实时传递给dataaddFriend(e)// 功能:当点击添加好友的时候,添加好友
// 思路:1.和好友页面,发出添加好友申请逻辑一样// 功能:当点击添加好友的时候,创建关于用户和对应好友的聊天表// 思路:1.通过获取对应数组的角标,获取对应的用户信息userList中//      2.将用户和对应好友的用户信息都作为数据库表信息,添加到我们的数据库表中
const app=getApp();
const util= require("../../utils/utils")
Page({data: {},onLoad(options) {this.setData({})},// 功能:获取输入框的值,实时传递给datagetValue(e){console.log(e.detail.value)this.setData({inputValue: e.detail.value})},// 功能:根据从data中按到的inputValue,在数据表的好友表中查询是否存在这个好友search(){var that = this;wx.cloud.database().collection('chat_users1').where({num: Number(that.data.inputValue)}).get({success(res){console.log(res)that.setData({user:res.data[0]})//功能:当我们搜寻到好友账号的时候,判断我们与好友的状态。查询chat_record,看是否之前已经有记录// 思路 1.拿到这个好友的_id,判断我们好友聊天表中,A或者B,的_id是否相同//     2.如果相同,说明我们有了申请信息。//     3.如果没有,说明没有申请信息。这个时候显示添加好友信息,使用参数fridens为false表示。//     4.如果有,再次进行判断我们的isFriend的状态。如果值为1,说明已经是是好友。否则为正在申请中。加isRequest参数判断。  const _ = wx.cloud.database().commandwx.cloud.database().collection("chat_record1").where(_.or([{userA_id: res.data[0]._id,},{userB_id: res.data[0]._id,}])).get({success(ress){console.log(ress)if(ress.data.length>0){//有记录了if(ress.data[0].isFriend == 0){console.log('进来了')that.setData({isFriend:true,isRequest:true})}else{that.setData({isFriend:true,isRequest:false})}}else{that.setData({isFriend:false})}}})}})},// 功能:当点击添加好友的时候,添加好友
// 思路:1.和好友页面,发出添加好友申请逻辑一样// 功能:当点击添加好友的时候,创建关于用户和对应好友的聊天表// 思路:1.通过获取对应数组的角标,获取对应的用户信息userList中//      2.将用户和对应好友的用户信息都作为数据库表信息,添加到我们的数据库表中
addFriend(e){var that=this;wx.cloud.database().collection("chat_record1").add({data:{userA_faceImg:app.globalData.userInfo.faceImg,//头像userA_id:app.globalData.userInfo._id,//唯一身份标识符userA_nickName:app.globalData.userInfo.nickName,//昵称userB_faceImg:that.data.user.faceImg,//头像userB_id:that.data.user._id,//唯一身份标识符userB_nickName:that.data.user.nickName,//昵称isFriend:0,//是否是好友,0代表发送请求,1代表是好友record:[],//聊天内容进行记录,time:util.formatTime(new Date())},success(res){console.log(res)wx.navigateBack({success(){wx.showToast({title: '发送请求成功',})}})}})
},})

在wxml文件中:


<input class="input_in" placeholder="请输入账号" bindinput="getValue" type="text" />
<button bindtap="search" type="primary">搜索</button><block><view class="one_row"><view class="photo_text"> <image class="photo" src="{{user.faceImg}}"></image><view >{{user.nickName}}</view></view><view wx:if="{{isFriend == true && isRequest == true}}"   class="text">申请中</view><view  wx:if="{{isFriend == true && isRequest == false}}"   class="text">已为好友</view><view wx:if="{{isFriend == false}}" bindtap="addFriend" class="text">添加好友</view>
</view></block>

在wxss文件中:

.input_in{padding: 10rpx 10rpx;border: 2rpx solid rgb(180, 196, 196);border-radius: 4rpx;margin: 10rpx 10rpx;
}
.one_row{display: flex;flex-direction: row;justify-content: space-between;align-items: center;
}
.photo{width: 150rpx ;height: 150rpx;border-radius: 50%;margin: 20rpx 20rpx;
}
.photo_text{display: flex;flex-direction: row;align-items: center;
}
.text{margin: 20rpx 20rpx;
}

http://chatgpt.dhexx.cn/article/bhkkQ09J.shtml

相关文章

支付宝小程序平台的IM聊天插件

文章目录 前言一、用户端1.基本展示2.难处理的点二、另一用户端1.前端websocket的整合2.手机息屏websocket断线问题2.websocket服务端配置3.后端整合websocket作为服务端&#xff0c;传输消息给前端 总结 前言 最近工作需求来了个项目&#xff0c;前景为在支付宝平台上发布一个…

使用 Python 编写一个聊天小程序

欢迎关注 “小白玩转Python”&#xff0c;发现更多 “有趣” 本篇文章分享如何用相当简洁的 Python 代码制作一个简单的聊天应用程序。更重要的是&#xff0c;我已经实现了没有任何第三方依赖的代码&#xff01; 首先&#xff0c;我创建了一个聊天服务器&#xff0c;通过它可以…

小米手机解BL锁教程

1.找到设置&#xff0c;找到我的设备 2.点击全部参数&#xff0c;多点几下miui版本&#xff0c;直到弹出开发者模式提醒。 3.返回&#xff0c;找到更多设置 4.找到开发者选项 5.找到设备定状态 6.绑定账号和设备&#xff0c;关机&#xff0c;按开键加音量减&#xff0c;进去fas…

安卓搞机玩机-什么是“锁 ” BL锁 屏幕锁 账号锁 设备锁等分析

相信把玩安卓机型的友友们都大概了解机型的锁是什么概念。但有些友友可能还分不清楚具体锁的概念。今天这个帖子由浅入深的带你了解安卓机型中各种“锁”的概念.这类话题比较敏感。只是大概带你分清楚锁的分类和基本对应的解锁方式. 一.屏幕锁【 图案锁 指纹锁 数字锁 人…

万能小米手机解锁,刷机,默认破解BL锁

写在第一条:下载之前请注意 本软件不支持最新机型,只支持4代和4代以前的机型,请注意 早就想给自己的小米手机刷机了&#xff0c;奈何一直没有门&#xff0c;最后还在求助了万能的淘宝&#xff0c;刚刚在淘宝花了 30大洋买的刷机工具&#xff0c;刷机成功之后&#xff0c;才反…

xiaomi 小米 红米redmi 秒解锁BL锁,不用等,在线秒解锁BL工具介绍

xiaomi 小米 红米redmi 秒解锁BL锁,不用等&#xff0c;在线秒解锁BL Xlaomi Redmi K40 Gaming Xlaomt Poco F3 GT Gaming Xaoml Poco X3 GT Xaoml Redmi Note9 5G Xlaomi Redml Note 10 Pro 5G Xlaoml Redmi Note 10 5G Xlaoml Redml Note 10T 5G Xlaoml Poco M3 Pro 5G Xaoml…

小米手机解BL锁、线刷详细教程,适用于小米全系列手机

[教程] 小米手机解BL锁、线刷详细教程&#xff0c;适用于小米全系列手机 这几天看到论坛里很多人在问怎么线刷&#xff0c;下面我就做个详细的线教程大家看一下高手别喷我哈 此教程只适合刷官方MIUI包 进入正题。 第一步&#xff1a;解BL锁 1.浏览器打开申请解锁小米手机点击立…

android@解bl锁@twrp的刷入和使用问题

文章目录 解bl锁步骤 附:MIUI线刷工具待线刷设备扫面和检查使用方式线刷工具卡住的关闭方法 第三方recoverytwrp解密datadata decrypt清除data后用twrp中刷入文件刷入面具 如何找到合适的TWRP rec ref 解bl锁 不是所有android设备都支持解锁下面是以最为典型的MIUI android设备…

02_Lock锁

首先看一下JUC的重磅武器——锁&#xff08;Lock&#xff09; 相比同步锁&#xff0c;JUC包中的Lock锁的功能更加强大&#xff0c;它提供了各种各样的锁&#xff08;公平锁&#xff0c;非公平锁&#xff0c;共享锁&#xff0c;独占锁……&#xff09;&#xff0c;所以使用起来…

红米note10 pro机型解除“账号锁”的一些操作案例 mtk机型强解bl锁

前言。操作解除锁类案例只限于自己的机型&#xff0c; 因手机号长期不用或者忘记密码导致账号锁出现的问题 机型哦 我经常在csdn网站分享一些玩机中的实测资源和玩机常识。遇到很多玩机的友友&#xff0c;其中我分享的一个资源&#xff0c;这个粉丝朋友下载后在网吧操作不了。…

穷举法解华为bl锁

穷举法解华为bl锁 python3代码测试截图 灵感来自于&#xff1a;https://blog.csdn.net/qq_40169767/article/details/90481748 但是我不懂shell脚本&#xff0c;那个脚本又运行不了&#xff0c;所以我用python写了一个&#xff0c; 穷举要0.05s*9999999999999999/60*60*24*3651…

玩机搞机---关于安卓机型工厂固件 刷机 端口解密 解bl锁 写串 nv损坏 等相关常识

*******工程机和工厂固件方面的常识 可能很多玩机友友对什么是工厂固件比较陌生。那么今天的话题就围绕这个和大家讨论下。其实一般厂家的流程都是在一部机型推放市场之前&#xff0c;需要经过预研企划、研发设计、全面测试等诸多环节。在这一整个改善的全过程中&#xff0c;厂…

小米解锁BL锁(普通解锁)

关于BL锁&#xff0c;BootLoader锁&#xff0c;WIKI上的解释简单一点说就是 启动操作系统的软件&#xff0c;也就是引导程序&#xff0c;用于初始化内存等。 官方的说法是防止篡改程序所造成用户的经济和数据损失&#xff0c;网上的说法是可定义程度高&#xff0c;可卸载系统预…

Android系统刷机教程之解bl锁

由于安卓系统是基于linux开发的&#xff0c;属于嵌入式操作系统。在嵌入式操作系统中&#xff0c;BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图&#xff0c;从而将系统的软硬件环境带到一个合适状态&#xff0c;以便为最终调用操作系统内核…

oppo r11 r11t解BL锁安装面具magisk详细教程

OPPO r11 r11t是高通骁龙660处理器&#xff0c;这个系列要解bl锁网上有很多教程比较http://rom点7to点cn/jiaochengdetail/16880 解好BL锁后就可以找三方rec&#xff0c;刷入rec 进入三方rec&#xff0c;把小包发送到手机硬盘&#xff0c;安装小包&#xff0c;再次重启进入三方…

华为手机一键解锁工具箱下载 | 华为手机解BL锁软件: 支持解锁bootloader,刷写recovery功能

文章目录 1. 软件介绍2. 特色功能3. 资源站点4. 下载地址5. 软件截图6. 安装教程7. 使用教程7.1. 解锁BL 1. 软件介绍 通过这款华为手机实用工具箱可以对你的华为手机系列进行刷机、解锁等操作&#xff0c;网上这种华为刷机解锁工具比较少&#xff0c;那么这款华为手机实用工具…

小米手机解bl锁正规方法!

申请解锁小米手机http://www.miui.com/unlock/download.html在手机上打开开发者模式&#xff0c;在开发者模式下-》设备解锁状态 然后关了wifi用手机卡上网绑定设备。 之后在菜单上选择清除所有数据&#xff0c;然后进入系统即可。

[HBZ分享] 小米手机如何解BL锁

第一步&#xff1a; 进入【设置—>我的设备–>全部参数–>连续疯狂的点MIUI版本那一行】 第二步&#xff1a;进入【更多设置–>开发者模式】&#xff0c;打开USB调试 与 USB安装 第三步&#xff1a;进入【更多设置–>开发者模式】&#xff0c;进入【设别解锁状…

9008 能 解锁BL_手机刷入面具及twrp教程(包含解bl锁教程)

原文作者:sgq694243467 原文链接:https://www.52pojie.cn/thread-1288591-1-1.html 最近了买黑鲨3pro 因为miui的广告很烦就想刷面具和xp框架屏蔽广告,但是网上似乎没什么教程,不是要收费就是空壳教程。经过一天测试和查找最终自己刷好了面具 root 和xp框架参考链接 https:…

【小白搞机入门】名词集-BootLoader锁(BL锁)

系列说明&#xff1a;由于作者认识浅薄&#xff0c;很多方面不能解释到十全十美&#xff0c;仅供参考。系列中收录的解决办法并非万能&#xff0c;请谨慎使用。 定义 BootLoader锁&#xff0c;以下简称“BL锁”&#xff0c;从字面意义上理解&#xff0c;是手机厂商对BootLoader…