分享一篇代码,感觉有纪录意义
其实真实的逻辑比较绕
//确定入住 判断整租还是分租 是否为负责人
@RequestMapping(value = "checkIn", method = RequestMethod.GET)
@ResponseBody
public ApiResponseResult checkIn(Register register,int isBook) {
/*Register register=registerService.getRegister(registers.getId());*/
Hotel h = hotelService.getHotel(register.getHotelId());
String now = CommonUtil.now();
Room r=null;
ShareOpenDoor or=new ShareOpenDoor();
//判断房间号码是否存在
if(register.getRoomNo()!=null&®ister.getRoomNo()!="") {
r = this.roomService.getRoomByRoomNo(register.getRoomNo(), h.getId());
if(r==null){
return ApiResponseResult.failure().message("房间号不存在");
} }
Card card=null;
if(StringUtils.isNotEmpty(register.getCardno() )){
card = cardService.getCardByHotelIdAndCardno(h.getId(), register.getCardno());
List<ShareOpenDoor> shareOpen4=shareOpenDoorService.getHotelAndCardNo(h.getId(), register.getCardno());
if(card==null||shareOpen4.size()>0){
return ApiResponseResult.failure("卡不属于这个公寓或者卡已经被分配");
} }
if((register.getStartTime()==null||(register.getStartTime()).equals(""))||(register.getEndTime()==null||(register.getEndTime()).equals(""))) {
return ApiResponseResult.failure().message("开始时间和结束时间不能为空");
}
//判断号码是否已经存在租客表
ShareOpenDoor or1=shareOpenDoorService.getShareOpenDoorPhone(register.getHotelId(),register.getMobilePhone());
if(or1!=null) {
return ApiResponseResult.failure("手机号码已经入住或者预订!!!");
}
List<ShareOpenDoor> list1=shareOpenDoorService.getBookAndHotelAndRoom(register.getHotelId(), register.getRoomNo());//已经入住
List<ShareOpenDoor> list2=shareOpenDoorService.getBookAndHotel(register.getHotelId(), register.getRoomNo());//预订
ShareOpenDoor shareOpen2=null;
if(list1.size()>0) {
shareOpen2=list1.get(0);
}
ShareOpenDoor shareOpen3=null;
if(list2.size()>0) {
shareOpen3=list2.get(0);
}
//分租
if(isBook==0) {
if(shareOpen3!=null) {
if(shareOpen3.getPersoncharge()!=null) {
return ApiResponseResult.failure("不能进行分租!!!");
}
}
}
//整租
if(isBook==1) {
if(shareOpen3!=null) {
if(shareOpen3.getPersoncharge()==null) {
return ApiResponseResult.failure("不能进行整租!!!");
}
}
}
if(isBook==0) {//分租
if(shareOpen2!=null) {//前面分租有数据
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1=null;
Date date2=null;
Long ts1=null;
Long ts2=null;
try {
date2= simpleDateFormat.parse(register.getStartTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(ShareOpenDoor door:list1) {
try {
date1 = simpleDateFormat.parse(door.getEndTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ts1 = date1.getTime();
ts2 = date2.getTime();
if(ts1>ts2) {
return ApiResponseResult.failure("预订时间不能小于租期时间!!!");
}
}
or.setOptime(now);
or.setRoomNo(register.getRoomNo());
or.setHotel(h);
or.setCardno(register.getCardno());
or.setSharetype(0);
or.setMobilePhone(register.getMobilePhone());
or.setIdNumber(register.getIdNumber());
or.setCustomerName(register.getCustomerName());
or.setStartTime(register.getStartTime());
or.setEndTime(register.getEndTime());
or.setSex(register.getSex());
or.setCardstatus(1);
or.setDostatus(1);
or.setSharetype(1);
shareOpenDoorService.addOrUpdate(or);
registerService.delete(register.getId());
return ApiResponseResult.success();
}else { //分租无数据
or.setOptime(now);
or.setRoomNo(register.getRoomNo());
or.setHotel(h);
or.setCardno(register.getCardno());
or.setSharetype(0);
or.setIdNumber(register.getIdNumber());
or.setCustomerName(register.getCustomerName());
or.setStartTime(register.getStartTime());
or.setEndTime(register.getEndTime());
or.setSex(register.getSex());
or.setCardstatus(1);
or.setDostatus(1);
or.setSharetype(1);
shareOpenDoorService.addOrUpdate(or);
registerService.delete(register.getId());
return ApiResponseResult.success();
}
}
if(isBook==1) { //整租
if(shareOpen3!=null) { //整租前面有数据预订
or.setOptime(now);
or.setRoomNo(register.getRoomNo());
or.setHotel(h);
or.setCardno(register.getCardno());
or.setSharetype(0);
or.setIdNumber(register.getIdNumber());
or.setMobilePhone(register.getMobilePhone());
or.setCustomerName(register.getCustomerName());
or.setStartTime(shareOpen3.getStartTime());
or.setEndTime(shareOpen3.getEndTime());
or.setSex(register.getSex());
or.setPersoncharge(shareOpen3.getPersoncharge());
or.setCardstatus(1);
or.setSharetype(1);
or.setDostatus(1);
shareOpenDoorService.addOrUpdate(or);
registerService.delete(register.getId());
return ApiResponseResult.success();
} else { //整租前面无数据
if(shareOpen2!=null) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1=null;
Date date2=null;
Long ts1=null;
Long ts2=null;
try {
date2= simpleDateFormat.parse(register.getStartTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(ShareOpenDoor door:list1) {
try {
date1 = simpleDateFormat.parse(door.getEndTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ts1 = date1.getTime();
ts2 = date2.getTime();
if(ts1>ts2) {
return ApiResponseResult.failure("预订时间不能小于租期时间!!!");
}
}
or.setOptime(now);
or.setRoomNo(register.getRoomNo());
or.setHotel(h);
or.setCardno(register.getCardno());
or.setSharetype(0);
or.setMobilePhone(register.getMobilePhone());
or.setIdNumber(register.getIdNumber());
or.setCustomerName(register.getCustomerName());
or.setStartTime(register.getStartTime());
or.setEndTime(register.getEndTime());
or.setSex(register.getSex());
or.setPersoncharge(register.getMobilePhone());
or.setCardstatus(1);
or.setSharetype(1);
or.setDostatus(1);
shareOpenDoorService.addOrUpdate(or);
registerService.delete(register.getId());
return ApiResponseResult.success();
}else {
or.setOptime(now);
or.setRoomNo(register.getRoomNo());
or.setCardno(register.getCardno());
or.setHotel(h);
or.setSharetype(0);
or.setMobilePhone(register.getMobilePhone());
or.setIdNumber(register.getIdNumber());
or.setCustomerName(register.getCustomerName());
or.setStartTime(register.getStartTime());
or.setEndTime(register.getEndTime());
or.setSex(register.getSex());
or.setPersoncharge(register.getMobilePhone());
or.setCardstatus(1);
or.setSharetype(1);
or.setDostatus(1);
shareOpenDoorService.addOrUpdate(or);
registerService.delete(register.getId());
return ApiResponseResult.success();
}
}}
return ApiResponseResult.success();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统