假期学习总结2

校园小程序

主要是在原来小程序上增删一些功能

活动

改功能主要设计为用户可创建活动,管理员在后台审核通不通过,通过便在页面显示。用户也可订阅活动,订阅成功后会在活动开始前一个小时给用户发送订阅消息。(也要在微信官网创建订阅消息模板)
因为有多个活动,创建一个云函数,定时查找即将开始的活动,查找成功之后再查找订阅该活动的用户,并对这些用户发送消息。
在这里插入图片描述

//在searchSport云函数的config.json里面,之后右键上传触发器
{
  "permissions": {
    "openapi": [
      "subscribeMessage.send",
      "cloudbase.addDelayedFunctionTask"
    ]
  },
  "triggers": [
    {
      "name": "myTrigger",
      "type": "timer",
      "config": "0 */30 * * * * *"//每30分钟调用该函数
    }
  ]
}
//在searchSport云函数的index.js中
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
//获取当前时间戳
const db = cloud.database()
const _ = db.command
const utils = require('./utils/utils.js')
// 云函数入口函数
exports.main = async (event, context) => {
  const timestamp = new Date().getTime() + Number(3600000);
  const nowTime = new Date().getTime()
  try {
    //查找进行中的活动并且更改状态
    const inProgressObj={
      sportStartTime: _.lte(nowTime),
      sportEndTime: _.gt(nowTime)
    }
    const progressSportResult = await getWaitSendData(inProgressObj)
    for (let i = 0; i < progressSportResult.data.length; i++) { //更改活动状态为进行时
      const progressRes = await updataState(progressSportResult.data[i]._id,"inProgress")
        console.log("更新活动状态进行中===",progressRes);
     }
     //查找已完成的活动并且更改状态
    const finishedObj={
      sportEndTime: _.lte(nowTime)
    }
    const finishedSportResult = await getWaitSendData(finishedObj)
    for (let i = 0; i < finishedSportResult.data.length; i++) { //更改活动状态为进行时
      const finishedRes = await updataState(finishedSportResult.data[i]._id,"finished")
        console.log("更新活动状态完成===",finishedRes);
     }
    const whereObj = {
      sportStartTime: _.lte(timestamp),
      sportState:'notStarted'
    }

    for (let i = 0; i < countResult.data.length; i++) { //拿到活动列表数据的活动id之后去用户订阅列表中查找并且更改活动列表数据库的活动状态
     cloud.callFunction({
        // 要调用的云函数名称
        name: 'send',
        // 传递给云函数的参数
        data: {
          _id:countResult.data[i]._id, // id
        }
      })
    }
  } catch (e) {
    // 处理出错情况,防止一个发送不成功后面便都不发送
    console.log(e.message, 'e==>', e, "错误信息")
  }
}

/**
 * 获取即将开始的活动信息
 */
const getWaitSendData = (whereObj) => {
  return new Promise((resolve, reject) => {
    db.collection('xxx')
      .where(whereObj)
      .limit(20)
      .get()
      .then(res => {
        resolve(res)
      })
      .catch(err => {
        resolve(err)
      })
  })
}
  //更改活动列表里的发送状态
  const updataState = async (_id,sportState) => {
    return await db.collection('xxx').where({
        _id: _id
      })
      .update({
        data: {
          sportState: sportState
        },
      })
    }

try…catch…捕获异常,尽量写在需要捕获的函数外面,不要包含太多东西。

转发

转发功能暂时无法实现点击后转发该条说说,需要点击进入说说子页面,直接转发整个子页面

二级评论

二级评论可以放跟一级评论放在一起,二级评论算是一个回复,取一个与一级评价obj不一样的名字,在页面判断该条数据在回复还是评论。回复需要多收集一个用户昵称。

评论提示

当用户发表评论或者回复时发布者可以收到信息提示,这也是订阅功能的。就需要在用户评论或者回复时收集其openid,以便发送信息提示用户。由于订阅次数是无法无限发送的,所以需要用户手动增加订阅次数,每点击一次,增加一次订阅次数,发送之后会减去-1
在这里插入图片描述

社区规范与精华

用户发表帖子之后将该帖子信息添加到数据库中,改帖子信息里面essence与communityNorms两个参数的初始值都为false,当管理员在后台将其值改为true时该帖子才属于精华帖或者社区规范贴,否则为普通帖子。其他方法也类似,用一个变量来判断该帖子是属于什么贴或者在失物认领方面的,该帖子是否已经完成,都可以通过一个变量值来判断状态(true or false)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值