From 1ab84aadc4399c20c2a2dc60a61dea125750d0f0 Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Tue, 27 May 2025 11:56:08 +0800 Subject: [PATCH] commit --- .../site/SiteReserveController.java | 58 ++++++++++++++++++- .../views/mobile/activity/site/reserve.html | 33 ++++++----- .../platform/activity/site/SiteReserve.html | 12 +++- 3 files changed, 82 insertions(+), 21 deletions(-) diff --git a/src/main/java/io/v/nutz/activity/controller/site/SiteReserveController.java b/src/main/java/io/v/nutz/activity/controller/site/SiteReserveController.java index 8d3c5b9..97110a3 100644 --- a/src/main/java/io/v/nutz/activity/controller/site/SiteReserveController.java +++ b/src/main/java/io/v/nutz/activity/controller/site/SiteReserveController.java @@ -3,6 +3,7 @@ package io.v.nutz.activity.controller.site; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; @@ -389,7 +390,7 @@ public class SiteReserveController { return record; } - @At + /*@At @ViReturn public Object getAllowTime(String siteId, Integer year, Integer month) { if(StrUtil.isBlank(siteId)) { @@ -413,6 +414,34 @@ public class SiteReserveController { List openHours = siteInfo.getOpen_hours(); List weekNumList = openHours.stream().map(o -> o.getInt("weekNum")).distinct().collect(Collectors.toList()); + List result = new ArrayList<>(); + //循环时间段 + for (DateTime day : fullDateList) { + //先判断星期 + int week = day.dayOfWeek() - 1; + if(weekNumList.contains(week)) { + result.add(DateUtil.format(day, "yyyy-MM-dd")); + } + } + return result; + }*/ + + @At + @ViReturn + public Object getAllowTime(String siteId) { + //根据今天的日期往后加一个星期 + if(StrUtil.isBlank(siteId)) { + return new ArrayList<>(); + } + DateTime todayDate = DateUtil.date();//今天 + Date nextWeekDate = DateUtil.offsetDay(todayDate, 7); // 往后 7 天 + List fullDateList = DateUtil.rangeToList(todayDate, nextWeekDate, DateField.DAY_OF_MONTH); + + //查询场地 + ActivitySiteInfo siteInfo = siteInfoService.fetch(siteId); + List openHours = siteInfo.getOpen_hours(); + List weekNumList = openHours.stream().map(o -> o.getInt("weekNum")).distinct().collect(Collectors.toList()); + List result = new ArrayList<>(); //循环时间段 for (DateTime day : fullDateList) { @@ -440,6 +469,7 @@ public class SiteReserveController { List result = new ArrayList<>(); //这个是满足星期的所有时间 List mapList = openHours.stream().filter(o -> o.getInt("weekNum") == week).collect(Collectors.toList()); + for (NutMap nutMap : mapList) { String startTime = nutMap.getString("start_time"); String endTime = nutMap.getString("end_time"); @@ -467,8 +497,23 @@ public class SiteReserveController { ActivityType type = siteInfoService.dao().fetch(ActivityType.class, siteInfo.getTypeId()); List stateList = siteInfoService.dao().query(AuditState.class, Cnd.where("module", "=", type.getModuleName()).and("stateAuditType", "!=", AuditTypeEnum.REJECT.getValue())); + + // 获取当前时间的时分 + String nowTimeStr = DateUtil.format(DateUtil.date(), "HH:mm"); + DateTime nowTime = DateUtil.parseTimeToday(nowTimeStr); //找预约记录 for (NutMap nutMap : result) { + if(day.equals(DateUtil.today())) { + DateTime startTime = DateUtil.parseTimeToday(nutMap.getString("start_time")); + // 计算时间差(单位:分钟) + long diffMinutes = Math.abs(DateUtil.between(nowTime, startTime, DateUnit.MINUTE)); + // 相差不足4小时 + if(nowTime.getTime() > startTime.getTime() || diffMinutes <= 240) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "不可预约"); + continue; + } + } List reserveList = siteInfoService.dao().query( ActivitySiteReserve.class, Cnd.where("site_id", "=", siteId) @@ -478,8 +523,15 @@ public class SiteReserveController { .and("reserve_state", "in", stateList.stream().map(AuditState::getStateId).collect(Collectors.toList())) ); int count = Lang.isNotEmpty(reserveList) ? reserveList.stream().mapToInt(ActivitySiteReserve::getJoinCount).sum() : 0; - nutMap.addv("allowCount", maxNum); - nutMap.addv("hasCount", count); + if(count >= maxNum) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "已约满"); + } + long hasReserve = reserveList.stream().filter(o -> o.getReserve_person_id().equals(ShiroUtil.getUserId())).count(); + if(hasReserve > 0) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "已预约"); + } } return result; } diff --git a/src/main/resources/views/mobile/activity/site/reserve.html b/src/main/resources/views/mobile/activity/site/reserve.html index 5c3f971..9fd483a 100644 --- a/src/main/resources/views/mobile/activity/site/reserve.html +++ b/src/main/resources/views/mobile/activity/site/reserve.html @@ -65,7 +65,7 @@ layout("/mobile/platform.html"){ background-color: #0e78c5; } .calendar-left { - width: calc(100% - 20px); + /*width: calc(100% - 20px);*/ overflow-x: auto; display: flex; height: 90%; @@ -139,13 +139,13 @@ layout("/mobile/platform.html"){ -
+
@@ -153,6 +153,15 @@ layout("/mobile/platform.html"){ {{item.start_time + '-' + item.end_time}} +
{{ item.tooltip }}
+
+ 可预约 + + + +
+ + @@ -300,7 +309,7 @@ layout("/mobile/platform.html"){ setWeekList(startDate) { const wk = [] let count = 0 - while (wk.length < 7) { + while (wk.length < 8) { const addDate = moment(startDate).add(count, 'd') let dis = false if(this.allowDayList.length > 0 && !this.allowDayList.includes(moment(addDate).format('YYYY-MM-DD'))) { @@ -377,8 +386,6 @@ layout("/mobile/platform.html"){ } }, isCanRe(item) { - const now = new Date() - const end = moment().format('YYYY-MM-DD') + ' ' + item.end_time + ':00' const itemFullTime = this.selectDate.format('YYYY-MM-DD') + " " + item.start_time + "-" + item.end_time if(this.site.notApplyTimeList && this.site.notApplyTimeList.length > 0) { @@ -394,18 +401,14 @@ layout("/mobile/platform.html"){ const c = moment(sTime).isBefore(moment(notApplyStartTime)) && moment(eTime).isAfter(moment(notApplyEndTime)) if(a || b || c) { - return 4 + this.$set(item, 'disabled', true) + this.$set(item, 'tooltip', '不可预约') } } } - if (this.alreadyReserveRecord.includes(itemFullTime)) { - return 3 - } - if (now.getTime() >= new Date(end).getTime() && this.selectDate.format('YYYY-MM-DD') === moment().format('YYYY-MM-DD')) { - return 0 - } else { - return item.hasCount >= item.allowCount ? 2 : 1 + this.$set(item, 'disabled', true) + this.$set(item, 'tooltip', '已预约') } }, async onLoad() { diff --git a/src/main/resources/views/platform/activity/site/SiteReserve.html b/src/main/resources/views/platform/activity/site/SiteReserve.html index addb3c7..44ea60a 100644 --- a/src/main/resources/views/platform/activity/site/SiteReserve.html +++ b/src/main/resources/views/platform/activity/site/SiteReserve.html @@ -333,9 +333,15 @@ layout("/layouts/platform.html"){ + :disabled="item.disabled === true" + :value="item.start_time + '-' + item.end_time"> + +