页面加载 websocket测试 GET /api/product/seat/getSeatLoadInfo 接口描述 【BUG】这个请求存在的问题就是你没办法查到全部冲突订单的座位。 说明 / 示例 >请求参数 ```json { "storeId" : 2, "startTimeStamp" : 12345678, "endTimeStamp" : 12345679, "time" : 240 //如果startTimeStamp和endTimeStamp是null那就看这个时长。开始就是当前,结束就是+这个时间,这个时间单位是分钟 } ``` >响应参数 ```json { "code" : 0, "data" : { // 根据storeId把这个店有的所有区域和区域描述返回给我 regionInfos: [{ name: '阳光区', regionId: 1, regionDesc: "阳光区呦(#`O′)" }, { name: 'VIP区', regionId: 2, regionDesc: "VIP区呦(#`O′)" }, { name: '双人区', regionId: 3, regionDesc: "双人区呦(#`O′)" },{ name: '夏韵区', regionId: 4, regionDesc: "夏韵区(#`O′)" }], // 0空闲,1被占用,2不可使用,3你的选择 // 这里的seatInfo仅仅返回的是list[0].regionId这个区域的座位 seatInfos: [{ // 座位表seat_id,不用那个主键id,可能可以方便未来管理 seatId: 0, // 按照上面注释返回,显然后台不会有3返回 status: 0, // region_name seatType: "XX区", // 单价(小时) unitPrice: 6, }], } } ``` >流程图:  > 后台关键的sql ```sql -- 需求:给定storeId、startTime、time(持续时间),如何筛选出所有冲突座位的seat_id? #查询给定商店的、预约时间在当前时间之后的、有效的订单,筛选出间隔时长和预约时长冲突的订单 --分析:订单有四种可能的冲突情况 # 1、订单的开始和结束时间在当前预约的时间范围内 # 2、订单的开始时间在当前预约的时间范围内 # 3、订单结束时间在当前预约的时间范围内 # 4、订单的开始和结束时间分别小于和大于当前预约的开始和结束时间 # if 订单的开始时间<当前预约的开始时间 and 订单的开始时间+订单持续时间>当前预约的开始时间 那就是满足3和4的订单情况 # if 订单的开始时间>当前预约的开始时间 and 订单的开始时间<当前预约的结束时间 那就是满足1和2的订单情况 SELECT seat_id FROM `oms_order` WHERE store_id=1 AND order_payment_status!=0 AND start_time>="2022-03-27 20:00:00" AND TIME_TO_SEC(start_time)<=(TIME_TO_SEC("2022-03-27 20:00:00")+3600) UNION SELECT seat_id FROM `oms_order` WHERE store_id=1 AND order_payment_status!=0 AND start_time<"2022-03-27 20:00:00" AND TIME_TO_SEC(end_time)>=TIME_TO_SEC("2022-03-27 20:00:00")
>请求参数 ```json { "storeId" : 2, "startTimeStamp" : 12345678, "endTimeStamp" : 12345679, "time" : 240 //如果startTimeStamp和endTimeStamp是null那就看这个时长。开始就是当前,结束就是+这个时间,这个时间单位是分钟 } ``` >响应参数 ```json { "code" : 0, "data" : { // 根据storeId把这个店有的所有区域和区域描述返回给我 regionInfos: [{ name: '阳光区', regionId: 1, regionDesc: "阳光区呦(#`O′)" }, { name: 'VIP区', regionId: 2, regionDesc: "VIP区呦(#`O′)" }, { name: '双人区', regionId: 3, regionDesc: "双人区呦(#`O′)" },{ name: '夏韵区', regionId: 4, regionDesc: "夏韵区(#`O′)" }], // 0空闲,1被占用,2不可使用,3你的选择 // 这里的seatInfo仅仅返回的是list[0].regionId这个区域的座位 seatInfos: [{ // 座位表seat_id,不用那个主键id,可能可以方便未来管理 seatId: 0, // 按照上面注释返回,显然后台不会有3返回 status: 0, // region_name seatType: "XX区", // 单价(小时) unitPrice: 6, }], } } ``` >流程图:  > 后台关键的sql ```sql -- 需求:给定storeId、startTime、time(持续时间),如何筛选出所有冲突座位的seat_id? #查询给定商店的、预约时间在当前时间之后的、有效的订单,筛选出间隔时长和预约时长冲突的订单 --分析:订单有四种可能的冲突情况 # 1、订单的开始和结束时间在当前预约的时间范围内 # 2、订单的开始时间在当前预约的时间范围内 # 3、订单结束时间在当前预约的时间范围内 # 4、订单的开始和结束时间分别小于和大于当前预约的开始和结束时间 # if 订单的开始时间<当前预约的开始时间 and 订单的开始时间+订单持续时间>当前预约的开始时间 那就是满足3和4的订单情况 # if 订单的开始时间>当前预约的开始时间 and 订单的开始时间<当前预约的结束时间 那就是满足1和2的订单情况 SELECT seat_id FROM `oms_order` WHERE store_id=1 AND order_payment_status!=0 AND start_time>="2022-03-27 20:00:00" AND TIME_TO_SEC(start_time)<=(TIME_TO_SEC("2022-03-27 20:00:00")+3600) UNION SELECT seat_id FROM `oms_order` WHERE store_id=1 AND order_payment_status!=0 AND start_time<"2022-03-27 20:00:00" AND TIME_TO_SEC(end_time)>=TIME_TO_SEC("2022-03-27 20:00:00")