目前很多的视频或文章下面可以收藏点赞等
按照一般的逻辑来说:
点赞可以不用登陆, 这样方便游客点赞, 但是呢只能点一次赞
收藏则需要登陆, 因为每个人的收藏内容是不相同的, 只有从收藏夹中才能看到自己收藏了哪些内容
点赞分析:
小程序如果没有登陆, 那么怎么区分用户是不是同一个呢
之前我想到使用ip来区分, 但是我并不知道ip能不能重复
而且不同的微信号登陆同一部手机(当然这种情况很少), 那ip是相同的啊
我只是希望一个微信号一天只能点一次赞而已, 以 微信号 区分
在没有登陆的情况下, 我们可以获取微信用户的头像地址, 使用它来区分用户
我认为头像地址是不会重复的, 因为头像地址是由用户上传生成的一个url, url应该是不会重复的
获取微信头像地址(avatarUrl ):
wx.getUserInfo({
success: function(res) {
var userInfo = res.userInfo
var nickName = userInfo.nickName
var avatarUrl = userInfo.avatarUrl
var gender = userInfo.gender
var province = userInfo.province
var city = userInfo.city
var country = userInfo.country
}
})
获取头像url, 请求开发者服务器时带上它
// 点赞
praise: function(e) {
var th = this;
var avatarUrl = "";
wx.getUserInfo({
success: function(res) {
avatarUrl = res.userInfo.avatarUrl;
}
});
wx.request({
url: app.globalData.preFixedUrl + "praise",
data: {
"videoId": 10
},
header: {
"praise":avatarUrl
}
});
},
收收藏分析:
收藏分两步, 用户收藏和用记查看收藏夹
用户先登陆, 登陆后就好办了, 因为登陆后有openid(微信用户标识)
/**收藏功能*/
collect: function() {
// 先从储存中获取openid
var openid = wx.getStorageSync("openid");
if (openid == null) { // 如果没有openid, 则去登陆
// 登陆
wx.login({
success: function(res) {
if (res.code) {
//发起网络请求
wx.request({
url: app.globalData.preFixedUrl + 'openidLogin',
data: {
code: res.code
},
success: res => {
var openid = res.data; // 仅示例, 后台一般不直接返回openid, 而是以openid生成的session标识
wx.setStorageSync("openid", openid); // 仅为示例, 一般是从session标识中分离出openid
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
});
} else { // 否则直接收藏
wx.request({
url: app.globalData.preFixedUrl + 'videoCollect',
data: {
"openid": openid, // 哪个用户收藏, 开发者服务器中将openid储存
"videoId": 10 // 需要收藏的内容的id
},
success: function(e) {
console.log(e.data);
}
})
}
},
查看收藏夹分析:
也就是根据用户(openid)查询它所收藏的内容
当然一般是要分类查询的, 比如收藏的视频, 收藏的文章, 但总的来说就是查询数据表吧
select video from collect where openid=xxx
select artical from collect where openid=xxx
// 同样先检查是否登陆(未登陆则执行登陆)
// 是登陆状态后, 发送请求就可以了
wx.request({
url: app.globalData.preFixedUrl + 'getCollectVideo',
data: {
"openid": openid
},
success: function(e) {
console.log(e);
}
})
像登陆这种操作, 是多次用到, 建议创建js, 将登陆操作封装为函数
注: 上述登陆操作仅是逻辑示例(登陆成功后, 后台一般不直接返回openid, 而是返回openid相关的session标识)
登陆详情操作可见: https://blog.csdn.net/lljxk2008/article/details/82286031(有后端代码)