关于小程序:从0到100-基于微信云开发的驾校预约学车小程序

44次阅读

共计 2827 个字符,预计需要花费 8 分钟才能阅读完成。

背景

随着机动车逐步走进寻常百姓家中, 学车也随之被人们提上了日程, 这使得汽车驾驶培训行业失去迅猛发展。挪动互联网技术的广泛应用, 使手机约车成为可能, 如何正当地调配已有资源, 进步资源利用率, 加强驾校服务水平, 己成为驾校越来越迫切的需要。驾校学车预约小程序使预约者只需拿起手机, 就能够线上约车, 能够做到“足不出户选教练”, 这样可能无效缩小学习者的等待时间, 从而为学员提供更优质的服务。本零碎蕴含学员端,教练端,治理端三方,不前后端残缺,包含布告,驾校教练预约,科目培训预约,后盾治理,用户治理,预约名单治理,预约记录治理与导出,我的预约,历史浏览,我的珍藏等模块,采纳腾讯提供的小程序云开发解决方案,毋庸服务器和域名。

概要设计

本我的项目分为学员端,驾校教练端,后盾端 3 个组成部分:

  • 后盾端:能够增加和设定教练的根本信息,账号,登陆密码等。
  • 驾校教练端:能够编辑本人的个人资料(头像,简介,星级等),设定预约时段排期(可预约时段,各时段人数限定),在现场核销用户的预约码。
  • 学员端:抉择本人须要的教练和时段,下单预约,预约胜利后到健身房出示预约码给教练或者工作人员核销

数据库设计

MeetModel.DB_STRUCTURE = {
    _pid: 'string|true',
    MEET_ID: 'string|true',
    MEET_ADMIN_ID: 'string|true|comment= 增加的管理员',
    MEET_TITLE: 'string|true|comment= 题目',
 
    MEET_JOIN_FORMS: 'array|true|default=[]|comment= 表单字段设置',
    MEET_DAYS: 'array|true|default=[]|comment= 最近一次批改保留的可用日期',

    MEET_CATE_ID: 'string|true|comment= 分类编号',
    MEET_CATE_NAME: 'string|true|comment= 分类冗余', 

    MEET_FORMS: 'array|true|default=[]',
    MEET_OBJ: 'object|true|default={}',  

    MEET_CANCEL_SET: 'int|true|default=1|comment= 勾销设置 0= 不允,1= 容许,2= 仅开始前可勾销',

    MEET_STATUS: 'int|true|default=1|comment= 状态 0= 未启用,1= 应用中,9= 进行预约,10= 已敞开',
    MEET_ORDER: 'int|true|default=9999',
    MEET_VOUCH: 'int|true|default=0',

    MEET_QR: 'string|false',

    MEET_PHONE: 'string|false|comment= 登录手机',
    MEET_PASSWORD: 'string|false|comment= 登录明码',
    MEET_TOKEN: 'string|false|comment= 以后登录 token',
    MEET_TOKEN_TIME: 'int|true|default=0|comment= 以后登录 token time',
    MEET_MINI_OPENID: 'string|false|comment= 小程序 openid',
    MEET_LOGIN_CNT: 'int|true|default=0|comment= 登陆次数',
    MEET_LOGIN_TIME: 'int|false|comment= 最近登录工夫',


    MEET_ADD_TIME: 'int|true',
    MEET_EDIT_TIME: 'int|true',
    MEET_ADD_IP: 'string|false',
    MEET_EDIT_IP: 'string|false',
};

技术使用

  • 本我的项目应用微信小程序平台进行开发。
  • 应用腾讯专门的小程序云开发技术,云资源蕴含云函数,数据库,带宽,存储空间,定时器等,资源配额价格低廉,无需域名和服务器即可搭建。
  • 小程序自身的即用即走,适宜小工具的应用场景,也适宜疾速开发迭代。
  • 云开发技术采纳腾讯外部链路,没有被黑客攻击的危险,不会 DDOS 攻打,节俭防火墙费用,安全性高且免保护。
  • 资源承载力可依据业务倒退须要随时弹性扩大

难点实现

/** 获取日期设置 */
    async getDaysSet(meetId, startDay, endDay = null) {
        let where = {DAY_MEET_ID: meetId}
        if (startDay && endDay && endDay == startDay)
            where.day = startDay;
        else if (startDay && endDay)
            where.day = ['between', startDay, endDay];
        else if (!startDay && endDay)
            where.day = ['<=', endDay];
        else if (startDay && !endDay)
            where.day = ['>=', startDay];

        let orderBy = {'day': 'asc'}
        let list = await DayModel.getAllBig(where, 'day,dayDesc,times', orderBy, 1000);

        for (let k = 0; k < list.length; k++) {delete list[k]._id;
        }

        return list;
    }

    // 按时段统计某时段报名状况
    async statJoinCnt(meetId, timeMark) {
        let whereDay = {
            DAY_MEET_ID: meetId,
            day: this.getDayByTimeMark(timeMark)
        };
        let day = await DayModel.getOne(whereDay, 'times');
        if (!day) return;

        let whereJoin = {
            JOIN_MEET_TIME_MARK: timeMark,
            JOIN_MEET_ID: meetId
        };
        let ret = await JoinModel.groupCount(whereJoin, 'JOIN_STATUS');

        let stat = { // 统计数据
            succCnt: ret['JOIN_STATUS_1'] || 0, //1= 预约胜利,
            cancelCnt: ret['JOIN_STATUS_10'] || 0, //10= 已勾销, 
            adminCancelCnt: ret['JOIN_STATUS_99'] || 0, //99= 后盾勾销
        };

        let times = day.times;
        for (let j in times) {if (times[j].mark === timeMark) {
                let data = {['times.' + j + '.stat']: stat
                }
                await DayModel.edit(whereDay, data);
                return;
            }
        }

    }

学员端 UI 设计

教练端 UI 设计

后盾治理 UI 设计

git

代码

正文完
 0