评论

#小程序云开发挑战赛#-码农SHOW营-哒哒哒

微信小程序数据报表视图化展示


1. 该项目主要服务的人群是喜欢进行文章创作的朋友和做微商的朋友。

2. 主要分类:首页和我的两大模块:

(1)首页主要 数据报表的实时展示和三大类型信息的展示。用户可以通过报表的展示随时知道自己发表的创作所产生的效果如何,通过这样的数据反馈,从而进一步激发作者参与度和不断锤炼自己创作的能力。

(2)在文章三大类型展示,浏览用户可以通过点击文章链接阅读文章详情,对于符合自己喜欢的风格可以留下自己的小love

3. 我的主要是用户的信息,此模块主要参考视频号,主要的功能是用户个人隐私信息的设置等

4. 下面主要附上首页数据报表的效果图和相关代码:

(1)效果图

(2)代码示例:

(3)云函数

async getReportData(context, params) {

    const dateArr = []

    for (let i = 0; i < 7; i++) {

      const date = new Date(new Date(new Date().toLocaleDateString()).getTime() - i * 24 * 60 * 60 * 1000)

      let YY = date.getFullYear() + '-';

      let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';

      let DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());

      dateArr.push(YY + MM + DD)

    }

    // 七天前 零点

    const startTime = new Date(new Date(new Date().toLocaleDateString()).getTime() - 6 * 24 * 60 * 60 * 1000).getTime()

    let data = {

      dateArr: dateArr.reverse(),

      totalData: {}

    }

    // 发表文章

    await db.collection('messages').aggregate()

      .match({

        openid: context.OPENID,

        createTime: _.gte(startTime)

      }).group({

        _id: '$str_date',

        num: $.sum(1)

      }).end().then((res) => {

        const messageslist = []

        let sevenTotalmessages = 0

        for (let i = 0; i < 7; i++) {

          messageslist[i] = 0

          for (let j = 0; j < res.list.length; j++) {

            if (res.list[j]._id == dateArr[i]) {

              messageslist[i] = res.list[j].num

              sevenTotalmessages += res.list[j].num

              break

            }

          }

        }

        data.messageslist = messageslist

        data.totalData.sevenTotalmessages = sevenTotalmessages

      })

    // 访问量

    await db.collection('scans_info').aggregate()

      .match({

        author_openid: context.OPENID,

        type: 1,

        createTime: _.gte(startTime)

      }).group({

        _id: '$str_date',

        num: $.sum(1)

      }).end().then((res) => {

        const clickslist = []

        let sevenTotalclicks = 0;

        for (let i = 0; i < 7; i++) {

          clickslist[i] = 0

          for (let j = 0; j < res.list.length; j++) {

            if (res.list[j]._id == dateArr[i]) {

              clickslist[i] = res.list[j].num

              sevenTotalclicks += res.list[j].num

              break

            }

          }

        }

        data.clickslist = clickslist

        data.totalData.sevenTotalclicks = sevenTotalclicks

      })

    // 被喜欢

    await db.collection('scans_info').aggregate()

      .match({

        author_openid: context.OPENID,

        type: 2,

        createTime: _.gte(startTime)

      }).group({

        _id: '$str_date',

        num: $.sum(1)

      }).end().then((res) => {

        const loveslist = []

        let sevenTotalloves = 0

        for (let i = 0; i < 7; i++) {

          loveslist[i] = 0

          for (let j = 0; j < res.list.length; j++) {

            if (res.list[j]._id == dateArr[i]) {

              loveslist[i] = res.list[j].num

              sevenTotalloves += res.list[j].num

              break

            }

          }

        }

        data.loveslist = loveslist

        data.totalData.sevenTotalloves = sevenTotalloves

      })

    // 粉丝

    await db.collection('attention_details').aggregate()

      .match({

        loves_openid: context.OPENID,

        createTime: _.gte(startTime)

      }).group({

        _id: '$str_date',

        num: $.sum(1)

      }).end().then((res) => {

        const fenslist = []

        let sevenTotalfens = 0

        for (let i = 0; i < 7; i++) {

          fenslist[i] = 0

          for (let j = 0; j < res.list.length; j++) {

            if (res.list[j]._id == dateArr[i]) {

              fenslist[i] = res.list[j].num

              sevenTotalfens += res.list[j].num

              break

            }

          }

        }

        data.fenslist = fenslist

        data.totalData.sevenTotalfens = sevenTotalfens

      })

      // 截取日期的月-日

      for(let i=0;i<data.dateArr.length;i++){

        data.dateArr[i]=data.dateArr[i].substr(5)

      }

    return {

      stutas: 200,

      data: data,

      message: 'success'

    }

  },

最后一次编辑于  2020-09-09  
点赞 1
收藏
评论

3 个评论

  • 守一
    守一
    2020-09-24

    我们团队想要开发一个小程序,可以合作吗?

    2020-09-24
    赞同 1
    回复
  • admin
    admin
    2020-09-10

    666

    2020-09-10
    赞同
    回复
  • i
W
    i W
    2020-09-09

    绑定数据到页面没报错吗

    2020-09-09
    赞同
    回复
登录 后发表内容