收藏
回答

当一个场地被预约后,如何让后面的用户看到该场地已被预约?

如下图,设计了一个场地预约小程序,使用的是云数据库。例如第一个场地已经被我预约了,如何让后面的用户看到本场地已被预约的标签或提示,给场地设定一个状态吗?设定状态的话如何让场地的状态每天进行更新。同时如何将云数据库中Ground集里的场地按照羽毛球场、足球场等类别按不同类在不同页面进行展示。

回答关注问题邀请回答
收藏

1 个回答

  • 小铨。
    小铨。
    2021-05-13

    每个场地定义一个唯一key,创建一个配置文件,每个类别对应一组场地唯一key,例如 足球:[1001,1002,1003],羽毛球:[2001,2002,2003].,打开不同类别的页签时根据配置取出对应的场地的唯一key列表,然后遍历列表根据场地唯一key读取云数据库数据显示(云数据库以场地唯一key作为唯一索引,每个用户访问同一组数据


    实现一组时间函数,包括:获取当前时间戳、传入时间戳返回距今天的天数、传入时间戳返回日期 等,根据场地key读取云数据库数据后(数据结构参考本文最后)遍历state_list里面的order_tick,找出时间戳是当天(或者明天、后天、大后天)的那一项进行显示,如order_id是自己的id则显示自己预约,否则显示被其他用户预约,如果列表里寻找不到当天的时间戳,则显示未被预约。

    当点击预约时需要在云函数写验证和修改数据库逻辑(修改时直接修改state_list里面时间戳小于当天0点的一项,其他项不变,order_tick根据预约的日期获取当天(或者明天、后天、大后天)的0点时间戳),小程序调用云函数仅传需要预约的0点时间戳和预约者id,云函数取出数据库的数据进行验证,千万别直接在小程序调用写库接口。

    没有自己的服务器只能这样近似的实现了。


    云数据库数据格式参考如下:

    {

    "index" : 1001, // 足球一号场地

    "state_list": [

    {

    "order_tick": 0, // 预定时间戳

    "order_id": "wx_id" // 预定的用户id

    },

    {},// 结构如上

    {},.// 结构如上

    {}// 结构如上

    ]

    }

    2021-05-13
    有用 2
    回复 1
    • 哈罗哈皮
      哈罗哈皮
      2021-05-13
      很耐心回答,非常棒
      2021-05-13
      回复
登录 后发表内容