榜单类小程序开发笔记—01
发布于 3 年前 作者 mengwei 4107 次浏览 来自 分享

产品背景:

  • 为什么社会上不文明、不道德的行为越来越多?
  1. 这种行为不需要成本,而且大多数情况下还能得到好处;
  2. 旁人的事不关己的态度也就是好人的沉默;

产品类型:排行榜

产品介绍:用游戏化的方式,对不文明、不道德的行为打分量化并排行。

核心功能:

  1. SB行为榜:不文明、不道德行为榜单;
  2. 智商税:用户自主发布交过智商税的事,帮助其他用户避坑;
  3. 揭丑者:揭露车辆的种种丑行,对揭丑者信息进行保护,被揭者可认领自己的丑行。

产品研发:小程序云开发

产品开发实录:

  1. 排行榜

app.router('AllRanking', async (ctx, next) => {
    const result = await db.collection('Ranking')
      .aggregate()
      .sort({
        total: -1,
      }).skip(event.len)
      .limit(20)
      .lookup({
        from: 'Facing',
        let: {
          rankId: '$_id'
        },
        pipeline: $.pipeline()
          .match(_.expr(
            $.eq(['$rankId', '$$rankId']),
          )).group({
            _id: '$type',
            list: $.push({
              facingId: '$_id'
            })
          }).project({
            _id: 1,
            total: $.size('$list')
          }).done(),
        as: 'facing'
      }).end()
    ctx.body = { data: result.list }
  });


  1. 详情页:echart图表组件,打分部分小程序radio-group组件,css grid控制样式


  1. 打分方式:预设0-3的愤怒指数翻倍基数,计算用户长按按钮的毫秒数作为(愤怒指数),时间越长,代表对这种行为约愤怒;最终分数= 愤怒指数 * 指数翻倍
  2. 关键技术:用 button组件catchtouchstart、 catchtouchend方法实现长按统计。


备注:在提交分数时遇到了个小问题,云函数add()返回null,找了一晚上原因没找到,第二天起来再看发现了问题。

原因是之前position的键名定义成“type”了,这就导致同时定义了2个“type”,改过来就好了[捂脸]

开发花絮:

本人2020年9月,因为创业不懂技术,最终因为技术问题,导致创业失败,最终被逼成了“程序员”,一切从零开始(可以从我个人中心的第一条提问看出,确实是零基础),因为是创业项目,没时间练习,所以上手就是实战。第一个项目“荔枝属牛”,社群saas工具,也是云开发做的,已经上线。开发到现在,我现在是深深的爱上了“云开发”,以前不懂技术,做项目又是招前端、后端、ui,现在用了云开发,我一个人全干了,再也不担心,每天收到各种后端服务受攻击的信息了。荔枝属牛项目一共3款小程序,群主端、骑手端、商家端。修修改改,做了快一年,每天除了吃饭、上厕所、睡觉基本都是在写代码,然后我发现,写代码真的可以令我感到快乐,自从学会了编程,人也变得自信多了😄。我坚信程序员可以改变世界。

年底了,利用几天(第一版上线5天)空闲做了又做了这款“智商税征收机”项目。开发初衷,有时候在路上经常看到有人开车、骑电动车还在刷抖音,坐地铁、公交背个大大大双肩包蹭来蹭去...,遇到这些问题,我又能做点什么呢?所以上线这个项目。

我不想站在道德制高点,只是希望通过力所能及为社会做点贡献。

最好,感谢云开发,让我从新振作起来。

也欢迎对这个项目感兴趣、懂运营的人一起合作(私信),争取把他做成公益开源项目。

让这个项目真正能影响到那些骨子里还存有一定道德良知的人,能成为每个人的一面镜子。

回到顶部