puzhibing
2023-11-27 e3892373f0c3c786eccb1d1de0774c3ecc103f53
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai
7个文件已修改
7个文件已添加
548 ■■■■ 已修改文件
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/entity/SiteLock.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/SiteLockMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteLock.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteLockService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/DateComparisonExample.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/SiteLockMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -138,8 +138,7 @@
    private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
    @Autowired
    private TOrderService orderService;
    @Autowired
    private ICoursePackageOrderStudentService coursePackageOrderStudentService;
@@ -841,18 +840,28 @@
        return videoVos;
    }
    @PostMapping("/base/coursePack/allPaymentCourseList")
    @ResponseBody
    public List<CouponPaymentVo> getAppuserCourseList(@RequestBody Integer appUserId) {
        List<CouponPaymentVo> paymentVos = new ArrayList<>();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
                .eq("appUserId", appUserId)
                .eq("payType", 3)
//        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
//                .eq("appUserId", appUserId)
//                .eq("payType", 3)
//                .eq("payStatus", 2)
//                .eq("state", 1));
        List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId).eq("payType", 3)
                .eq("payStatus", 2)
                .eq("state", 1));
        if (list.size() > 0) {
            for (TCoursePackagePayment tCoursePackagePayment : list) {
            for (CoursePackageOrder tCoursePackagePayment : list) {
                CouponPaymentVo couponPaymentVo = new CouponPaymentVo();
                couponPaymentVo.setTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime()));
                couponPaymentVo.setAmount(tCoursePackagePayment.getPlayPaiCoin());
@@ -1115,6 +1124,7 @@
    }
    /**
     * 已报名课程详情
     */
@@ -1138,10 +1148,12 @@
            CourseDetailsResponse courseDetailsResponse = packagePaymentService.queryRegisteredCourseDetails(coursePayId, appUserId, lon, lat);
            if (orderId != null) {
                TOrder byId = orderService.getById(orderId);
                courseDetailsResponse.setAmount(byId.getPrice());
            }
//            if (orderId != null) {
//                TOrder byId = orderService.getById(orderId);
//                courseDetailsResponse.setAmount(byId.getPrice());
//            }
            return ResultUtil.success(courseDetailsResponse);
        } catch (Exception e) {
            e.printStackTrace();
@@ -2160,10 +2172,10 @@
            if (null == appUserId) {
                return ResultUtil.tokenErr();
            }
            List<TCoursePackagePayment> packagePayment = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>()
                    .eq(TCoursePackagePayment::getCoursePackageId, courseID)
                    .eq(TCoursePackagePayment::getAppUserId, appUserId)
                    .eq(TCoursePackagePayment::getStudentId, stuId)
            List<CoursePackageOrderStudent> packagePayment = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                    .eq("coursePackageId", courseID)
                    .eq("appUserId", appUserId)
                    .eq("studentId", stuId)
            );
            if (ToolUtil.isEmpty(packagePayment) || packagePayment.size() == 0) {
@@ -2175,7 +2187,7 @@
            );
            List<CoursePackageStudent> coursePackageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
                    .in(CoursePackageStudent::getCoursePackagePaymentId, packagePayment.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()))
                    .in(CoursePackageStudent::getCoursePackagePaymentId, packagePayment.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList()))
                    .in(CoursePackageStudent::getCoursePackageSchedulingId, coursePackageSchedulings.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList()))
                    .eq(CoursePackageStudent::getCoursePackageId, courseID)
                    .eq(CoursePackageStudent::getStudentId, stuId)
@@ -2238,25 +2250,32 @@
        map.put("name", store.getName());
        map.put("lon", lon);
        map.put("lat", lat);
        // 找出门店的所有课程 排出体验
        List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).eq(TCoursePackage::getState, 1).like(TCoursePackage::getClassWeeks, week));
        List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
        if (collect.size() == 0) {
            collect.add(-1);
        }
        List<CoursePackageScheduling> list8 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>()
                .eq(CoursePackageScheduling::getAppUserId, courseDetailReq.getAppUserId())
                .eq(CoursePackageScheduling::getStudentId, courseDetailReq.getStuId())
                .in(CoursePackageScheduling::getCoursePackageId, collect)
        );
        List<Integer> collect1 = list8.stream().map(CoursePackageScheduling::getCoursePackageId).collect(Collectors.toList());
        // 找出购买的课包
        List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                .eq("appUserId", courseDetailReq.getAppUserId())
                .eq("studentId", courseDetailReq.getStuId())
                .in("coursePackageId", collect)
                .in("coursePackageId", collect1)
                .eq("status", 1)
                .eq("state", 1)
        );
        List<Integer> collect1 = list1.stream().map(CoursePackageOrderStudent::getCoursePackageId).collect(Collectors.toList());
        List<Long> ids = list1.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList());
