小程式學習筆記 -- 收藏, 點贊功能
阿新 • • 發佈:2018-12-11
目前很多的視訊或文章下面可以收藏點贊等
按照一般的邏輯來說:
點贊可以不用登陸, 這樣方便遊客點贊, 但是呢只能點一次贊
收藏則需要登陸, 因為每個人的收藏內容是不相同的, 只有從收藏夾中才能看到自己收藏了哪些內容
點贊分析:
小程式如果沒有登陸, 那麼怎麼區分使用者是不是同一個呢
之前我想到使用ip來區分, 但是我並不知道ip能不能重複
而且不同的微訊號登陸同一部手機(當然這種情況很少), 那ip是相同的啊
我只是希望一個微訊號一天只能點一次贊而已
在沒有登陸的情況下, 我可以獲取微信使用者的頭像地址, 使用它來區分使用者
我認為頭像地址是不會重複的, 因為頭像地址是由使用者上傳一個url, url應該是不會重複的
wx.getUserInfo({ success: function(res) { var userInfo = res.userInfo var nickName = userInfo.nickName var avatarUrl = userInfo.avatarUrl var gender = userInfo.gender //性別 0:未知、1:男、2:女 var province = userInfo.province var city = userInfo.city var country = userInfo.country } })
我把頭像url儲存起來, 請求開發者伺服器時帶上它
// 點贊 praise: function(e) { var th = this; wx.getUserInfo({ success: function(res) { wx.setStorageSync("avatar_url", res.userInfo.avatarUrl); } }); wx.request({ url: app.globalData.preFixedUrl + "praise", data: { "videoId": 10 }, header: { "praise": wx.getStorageSync("avatar_url") } }); },
收收藏分析:
收藏分兩步, 使用者收藏和用記檢視收藏夾
使用者先登陸, 登陸後就好辦了, 因為登陸後有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;
wx.setStorageSync("openid", openid); // 登陸成功後儲存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: {
"type": "artical"
"openid": openid
},
success: function(e) {
console.log(e);
}
})
像登陸這種操作, 是多次用到, 建議建立js, 將登陸操作封裝為函式
注: 上述登陸操作僅是邏輯示例(登陸成功後, 後臺一般不直接返回openid, 而是返回openid相關的session標識)