背景
帮客户定制项目,要实现图书馆预约座位的功能。
功能描述如下:学生选择开始时间和结束时间,只选择小时和分钟,提交预约后,如果该时间有冲突提示学生修改预约时间。
问题
前端样式选择的是elmentUI,但是它组件只有日期时间选择器 :年月日时分秒。不满足我的需求,所以要改造下。该怎么改造?
如何改造,后端更好处理数据以及业务逻辑?
实现过程
前端样式
时间选择器(只有时和分)
<el-form-item label="开始时间">
<el-time-picker v-model="form.startTime" value-format="HH:mm" format="HH:mm" size="small" style="width: 100%"></el-time-picker>
</el-form-item>
<el-form-item label="结束时间">
<el-time-picker v-model="form.endTime" format='HH:mm' value-format="HH:mm" size="small" style="width: 100%">
</el-time-picker>
</el-form-item>
后端业务逻辑和SQL
//预约前判断该座位该时间段是否被预约,如果被预约,则提示改时间段不能被预约。
Integer seatId = seatReservation.getSeatId();
List<SeatReservation> byNum = seatReservationDao.findByNum(seatId, seatReservation.getStartTime(), seatReservation.getEndTime());
if (CollectionUtil.isNotEmpty(byNum)){
throw new CustomException("-1","该时间段已经被预约");
}
Dao
@Select("select * from seatreservation where seatId = #{seatId} and !(startTime > #{end} or endTime < #{start})")
List<SeatReservation> findByNum(@Param("seatId")Integer seatId, @Param("start") String start, @Param("end") String end);