在ivx的案例中,后台经常使用到的组件就是数据库了,一些需要持久化保存的数据都会保存在数据库中以便每次打开案例都能读取到这些数据,数据可能为用户信息,操作记录等等。今天我们就来实现一个预约会议室的模型,要实现的功能就是用户可以选择使用会议室的时间段并提交,如果之前的预约中不包含这个时间段就可以预约成功并增加一条记录,下面就来说说具体步骤。
一.数据库
数据库中我们添加了三个字段,预订人,开始时间和结束时间,预订人的字段类型为文本即可,而开始时间和结束时间的字段类型要选择时间,可以注意到这两个字段的右上角图标是钟表样式。
使用ivx实现预定会议室模型的经验总结_第1张图片
使用ivx实现预定会议室模型的经验总结_第2张图片
二.预定会议室服务
服务中的三个接收参数分别对应数据库添加的三个字段,另外服务需要返回最终的执行结果,我们使用“是否成功”标识预约成功与否,“重复记录”则存放与提交中的时间段有重叠的历史预约记录。服务中我们先对数据库中的数据进行一个筛选输出,时间段发生重叠有三种情况:1数据库中数据的开始时间在提交时间段内;2数据库中数据的结束时间在提交时间段内;3数据库中数据的时间段被包含在提交时间段内,所以筛选的条件如图。注意我们数据库的字段类型为时间,所以条件中的判断符是“时间>”和“时间<”。
使用ivx实现预定会议室模型的经验总结_第3张图片
另外注意一下ivx中且条件和或条件的结构是这样的:
使用ivx实现预定会议室模型的经验总结_第4张图片
依此条件输出后如果输出结果有数据,说明有时间段重叠,预约失败,;如果输出结果是空的,说明没有时间段重叠,我们将新的预约写入数据库并返回预约成功。

三.前台
1.预约事件
前台界面上方的绝对定位容器用于提交预约,第一行是用于输入预约人姓名的输入框,第二行的输入框则是用来展示选择好的时间段,其内容已经与“开始时间”、“结束时间”两个文本变量进行了数据绑定,点击它后会弹出一个手机日期时间选择器。
使用ivx实现预定会议室模型的经验总结_第5张图片
手机日期时间选择器是拓展组件的一种,我们可以设定选取单个日期时间还是,时间段模式,并限制选取日期时间的范围,在点击确认事件中我们可以收到返回的参数“开始日期”、“结束日期”,把它们分别赋值给文本变量“开始时间”、“结束时间”。
使用ivx实现预定会议室模型的经验总结_第6张图片
使用ivx实现预定会议室模型的经验总结_第7张图片
点击预定按钮后,如果各项提交内容不为空就会调用预定会议室服务,若服务返回预定成功就在前台的预定列表添加一刚刚提交的预约数据,若服务返回失败就从重叠的记录找找出对应预约人提示当前用户已有人预约该时间段。
使用ivx实现预定会议室模型的经验总结_第8张图片
使用ivx实现预定会议室模型的经验总结_第9张图片
2.预约列表
前台下方的列1用来展示历史预约记录,以对象数组“已预约列表”进行循环创建,在前台初始化的时候会将数据库中的历史记录输出到“已预约列表”中。
使用ivx实现预定会议室模型的经验总结_第10张图片
使用ivx实现预定会议室模型的经验总结_第11张图片
总结
这个模型的关键是对时间段重叠的判定,需要注意数据库字段的类型设置,以及数据库输出时的条件判断符号还有条件层级关系。另外,可以拓展一下如果是多个会议室的情况,这时我们可以在数据库中再增加一个字段,标识会议室的序号,对应筛选是否有重叠时间段的时候也增加一个筛选条件,从序号等于当前选中的会议室的记录中进行筛除。