上篇文章:【第二篇】微信小程序云开发项目总结
功能点2:答疑解惑
这个功能点的实现基本与用户填写简历相同,都是用户上传数据到数据库,不加说明。
功能点3:消息回复
这个板块是用户查看管理员的回复消息的位置,当有消息时,会标上红点,提醒用户。
这就需要我们利用云函数拿到数据库中的数据,这里我建立了一个名为Respond
的表,管理员回复给用户的信息都会存储在这里。
老样子,新建一个云函数,取名为getRespond
,在index.js
中写入代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
const wxContext = cloud.getWXContext()
return cloud.database().collection('Respond') //在Respond表中查找
.where({ //类似sql语句,条件查找
//当前用户的openid等于数据中的openid时,说明这条消息是回复给该用户的
openid: wxContext.OPENID,
read:0
}).orderBy('time', 'desc') //让最近消息排在前面
.get({
success(res) { //查询成功,就返回数据
return res
}
})
}
这里用到了云开发函数中的where
、orderBy
、get
等方法,相信大家一看就懂。
编写的这个getRespond
函数可以返回属于该用户的所有消息,按照消息回复时间排序。ok,我们在首页js
文件中调用该函数
调用方法跟第二篇中的一样,将name
属性改成我们的getRespond
函数名即可。我们会获得名为respond
的数组,里面存放着属于用户的所有消息,这样我们就可以通过查看respond
数组是否为空,来判断用户是否收到新的消息,决定是否显示红点
用户点击消息回复这个板块,就可以查看收到的消息。
这里也同样只是用到了云函数的get
查询方法,不过我们要稍加修改。创建一个云函数名为getRespondList
,在index.js
中写入代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
const wxContext = cloud.getWXContext()
return cloud.database().collection('Respond')
.where({
openid: wxContext.OPENID,
//这里我们不用指定read==0,因为用户需要可以查看历史所有收到的消息
}).orderBy('read', 'asc') //排序,read的值分为0、1,0表示未读。将未读消息优先放在前面
.orderBy('time', 'desc')
.get({
success(res) {
return res
}
})
}
与上文的getRespond
云函数没有太多的差异。还是在js
文件中调用,拿到数据后在wx:for
循环,形成列表。
当用户没有收到过消息时,显示:
接下来我们只需用户点击消息时跳转到新的页面显示消息详情即可,
这里有个新的知识点,那就是用户读过该消息时需要把这条数据的read
字段值更改为1,表示这条消息已经被阅读过了。
在页面的js
文件中添加代码
wx.cloud.database().collection('Respond')
//我在跳转到这个页面时传递了参数option,里面存放着这条消息的id。doc方法可以根据id唯一的确定表中的数据
.doc(options.id)
.update({ //更新,将read值改为1,表示已经阅读过了
data: {
read: 1
}
})
同样相当的简单^_^。看看效果,我们退回到上个页面
发现红点已经消失了,表示这条消息我已经读过了,非常好!
功能点4:管理员入口
这个功能点其实跟上个功能点用到的知识差不多,不加以描述了。唯一需要讲一点的是管理员入口得管理员才能看到,不应该让用户看到。
我们创建一个表Management
,里面存放着所有管理员的用户openid
我们只需写个云函数,判断当前用户openid是否与Management
表中的数据一致即可。
页面截图