Commit 8588a71e by jscat

nyx weapp: 添加并优化点赞功能

1. 子页面数据传递到父页面; 子页面通过prevPage.setData, 同时父页面在onShow()里添加数据处理函数
2. num_like动态数据不通过js来传递,通过前端的wxml来进行拼接,由此同步更新num_like数据
parent 5edfff64
//config.js API全局域名配置 //config.js API全局域名配置
...@@ -56,6 +56,8 @@ var config={ ...@@ -56,6 +56,8 @@ var config={
oss_token_url: host_key + "/api/nyx/oss/getToken", oss_token_url: host_key + "/api/nyx/oss/getToken",
oss_callback_url: login_url + "/api/nyx/oss/callback", oss_callback_url: login_url + "/api/nyx/oss/callback",
post_like_url: host_key + "/api/nyx/post/like", post_like_url: host_key + "/api/nyx/post/like",
activity_like_url: host_key + "/api/nyx/activity/like",
activity_like_del_url: host_key + "/api/nyx/activity/like/del",
check_text_url: host_key + "/api/nyx/wx/check/text", check_text_url: host_key + "/api/nyx/wx/check/text",
check_pic_url: host_key + "/api/nyx/wx/check/pic", check_pic_url: host_key + "/api/nyx/wx/check/pic",
} }
......
// pages/activity/activity-info/activity-info.js // pages/activity/activity-info/activity-info.js
// pages/activity/activity-info/activity-info.js // pages/activity/activity-info/activity-info.js
var config = wx.getStorageSync("config");
var app = getApp();
Page({ Page({
/** /**
...@@ -21,6 +24,9 @@ Page({ ...@@ -21,6 +24,9 @@ Page({
// 基础数据 // 基础数据
activityInfo: {}, activityInfo: {},
//点赞模块
likeDict: {},
}, },
/** /**
...@@ -49,6 +55,7 @@ Page({ ...@@ -49,6 +55,7 @@ Page({
var activityInfo = _this.__data__.activityInfo var activityInfo = _this.__data__.activityInfo
if (Object.keys(activityInfo).length==0 && options.title != "") if (Object.keys(activityInfo).length==0 && options.title != "")
{ {
activityInfo['index_id'] = options.index_id;
activityInfo['activity_id'] = options.activity_id; activityInfo['activity_id'] = options.activity_id;
activityInfo['note_image'] = options.note_image.split("::"); activityInfo['note_image'] = options.note_image.split("::");
activityInfo['title'] = options.title; activityInfo['title'] = options.title;
...@@ -79,6 +86,12 @@ Page({ ...@@ -79,6 +86,12 @@ Page({
//get the activity_item, then add to activityInfo //get the activity_item, then add to activityInfo
_this.getActivityItem(activityInfo['activity_id']) _this.getActivityItem(activityInfo['activity_id'])
//初始化likeDict
if (!wx.getStorageSync('likeDict')) {
var likeDict = {}
wx.setStorageSync('likeDict', likeDict)
}
}, },
/** /**
...@@ -106,6 +119,26 @@ Page({ ...@@ -106,6 +119,26 @@ Page({
* 生命周期函数--监听页面卸载 * 生命周期函数--监听页面卸载
*/ */
onUnload: function () { onUnload: function () {
var _this = this;
// 获取likeDict
var likeDict = _this.__data__.likeDict
var activityId = _this.__data__.activityInfo['activity_id']
var numLike = _this.__data__.activityInfo['num_like']
var indexId = _this.__data__.activityInfo['index_id']
// 如果存在update操作, 则更新
if (likeDict[activityId] != undefined && likeDict[activityId] != 0 ) {
_this.submitLike(activityId, likeDict[activityId])
}
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
likeDictSub: { 'index_id': indexId, 'num_like': numLike}
})
}, },
...@@ -227,5 +260,78 @@ Page({ ...@@ -227,5 +260,78 @@ Page({
}); });
}, },
submitLike: function (activityId, op) {
var _this = this;
var strUrl = op == 1 ? config.activity_like_url + '?activityId=' + activityId : config.activity_like_del_url + '?activityId=' + activityId
config.debug == 1 ? console.log("===submitLike strUrl is: " + strUrl) : ""
wx.request({
url: strUrl,
method: 'GET',
header: {
'Cookie': wx.getStorageSync('cookieKey'),
},
success: function (res) {
if (res.statusCode == 200) {
//表示查询成功
console.log(res.data);
// var activityInfo = _this.__data__.activityInfo
// var likeDictStorage = wx.getStorageSync('likeDict')
// activityInfo['num_like'] = activityInfo['num_like'] + 1
// likeDict[activityId] = 1
// wx.setStorageSync('likeDict', likeDict)
// _this.setData({
// likeDict: likeDict,
// activityInfo: activityInfo,
// })
}
}
})
},
// 接收前端请求
onSubmitLike: function (e) {
var _this = this;
let activityId = e.currentTarget.dataset.id; // 获取活动id
var activityInfo = _this.__data__.activityInfo
// storage.likeDict 只负责前端显示
// data.likeDict 负责数据库操作
var likeDict = _this.__data__.likeDict
var likeDictStorage = wx.getStorageSync('likeDict')
// 添加操作, 一定是storage的值为0或者undefined
if (likeDictStorage[activityId] == 0 || likeDictStorage[activityId] == undefined) {
// 同步更新likeDict和activityInfo, like+1
// 同步更新前端
activityInfo['num_like'] = parseInt(activityInfo['num_like']) + 1
likeDictStorage[activityId] = 1
// 表示本页面有数据操作
likeDict[activityId] = likeDict[activityId]!=undefined ? likeDict[activityId] + 1 : 1
wx.setStorageSync('likeDict', likeDictStorage)
_this.setData({
likeDict: likeDict,
activityInfo: activityInfo,
})
}
// 删除操作, 一定是storage的值为1
else if(likeDictStorage[activityId] == 1 && likeDictStorage[activityId] != undefined)
{
//同步更新likeDict和activityInfo, like-1
activityInfo['num_like'] = parseInt(activityInfo['num_like']) - 1
likeDictStorage[activityId] = 0
likeDict[activityId] = likeDict[activityId]!=undefined ? likeDict[activityId] - 1 : -1
wx.setStorageSync('likeDict', likeDictStorage)
_this.setData({
likeDict: likeDict,
activityInfo: activityInfo,
})
}
},
}) })
\ No newline at end of file
<wxs module="tutil" src="./../../../utils/date.wxs"></wxs> <wxs module="tutil" src="./../../../utils/date.wxs"></wxs>
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<view class="clone-left">¥{{activityInfo.unit_price}}</view> <view class="clone-left">¥{{activityInfo.unit_price}}</view>
<block wx:if="{{memberId==''}}"> <block wx:if="{{memberId==''}}">
<view class="clone-right" bindtap="onSubmitLike" data-id='{{index}}'> <view class="clone-right" bindtap="onSubmitLike" data-id='{{activityInfo.activity_id}}'>
<view class="note-column" style="font-size: 24rpx;font-weight:normal;color: #000;align-items:center"> <view class="note-column" style="font-size: 24rpx;font-weight:normal;color: #000;align-items:center">
<image src="../../../icon/activity/like.png"></image> <image src="../../../icon/activity/like.png"></image>
{{activityInfo.num_like}} {{activityInfo.num_like}}
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</view> </view>
</block> </block>
<block wx:else> <block wx:else>
<view class="clone-right" bindtap="onClickClone" data-id='{{index}}'> <view class="clone-right" bindtap="onClickClone" data-id='{{activityInfo.activity_id}}'>
<view class="note-column" style="font-size: 24rpx;font-weight:normal;color: #000;align-items:center"> <view class="note-column" style="font-size: 24rpx;font-weight:normal;color: #000;align-items:center">
<image src="../../../icon/activity/clone.png"></image> <image src="../../../icon/activity/clone.png"></image>
克隆 克隆
......
// pages/activity/activity.js // pages/activity/activity.js
...@@ -40,8 +40,8 @@ Page({ ...@@ -40,8 +40,8 @@ Page({
strSearch : "", //搜索的字串 strSearch : "", //搜索的字串
inputVal : "", //输入字符串,主要用于页面显示 inputVal : "", //输入字符串,主要用于页面显示
//点赞模块 //点赞模块-来自子页面
likeDict: {}, likeDictSub: {},
//二维码信息 //二维码信息
qRCodeMsg: "", qRCodeMsg: "",
...@@ -164,6 +164,17 @@ Page({ ...@@ -164,6 +164,17 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function () {
var _this = this;
var likeDictSub = _this.__data__.likeDictSub;
var activities = _this.__data__.activities;
if(likeDictSub.hasOwnProperty('index_id'))
{
var index = likeDictSub['index_id']
activities[index]['num_like'] = likeDictSub['num_like']
_this.setData({
activities: activities
})
}
}, },
...@@ -236,8 +247,9 @@ Page({ ...@@ -236,8 +247,9 @@ Page({
*/ */
getActivities: function (scrollType, pageNum, pageCount, strCategory, strSearch) { getActivities: function (scrollType, pageNum, pageCount, strCategory, strSearch) {
var _this = this; var _this = this;
// 如果是"推荐"和"搜索",需要单独处理 // 如果是"推荐"和"搜索",需要单独处理
// '搜索'tab的时候需要转换为搜索的关键词(_this.__data__.strSearch) // '搜索'tab的时候, 需要转换为搜索的关键词(_this.__data__.strSearch)
var query_url = '&title=' + strSearch + '&orderType=' + strCategory var query_url = '&title=' + strSearch + '&orderType=' + strCategory
var strUrl = config.activity_query_url + "?pageCount=" + pageCount var strUrl = config.activity_query_url + "?pageCount=" + pageCount
...@@ -283,11 +295,11 @@ Page({ ...@@ -283,11 +295,11 @@ Page({
result["end_datetime"] = end_datetime result["end_datetime"] = end_datetime
var url_quiz = "../activity/quiz-info/quiz-info?" var url_quiz = "../activity/quiz-info/quiz-info?"
+"&activity_id="+result["activity_id"] +"activity_id="+result["activity_id"]
+"&index_id="+i
+"&note_image="+res.data.data[i].noteImage //传递原始string数据, List不正确 +"&note_image="+res.data.data[i].noteImage //传递原始string数据, List不正确
+"&title="+result["title"] +"&title="+result["title"]
+"&content="+result["content"] +"&content="+result["content"]
+"&num_like="+result["num_like"]
+"&quiz="+result["quiz"] +"&quiz="+result["quiz"]
+"&point="+result["point"] +"&point="+result["point"]
+"&member_id="+result["member_id"] +"&member_id="+result["member_id"]
...@@ -296,12 +308,12 @@ Page({ ...@@ -296,12 +308,12 @@ Page({
+"&member_logo="+result["member_logo"] +"&member_logo="+result["member_logo"]
var url_activity = "../activity/activity-info/activity-info?" var url_activity = "../activity/activity-info/activity-info?"
+"activity_id="+result["activity_id"] +"activity_id="+result["activity_id"]
+"&index_id="+i
+"&note_image="+res.data.data[i].noteImage //传递原始string数据, List不正确 +"&note_image="+res.data.data[i].noteImage //传递原始string数据, List不正确
+"&title="+result["title"] +"&title="+result["title"]
+"&title_abbr="+result["title_abbr"] +"&title_abbr="+result["title_abbr"]
+"&content="+result["content"] +"&content="+result["content"]
+"&address_name="+result["address_name"] +"&address_name="+result["address_name"]
+"&num_like="+result["num_like"]
+"&unit_price="+result["unit_price"] +"&unit_price="+result["unit_price"]
+"&product_desc="+result["product_desc"] +"&product_desc="+result["product_desc"]
+"&member_id="+result["member_id"] +"&member_id="+result["member_id"]
...@@ -374,46 +386,6 @@ Page({ ...@@ -374,46 +386,6 @@ Page({
}) })
}, },
submitLike: function (postId) {
var _this = this;
var strUrl = config.post_like_url + '?postId=' + postId
config.debug == 1 ? console.log("===submitLike strUrl is: " + strUrl) : ""
wx.request({
url: strUrl,
method: 'GET',
header: {
'Cookie': wx.getStorageSync('cookieKey'),
},
success: function (res) {
if (res.statusCode == 200) {
//表示查询成功
console.log(res.data);
var activitiesList = _this.data.activities
var likeDict = _this.data.likeDict
for (var j = 0; j < activitiesList.length; j++) {
if (activitiesList[j].post_id == postId)
activitiesList[j].like = parseInt(activitiesList[j].like) + 1
likeDict[postId] = 1
}
_this.setData({
likeDict: likeDict,
activities: activitiesList,
})
}
}
})
},
onSubmitLike: function (e) {
var _this = this;
let postId = e.currentTarget.dataset.postId;//获取评论内容
var likeDict = _this.data.likeDict
if (likeDict[postId] == 0 || likeDict[postId] == undefined) {
_this.submitLike(postId)
}
},
/* /*
二维码信息: 二维码信息:
1. 二维码生成: https://cli.im/ 1. 二维码生成: https://cli.im/
......
<wxs module="tutil" src="./../../utils/date.wxs"></wxs> <wxs module="tutil" src="./../../utils/date.wxs"></wxs>
...@@ -92,11 +92,11 @@ ...@@ -92,11 +92,11 @@
<view class="item stamp stamp01" style="192rpx;"> <view class="item stamp stamp01" style="192rpx;">
<!-- 商品信息 --> <!-- 商品信息 -->
<view class="note-row"> <view class="note-row">
<navigator url="{{item.url}}" > <navigator url='{{item.url}}&num_like={{item.num_like}}' >
<image class="writer-image" src="{{item.note_image[0]}}"/> <image class="writer-image" src="{{item.note_image[0]}}"/>
</navigator> </navigator>
<view class="note-column"> <view class="note-column">
<navigator url="{{item.url}}" > <navigator url='{{item.url}}&num_like={{item.num_like}}' >
<!-- 商家信息 --> <!-- 商家信息 -->
{{item.title}} {{item.title}}
<!-- 商品价格 --> <!-- 商品价格 -->
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论