1. 程式人生 > >小程式雲開發教程六:貼子的稽核

小程式雲開發教程六:貼子的稽核

別人釋出了,就得稽核呀。所以這篇我們來講稽核功能的實現。
條件: 不能稽核自己的,並且是稽核次數在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點一個小星星唄