基于javaweb+mysql的+JPA电影售票网站购票平台管理系统(前台、后台)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台:查看电影、影院、评论、购票下单等…………
后台: 管理电影、影院、排版、管理员、前端用户、订单等…………
前台
后台
技术框架
JavaWeb SpringBoot JPA Freemarker Bootstrap JavaScript SpringMVC MySQL
*/
private int height = fontsize+12;
/**
* 干扰线条数
* 默认3条
*/
private int disturbline = 3;
public CpachaUtil(){}
/**
* 指定验证码长度
* @param vcodeLen 验证码长度
*/
public CpachaUtil(int vcodeLen) {
this.vcodeLen = vcodeLen;
this.width = (fontsize+1)*vcodeLen+10;
}
public CpachaUtil(int vcodeLen,int fontSize) {
this.vcodeLen = vcodeLen;
}
/**
* 修改用户个人信息
* @return
*/
@RequestMapping(value="/update_userinfo",method=RequestMethod.GET)
public String updateUserInfo(){
return "admin/system/update_userinfo";
}
/**
* 修改个人信息保存
* @param user
* @return
*/
@RequestMapping(value="/update_userinfo",method=RequestMethod.POST)
public String updateUserInfo(User user){
User loginedUser = SessionUtil.getLoginedUser();
loginedUser.setEmail(user.getEmail());
loginedUser.setMobile(user.getMobile());
}
public Integer getRateCount() {
return rateCount;
}
public void setRateCount(Integer rateCount) {
this.rateCount = rateCount;
}
@Override
public String toString() {
return "Movie [name=" + name + ", abs=" + abs + ", type=" + type
+ ", area=" + area + ", directedBy=" + directedBy + ", actor="
+ actor + ", language=" + language + ", time=" + time
+ ", showTime=" + showTime + ", info=" + info + ", picture="
+ picture + ", video=" + video + ", totalMoney=" + totalMoney
+ ", rate=" + rate + "]";
}
* @return 返回一个随机颜色
*/
private Color getRandomColor(){
Random ran = new Random();
return new Color(ran.nextInt(220), ran.nextInt(220), ran.nextInt(220));
}
/**
* @return 角度
*/
private double getTheta(){
return ((int) (Math.random()*1000) % 2 == 0 ? -1 : 1)*Math.random();
}
/**
* @return 验证码字符个数
*/
public int getVcodeLen() {
return vcodeLen;
}
/**
* 设置验证码字符个数
* @param vcodeLen
*/
public void setVcodeLen(int vcodeLen) {
this.width = (fontsize+3)*vcodeLen+10;
public Result<Boolean> login(@RequestParam(name="mobile",required=true)String mobile,
@RequestParam(name="password")String password,
@RequestParam(name="checkCode")String checkCode,
@RequestParam(name="tag")Integer tag
){
Account account = null;
if(tag == 1){
//表示是密码登录
if(StringUtils.isEmpty(password)){
return Result.error(CodeMsg.ADMIN_PASSWORD_EMPTY);
}
account = accountService.find(mobile);
if(account == null){
return Result.error(CodeMsg.HOME_ACCOUNT_REGISTER_MOBILE_NO_EXIST);
}
//表示一切符合,开始检查密码是否正确
if(!password.equals(account.getPassword())){
return Result.error(CodeMsg.SESSION_EXPIRED);
}
//表示session未失效,进一步判断用户填写的验证码是否正确
if(!cpacha.equalsIgnoreCase(attribute.toString())){
return Result.error(CodeMsg.CPACHA_ERROR);
}
//表示验证码正确,开始查询数据库,检验密码是否正确
User findByUsername = userService.findByUsername(user.getUsername());
//判断是否为空
if(findByUsername == null){
return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
}
//表示用户存在,进一步对比密码是否正确
if(!findByUsername.getPassword().equals(user.getPassword())){
return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
}
//表示密码正确,接下来判断用户状态是否可用
if(findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE){
import com.demo.service.common.MovieService;
import com.demo.service.common.NewsService;
/**
* 前台首页
* @author Administrator
*
*/
@RequestMapping("/home/index")
@Controller
public class IndexController {
@Autowired
private AreaService areaService;
@Autowired
private MovieService movieService;
@Autowired
if(account != null){
return "redirect:/home/account/user-center";
}
return "home/index/register";
}
/**
* 退出登录
* @param model
* @return
*/
@RequestMapping(value="/logout",method=RequestMethod.GET)
public String logout(Model model){
SessionUtil.set(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY, null);
return "redirect:index";
}
/**
* @return
*/
@RequestMapping(value="/user-comment",method=RequestMethod.GET)
public String userComment(Model model,@RequestParam(name="type",defaultValue="0")Integer type){
Account account = (Account)SessionUtil.get(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY);
if(type != 0){
model.addAttribute("cinemaCommentList", cinemaCommentService.findByAccount(account.getId()));
}else{
model.addAttribute("movieCommentList", movieCommentService.findByAccount(account.getId()));
}
model.addAttribute("type", type);
return "home/account/user-comment";
}
/**
//释放此图形的上下文以及它使用的所有系统资源
g.dispose();
return vcodeImage;
}
/**
* 获得旋转字体的验证码图片
* @param vcode
* @param drawline 是否画干扰线
* @return
*/
public BufferedImage generatorRotateVCodeImage(String vcode, boolean drawline){
//创建验证码图片
BufferedImage rotateVcodeImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = rotateVcodeImage.createGraphics();
//填充背景色
g2d.setColor(new Color(246, 240, 250));
g2d.fillRect(0, 0, width, height);
if(drawline){
import com.demo.entity.admin.OperaterLog;
import com.demo.entity.admin.OrderAuth;
import com.demo.entity.admin.Role;
import com.demo.entity.admin.User;
import com.demo.service.admin.OperaterLogService;
import com.demo.service.admin.OrderAuthService;
import com.demo.service.admin.UserService;
import com.demo.service.common.AccountService;
import com.demo.service.common.CinemaHallSessionService;
import com.demo.service.common.CinemaService;
import com.demo.service.common.MovieService;
import com.demo.service.common.OrderService;
import com.demo.service.common.PayLogService;
/**
* 系统控制器
* @author Administrator
*
*/
@RequestMapping("/system")
@Controller
public class SystemController {
return RuntimeConstant.RUN_ERROR_VIEW;
}
//订单状态都合适
model.addAttribute("leftTime", orderTimeout - passTime);
model.addAttribute("order", order);
model.addAttribute("orderItemList", orderItemService.find(order.getId()));
return "home/order/pay_order";
}
/**
* 订单支付
* @param sn
* @return
*/
@RequestMapping(value="order_pay",method=RequestMethod.POST)
@ResponseBody
/**
* 登录页面
* @param model
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(Model model){
return "admin/system/login";
}
/**
* 用户登录提交表单处理方法
* @param request
* @param user
* @param cpacha
* @return
*/
*/
@RequestMapping(value="/update-head-pic",method=RequestMethod.GET)
public String updateHeadPic(Model model){
return "home/account/update-head-pic";
}
/**
* 账户余额
* @param model
* @return
*/
@RequestMapping(value="/user-account",method=RequestMethod.GET)
public String userAccount(Model model){
Account account = (Account)SessionUtil.get(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY);
account = accountService.findById(account.getId());
* 删除订单
* @param order
* @return
*/
@org.springframework.transaction.annotation.Transactional
public boolean delete(Order order) {
List<OrderItem> orderItems = orderItemService.find(order.getId());
orderItemService.deleteAll(orderItems);
delete(order.getId());
return true;
}
/**
}
if(tag == 2){
//从session中获取短信验证码
String smsCode = (String)SessionUtil.get("home_login_sms_code");
if(smsCode == null){
return Result.error(CodeMsg.SESSION_EXPIRED);
}
if(!smsCode.equalsIgnoreCase(checkCode)){
return Result.error(CodeMsg.SMS_CODE_ERROR);
}
//短信验证码正确
SessionUtil.set("home_login_sms_code", null);
//检查手机号是否已经注册
account = accountService.find(mobile);
if(account == null){
return Result.error(CodeMsg.HOME_ACCOUNT_REGISTER_MOBILE_NO_EXIST);
}
}
//检查用户状态是否正常
if(account.getStatus() != Account.account_status_able){
return Result.error(CodeMsg.HOME_ACCOUNT_STATUS_ERROR);
}
SessionUtil.set(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY, account);
return Result.success(true);
}