💖💖作者:计算机编程小咖
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
海洋馆预约管理系统介绍
本系统全称为“基于Spring Boot的海洋馆预约管理系统”,是一套面向海洋馆日常运营场景开发的B/S架构信息化解决方案。系统后端采用Spring Boot框架整合Spring、SpringMVC和Mybatis,前端使用Vue配合ElementUI组件库构建用户界面,数据持久层采用MySQL关系型数据库,开发环境为IDEA。系统首页集中展示海洋馆的票务资讯与场馆动态,用户管理模块负责游客与管理员账号的注册、信息维护及权限分配,门票信息管理支持门票种类、价格、库存及使用规则的动态配置,购票信息管理记录每一笔购票交易明细并关联订单状态,商品分类管理对海洋馆内纪念品、餐饮等周边商品进行类目划分,商品信息管理维护具体商品的图文介绍与上下架状态,订单管理全链路追踪从下单到核销的完整流程。系统管理涵盖轮播图配置、关于我们、系统简介及海洋馆介绍等站点内容维护,在线客服提供访客与运营方的即时沟通渠道,个人中心与修改密码功能保障用户账户安全。系统整体功能设计贴合海洋馆预约的实际业务需求,各模块之间数据流转清晰,操作流程简洁直观,便于后期维护与功能扩展。
海洋馆预约管理系统演示视频
海洋馆预约管理系统演示图片











海洋馆预约管理系统代码展示
@Service
public class TicketOrderService {
@Autowired
private TicketMapper ticketMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public Map<String, Object> createOrder(Long userId, Long ticketId, Integer quantity, String visitorName, String visitorPhone) {
SparkSession spark = SparkSession.builder().appName("OrderDataProcess").master("local[*]").getOrCreate();
User user = userMapper.selectById(userId);
if (user == null) { throw new RuntimeException("用户不存在"); }
Ticket ticket = ticketMapper.selectById(ticketId);
if (ticket == null) { throw new RuntimeException("门票不存在"); }
if (ticket.getStock() < quantity) { throw new RuntimeException("库存不足"); }
Double totalAmount = ticket.getPrice() * quantity;
String orderSn = "ML" + System.currentTimeMillis() + String.format("%04d", new Random().nextInt(9999));
Order order = new Order();
order.setOrderSn(orderSn);
order.setUserId(userId);
order.setTicketId(ticketId);
order.setQuantity(quantity);
order.setTotalAmount(totalAmount);
order.setVisitorName(visitorName);
order.setVisitorPhone(visitorPhone);
order.setStatus(0);
order.setCreateTime(LocalDateTime.now());
orderMapper.insert(order);
ticket.setStock(ticket.getStock() - quantity);
ticketMapper.updateById(ticket);
Dataset<Row> df = spark.createDataFrame(Arrays.asList(order), Order.class);
df.createOrReplaceTempView("order_view");
Dataset<Row> result = spark.sql("SELECT order_sn, total_amount, create_time FROM order_view WHERE total_amount > 0");
result.show();
spark.stop();
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("orderSn", orderSn);
resultMap.put("totalAmount", totalAmount);
resultMap.put("status", "待支付");
return resultMap;
}
public List<Order> getUserOrders(Long userId) {
SparkSession spark = SparkSession.builder().appName("OrderQueryProcess").master("local[*]").getOrCreate();
List<Order> orders = orderMapper.selectByUserId(userId);
if (orders == null || orders.isEmpty()) { return new ArrayList<>(); }
Dataset<Row> df = spark.createDataFrame(orders, Order.class);
df.createOrReplaceTempView("orders");
Dataset<Row> sorted = spark.sql("SELECT * FROM orders ORDER BY create_time DESC");
List<Order> sortedOrders = sorted.collectAsList().stream().map(row -> {
Order o = new Order();
o.setOrderId(row.getAs("orderId"));
o.setOrderSn(row.getAs("orderSn"));
o.setTotalAmount(row.getAs("totalAmount"));
o.setStatus(row.getAs("status"));
return o;
}).collect(Collectors.toList());
spark.stop();
return sortedOrders;
}
public boolean cancelOrder(Long orderId, Long userId) {
SparkSession spark = SparkSession.builder().appName("CancelOrderProcess").master("local[*]").getOrCreate();
Order order = orderMapper.selectById(orderId);
if (order == null) { throw new RuntimeException("订单不存在"); }
if (!order.getUserId().equals(userId)) { throw new RuntimeException("无权操作此订单"); }
if (order.getStatus() != 0) { throw new RuntimeException("当前状态不可取消"); }
order.setStatus(3);
order.setUpdateTime(LocalDateTime.now());
orderMapper.updateById(order);
Ticket ticket = ticketMapper.selectById(order.getTicketId());
if (ticket != null) {
ticket.setStock(ticket.getStock() + order.getQuantity());
ticketMapper.updateById(ticket);
}
Dataset<Row> df = spark.createDataFrame(Arrays.asList(order), Order.class);
df.createOrReplaceTempView("cancel_order");
spark.sql("SELECT order_sn, status FROM cancel_order WHERE status = 3").show();
spark.stop();
return true;
}
public PageInfo<Order> getOrdersByPage(Integer pageNum, Integer pageSize, Integer status) {
SparkSession spark = SparkSession.builder().appName("OrderPageProcess").master("local[*]").getOrCreate();
PageHelper.startPage(pageNum, pageSize);
List<Order> list = orderMapper.selectByStatus(status);
PageInfo<Order> pageInfo = new PageInfo<>(list);
if (list != null && !list.isEmpty()) {
Dataset<Row> df = spark.createDataFrame(list, Order.class);
df.createOrReplaceTempView("page_orders");
Dataset<Row> countDf = spark.sql("SELECT status, COUNT(*) as cnt FROM page_orders GROUP BY status");
countDf.show();
}
spark.stop();
return pageInfo;
}
}
海洋馆预约管理系统文档展示

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

3404

被折叠的 条评论
为什么被折叠?



