This commit is contained in:
zpc 2025-09-26 13:48:11 +08:00
parent 5bd8167c2e
commit 863d897e02
3 changed files with 99 additions and 2 deletions

View File

@ -3,10 +3,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.RedisMQ.Subscribe;
using CoreCms.Net.Utility.Extensions;
using InitQ;
using Microsoft.Extensions.DependencyInjection;
namespace CoreCms.Net.Core.Config
@ -36,7 +39,9 @@ namespace CoreCms.Net.Core.Config
typeof(LogingSubscribe),
typeof(UserSubscribe),
# if DEBUG
typeof(WeChatPayNoticeSubscribe),
# endif
typeof(SendWxTemplateMessageSubscribe),
typeof(AfterSalesReviewSubscribe),
};

View File

@ -126,7 +126,7 @@ public class SQController : ControllerBase
{
var userId = _user.ID;
var list = await _dbBase.Ado.SqlQueryAsync<SQReservationsApiDto>($"SELECT r.*, p.role AS Role, p.is_arrive, CASE WHEN r.status = 1 THEN 0 WHEN r.status = 2 THEN 1 WHEN r.status = 0 THEN 2 WHEN r.status = 3 THEN 3 END AS orderid FROM SQReservations r LEFT JOIN SQReservationParticipants p ON r.id = p.reservation_id WHERE r.status < 4 AND p.user_id = {userId} AND p.status = 0 AND DATEADD(day,2, end_time) > GETDATE() ORDER BY orderid asc, r.start_time ASC ");
var list = await _dbBase.Ado.SqlQueryAsync<SQReservationsApiDto>($"SELECT r.*, p.role AS Role, p.is_arrive, CASE WHEN r.status = 1 THEN 0 WHEN r.status = 2 THEN 1 WHEN r.status = 0 THEN 2 WHEN r.status = 3 THEN 3 END AS orderid FROM SQReservations r LEFT JOIN SQReservationParticipants p ON r.id = p.reservation_id WHERE r.status < 4 AND p.user_id = {userId} AND p.status = 0 AND DATEADD(day,2, end_time) > GETDATE() ORDER BY orderid asc, r.start_time Desc ");
if (list != null && list.Count > 0)
{
var roomList = await _SQRoomsServices.GetRoomList();
@ -635,6 +635,82 @@ public class SQController : ControllerBase
Msg = "您已加入该预约"
};
}
var user = _userServices.QueryById(userId);
// 2.0.1 校验用户条件 是否符合要求 如 性别user.sex 1男2女 年龄user.birthday这个是生日 用生日去动态计算年龄) 信用分credit_score
//reservation.credit_limit 最低信誉分 同 用户表的的 信用分
// reservation.gender_limit 0 不限 1男 2 女
// 最大 和最小 年龄 0 不限制 reservation.max_age reservation.min_age
if (user == null)
{
return new WebApiDto
{
Code = 404,
Data = null,
Msg = "用户不存在"
};
}
// 信誉分校验
if (reservation.credit_limit > 0 && user.credit_score < reservation.credit_limit)
{
return new WebApiDto
{
Code = 400,
Data = null,
Msg = $"您的信誉分不足,最低要求为{reservation.credit_limit}"
};
}
// 性别限制0 不限1 男2 女
if (reservation.gender_limit == 1 || reservation.gender_limit == 2)
{
if (user.sex != reservation.gender_limit)
{
return new WebApiDto
{
Code = 400,
Data = null,
Msg = "您的性别不符合该预约要求"
};
}
}
// 年龄限制(按生日计算实际年龄)
if (reservation.min_age > 0 || reservation.max_age > 0)
{
if (!user.birthday.HasValue)
{
return new WebApiDto
{
Code = 400,
Data = null,
Msg = "请先完善生日信息以校验年龄"
};
}
var today = DateTime.Today;
var birth = user.birthday.Value.Date;
var age = today.Year - birth.Year;
if (birth > today.AddYears(-age)) age--;
if (reservation.min_age > 0 && age < reservation.min_age)
{
return new WebApiDto
{
Code = 400,
Data = null,
Msg = $"年龄小于最小限制:{reservation.min_age}岁"
};
}
if (reservation.max_age > 0 && age > reservation.max_age)
{
return new WebApiDto
{
Code = 400,
Data = null,
Msg = $"年龄超过最大限制:{reservation.max_age}岁"
};
}
}
// 2.1 校验用户是否有其它预约时间冲突
// 2.1 校验用户是否有其它预约时间冲突(只查未开始或正在进行中的预约)
@ -989,6 +1065,16 @@ public class SQController : ControllerBase
is_arrive = 2
},
it => it.reservation_id == dto.reservation_id && it.status == 0 && falseUserIds.Contains(it.user_id));
//添加鸽子次数
foreach (var user_id in falseUserIds)
{
var user = await _userServices.QueryByIdAsync(user_id);
if (user != null)
{
user.dove_count++;
}
await _userServices.UpdateAsync(user);
}
}
// 4) 确保发起者始终为已赴约(1)

View File

@ -1297,7 +1297,13 @@ namespace CoreCms.Net.Web.WebApi.Controllers
{
@params.Add("trade_type", "JSAPI_OFFICIAL");
}
if (@params["money"].ToString() != "5" && @params["money"].ToString() != "10")
{
jm.status = false;
jm.msg = "参数不正确";
return jm;
}
@params["money"] = "0.01";
//生成支付单,并发起支付
jm = await _billPaymentsServices.Pay("", "wechatpay", _user.ID, 6, @params);