make
This commit is contained in:
parent
9a67d1705f
commit
c961b35fd8
|
|
@ -102,7 +102,26 @@ namespace CoreCms.Net.Model.ViewModels.SQ
|
||||||
|
|
||||||
[StringLength(maximumLength: 255, ErrorMessage = "{0}不能超过{1}字")]
|
[StringLength(maximumLength: 255, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
public new System.String remarks { get; set; }
|
public new System.String remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重要信息
|
||||||
|
/// </summary>
|
||||||
|
public string important_data { get; set; }
|
||||||
|
}
|
||||||
|
public class SQReservationParticipantsAddDto
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 预约ID
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public new System.Int32 ReservationsId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重要信息
|
||||||
|
/// </summary>
|
||||||
|
public string important_data { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ using CoreCms.Net.Utility.Extensions;
|
||||||
using ToolGood.Words.internals;
|
using ToolGood.Words.internals;
|
||||||
using NPOI.SS.Formula.PTG;
|
using NPOI.SS.Formula.PTG;
|
||||||
using NPOI.OpenXmlFormats.Dml;
|
using NPOI.OpenXmlFormats.Dml;
|
||||||
|
using Humanizer;
|
||||||
namespace CoreCms.Net.Web.WebApi.Controllers;
|
namespace CoreCms.Net.Web.WebApi.Controllers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -544,6 +545,7 @@ ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
|
||||||
role = 1,
|
role = 1,
|
||||||
status = 0,
|
status = 0,
|
||||||
is_refund = dto.deposit_fee > 0 ? 1 : 0,
|
is_refund = dto.deposit_fee > 0 ? 1 : 0,
|
||||||
|
important_data = dto.important_data
|
||||||
};
|
};
|
||||||
await _SQReservationParticipantsServices.InsertAsync(participant);
|
await _SQReservationParticipantsServices.InsertAsync(participant);
|
||||||
|
|
||||||
|
|
@ -554,17 +556,18 @@ ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
|
||||||
Msg = "预约成功"
|
Msg = "预约成功"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户加入预约接口
|
/// 用户加入预约接口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="reservationId">预约ID</param>
|
/// <param name="dto">预约</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public async Task<WebApiDto> JoinReservation([FromBody] int reservationId)
|
public async Task<WebApiDto> JoinReservation([FromBody] SQReservationParticipantsAddDto dto)
|
||||||
{
|
{
|
||||||
var userId = _user.ID;
|
var userId = _user.ID;
|
||||||
|
var reservationId = dto.ReservationsId;
|
||||||
// 1. 校验预约是否存在且未结束
|
// 1. 校验预约是否存在且未结束
|
||||||
var reservation = await _SQReservationsServices.QueryByClauseAsync(
|
var reservation = await _SQReservationsServices.QueryByClauseAsync(
|
||||||
r => r.id == reservationId && r.end_time > DateTime.Now && r.status < 2,
|
r => r.id == reservationId && r.end_time > DateTime.Now && r.status < 2,
|
||||||
|
|
@ -593,6 +596,61 @@ ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2.1 校验用户是否有其它预约时间冲突
|
||||||
|
// 2.1 校验用户是否有其它预约时间冲突(只查未开始或正在进行中的预约)
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var hasConflict = await _SQReservationParticipantsServices.QueryMuchAsync<SQReservationParticipants, SQReservations, int>(
|
||||||
|
(p, r) => new object[]
|
||||||
|
{
|
||||||
|
JoinType.Inner, p.reservation_id == r.id
|
||||||
|
},
|
||||||
|
(p, r) => r.id,
|
||||||
|
(p, r) =>
|
||||||
|
p.user_id == userId &&
|
||||||
|
p.status == 0 && // 只查未退出
|
||||||
|
r.status < 2 && // 只查未取消/未结束
|
||||||
|
r.end_time > now && // 只查未结束
|
||||||
|
r.start_time < reservation.end_time && r.end_time > reservation.start_time // 时间有重叠
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hasConflict != null && hasConflict.Count > 0)
|
||||||
|
{
|
||||||
|
return new WebApiDto
|
||||||
|
{
|
||||||
|
Code = 402,
|
||||||
|
Data = null,
|
||||||
|
Msg = "您有其它预约时间冲突,无法加入该预约"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
//// 查询用户所有未结束的预约参与记录
|
||||||
|
//var userReservations = await _SQReservationParticipantsServices.QueryListByClauseAsync(
|
||||||
|
// p => p.user_id == userId && p.status == 0, // 只查未退出的
|
||||||
|
// p => p.id, OrderByType.Asc);
|
||||||
|
|
||||||
|
//if (userReservations != null && userReservations.Count > 0)
|
||||||
|
//{
|
||||||
|
// // 获取这些预约的ID
|
||||||
|
// var reservationIds = userReservations.Select(p => p.reservation_id).ToList();
|
||||||
|
// // 查询这些预约的时间段
|
||||||
|
// var reservations = await _SQReservationsServices.QueryListByClauseAsync(
|
||||||
|
// r => reservationIds.Contains(r.id) && r.status < 2 && r.end_time > DateTime.Now,
|
||||||
|
// r => r.id, OrderByType.Asc);
|
||||||
|
|
||||||
|
// // 检查时间是否有重叠
|
||||||
|
// foreach (var r in reservations)
|
||||||
|
// {
|
||||||
|
// if (r.start_time < reservation.end_time && r.end_time > reservation.start_time)
|
||||||
|
// {
|
||||||
|
// return new WebApiDto
|
||||||
|
// {
|
||||||
|
// Code = 402,
|
||||||
|
// Data = null,
|
||||||
|
// Msg = "您有其它预约时间冲突,无法加入该预约"
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
//3.校验预约是否已满(如有容量限制,可补充)
|
//3.校验预约是否已满(如有容量限制,可补充)
|
||||||
var participantsCount = await _SQReservationParticipantsServices.QueryListByClauseAsync(
|
var participantsCount = await _SQReservationParticipantsServices.QueryListByClauseAsync(
|
||||||
p => p.reservation_id == reservationId, p => p.id, OrderByType.Asc);
|
p => p.reservation_id == reservationId, p => p.id, OrderByType.Asc);
|
||||||
|
|
@ -613,7 +671,9 @@ ISQRoomUnavailableTimesServices sQRoomUnavailableTimesServices
|
||||||
user_id = userId,
|
user_id = userId,
|
||||||
join_time = DateTime.Now,
|
join_time = DateTime.Now,
|
||||||
role = 0, // 0为参与者
|
role = 0, // 0为参与者
|
||||||
status = 0
|
status = 0,
|
||||||
|
is_refund = reservation.deposit_fee > 0 ? 1 : 0,
|
||||||
|
important_data = dto.important_data
|
||||||
};
|
};
|
||||||
await _SQReservationParticipantsServices.InsertAsync(participant);
|
await _SQReservationParticipantsServices.InsertAsync(participant);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user