如何优化预订系统不同地点人数上限的添加限制判断逻辑
问题根源
- 原有判断逻辑没有绑定用户本次提交的预订目标地点,只要任意一个地点达到阈值就全局拒绝所有预订请求,完全没有区分不同地点的剩余容量。
- Location2的阈值设置错误:该地点最大可容纳3人,已预订数等于3时才达到上限,原有逻辑判断等于2就拒绝,会浪费1个可用名额。
修复方案
你需要先获取用户本次预订的目标地点参数(假设参数名为targetLocation),再针对目标地点单独做容量判断,修改后的逻辑如下:
// 先获取本次预订的目标地点 var targetLocation = [当前用户提交的预订目标地点值]; if( (targetLocation == "Location1" && CheckLocation1Booking() >= 5) || (targetLocation == "Location2" && CheckLocation2Booking() >= 3) ) { deny adding of booking }
可扩展优化建议
如果后续可能新增地点或者调整容量,建议把地点容量做成配置项,避免硬编码,后续调整无需修改判断逻辑:
// 预配置所有地点的最大容量 Dictionary<string, int> locationMaxCapacity = new Dictionary<string, int>() { {"Location1", 5}, {"Location2", 3} }; // 通用判断逻辑,新增/调整地点无需修改此处 int currentBookedCount = GetLocationBookedCount(targetLocation); // 可将原有分地点查询的逻辑合并为通用方法,传入地点名称返回已预订人数 if (currentBookedCount >= locationMaxCapacity[targetLocation]) { deny adding of booking }
内容的提问来源于stack exchange,提问作者Martin King。
相关产品推荐
相关产品推荐

