This commit is contained in:
zpc 2025-09-14 02:50:01 +08:00
parent 71c6380df4
commit 2d0a4f39d6

View File

@ -49,7 +49,7 @@ public class SQController : ControllerBase
private readonly ICoreCmsUserBlacklistServices _coreCmsUserBlacklistServices; private readonly ICoreCmsUserBlacklistServices _coreCmsUserBlacklistServices;
private readonly ISQReservationReputationServices _sQReservationReputationServices; private readonly ISQReservationReputationServices _sQReservationReputationServices;
private readonly ISQReservationEvaluateServices _sQReservationEvaluateServices; private readonly ISQReservationEvaluateServices _sQReservationEvaluateServices;
private readonly ISQRoomUnavailableTimesServices _sQRoomUnavailableTimesServices;
/// <summary> /// <summary>
/// 构造函数 /// 构造函数
///</summary> ///</summary>
@ -68,6 +68,10 @@ public class SQController : ControllerBase
ISQReservationEvaluateServices sQReservationEvaluateServices ISQReservationEvaluateServices sQReservationEvaluateServices
, ,
ISQReservationReputationServices sQReservationReputationServices ISQReservationReputationServices sQReservationReputationServices
,
ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
) )
{ {
@ -84,6 +88,7 @@ ISQReservationReputationServices sQReservationReputationServices
_coreCmsUserBlacklistServices = coreCmsUserBlacklistServices; _coreCmsUserBlacklistServices = coreCmsUserBlacklistServices;
_sQReservationEvaluateServices = sQReservationEvaluateServices; _sQReservationEvaluateServices = sQReservationEvaluateServices;
_sQReservationReputationServices = sQReservationReputationServices; _sQReservationReputationServices = sQReservationReputationServices;
_sQRoomUnavailableTimesServices = sQRoomUnavailableTimesServices;
} }
@ -341,7 +346,7 @@ ISQReservationReputationServices sQReservationReputationServices
[Authorize] [Authorize]
public async Task<WebApiDto> GetReputationByUser([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20) public async Task<WebApiDto> GetReputationByUser([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20)
{ {
var list = await _sQReservationReputationServices.QueryPageAsync(it => it.user_id == _user.ID , it => it.created_at, OrderByType.Desc, pageIndex, pageSize, true); var list = await _sQReservationReputationServices.QueryPageAsync(it => it.user_id == _user.ID, it => it.created_at, OrderByType.Desc, pageIndex, pageSize, true);
var o = new List<object>(); var o = new List<object>();
foreach (var item in list) foreach (var item in list)
@ -349,7 +354,7 @@ ISQReservationReputationServices sQReservationReputationServices
var c = new var c = new
{ {
item.created_at, item.created_at,
reputation_value=item.reputation_value.ToString("#.#"), reputation_value = item.reputation_value.ToString("#.#"),
title = item.remark title = item.remark
}; };
o.Add(c); o.Add(c);
@ -391,5 +396,44 @@ ISQReservationReputationServices sQReservationReputationServices
} }
/// <summary>
/// 获取可预约的房间列表
/// </summary>
/// <param name="startTime">开始时间 时间戳</param>
/// <param name="endTime">结束时间 时间戳</param>
/// <returns></returns>
[HttpGet]
public async Task<WebApiDto> GetReservationRoomList([FromQuery] long startTime, [FromQuery] long endTime)
{
// 时间戳转DateTime
var start = DateTimeOffset.FromUnixTimeSeconds(startTime).DateTime;
var end = DateTimeOffset.FromUnixTimeSeconds(endTime).DateTime;
// 1. 查询所有可用房间
var allRooms = await _SQRoomsServices.QueryListByClauseAsync(r => r.status == true);
// 2. 查询有不可用时间段冲突的房间
var unavailableRoomIds = (await _sQRoomUnavailableTimesServices.QueryListByClauseAsync(
t => t.start_time < end && t.end_time > start
)).Select(t => t.room_id).Distinct().ToList();
// 3. 查询已被预约的房间(未取消的预约,时间有重叠)
var reservedRoomIds = (await _SQReservationsServices.QueryListByClauseAsync(
r => r.status < 3 && r.start_time < end && r.end_time > start
)).Select(r => r.room_id).Distinct().ToList();
// 4. 可预约房间 = 所有可用房间 - 不可用房间 - 已预约房间
var availableRooms = allRooms
.Where(r => !unavailableRoomIds.Contains(r.id) && !reservedRoomIds.Contains(r.id))
.ToList();
return new WebApiDto()
{
Code = 0,
Data = availableRooms,
Msg = "ok"
};
}
} }