计算机毕业设计推荐:基于spring boot的海洋馆预约管理系统、毕业设计选题、计算机毕设、选题推荐、毕设指导、项目定制、源码、高质量项目

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值