package com.chuanghai.ihotel.controller; import com.chuanghai.ihotel.anno.AdminLoginCheck; import com.chuanghai.ihotel.anno.ParamCheck; import com.chuanghai.ihotel.common.exception.BizCodeEnume; import com.chuanghai.ihotel.common.exception.RRException; import com.chuanghai.ihotel.common.utils.CommonResult; import com.chuanghai.ihotel.controller.request.RoomLockRequest; import com.chuanghai.ihotel.controller.request.RoomRealtimeStatuRequest; import com.chuanghai.ihotel.controller.request.StatuIdRequest; import com.chuanghai.ihotel.controller.request.ToDirtyRequest; import com.chuanghai.ihotel.service.RoomRealtimeStatuService; import com.chuanghai.ihotel.vo.RoomRealDataStatuVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Set; /** * 实时房态 * * @author codingliang * @email codingliang@gmail.com * @date 2022-07-27 10:02:04 */ @RestController @RequestMapping("roomRealTimeStatu") public class RoomRealtimeStatuController { @Autowired private RoomRealtimeStatuService roomRealtimeStatuService; /** * 房态信息 * @param request 请求参数 * @param adminToken 管理员token * @return */ @ParamCheck @AdminLoginCheck @GetMapping("/realData") public CommonResult> realData(RoomRealtimeStatuRequest request, @RequestHeader("admin_token") String adminToken) { LocalDate startDay = request.getStartDay(); LocalDate endDay = request.getEndDay(); if (startDay.isEqual(endDay)) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "查询开始时间和结束时间不能为同一天"); } if (endDay.isBefore(startDay)) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "查询日期错误"); } if (ChronoUnit.DAYS.between(startDay, endDay) > 1) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "查询日期最多间隔一天"); } List realData = roomRealtimeStatuService.realData(request); return CommonResult.ok().setResult(realData); } /** * 脏房修改为空闲房间 * @param adminToken 管理员token * @param statuIdRequest 状态id集合 * @return * @apiNote 注意,只有当房间为脏房或被锁定时,房间状态才可以被置为空闲房间 */ @AdminLoginCheck @PostMapping("clean/cleanByStatuId") public CommonResult cleanByStatuId(@RequestHeader("admin_token") String adminToken, @RequestBody StatuIdRequest statuIdRequest) { roomRealtimeStatuService.cleanByStatuId(statuIdRequest); return CommonResult.ok(); } /** * 房间转为脏房 * @param adminToken 管理员token * @param request 请求参数 * @return */ @AdminLoginCheck @ParamCheck(index = 2) @PutMapping("toDirty") public CommonResult toDirtyByRoomId(@RequestHeader("admin_token") String adminToken, @RequestBody ToDirtyRequest request) { if (request.getEndDay().isBefore(request.getStartDay())) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "时间参数错误"); } if (Math.abs(ChronoUnit.DAYS.between(request.getStartDay(), request.getEndDay())) != 1) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "时间间隔不能为1"); } roomRealtimeStatuService.toDirtyByRoomId(request); return CommonResult.ok(); } /** * 锁定房间 * @param roomLockRequest 锁定参数 * @param adminToken 管理员token * @return */ @ParamCheck @AdminLoginCheck @PutMapping("lock") public CommonResult lock(@RequestBody RoomLockRequest roomLockRequest, @RequestHeader("admin_token") String adminToken) { roomRealtimeStatuService.lock(roomLockRequest); return CommonResult.ok(); } }