当前位置: 首页 > article >正文

Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)

目录

一、前言

二、技术介绍

三、系统实现

四、核心代码

五、源码获取


全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末

一、前言

在数字化时代,人们对娱乐生活的需求日益多样化,而电影作为重要的文化消费方式,其购票方式的便捷性显得尤为重要。传统的电影院购票方式往往需要消费者前往影院现场排队,不仅耗时费力,还可能面临座位不足的风险。为了改善这一现状,我们决定设计和实现一个基于微信小程序的电影院买票选座系统。

该系统借助微信小程序的广泛用户基础和便捷操作特性,让消费者可以随时随地通过手机完成电影票的购买和座位选择。用户只需打开小程序,即可查看最新的电影排片信息、票价以及座位分布图,根据自己的喜好和需求选择心仪的座位并完成支付。

我们相信,这一系统的推出将极大地提升消费者的购票体验,同时也为电影院提供更加高效、智能的票务管理方式,助力电影产业的繁荣发展。

二、技术介绍

语言:Java
使用框架:Spring Boot
前端技术:JS、Vue 、css3
开发工具:IDEA/Eclipse
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
前端环境:Node.Js 12\14\16

三、系统实现

四、核心代码

 
package com.controller;
 
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

五、源码获取

 感谢大家点赞、收藏、关注、评论啦 、获取联系方式在个人简介绿泡泡


http://www.kler.cn/a/407362.html

相关文章:

  • 准备阶段 Profiler性能分析工具的使用(一)
  • 订单日记为“惠采科技”提供全方位的进销存管理支持
  • LeetCode题解:28.找出字符串中第一个匹配项的下标【Python题解超详细,滑动窗口法、内置 find 函数、KMP算法】,知识拓展, KMP算法
  • leetcode 919.完全二叉树插入器
  • Python 快速入门(上篇)❖ Python基础知识
  • Redis ⽀持哪⼏种数据类型?适⽤场景,底层结构
  • 网口输出的加速度传感器
  • 基于Java Springboot高校心理健康评测与服务系统
  • 【Linux】进程的基本概念
  • C++异常: cv::Exception 解决
  • 归一化/标准化对神经网络的训练是否有影响?
  • next build报错bash: next: command not found
  • 部署自动清理任务解决ORA-00257: archiver error. Connect internal only, until freed
  • mongodb集群搭建
  • 浅谈Go语言Optional模式和Builder模式
  • 11.19.2024刷华为OD
  • 利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器
  • Playwright(Java版) - 8: Playwright 元素交互的高级应用
  • 原生JS来完成一个小游戏——点击抽奖
  • iptables网络安全服务详细使用
  • Node相关教程
  • Vue3与Vue2 对比
  • Spring学习笔记_46——@InitBinder
  • 使用同一个链接,如何实现PC打开是web应用,手机打开是一个H5应用
  • Qwen大模型Lora微调-Windows
  • 跟《经济学人》学英文:2024年11月23日这期 Why British MPs should vote for assisted dying