基于javaweb+mysql的ssm+maven电影院购票选座管理系统(java+ssm+mysql+jsp)

基于javaweb+mysql的ssm+maven电影院购票选座管理系统(java+ssm+mysql+jsp)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SSM+Maven电影院购票选座管理系统(java+ssm+mysql+jsp)

启动前先修改图片的上传路径:

com.demo.constant.RuntimeConstant#BASE_UPLOAD_PHOTO_PATH

后台:

http://localhost:8080/admin/user/login

admin 123456

前台:

http://localhost:8080/home/user/login

user1 123456

user2 123456

项目描述:这是一个基于SSM框架开发的电影院选座购票系统。首先,这个项目页面简洁清爽,易于理解和学习。其次,这项目功能丰富,具有一个电影院选座购票系统该有的所有功能。

项目功能:此项目分为两个角色:普通用户和管理员。普通用户有登录注册、浏览和筛选电影信息、评论、评分电影信息、选座购票、查看个人信息、查看个人订单信息等等功能。管理员有登录、管理所有用户信息、管理所有电影信息、管理所有评论信息、管理所有订单信息、管理所有角色信息、管理所有电影院信息、管理所有场次信息等等功能。

应用技术:Jsp + SSM + MySQL + LayUI + Bootstrap

运行环境:Eclipse/IntelliJ IDEA + MySQL5.7(项目压缩包中自带) + Tomcat8.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3

    @RequestMapping(value="/delete",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(String id){
        return commentService.delete(id);
    }

}

/**
 */
@Controller("AdminSystemController")
@RequestMapping("/admin/system")
public class SystemController {

    @Resource
    private IRoleService roleService;

    @Resource
    private IUserService userService;

    @Resource
    private IMovieService movieService;

    @Resource
    private ISessionService sessionService;

