背景调研
校园参观预约小程序,包含参观者和管理人员,门卫角色,实现不同人群的操作需求。整个系统包括:预约模块、用户模块、公告模块、后台管理模块。
- 后台管理员:可以设置、编辑预约项目,包括预约须知、预约时段,每时段人数上限,用户预约填写的信息(自定义表单);管理员可以在后台查看用户预约记录,对预约信息进行导出Excel表格。
- 门卫:可以核销已预约用户的参观二维码。
- 参观者:可以对预约项目进行查看,并根据自己的需要选择时段进行预约,填写相关的必要身份信息(支持一次录入多人信息)进行参观预约。 可以查看个人预约记录和详情,在出入校园的时候展示自己的预约二维码
功能设计
数据库设计
JoinModel.DB_STRUCTURE = {
_pid: 'string|true',
JOIN_ID: 'string|true',
JOIN_EDIT_ADMIN_ID: 'string|false|comment=最近修改的管理员ID',
JOIN_EDIT_ADMIN_NAME: 'string|false|comment=最近修改的管理员名',
JOIN_EDIT_ADMIN_TIME: 'int|true|default=0|comment=管理员最近修改的时间',
JOIN_EDIT_ADMIN_STATUS: 'int|false|comment=最近管理员修改为的状态 ',
JOIN_IS_ADMIN: 'int|true|default=0|comment=是否管理员添加 0/1',
JOIN_CODE: 'string|true|comment=核验码15位',
JOIN_IS_CHECKIN: 'int|true|default=0|comment=是否签到 0/1 ',
JOIN_USER_ID: 'string|true|comment=用户ID',
JOIN_MEET_ID: 'string|true|comment=预约PK',
JOIN_MEET_CATE_ID: 'string|true',
JOIN_MEET_CATE_NAME: 'string|true',
JOIN_MEET_TITLE: 'string|true|comment=项目',
JOIN_MEET_DAY: 'string|true|comment=日期',
JOIN_MEET_TIME_START: 'string|true|comment=时段开始',
JOIN_MEET_TIME_END: 'string|true|comment=时段结束',
JOIN_MEET_TIME_MARK: 'string|true|comment=时段标识',
JOIN_COMPLETE_END_TIME: 'string|false|comment=完整结束时间',
JOIN_START_TIME: 'int|true|comment=开始时间戳',
JOIN_CNT: 'int|true|default=0|comment=人数',
JOIN_NAME_LIST: 'array|true|default=[]',
JOIN_FORMS_LIST: 'array|true|default=[]|comment=表单',
/* title:
mark:
type:
val:
*/
JOIN_STATUS: 'int|true|default=1|comment=状态 1=预约成功,10=已取消, 99=系统取消',
JOIN_REASON: 'string|false|comment=审核拒绝或者取消理由',
JOIN_ADD_TIME: 'int|true',
JOIN_EDIT_TIME: 'int|true',
JOIN_ADD_IP: 'string|false',
JOIN_EDIT_IP: 'string|false',
};
DayModel.DB_STRUCTURE = {
_pid: 'string|true',
DAY_ID: 'string|true',
DAY_MEET_ID: 'string|true',
day: 'string|true|comment=日期 yyyy-mm-dd',
dayDesc: 'string|true|comment=描述',
times: 'array|true|comment=具体时间段',
/*
{
1. mark=唯一性标识,
2. start=开始时间点hh:mm ~,
3. end=结束时间点hh:mm,
4. isLimit=是否人数限制,
5. limit=报名上限,
6. status=状态 0/1
7. stat:{ //统计数据
succCnt=1预约成功*,
cancelCnt=10已取消,
adminCancelCnt=99后台取消
}
}',
*/
DAY_ADD_TIME: 'int|true',
DAY_EDIT_TIME: 'int|true',
DAY_ADD_IP: 'string|false',
DAY_EDIT_IP: 'string|false',
};