【Java毕设】演出购票系统 SpringBoot+Vue框架 计算机毕业设计项目 Idea+Navicat+MySQL安装 附源码+文档+讲解

48 阅读3分钟

一、个人简介

  • 💖💖作者:计算机编程果茶熊
  • 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
  • 💛💛想说的话:感谢大家的关注与支持!
  • 💜💜
  • 网站实战项目
  • 安卓/小程序实战项目
  • 大数据实战项目
  • 计算机毕业设计选题
  • 💕💕文末获取源码联系计算机编程果茶熊

二、系统介绍

  • 开发语言:Java
  • 后端框架:Spring Boot(Spring+SpringMVC+Mybatis)
  • 前端:Vue
  • 数据库:MySQL
  • 系统架构:B/S
  • 开发工具:IDEA

《演出购票系统》是一套基于Spring Boot架构的综合性票务管理平台,采用Java作为核心开发语言,结合Vue前端框架和MySQL数据库构建而成。该系统通过B/S架构设计,为演出行业提供了完整的票务销售解决方案。系统核心功能涵盖用户账户管理、演出分类体系、票务信息维护、订单流程处理等关键业务模块,同时集成了在线论坛交流平台,支持用户互动讨论和信息分享。系统还配备了完善的管理后台,包括论坛分类设置、举报记录处理、系统参数配置等管理功能,确保平台运营的规范性和安全性。通过Spring+SpringMVC+Mybatis的技术组合,系统实现了良好的模块解耦和数据持久化管理,为演出票务业务提供了稳定可靠的技术支撑。

三、视频解说

演出购票系统

四、部分功能展示

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

五、部分代码展示

import org.apache.spark.sql.SparkSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class PerformanceTicketService {
    @Autowired
    private TicketMapper ticketMapper;
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private UserMapper userMapper;
    private SparkSession spark = SparkSession.builder().appName("TicketAnalysis").master("local").getOrCreate();
    @Transactional
    public Result purchaseTicket(Long userId, Long ticketId, Integer quantity) {
        User user = userMapper.selectById(userId);
        if (user == null || user.getStatus() != 1) {
            return Result.fail("用户状态异常,无法购票");
        }
        Ticket ticket = ticketMapper.selectById(ticketId);
        if (ticket == null || ticket.getStatus() != 1) {
            return Result.fail("票务信息不存在或已下架");
        }
        if (ticket.getRemainCount() < quantity) {
            return Result.fail("余票不足,当前剩余:" + ticket.getRemainCount() + "张");
        }
        BigDecimal totalAmount = ticket.getPrice().multiply(new BigDecimal(quantity));
        if (user.getBalance().compareTo(totalAmount) < 0) {
            return Result.fail("账户余额不足,请先充值");
        }
        ticket.setRemainCount(ticket.getRemainCount() - quantity);
        ticket.setSoldCount(ticket.getSoldCount() + quantity);
        ticketMapper.updateById(ticket);
        user.setBalance(user.getBalance().subtract(totalAmount));
        userMapper.updateById(user);
        Order order = new Order();
        order.setUserId(userId);
        order.setTicketId(ticketId);
        order.setQuantity(quantity);
        order.setTotalAmount(totalAmount);
        order.setOrderNo(generateOrderNo());
        order.setStatus(1);
        order.setCreateTime(new Date());
        orderMapper.insert(order);
        return Result.success("购票成功,订单号:" + order.getOrderNo());
    }
    @Transactional
    public Result manageTicketInfo(TicketDto ticketDto) {
        if (ticketDto.getId() == null) {
            Ticket newTicket = new Ticket();
            newTicket.setPerformanceName(ticketDto.getPerformanceName());
            newTicket.setVenue(ticketDto.getVenue());
            newTicket.setPerformanceTime(ticketDto.getPerformanceTime());
            newTicket.setPrice(ticketDto.getPrice());
            newTicket.setTotalCount(ticketDto.getTotalCount());
            newTicket.setRemainCount(ticketDto.getTotalCount());
            newTicket.setSoldCount(0);
            newTicket.setCategoryId(ticketDto.getCategoryId());
            newTicket.setDescription(ticketDto.getDescription());
            newTicket.setStatus(1);
            newTicket.setCreateTime(new Date());
            ticketMapper.insert(newTicket);
            return Result.success("票务信息添加成功");
        } else {
            Ticket existTicket = ticketMapper.selectById(ticketDto.getId());
            if (existTicket == null) {
                return Result.fail("票务信息不存在");
            }
            existTicket.setPerformanceName(ticketDto.getPerformanceName());
            existTicket.setVenue(ticketDto.getVenue());
            existTicket.setPerformanceTime(ticketDto.getPerformanceTime());
            existTicket.setPrice(ticketDto.getPrice());
            if (ticketDto.getTotalCount() > existTicket.getTotalCount()) {
                int addCount = ticketDto.getTotalCount() - existTicket.getTotalCount();
                existTicket.setRemainCount(existTicket.getRemainCount() + addCount);
            }
            existTicket.setTotalCount(ticketDto.getTotalCount());
            existTicket.setCategoryId(ticketDto.getCategoryId());
            existTicket.setDescription(ticketDto.getDescription());
            existTicket.setUpdateTime(new Date());
            ticketMapper.updateById(existTicket);
            return Result.success("票务信息更新成功");
        }
    }
    public Result processOrderManagement(Long orderId, Integer operation) {
        Order order = orderMapper.selectById(orderId);
        if (order == null) {
            return Result.fail("订单不存在");
        }
        User user = userMapper.selectById(order.getUserId());
        Ticket ticket = ticketMapper.selectById(order.getTicketId());
        switch (operation) {
            case 1:
                if (order.getStatus() != 1) {
                    return Result.fail("订单状态异常,无法确认");
                }
                order.setStatus(2);
                order.setConfirmTime(new Date());
                orderMapper.updateById(order);
                return Result.success("订单确认成功");
            case 2:
                if (order.getStatus() != 1 && order.getStatus() != 2) {
                    return Result.fail("订单状态异常,无法退票");
                }
                ticket.setRemainCount(ticket.getRemainCount() + order.getQuantity());
                ticket.setSoldCount(ticket.getSoldCount() - order.getQuantity());
                ticketMapper.updateById(ticket);
                user.setBalance(user.getBalance().add(order.getTotalAmount()));
                userMapper.updateById(user);
                order.setStatus(4);
                order.setRefundTime(new Date());
                orderMapper.updateById(order);
                return Result.success("退票成功,金额已退回账户");
            case 3:
                if (order.getStatus() != 2) {
                    return Result.fail("订单状态异常,无法完成");
                }
                order.setStatus(3);
                order.setCompleteTime(new Date());
                orderMapper.updateById(order);
                return Result.success("订单完成");
            default:
                return Result.fail("操作类型无效");
        }
    }
    private String generateOrderNo() {
        return "ORDER" + System.currentTimeMillis() + (int)(Math.random() * 1000);
    }
}

六、部分文档展示

在这里插入图片描述

七、END

💕💕文末获取源码联系计算机编程果茶熊