体育馆预约系统 | 还有3个月毕业?体育馆预约系统SpringBoot快速开发避免延毕危机

52 阅读4分钟

💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

体育馆预约系统介绍

体育馆预约系统是一套基于SpringBoot框架开发的综合性场馆管理平台,采用Java作为后端开发语言,结合MySQL数据库进行数据存储与管理。系统前端采用uni-app跨平台开发框架,同时支持微信小程序和安卓应用,为用户提供多样化的访问方式。系统主要包含八大核心功能模块:系统首页为用户提供直观的导航界面和重要信息展示,用户模块负责用户注册登录及权限管理,场地类型模块对不同体育场地进行分类管理,场地信息模块详细记录各个场地的基本信息和使用状态,场地预约模块是系统的核心业务功能实现在线预约和时间管理,提醒信息模块为用户提供预约提醒和系统通知服务,系统管理模块负责整个平台的后台管理和配置,个人中心模块让用户能够管理自己的预约记录和个人信息。整个系统采用前后端分离的架构设计,通过RESTful API实现数据交互,保证了系统的可扩展性和维护性,为体育馆的数字化管理提供了完整的技术解决方案。

体育馆预约系统演示视频

演示视频

体育馆预约系统演示图片

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

体育馆预约系统代码展示

import org.apache.spark.sql.SparkSession;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
@Service
public class VenueBookingService {
    @Autowired
    private BookingMapper bookingMapper;
    @Autowired
    private VenueMapper venueMapper;
    @Autowired
    private UserMapper userMapper;
    private SparkSession spark = SparkSession.builder().appName("VenueBookingAnalysis").getOrCreate();
    public Map<String, Object> createBooking(BookingRequest request) {
        Map<String, Object> result = new HashMap<>();
        if (request.getUserId() == null || request.getVenueId() == null) {
            result.put("success", false);
            result.put("message", "用户ID和场地ID不能为空");
            return result;
        }
        Venue venue = venueMapper.selectById(request.getVenueId());
        if (venue == null) {
            result.put("success", false);
            result.put("message", "场地不存在");
            return result;
        }
        if (venue.getStatus() != 1) {
            result.put("success", false);
            result.put("message", "场地当前不可预约");
            return result;
        }
        List<Booking> existingBookings = bookingMapper.findConflictBookings(request.getVenueId(), request.getStartTime(), request.getEndTime());
        if (!existingBookings.isEmpty()) {
            result.put("success", false);
            result.put("message", "该时间段已被预约");
            return result;
        }
        User user = userMapper.selectById(request.getUserId());
        if (user.getCredits() < venue.getPrice()) {
            result.put("success", false);
            result.put("message", "用户积分不足");
            return result;
        }
        Booking booking = new Booking();
        booking.setUserId(request.getUserId());
        booking.setVenueId(request.getVenueId());
        booking.setStartTime(request.getStartTime());
        booking.setEndTime(request.getEndTime());
        booking.setBookingTime(new Date());
        booking.setStatus(1);
        booking.setTotalPrice(venue.getPrice());
        bookingMapper.insert(booking);
        user.setCredits(user.getCredits() - venue.getPrice());
        userMapper.updateById(user);
        venue.setBookingCount(venue.getBookingCount() + 1);
        venueMapper.updateById(venue);
        result.put("success", true);
        result.put("message", "预约成功");
        result.put("bookingId", booking.getId());
        return result;
    }
    public Map<String, Object> getVenueList(VenueQuery query) {
        Map<String, Object> result = new HashMap<>();
        List<Venue> venues = venueMapper.selectByQuery(query);
        if (venues.isEmpty()) {
            result.put("success", false);
            result.put("message", "暂无可用场地");
            return result;
        }
        List<Map<String, Object>> venueList = new ArrayList<>();
        for (Venue venue : venues) {
            Map<String, Object> venueInfo = new HashMap<>();
            venueInfo.put("id", venue.getId());
            venueInfo.put("name", venue.getName());
            venueInfo.put("type", venue.getType());
            venueInfo.put("capacity", venue.getCapacity());
            venueInfo.put("price", venue.getPrice());
            venueInfo.put("status", venue.getStatus());
            venueInfo.put("location", venue.getLocation());
            venueInfo.put("description", venue.getDescription());
            venueInfo.put("image", venue.getImage());
            List<String> availableHours = calculateAvailableHours(venue.getId(), query.getDate());
            venueInfo.put("availableHours", availableHours);
            double utilizationRate = calculateUtilizationRate(venue.getId());
            venueInfo.put("utilizationRate", utilizationRate);
            venueList.add(venueInfo);
        }
        Collections.sort(venueList, (a, b) -> {
            Integer statusA = (Integer) a.get("status");
            Integer statusB = (Integer) b.get("status");
            if (!statusA.equals(statusB)) {
                return statusB.compareTo(statusA);
            }
            Double rateA = (Double) a.get("utilizationRate");
            Double rateB = (Double) b.get("utilizationRate");
            return rateA.compareTo(rateB);
        });
        result.put("success", true);
        result.put("venueList", venueList);
        result.put("total", venues.size());
        return result;
    }
    public Map<String, Object> manageUser(UserManageRequest request) {
        Map<String, Object> result = new HashMap<>();
        if (request.getAction() == null) {
            result.put("success", false);
            result.put("message", "操作类型不能为空");
            return result;
        }
        User user = userMapper.selectById(request.getUserId());
        if (user == null) {
            result.put("success", false);
            result.put("message", "用户不存在");
            return result;
        }
        switch (request.getAction()) {
            case "disable":
                user.setStatus(0);
                userMapper.updateById(user);
                List<Booking> activeBookings = bookingMapper.findActiveBookingsByUserId(request.getUserId());
                for (Booking booking : activeBookings) {
                    booking.setStatus(3);
                    bookingMapper.updateById(booking);
                    Venue venue = venueMapper.selectById(booking.getVenueId());
                    venue.setBookingCount(venue.getBookingCount() - 1);
                    venueMapper.updateById(venue);
                }
                result.put("message", "用户已禁用,相关预约已取消");
                break;
            case "enable":
                user.setStatus(1);
                userMapper.updateById(user);
                result.put("message", "用户已启用");
                break;
            case "resetCredits":
                user.setCredits(request.getCredits() != null ? request.getCredits() : 100);
                userMapper.updateById(user);
                result.put("message", "用户积分已重置");
                break;
            case "delete":
                List<Booking> userBookings = bookingMapper.findBookingsByUserId(request.getUserId());
                for (Booking booking : userBookings) {
                    if (booking.getStatus() == 1) {
                        booking.setStatus(3);
                        bookingMapper.updateById(booking);
                    }
                }
                userMapper.deleteById(request.getUserId());
                result.put("message", "用户已删除");
                break;
            default:
                result.put("success", false);
                result.put("message", "不支持的操作类型");
                return result;
        }
        result.put("success", true);
        return result;
    }
}

体育馆预约系统文档展示

在这里插入图片描述

💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目