小程式雲開發教程六:貼子的稽核
阿新 • • 發佈:2019-01-14
別人釋出了,就得稽核呀。所以這篇我們來講稽核功能的實現。
條件: 不能稽核自己的,並且是稽核次數在0-5次的。
那麼稽核的邏輯是什麼呢?
我在這篇的邏輯是: 總共可以稽核5次,然後如果點選不通過,就不做操作,如果點選通過就把狀態+1,然後狀態的值大於0就代表通過。
其實還有一個好一點的辦法,就是通過儲存通過和不通過的次數,然後對比它們,如果通過:不通過的比 >1.4,或者1.5左右,那麼就判定這個是通過的。
我們來看佈局, 和首頁展示的差不多,一個使用者資訊,一個圖片,一個使用者釋出的文字,還有通過,不通過按鈕。
程式碼如下:
<!--pages/validContent/validContent.wxml--> <view wx:if='{{!data}}' class='flexDownC mt40'> <image src='../../images/404.png' class='p404'></image> <text>暫無貼子可以稽核</text> </view> <view wx:else> <view class='userInfo flexRowL' > <view class='user flexC'> <image src='{{data.userImg || defaultImg}}' class='userImg'></image> {{data.username || '糗皮虎'}}</view> </view> <view class='txt'>{{data.content}}</view> <view class='img' wx:for="{{data.image}}" wx:for-item='imgItem' > <image lazy-load="{{lazy_load}}" mode='widthFix' src='{{imgItem}}' class='{{data.image.length ==1 ?"dzImg1": data.image.length == 2 ?"dzimg2": data.image.length == 3 ? "dzImg3" : data.image.length == 4 ? "dzImg4": "" }} dzImg' ></image> </view> <view class='btns flexSpaceBet'> <!--不通過--> <image class='passi ml20' src='../../images/noPass.png' bindtap='unPassItem'></image> <!--通過--> <image class='passi mr20' src='../../images/pass.png' bindtap='passItem'></image> </view> </view>
wxss:可以直接引入首頁的樣式
/* pages/validContent/validContent.wxss */
@import '../index/index.wxss';
page{
font-size: 24rpx;
color: #999;
}
.btns{
width: 100%;
height: 100rpx;
position: absolute;
bottom: 60rpx;
left: 0;
}
.passi{
width: 100rpx;
height: 100rpx;
}
js部分:使用雲函式passItem, 目的是將id,通過的次數增1, 稽核次數增1
// pages/validContent/validContent.js const db = wx.cloud.database() const _ = db.command; Page({ /** * 頁面的初始資料 */ data: { defaultImg: '../../images/tx.png', data: '', id: '', limitCount: 1, skipCount: 1 }, /** * 生命週期函式--監聽頁面載入 */ onLoad: function (options) { this.search() }, //搜尋 search: function(){ var skipCount = this.data.skipCount; db.collection('funnys').where({ validTime: _.lt(5).and(_.gte(0)), _openid: _.neq(wx.getStorageSync('openId')) }).skip(skipCount).limit(this.data.limitCount).get({ success: res => { console.log(res) if (res.data.length > 0) this.setData({ data: res.data[0], id: res.data[0].id, skipCount: skipCount + 1 }) }, fail: err => { wx.showToast({ title: '出錯', icon: 'none' }) } }) }, // 通過 passItem: function(e){ if (this.data.id){ wx.cloud.callFunction({ name: 'passItem', data: { id: this.data.id, validTime: this.data.data.validTime+1, validStatus: this.data.data.validStatus+1 }, success : res =>{ wx.showToast({ title: '通過帖子', }) this.search() }, fail: err =>{ wx.showToast({ title: '出現錯誤', icon: 'none' }) } }) } }, unPassItem: function (e) { wx.showToast({ title: '打回帖子', }) //如果我們不寫不通過程式碼的話, 那麼首頁的篩選條件就是 稽核狀態不等於0(預設是0) } })
雲函式,新建passItem和安裝環境完畢後,寫入程式碼:
// 雲函式入口檔案
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 雲函式入口函式
exports.main = async (event, context) => {
//es6 語法
var { id, validStatus validTime } = event;
console.log('雲函式passItem成功', id)
// console.warn(data)
try {
return await db.collection('funnys').where({
id: Number(id)
}).update({
data: {
// validStatus: 0,
validTime: validTime,
validStatus: validStatus
},
success: res => {
console.log('雲函式passItem成功', id)
},
fail: e => {
console.error(e)
}
})
} catch (e) {
console.error(e)
}
}
現在, 稽核功能就完成了。
大家看在我碼字那麼辛苦的份上,順手給github點一個小星星唄