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