//        List<Integer> collect1 = list1.stream().map(CoursePackageOrderStudent::getCoursePackageId).collect(Collectors.toList());
//        List<Long> ids = list1.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList());
        for (TCoursePackage tCoursePackage : list) {
@@ -2297,6 +2316,9 @@
                detailsListVo.setMoney(cashPayment);
            }
            detailsListVo.setNum(tCoursePackage.getNeedNum());
            if (collect1.contains(tCoursePackage.getId())) {
                // 找出排课记录
                List<CoursePackageScheduling> list3 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>()
@@ -2318,8 +2340,7 @@
                List<CoursePackageStudent> list4 = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
                        .eq(CoursePackageStudent::getAppUserId, courseDetailReq.getAppUserId())
                        .eq(CoursePackageStudent::getCoursePackageId, tCoursePackage.getId())
                        .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2).
                                in(CoursePackageStudent::getCoursePackagePaymentId, ids)
                        .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2)
                );
                List<CoursePackageStudent> list5 = cspsService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", courseDetailReq.getStuId()).eq("coursePackageId", tCoursePackage.getId()));
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -1416,8 +1416,7 @@
            return ResultUtil.error("当前课包课时数不足");
        }
        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum());
        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
        TCoursePackage coursePackage1 = coursePackageService.getById(req.getCourseId());
        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
@@ -1425,9 +1424,19 @@
        //已经排课但没有使用的课时数量
        int number = list1.size() * coursePackage.getNeedNum();
        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
        laveClassHours1 -= number;
        //需要购买使用的课时数
        Integer num = req.getNum();
        //需要删除多余的排课记录
        if(number > laveClassHours1){
            int n = number - laveClassHours1;
        if(num.compareTo(laveClassHours1) > 0){
            //课时数差额
            int number1 = num - laveClassHours1;
            double o = number1 % coursePackage.getNeedNum();
            int l = 0;
            if(0 != o){
                l = 1;
            }
            int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
            for (int i = 0; i < n; i++) {
                CoursePackageScheduling coursePackageScheduling = list1.get(i);
                coursePackageSchedulingService.getBaseMapper().deleteById(coursePackageScheduling.getId());
@@ -1438,9 +1447,9 @@
        }
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String classStartTime = coursePackage.getClassStartTime();
        String classEndTime = coursePackage.getClassEndTime();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String classStartTime = coursePackage1.getClassStartTime();
        String classEndTime = coursePackage1.getClassEndTime();
        String[] split5 = classStartTime.split(",");
        String[] split6 = classEndTime.split(",");
        List<String> time = req.getTime();
@@ -1450,7 +1459,7 @@
                coursePackageScheduling.setType(3);
                coursePackageScheduling.setAppUserId(userId);
                coursePackageScheduling.setStudentId(req.getStuId());
                coursePackageScheduling.setCoursePackageId(coursePackage.getId());
                coursePackageScheduling.setCoursePackageId(req.getCourseId());
                try {
                    Date parse = format.parse(s + " " + split5[i]);
                    Date parse1 = format.parse(s + " " + split6[i]);
@@ -1462,7 +1471,7 @@
                    CoursePackageStudent student1 = new CoursePackageStudent();
                    student1.setAppUserId(userId);
                    student1.setStudentId(req.getStuId());
                    student1.setCoursePackageId(coursePackage.getId());
                    student1.setCoursePackageId(req.getCourseId());
                    student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                    student1.setSignInOrNot(1);
@@ -1477,7 +1486,8 @@
            }
        }
        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum());
        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
        CourseCounsum courseCounsum = new CourseCounsum();
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1140,6 +1140,7 @@
        coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
        coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
        coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
        coursePackageOrder.setPlayPaiCoin(paymentCourseVo.getPrice().intValue());
        coursePackageOrder.setPayUserType(1);
        coursePackageOrder.setPayStatus(2);
        coursePackageOrder.setPayUserId(appUser.getId());
