前几天上线了一个功能:集赞可以兑换无门槛优惠券(每个openid只能对每个条目点一次赞,openid在云开发云端获取)。
代码如下:
if (methodType == 'add') { //点赞
const countData = await db.collection('cat-favor').where({
openid: openid,
catId: catId
}).count()
console.log(countData)
if (countData && countData.total > 0) {
//已经点过赞了
} else {
const data = {
openid: openid,
catId: catId,
createTime: new Date().getTime()
}
return await db.collection('cat-favor').add({
data: data
})
}
}
然后3月14日有用户2个小时就集了500个赞。我看了一下云开发面板,当日活跃用户数达到602,感觉没有问题。
我看了数据库点赞记录,每个openid都是不一样的,也没问题。
但是,今天(3月15日),「小程序数据助手」小程序出了昨天的报表后,感觉被刷赞了。
显示昨天的总用户数也就80。
那么,问题来了?我怎么判断哪些openid是刷的呢?
// 限制IP点赞数防刷赞 const CLIENTIP = wxContext.CLIENTIP const clientData = await db.collection('cat-favor').where({ CLIENTIP: CLIENTIP, catId: catId }).count() if (clientData.total > 5) { return {} }
云开发和小程序数据助手撞车现场?[笑哭]
假设真的存在刷赞,微信比腾讯云有更大概率能顾识别出来。
出现这种统计数据不一致的情况,有可能是数据助手展示的数据是去除僵尸用户数据? 如果真是这样,我期待小程序也开放这个防刷的识别能力。
不过在此之前,你的兑换标准,估计还得按云开发统计的数据 来。。
先判断一下用户是否存在,如果存在再继续下面的操作
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const openid = wxContext.OPENID