纯云开发实现一个留言板小程序,包含以下基本功能:
-
用户授权–》写留言
-
作者进入后台审核通过–》显示留言
-
作者回复用户的留言
-
留言60s之后才能继续写留言
-
不是管理员即游客,无法访问后台
效果演示
纯云开发:4小时开发一个留言板小程序
云开发:集合(表)结构设计,如下:
调用云函数发布留言:
javascript">// 时间戳
var timestamp = Date.parse(new Date());
// 评论参数
let commentParam = {
_id: timestamp,
userURL: app.globalData.userInfo.avatarUrl,
Nickname: app.globalData.userInfo.nickName,
time: time.customFormatTime(timestamp,'Y-M-D'),
content: that.data.CommentContent,
// 是否已通过审核
flag:false,
// 作者回复
replyMessage: ""
}
wx.cloud.callFunction({
name: "addMessages",
data: {
dbName: "comment",
param: commentParam
}
}).then( res => {
// console.log("云函数插入评论成功回调:",res)
// wx.showToast({
// title: "留言成功,审核通过即可显示!",
// duration: 2000
// });
wx.showModal({
title: '提示',
content: '留言成功,审核通过后即可显示!',
showCancel: false,
success(res){
if (res.confirm) {
console.log('用户点击确定')
}
}
})
// 清空输入框
this.setData({
commentValue: "",
CommentContent: ""
});
//查询(刷新)评论内容
this.selectAllMessages()
})
作者回复(根据 _id 更新集合的replyMessage字段):
javascript">//获取留言
var that = this;
// console.log("提交的留言信息为:"+this.data.messages)
if (that.data.replyContent === ""){
wx: wx.showToast({
title: '请输入回复内容...',
icon: 'none',
})
}else{
let replyparam = {
replyMessage: this.data.replyContent
}
// console.log("param:",replyparam)
// 调用云函数修改作者回复
wx.cloud.callFunction({
name: "updatemessage",
data: {
dbName: "comment",
param: replyparam,
filter:{
_id: this.data.commentItem._id
}
}
}).then( res => {
// console.log("回复成功:",res)
this.setData({
messagesnull: '',//清空文本域
replyContent: ''
})
wx.showToast({
title: '回复成功!',
// icon:"success"
})
wx.navigateTo({
url: '../index/index',
})
}).catch(console.error)
}
云函数获取当前用户的OpenID,判断是否是管理员:
javascript">// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
调用:
javascript">var that = this;
// 云函数调用
wx.cloud.callFunction({
// 云函数名称
name: 'getOpenid',
// 传给云函数的参数
data: {
},
success(res) {
// console.log("CloudResult:", res);
// console.log("openidCloudResult:", res.result.openid);
that.setData({
openid: res.result.openid
});
if (res.result.openid == that.data.adminOpenid) {
app.globalData.roleFlag = true;
that.setData({
Role: '管理员',
});
if (app.globalData.userInfo) {
that.setData({
roleFlag: true,
});
}
// console.warn("你是管理员!");
} else {
app.globalData.roleFlag = false;
that.setData({
Role: '游客',
roleFlag: false,
});
// console.warn("你不是管理员!");
};
}
})
云函数添加数据:
javascript">// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
let dbName = event.dbName
let param = event.param ? event.param : {}
let flag = false
await db.collection(dbName).add({ data: param }).then(res => {
flag = true
}).catch(res=>{
})
return flag
}
云函数查询数据:
javascript">// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
let dbName = event.dbName
let filter = event.filter ? event.filter : {}
const countResult = await db.collection(dbName).where(filter).count()
return db.collection(dbName).where(filter).get().then(res => {
res.count = countResult
return res;
})
}
云函数更新数据:
javascript">// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
let dbName = event.dbName
let filter = event.filter ? event.filter : {}
let param = event.param ? event.param : {}
return db.collection(dbName).where(filter).update({ data: param })
}
END
18年3月份,微信官方就关闭了公众号留言功能,之后申请的所有公众号都不能留言了,现在的两种解决办法是:
不过现在小程序官方的审核太严了,只要小程序中有让用户输入的组件(输入框等)基本都审核不通过,如下记录就是视频中的第二个小程序的提交申请记录,也是一个纯云开发+colorUI实现的,本来打算这几天就上线的,但一直审核不通过,删除blog文章发布功能的话,小程序的主要功能就没了,没劲😪😪后面再改改看能不能上线了。
第一个留言板小程序,在公众号回复“留言板小程序”关键字即可获取源码,第二个公众号同名小程序“遇见0和1”,花了很多精力,暂时不开源。
第二个小程序使用云开发+colorUI组件库实现,页面样式很多参照了大佬 爱敲代码的猫 的开源项目WeHalo:https://gitee.com/aquanrun/WeHalo