把资料库产色的几个文件提交,汇出挂单功能的数据,状态数据要有才能运行

This commit is contained in:
2025-09-12 13:48:04 +08:00
parent 0b0ddc82bd
commit 4419dfff64
12 changed files with 667 additions and 231 deletions

View File

@@ -191,8 +191,6 @@ public class guadanOrderGuestController : ApiController
_db.RegionAndRoomAndBedSchedule.Add(schedul);
}
await _db.SaveChangesAsync();
await _db.SaveChangesAsync();
return Ok();
}
@@ -328,7 +326,56 @@ public class guadanOrderGuestController : ApiController
await _db.SaveChangesAsync();
return Ok();
}
[HttpPost]
[Route("api/guadanorderguest/xuzhu")]
public async Task<IHttpActionResult> ExtendStay([FromBody] XuZhuModel model)
{
//续住方法
if (model == null)
return BadRequest("请求数据为空");
if (model.GuestUuid == Guid.Empty || model.GuestBedUuid == Guid.Empty)
return BadRequest("GuestUuid 或 GuestBedUuid 无效");
var guest= await _db.GuaDanOrderGuest.FindAsync(model.GuestUuid);
if (guest == null)
{
return BadRequest("挂单不存在");
}
if(guest.BedUuid != model.GuestBedUuid)
{
return BadRequest("床位不正确");
}
var bedIsCanUse = await RegionAndRoomAndBedSchedule.IsBedAvailableAsync(_db,model.GuestBedUuid, model.CurrentCheckoutDate, model.NewCheckoutDate);
if(!bedIsCanUse)
{
return BadRequest("该床位在续住时间段内被预定,无法续住");
}
var newStartDate = model.CurrentCheckoutDate.Date;
var newEndDate = model.NewCheckoutDate.Date.AddDays(-1);
if (newEndDate < newStartDate)
return BadRequest("续住日期区间无效");
for (var date = newStartDate; date <= newEndDate; date = date.AddDays(1))
{
var newSchedule = new RegionAndRoomAndBedSchedule
{
GuaDanOrderNo = guest.GuaDanOrderNo,
Uuid = Guid.NewGuid(),
TargetUuid = model.GuestBedUuid,
GuaDanOrderGuestUuid = model.GuestUuid,
ScheduleDate = date,
Title = "续住挂单", // 一天一条,开始和结束是同一天
Description = "续住挂单",
UseType = 30,
CreatedAt = DateTime.UtcNow
};
_db.RegionAndRoomAndBedSchedule.Add(newSchedule);
}
guest.CheckOutAt = model.NewCheckoutDate.Date;
await _db.SaveChangesAsync(); // 保存数据库操作
return Ok(new { message = "续住成功" });
}
[HttpPost]
[Route("api/guadanorderguest/cancel")]
public async Task<IHttpActionResult> CancelGuadanGuest([FromUri] Guid uuid)
@@ -541,12 +588,23 @@ public class guadanOrderGuestController : ApiController
if (guest.BedUuid != null)
{
var bed = _db.RegionRoomBed.FirstOrDefault(b => b.Uuid == guest.BedUuid);
if (bed != null && StatusTransitionManager.CanTransition(bed.StatusCode, "102")) // 102 = 占用
if(bed == null)
{
return BadRequest("入住床位不存在");
}
if (StatusTransitionManager.CanTransition(bed.StatusCode, "102")) // 102 = 占用
{
bed.StatusCode = "102";
}
else
{
return BadRequest($"当前床位状态:{bed.RegionRoomBedStatus.Name} 不能入住");
}
}
else if(guest.BedUuid == null)
{
return BadRequest("入住床位不存在");
}
_db.SaveChanges();
return Ok(new { message = "入住成功", statusCode = guest.StatusCode });
@@ -593,5 +651,12 @@ public class guadanOrderGuestController : ApiController
public int num { get; set; }
public string u_name { get; set; }
}
public class XuZhuModel
{
public Guid GuestUuid { get; set; } // 不可为空
public Guid GuestBedUuid { get; set; } // 不可为空
public DateTime CurrentCheckoutDate { get; set; } // 当前退房时间
public DateTime NewCheckoutDate { get; set; } // 新退房时间
}
}