小程序入门29:定时生成库存警报记录

100 阅读1分钟

写在前面

本篇文章是微信小程序开发入门的第二十九篇,定时生成库存警报记录

我们在上篇文章已经创建了“qua-alarm”库存警报集合,创建了“qua-alarm”云函数,并且给这个云函数配置了定时触发器,本篇文章我们开始编写生成库存警报的代码

生成库存警报记录

我们在cloudfunctions\qua-alarm\index.js文件中编写生成库存警报记录的代码,代码如下:

云函数被调用时,使用Promise.all同时执行两个promise(第一个promise是获取开启库存警报的水果的记录,第二个promise是获取所有已有的库存警报记录),执行成功后,循环水果列表,每个水果记录的字段中只要 quantity - saleNum - rotNum < quaAlarmNum,就说明库存不够了,quantity表示原有库存,saleNum表示被购买的数量,rotNum表示被处理掉的数量,quantity - saleNum - rotNum就表示现有库存,quaAlarmNum是库存下限

对于会触发警报的水果,我们再跟已有的库存警报记录做一个匹配,如果已有的库存警报记录中已经有这个水果的库存警报,就对这条已有的库存警报记录进行编辑,如果没有,则新增这个水果的库存警报记录

对于不会触发警报的水果,我们也要跟已有的库存警报记录做一个匹配,如果存在,则要把这条库存警报记录的isClose修改为true,表示这条警报已经关闭,同时记录警报关闭时间:closeTime

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
}) // 使用当前云环境

const db = cloud.database();
const _ = db.command

// 云函数入口函数
exports.main = async (event, context) => {
  Promise.all([
    db.collection('fruit').where({
      isQuaAlarm: 1
    }).get(),
    db.collection('qua-alarm').get()
  ]).then(([res1, res2]) => {
    let addDatas = []
    for (let i = 0, len = res1.data.length; i < len; i++) {
      let item = res1.data[i]
      const {
        quaAlarmNum,
        quantity,
        saleNum,
        rotNum
      } = item
      let rest = quantity - saleNum - rotNum
      let find = res2.data.find(el => el.fruit._id === item._id)
      if (rest < quaAlarmNum) {
        if (find) {
          db.collection('qua-alarm').where({
              _id: find._id
            })
            .update({
              data: {
                fruit: item,
                alarmQua: rest,
                quaAlarmNum: item.quaAlarmNum,
                alarmDay: _.inc(1),
              },
            });
        } else {
          addDatas.push({
            fruit: item, // 水果信息
            alarmQua: rest, // 警报数值
            createTime: db.serverDate(), // 警报触发时间
            quaAlarmNum: item.quaAlarmNum, // 库存下限
            alarmDay: 1, // 警报持续天数
            isClose: false
          })
        }
      } else {
        if (find) {
          db.collection('qua-alarm').where({
              _id: find._id
            })
            .update({
              data: {
                isClose: true,
                closeTime: db.serverDate()
              },
            });
        }
      }
    }
    if (addDatas.length > 0) {
      db.collection('qua-alarm').add({
        // data 字段表示需新增的 JSON 数据
        data: addDatas
      }).then(res => {
        return {
          success: true,
          msg: '生成成功!'
        };
      }).catch(err => {
        return {
          success: false,
          msg: '生成失败!'
        };
      });
    }
  }).catch(err => {
    return {
      success: false,
      msg: '生成失败!'
    };
  })
}

写在最后

以上就是定时生成库存警报记录的全部代码