@@ -1280,20 +1281,21 @@
                for (int i = 0; i < num; i++) {
                    Date time = calendar.getTime();
                    //判断当天是否在排课星期内
                    int day = calendar.get(Calendar.DAY_OF_WEEK);
                    day = day - 1 == 0 ? 7 : day - 1;
                    if (!week.contains(day)) {
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                        continue;
                    }
                    //大于有效期不进行排课
                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
                        break;
                    }
                    for (int j = 0; j < split.length; j++) {
                        //判断当天是否在排课星期内
                        int day = calendar.get(Calendar.DAY_OF_WEEK);
                        day = day - 1 == 0 ? 7 : day - 1;
                        if (!week.contains(day)) {
                            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                            continue;
                        }
                        //大于有效期不进行排课
                        if (calendar.getTimeInMillis() >= useTime.getTime()) {
                            break;
                        }
                        //剩余数量不足以排课
                        if (laveClassHours.compareTo(codeTime) < 0) {
                            break;
@@ -1322,10 +1324,9 @@
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        cpsMapper.insert(student1);
                        //增加日期,用于判断
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    }
                    //增加日期,用于判断
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                }
            }
@@ -1350,19 +1351,20 @@
                int num = 8 - day_week + 7;
                for (int i = 0; i < num; i++) {
                    Date time = calendar.getTime();
                    for (int j = 0; j < split.length; j++) {
                        //判断当天是否在排课星期内
                        int day = calendar.get(Calendar.DAY_OF_WEEK);
                        day = day - 1 == 0 ? 7 : day - 1;
                        if (!week.contains(day)) {
                            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                            continue;
                        }
                        //大于有效期不进行排课
                        if (calendar.getTimeInMillis() >= endTime.getTime()) {
                            break;
                        }
                    //判断当天是否在排课星期内
                    int day = calendar.get(Calendar.DAY_OF_WEEK);
                    day = day - 1 == 0 ? 7 : day - 1;
                    if (!week.contains(day)) {
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                        continue;
                    }
                    //大于有效期不进行排课
                    if (calendar.getTimeInMillis() >= endTime.getTime()) {
                        break;
                    }
                    for (int j = 0; j < split.length; j++) {
                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                        coursePackageScheduling.setType(tCoursePackage.getType());
                        coursePackageScheduling.setAppUserId(userId);
@@ -1384,10 +1386,9 @@
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        cpsMapper.insert(student1);
                        //增加日期,用于判断
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    }
                    //增加日期,用于判断
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                }
            }
        } catch (Exception e) {
cloud-server-management/src/main/java/com/dsh/course/entity/SiteLock.java
New file
@@ -0,0 +1,41 @@
package com.dsh.course.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @Date 2023/7/18 14:41
 */
@Data
@TableName("t_site_lock")
public class SiteLock {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 场地id
     */
    @TableField("siteId")
    private Integer siteId;
    /**
     * 锁定开始时间
     */
    @TableField("startTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    /**
     * 锁定结束时间
     */
    @TableField("endTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;
}
cloud-server-management/src/main/java/com/dsh/course/mapper/SiteLockMapper.java
New file
@@ -0,0 +1,17 @@
package com.dsh.course.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.course.feignClient.other.model.TSiteLockDTO;
import com.dsh.guns.modular.system.model.SiteLock;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2023/7/18 14:43
 */
public interface SiteLockMapper extends BaseMapper<SiteLock> {
    List<TSiteLockDTO> getListById(@Param("id") Integer id);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -26,6 +26,7 @@
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.*;
import com.dsh.guns.modular.system.service.*;
import com.dsh.guns.modular.system.util.DateComparisonExample;
import com.dsh.guns.modular.system.util.HttpRequestUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
@@ -1021,70 +1022,72 @@
   private SiteClient siteClient;
    @RequestMapping("/yuyuetimes/{id}")
    @ResponseBody
    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date) {
        System.out.println("=======date======"+date);
        List<String> strings = new ArrayList<>();
//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>()
                .eq("siteId", id).like("times",date));
System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
            String[] split = siteBooking.getTimes().split(";");
            for (String s : split) {
                String convertedValue = s.substring(11);
                strings.add(convertedValue);
            }
        }
    System.out.println("======strings======="+strings);
    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String day,String siteName,String halfName) {
//        System.out.println("=======date======"+date);
//
//        List<String> strings = new ArrayList<>();
//
////        List<SiteBooking> siteBookings = siteClient.listBooks(id);
//        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>()
//                .eq("siteId", id).like("times",date));
//System.out.println("=======siteBookings======"+siteBookings);
//        for (SiteBooking siteBooking : siteBookings) {
//            String[] split = siteBooking.getTimes().split(";");
//            for (String s : split) {
//
//                String convertedValue = s.substring(11);
//                strings.add(convertedValue);
//            }
//
//        }
//    System.out.println("======strings======="+strings);
//
//        List<OrderDto> timeRanges = new ArrayList<>();
//
//       Site site =  siteClient.listById(id);
//System.out.println("================"+site);
//        String appointmentStartTime = site.getAppointmentStartTime();
//        String appointmentEndTime = site.getAppointmentEndTime();
//
//        String currentTime = appointmentStartTime;
//        while (currentTime.compareTo(appointmentEndTime) < 0) {
//            String nextTime = null;
//            if("智慧场地".equals(site.getTypeName())){
//                nextTime=getNextTimeOne(currentTime);
//            }else {
//                nextTime= getNextTime(currentTime);
//            }
//
//            String timeRange = currentTime + "-" + nextTime;
//            OrderDto orderDto = new OrderDto();
//            orderDto.setTime(timeRange);
//
//            LocalTime currentTime1 = LocalTime.now();
//            LocalTime targetTime = LocalTime.parse(currentTime);
//
//            boolean hasExceeded = currentTime1.isAfter(targetTime);
//    if (hasExceeded){
//        orderDto.setState(0);
//    }
//    if (strings.contains(timeRange)){
//        orderDto.setState(0);
//    }
//
//
//            timeRanges.add(orderDto);
//            currentTime = nextTime;
//        }
//        System.out.println("-------------"+timeRanges);
//
//        return timeRanges;
        List<OrderDto> timeRanges = new ArrayList<>();
       Site site =  siteClient.listById(id);
System.out.println("================"+site);
        String appointmentStartTime = site.getAppointmentStartTime();
        String appointmentEndTime = site.getAppointmentEndTime();
        String currentTime = appointmentStartTime;
        while (currentTime.compareTo(appointmentEndTime) < 0) {
            String nextTime = null;
            if("智慧场地".equals(site.getTypeName())){
                nextTime=getNextTimeOne(currentTime);
            }else {
                nextTime= getNextTime(currentTime);
            }
//            String nextTime = getNextTime(currentTime);
            String timeRange = currentTime + "-" + nextTime;
            OrderDto orderDto = new OrderDto();
            orderDto.setTime(timeRange);
            LocalTime currentTime1 = LocalTime.now();
            LocalTime targetTime = LocalTime.parse(currentTime);
            boolean hasExceeded = currentTime1.isAfter(targetTime);
    if (hasExceeded){
        orderDto.setState(0);
    }
    if (strings.contains(timeRange)){
        orderDto.setState(0);
    }
            timeRanges.add(orderDto);
            currentTime = nextTime;
        }
        System.out.println("-------------"+timeRanges);
        return timeRanges;
return null;
    }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteLock.java
New file
@@ -0,0 +1,41 @@
package com.dsh.guns.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @Date 2023/7/18 14:41
 */
@Data
@TableName("t_site_lock")
public class SiteLock {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 场地id
     */
    @TableField("siteId")
    private Integer siteId;
    /**
     * 锁定开始时间
     */
    @TableField("startTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    /**
     * 锁定结束时间
     */
    @TableField("endTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteLockService.java
New file
@@ -0,0 +1,17 @@
package com.dsh.guns.modular.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.other.entity.SiteLock;
import com.dsh.other.model.dto.siteDto.TSiteLockDTO;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2023/7/18 14:44
 */
public interface ISiteLockService extends IService<SiteLock> {
    List<TSiteLockDTO> getListById(Integer id);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java
New file
@@ -0,0 +1,27 @@
package com.dsh.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.SiteLock;
import com.dsh.other.mapper.SiteLockMapper;
import com.dsh.other.model.dto.siteDto.TSiteLockDTO;
import com.dsh.other.service.ISiteLockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2023/7/18 14:45
 */
@Service
public class SiteLockServiceImpl extends ServiceImpl<SiteLockMapper, SiteLock> implements ISiteLockService {
    @Autowired
    private SiteLockMapper siteLockMapper;
    @Override
    public List<TSiteLockDTO> getListById(Integer id) {
        return siteLockMapper.getListById(id);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/DateComparisonExample.java
New file
@@ -0,0 +1,44 @@
package com.dsh.guns.modular.system.util;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateComparisonExample {
    private static Date parseDate(String dateString) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            return formatter.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static boolean isStringDateBetween(String stringValue, Date startDate, Date endDate) {
        String[] dateRange = stringValue.split(" - ");
        Date valueStartDate = parseDate(dateRange[0]);
        Date valueEndDate = parseDate(dateRange[1]);
        return (valueStartDate.after(startDate) || valueStartDate.equals(startDate))
                && (valueEndDate.before(endDate) || valueEndDate.equals(endDate));
    }
    public static boolean isStringWithinTimeRange(String stringValue, Date startTime, Date endTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            Date dateValue = sdf.parse(stringValue);
            return dateValue.after(startTime) && dateValue.before(endTime);
        } catch (ParseException e) {
            e.printStackTrace();
            return false;
        }
    }
}
cloud-server-management/src/main/resources/mapper/SiteLockMapper.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.other.mapper.SiteLockMapper">
    <select id="getListById" resultType="com.dsh.other.model.dto.siteDto.TSiteLockDTO">
        select * from t_site_lock
        where siteId = #{id}
        and endTime > NOW()
    </select>
</mapper>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
@@ -41,6 +41,8 @@
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约类型:</label>
                    <div class="col-sm-4">
@@ -54,7 +56,7 @@
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课场地:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="siteId" name="siteId"  >
                        <select class="form-control" id="siteId" name="siteId" onchange="CoursePackageInfo.queryHalf()" >
                            <option >请选择场地</option>
                            @for(obj in site){
                            <option value="${obj.id}"  data-custom-data="1">${obj.name}</option>
@@ -63,11 +65,19 @@
                    </div>
                </div>
                <div class="form-group"  id="half1"  hidden="hidden">
                    <label class="col-sm-3 control-label">*选择半场:</label>
                    <div class="col-sm-4">
                        <select class="form-control"  name="half" id="half">
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="time" name="time" type="text" onchange="CoursePackageInfo.addTime()">
                    </div>
                </div>
@@ -80,13 +90,7 @@
                    </div>
                </div>
                <div class="form-group"  id="half1"  hidden="hidden">
                    <label class="col-sm-3 control-label">*选择半场:</label>
                    <div class="col-sm-4">
                        <select class="form-control"  name="half" id="half">
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">现金价格:</label>
@@ -219,6 +223,19 @@
            })
            ajax3.start()
            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
                console.log("================"+data)
                if(data!=null){
                    let htmlStr = '';
                    for (let i = 0; i < data.length; i++) {
                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
                    }
                    $("#half").empty().append(htmlStr);
                }
            })
            ajax1.start()
        }
    }
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
@@ -63,8 +63,36 @@
        }
    })
    ajax.set("date",$('#time').val());
    var siteId = document.getElementById("siteId");
    var siteName = siteId.options[siteId.selectedIndex].text;
    var halfId = document.getElementById("half");
    var halfName = halfId.options[halfId.selectedIndex].text;
    ajax.set("siteName",siteName);
    ajax.set("halfName",halfName);
    ajax.start()
    // var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
    //     console.log("================"+data)
    //     if(data!=null){
    //         let htmlStr = '';
    //         for (let i = 0; i < data.length; i++) {
    //             htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
    //         }
    //         $("#half").empty().append(htmlStr);
    //     }
    // })
    // ajax1.start()
};
CoursePackageInfo.queryHalf = function (a) {
    var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
        console.log("================"+data)
        if(data!=null){
@@ -76,13 +104,7 @@
        }
    })
    ajax1.start()
};
}
CoursePackageInfo.addTime1 = function (a) {
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -174,9 +174,7 @@
        System.out.println("=======date======" + day);
        List<String> strings = new ArrayList<>();
//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", day));
        if (siteName == null || siteName.equals("")) {
            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", day));