    @Resource
    private IOrderService orderService;
        if(orderMapper.updateByPrimaryKeySelective(order) == 0){
            return ResponseVo.errorByMsg(CodeMsg.ORDER_SAVE_ERROR);
        }
        return ResponseVo.success(true);
    }

    /**
     * 删除订单信息
     * @param id
     * @return
     */
    @Override
    public ResponseVo<Boolean> delete(String id) {
        if(CommonUtil.isEmpty(id)){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        // 删除订单详情数据
        OrderItemExample orderItemExample = new OrderItemExample();
        orderItemExample.createCriteria().andOrderIdEqualTo(id);
        if(orderItemMapper.deleteByExample(orderItemExample) == 0){
            throw new RuntimeException("订单信息删除失败,请联系管理员!");
        }
        // 删除订单数据
        if(orderMapper.deleteByPrimaryKey(id) == 0){
            throw new RuntimeException("订单信息删除失败,请联系管理员!");
        }
        // 重新计算已定座位数
        sessionService.sumOrderSeat();
        return ResponseVo.success(true);
    }

    /**
     * 获取订单的总数
     * @return
     */
    @Override
    public ResponseVo<Integer> getTotal() {
        return ResponseVo.success(orderMapper.countByExample(new OrderExample()));
    }
}

    }

    /**
     * 封装分页数据
     * @return
     */
    @RequestMapping(value="/page",method = RequestMethod.POST)
    @ResponseBody
    public Page page(Page page, String name){
        return sessionService.getPage(page, name).getData();
    }

    /**
     * 保存场次信息
     * @param session
     * @return
     */
    @RequestMapping(value="/save",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> save(Session session){
        return sessionService.save(session);
    }

    /**
     * 删除场次信息
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(String id){
        return sessionService.delete(id);
    }
}

/**
    @ResponseBody
    public Page page(Page page, String name){
        return movieService.getPage(page, name).getData();
    }

    /**
     * 保存电影信息
     * @param movie
     * @return
     */
    @RequestMapping(value="/save",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> save(Movie movie){
        return movieService.save(movie);
    }

    /**
     * 删除电影信息
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(String id){
        return movieService.delete(id);
    }

}

            HttpServletRequest request,
            HttpServletResponse response){
        CaptchaUtil captchaUtil = new CaptchaUtil(vcodeLength,fontSize,width,height);
        String generatorVCode = captchaUtil.generatorVCode(); //验证码的值
        //将生成的验证码放入session,以供放后面程序的验证使用
        request.getSession().setAttribute(method, generatorVCode);
        log.info("验证码成功生成,method=" + method + ",value=" + generatorVCode);
        try {
            ImageIO.write(captchaUtil.generatorRotateVCodeImage(generatorVCode, true), "gif", response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

/**
 */
@Controller("AdminCinemaController")
@RequestMapping("/admin/cinema")
public class CinemaController {

    @Resource
    private ICinemaService cinemaService;

    /**
     * 电影院列表页面
     * @param model
     * @return
     */
    @Override
    public ResponseVo<Integer> getTotal() {
        return ResponseVo.success(orderMapper.countByExample(new OrderExample()));
    }
}

/**
 */
@Controller("FileController")
@RequestMapping("/common/file")
public class FileController {

    private Logger logger = LoggerFactory.getLogger(FileController.class);

    @Autowired
    private ResourceLoader resourceLoader;

    /**
     * 上传图片统一处理
     * @param photo
        }
        BigDecimal totalPrice = new BigDecimal("0.00");
        String orderId = UuidUtil.getShortUuid();
        order.setTradeNo(String.valueOf(new SnowFlake(2,3).nextId()));
        order.setId(orderId);
        order.setState(OrderStateEnum.NO_PAY.getCode());
        User user = (User) request.getSession().getAttribute(RuntimeConstant.HOME_USER);
        order.setUserId(user.getId());
        order.setCinemaName(cinema.getName());
        order.setMovieName(movie.getName());
        order.setMoviePhoto(movie.getPhoto());
        order.setSessionHall(session.getHall());
        order.setSessionTime(session.getTime());
        order.setCreateTime(new Date());
        totalPrice = session.getPrice().multiply(new BigDecimal(orderItemList.size()));
        order.setTotalPrice(totalPrice);
        for(OrderItem orderItem : orderItemList){
            orderItem.setOrderId(orderId);
            orderItem.setPrice(session.getPrice());
            orderItem.setId(UuidUtil.getShortUuid());
            orderItem.setSessionId(session.getId());
            if(orderItemMapper.insertSelective(orderItem) == 0){
                throw new RuntimeException("生成订单失败,请稍后重试!");
            }
        }
        if(orderMapper.insertSelective(order) == 0){
            throw new RuntimeException("生成订单失败,请稍后重试!");
        }
        // 增加已预订座位数
        session.setOrderSeat(session.getOrderSeat() + orderItemList.size());
        if(sessionMapper.updateByPrimaryKeySelective(session) == 0){
            throw new RuntimeException("生成订单失败,请稍后重试!");
        }
        return ResponseVo.successByMsg(order ,"确认选座成功!");
    }

    /**
     * 根据用户id获取订单数据
     * @param userId
     * @return
            return ResponseVo.errorByMsg(CodeMsg.REPASSWORD_EMPTY);
        }
        if(CommonUtil.isEmpty(user.getPhone()) || user.getPhone().length() != 11){
            return ResponseVo.errorByMsg(CodeMsg.USER_PHONE_ERROR);
        }
        if(!user.getPassword().equals(user.getRePassword())){
            return ResponseVo.errorByMsg(CodeMsg.REPASSWORD_ERROR);
        }
        // 验证验证码输入是否正确
        String correctCaptcha = (String) request.getSession().getAttribute("home_register");
        if(CommonUtil.isEmpty(correctCaptcha)){
            return ResponseVo.errorByMsg(CodeMsg.CAPTCHA_EXPIRED);
        }
        if(!(correctCaptcha.toLowerCase()).equals(user.getCaptcha().toLowerCase())){
            return ResponseVo.errorByMsg(CodeMsg.CAPTCHA_ERROR);
        }
        // 判断用户昵称是否重复
        if(isUsernameExist(user, "")){
            return ResponseVo.errorByMsg(CodeMsg.USERNAME_EXIST);
        }
        user.setId(UuidUtil.getShortUuid());
        user.setLoginTime(new Date());
        user.setRoleId(RoleEnum.USER.getCode());
        if(userMapper.insertSelective(user) == 0){
            return ResponseVo.errorByMsg(CodeMsg.USER_REGISTER_ERROR);
        }
        return ResponseVo.successByMsg(true, "注册成功,快去登录体验吧!");
    }

    /**
     * 用户修改个人信息操作处理
     * @param user
     * @return
     */
    @Override
    public ResponseVo<Boolean> saveUserInfo(User user, HttpServletRequest request) {
        if(user == null){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        if(userMapper.updateByPrimaryKeySelective(user) == 0){
            return ResponseVo.errorByMsg(CodeMsg.SAVE_USER_INFO_ERROR);
        }
        User newUser = userMapper.selectByPrimaryKey(user.getId());
        request.getSession().setAttribute(RuntimeConstant.HOME_USER, newUser);
        return ResponseVo.successByMsg(true, "保存用户个人信息成功!");
    }

    /**
     * 判断用户昵称是否重复
     * @param user
     * @param id
     * @return
     */
        }
        // 保存订单信息操作
        if(orderMapper.updateByPrimaryKeySelective(order) == 0){
            return ResponseVo.errorByMsg(CodeMsg.ORDER_SAVE_ERROR);
        }
        return ResponseVo.success(true);
    }

    /**
     * 删除订单信息
     * @param id
     * @return
     */
    @Override
    public ResponseVo<Boolean> delete(String id) {
        if(CommonUtil.isEmpty(id)){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        // 删除订单详情数据
        OrderItemExample orderItemExample = new OrderItemExample();
        orderItemExample.createCriteria().andOrderIdEqualTo(id);
        if(orderItemMapper.deleteByExample(orderItemExample) == 0){
            throw new RuntimeException("订单信息删除失败,请联系管理员!");
        }
        // 删除订单数据
        if(orderMapper.deleteByPrimaryKey(id) == 0){
            throw new RuntimeException("订单信息删除失败,请联系管理员!");
        }
        // 重新计算已定座位数
        sessionService.sumOrderSeat();
        return ResponseVo.success(true);
    }

    /**
     * 获取订单的总数
     * @return
     */
    @Override
    public ResponseVo<Integer> getTotal() {
        return ResponseVo.success(orderMapper.countByExample(new OrderExample()));
    }
}


/**
 */
@Controller("FileController")
@RequestMapping("/common/file")
public class FileController {

    private Logger logger = LoggerFactory.getLogger(FileController.class);

    @Autowired
    private ResourceLoader resourceLoader;

    /**
     * 上传图片统一处理
     * @param photo
     * @param request
     * @return
     */
    @RequestMapping(value="/upload_photo",method= RequestMethod.POST)
    @ResponseBody
    public ResponseVo<String> uploadPhoto(MultipartFile photo, HttpServletRequest request){
        if(photo == null){
            return ResponseVo.errorByMsg(CodeMsg.PHOTO_EMPTY);
        }
        //检查上传文件大小 不能超过1MB
        if(photo.getSize() > 1 * 1024* 1024) {
            return ResponseVo.errorByMsg(CodeMsg.PHOTO_SURPASS_MAX_SIZE);
        }
        //获取文件后缀

/**
 */
@Controller("AdminCinemaController")
@RequestMapping("/admin/cinema")
public class CinemaController {

    @Resource
    private ICinemaService cinemaService;

    /**
     * 电影院列表页面
     * @param model
     * @return
     */
    @RequestMapping(value="/index",method = RequestMethod.GET)
    public ModelAndView index(ModelAndView model){
        model.addObject("firstMenu", "cinema");
        model.addObject("secondMenu", "cinema-index");
        model.addObject("Page", cinemaService.getPage(new Page(), "").getData());
        model.setViewName("admin/cinema/index");
        return model;
    }

    /**
     * 电影院列表数据获取
     * @param name
     * @param page
     * @return
     */
    @RequestMapping(value="/list",method = RequestMethod.POST)
    @ResponseBody
    public List<Cinema> list(String name, Page page){
        return cinemaService.list(name, page).getData();
    }

    /**
     * 封装分页数据
     * @return
    @ResponseBody
    public List<User> list(String name, Page page){
        return userService.list(name, page).getData();
    }

    /**
     * 封装分页数据
     * @return
     */
    @RequestMapping(value="/page",method = RequestMethod.POST)
    @ResponseBody
    public Page page(Page page, String name){
        return userService.getPage(page, name).getData();
    }

    /**
     * 保存用户信息
     * @param user
     * @return
     */
    @RequestMapping(value="/save",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> save(User user){
        return userService.save(user);
    }

    /**
     * 删除用户信息
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(String id){
        return userService.delete(id);
    }

    /**
     * 用户登录操作处理
     * @param user
     * @param request
        page.setTotalCount(userMapper.countByExample(userExample));
        return ResponseVo.success(page);
    }

    /**
     * 获取用户列表数据
     * @param name
     * @param page
     * @return
     */
    @Override
    public ResponseVo<List<User>> list(String name, Page page) {
        UserExample userExample = new UserExample();
        if(!CommonUtil.isEmpty(name)){
            // 进行了搜索
            userExample.createCriteria().andUsernameLike('%' + name + '%');
        }
        PageHelper.startPage(page.getPage(), page.getRows());
        List<User> userList = userMapper.selectByExample(userExample);
        for(User u : userList){
            Role role = roleMapper.selectByPrimaryKey(u.getRoleId());
            u.setRole(role);
        }
        return ResponseVo.success(userList);
    }

    /**
     * 保存用户信息
     * @param user
     * @return
     */
    @Override
    public ResponseVo<Boolean> save(User user) {
        if(user == null){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        // 进行统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(user);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseVo.errorByMsg(validate);
        for(Order order : orderList){
            User user = userMapper.selectByPrimaryKey(order.getUserId());
            order.setUser(user);
        }
        return ResponseVo.success(orderList);
    }

    /**
     * 封装分页数据
     * @param page
     * @param name
     * @return
     */
    @Override
    public ResponseVo<Page> getPage(Page page, String name) {
        OrderExample orderExample = new OrderExample();
        if(!CommonUtil.isEmpty(name)){
            orderExample.createCriteria().andTradeNoEqualTo(name);
        }
        page.setTotalCount(orderMapper.countByExample(orderExample));
        return ResponseVo.success(page);
    }

    /**
     * 根据订单id获取订单详情的
     * @param id
     * @return
     */
    @Override
    public List<OrderItem> getOrderItemList(String id) {
        if(CommonUtil.isEmpty(id)){
            return new ArrayList<>();
        }
        OrderItemExample orderItemExample = new OrderItemExample();
        orderItemExample.createCriteria().andOrderIdEqualTo(id);
        return orderItemMapper.selectByExample(orderItemExample);
    }

    /**
     * 保存订单信息
     * @param order

/**
 */
@Service
@Transactional
public class OrderServiceImpl implements IOrderService {

    @Resource
    private OrderMapper orderMapper;

    /**
     * 删除评论信息
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method = RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(String id){
        return commentService.delete(id);
    }

}

/**
 */
@Controller("AdminSystemController")
@RequestMapping("/admin/system")
public class SystemController {

    @Resource
    private IRoleService roleService;

    @Resource
    private IUserService userService;

        return cinemaService.delete(id);
    }

}

/**
 */
@Controller("AdminMovieController")
@RequestMapping("/admin/movie")
public class MovieController {

    @Resource
    private IMovieService movieService;

    /**
     * 电影列表页面
     * @param model
     * @return
     */
    @RequestMapping(value="/index",method = RequestMethod.GET)
    public ModelAndView index(ModelAndView model){
        model.addObject("firstMenu", "movie");
        model.addObject("secondMenu", "movie-index");
        model.addObject("Page", movieService.getPage(new Page(), "").getData());
        model.setViewName("admin/movie/index");
        return model;
    }

    /**
     * 电影列表数据获取
     * @param name
     */
    public Boolean isUsernameExist(User user, String id) {
        UserExample userExample = new UserExample();
        userExample.createCriteria().andUsernameEqualTo(user.getUsername());
        List<User> selectedUserList = userMapper.selectByExample(userExample);
        if(selectedUserList != null && selectedUserList.size() > 0) {
            if(selectedUserList.size() > 1){
                return true; //出现重名
            }
            if(!selectedUserList.get(0).getId().equals(id)) {
                return true; //出现重名
            }
        }
        return false;//没有重名
    }
}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值