321
This commit is contained in:
parent
71c6380df4
commit
2d0a4f39d6
|
|
@ -49,7 +49,7 @@ public class SQController : ControllerBase
|
|||
private readonly ICoreCmsUserBlacklistServices _coreCmsUserBlacklistServices;
|
||||
private readonly ISQReservationReputationServices _sQReservationReputationServices;
|
||||
private readonly ISQReservationEvaluateServices _sQReservationEvaluateServices;
|
||||
|
||||
private readonly ISQRoomUnavailableTimesServices _sQRoomUnavailableTimesServices;
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
///</summary>
|
||||
|
|
@ -68,6 +68,10 @@ public class SQController : ControllerBase
|
|||
ISQReservationEvaluateServices sQReservationEvaluateServices
|
||||
,
|
||||
ISQReservationReputationServices sQReservationReputationServices
|
||||
,
|
||||
ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
|
||||
|
||||
|
||||
|
||||
)
|
||||
{
|
||||
|
|
@ -84,6 +88,7 @@ ISQReservationReputationServices sQReservationReputationServices
|
|||
_coreCmsUserBlacklistServices = coreCmsUserBlacklistServices;
|
||||
_sQReservationEvaluateServices = sQReservationEvaluateServices;
|
||||
_sQReservationReputationServices = sQReservationReputationServices;
|
||||
_sQRoomUnavailableTimesServices = sQRoomUnavailableTimesServices;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -341,7 +346,7 @@ ISQReservationReputationServices sQReservationReputationServices
|
|||
[Authorize]
|
||||
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>();
|
||||
foreach (var item in list)
|
||||
|
|
@ -349,7 +354,7 @@ ISQReservationReputationServices sQReservationReputationServices
|
|||
var c = new
|
||||
{
|
||||
item.created_at,
|
||||
reputation_value=item.reputation_value.ToString("#.#"),
|
||||
reputation_value = item.reputation_value.ToString("#.#"),
|
||||
title = item.remark
|
||||
};
|
||||
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"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user