From fa74ca8042141ea7f9a7440ea79296edf812fdc1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 05 十一月 2025 11:44:17 +0800
Subject: [PATCH] bug修改
---
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js | 82 ++++++++++++++++++++++++++++++++++++++++
cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java | 16 ++++++++
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 6 ++
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js | 7 +++
4 files changed, 109 insertions(+), 2 deletions(-)
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
index 76acaa2..1fc8460 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -1336,7 +1336,84 @@
TSite.removeTimeSlot = function(btn) {
$(btn).closest('tr').remove();
}
+/**
+ * 检查时段是否重叠
+ */
+TSite.checkTimeOverlap = function(start1, end1, start2, end2) {
+ // 将时间字符串转换为分钟数便于比较
+ var toMinutes = function(time) {
+ var parts = time.split(':');
+ return parseInt(parts[0]) * 60 + parseInt(parts[1]);
+ };
+ var s1 = toMinutes(start1);
+ var e1 = toMinutes(end1);
+ var s2 = toMinutes(start2);
+ var e2 = toMinutes(end2);
+
+ // 检查重叠:时段1的结束时间 > 时段2的开始时间 且 时段1的开始时间 < 时段2的结束时间
+ return (e1 > s2 && s1 < e2);
+}
+
+/**
+ * 验证订场和散客时段不重叠
+ */
+TSite.validateNoTimeOverlap = function() {
+ var bookingTimeSlots = [];
+ var walkinTimeSlots = [];
+
+ // 收集订场时段
+ $("#booking_price_tbody tr").each(function() {
+ var index = $(this).data('index');
+ var startTime = $("#booking_start_" + index).val();
+ var endTime = $("#booking_end_" + index).val();
+ if (startTime && endTime) {
+ bookingTimeSlots.push({start: startTime, end: endTime});
+ }
+ });
+
+ // 收集散客时段
+ $("#walkin_price_tbody tr").each(function() {
+ var index = $(this).data('index');
+ var startTime = $("#walkin_start_" + index).val();
+ var endTime = $("#walkin_end_" + index).val();
+ if (startTime && endTime) {
+ walkinTimeSlots.push({start: startTime, end: endTime});
+ }
+ });
+
+ // 检查订场时段之间是否重叠
+ for (var i = 0; i < bookingTimeSlots.length; i++) {
+ for (var j = i + 1; j < bookingTimeSlots.length; j++) {
+ if (TSite.checkTimeOverlap(
+ bookingTimeSlots[i].start, bookingTimeSlots[i].end,
+ bookingTimeSlots[j].start, bookingTimeSlots[j].end
+ )) {
+ Feng.error("订场价格表中存在重叠的时段:" +
+ bookingTimeSlots[i].start + "-" + bookingTimeSlots[i].end + " 与 " +
+ bookingTimeSlots[j].start + "-" + bookingTimeSlots[j].end);
+ return false;
+ }
+ }
+ }
+
+ // 检查散客时段之间是否重叠
+ for (var i = 0; i < walkinTimeSlots.length; i++) {
+ for (var j = i + 1; j < walkinTimeSlots.length; j++) {
+ if (TSite.checkTimeOverlap(
+ walkinTimeSlots[i].start, walkinTimeSlots[i].end,
+ walkinTimeSlots[j].start, walkinTimeSlots[j].end
+ )) {
+ Feng.error("散客价格表中存在重叠的时段:" +
+ walkinTimeSlots[i].start + "-" + walkinTimeSlots[i].end + " 与 " +
+ walkinTimeSlots[j].start + "-" + walkinTimeSlots[j].end);
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
/**
* 保存所有数据(基本信息+价格配置)
*/
@@ -1346,7 +1423,10 @@
Feng.error("请先点击【生成价格表】按钮生成价格配置表!");
return;
}
-
+ // 验证时段不重叠
+ if (!TSite.validateNoTimeOverlap()) {
+ return;
+ }
// 验证人群选择
var bookingChecked = $("#audience_booking").is(':checked');
var walkinChecked = $("#audience_walkin").is(':checked');
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
index 18abcdd..15b1fac 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -435,6 +435,13 @@
// Feng.info("请上传场地责任有效期图片")
// return;
// }
+ // 验证价格配置时间段不重叠
+ // 检查是否有价格配置数据(如果页面上有价格表)
+ if ($("#booking_price_tbody tr").length > 0 || $("#walkin_price_tbody tr").length > 0) {
+ if (!TSiteInfo.validateNoTimeOverlap()) {
+ return;
+ }
+ }
if($('#courseVideo').val()==''){
Feng.info("请上传消防及应急管理方案")
return;
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
index af2b9f9..9d89f31 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/CodeCallBackController.java
@@ -1,7 +1,10 @@
package com.dsh.other.controller;
+import com.dsh.other.entity.SiteBooking;
+import com.dsh.other.service.ISiteBookingService;
import com.dsh.other.util.ResultUtil;
import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -23,6 +26,8 @@
@Api(tags = "硬件方调用 存储玩湃惠民卡使用记录")
@RequestMapping("/base/code")
public class CodeCallBackController {
+ @Autowired
+ private ISiteBookingService siteBookingService;
// 进场二维码新增参数codeType 1=订场 2=散客,3=门票,玩湃惠民卡codeType=4
/**
* 硬件开门后回调 是否可进场检查接口 sid门店id rid场地id
@@ -38,7 +43,18 @@
// codeType二维码类型1=订场 2=散客,3=门票,玩湃惠民卡codeType=4 234需要校验能否进场
if (codeType==1){
+ // 将订单设置为已核销
+ SiteBooking siteBooking = siteBookingService.getById(dataId);
+ if (siteBooking==null){
+ System.err.println("未查询到订场记录"+dataId);
+ return ResultUtil.error("未查询到订场记录");
+ }else{
+ siteBooking.setStatus(3);
+ siteBookingService.updateById(siteBooking);
+ }
return ResultUtil.success();
+ }else if (codeType == 2){
+
}
return ResultUtil.success();
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index 1bb2d1f..63b537f 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -108,6 +108,7 @@
.stream().collect(Collectors.groupingBy(TSitePrice::getSiteId));
List<QuerySiteListVo> querySiteListVos = this.baseMapper.querySiteList(querySiteList);
for (QuerySiteListVo querySiteListVo : querySiteListVos) {
+ querySiteListVo.setPrice(0.0);
if (ToolUtil.isEmpty(querySiteList.getLon())) {
querySiteListVo.setDistance(0D);
continue;
@@ -317,7 +318,10 @@
if (querySiteTimes.getSelectable() == 1&&end.before(now)){
querySiteTimes.setSelectable(0);
querySiteTimes.setTimeAfter(1);
-
+ }
+ if (end.before(now)){
+ querySiteTimes.setSelectable(0);
+ querySiteTimes.setTimeAfter(1);
}
querySiteTimes.setSelectCount(count);
if (flag == 0 && querySiteTimes.getSelectable() == 1) {
--
Gitblit v1.7.1