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

背景

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

概要设计

本我的项目分为学员端,驾校教练端,后盾端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

代码

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理