diff --git a/CoreCms.Net.Core/Config/RedisMessageQueueSetup.cs b/CoreCms.Net.Core/Config/RedisMessageQueueSetup.cs index d9a26bf..70f05ae 100644 --- a/CoreCms.Net.Core/Config/RedisMessageQueueSetup.cs +++ b/CoreCms.Net.Core/Config/RedisMessageQueueSetup.cs @@ -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), }; diff --git a/CoreCms.Net.Web.WebApi/Controllers/SQController.cs b/CoreCms.Net.Web.WebApi/Controllers/SQController.cs index 93db754..36e74ed 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/SQController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/SQController.cs @@ -126,7 +126,7 @@ public class SQController : ControllerBase { var userId = _user.ID; - var list = await _dbBase.Ado.SqlQueryAsync($"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($"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) diff --git a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs index 224eea0..b7f7487 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs @@ -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);