基于javaweb+mysql的springboot在线电影售票系统设计和实现(java+springboot+jpa+mysql+freemarker+maven)

本文介绍基于JavaWeb和MySQL的SpringBoot在线电影售票系统。运行环境需Java≥8、MySQL≥5.7,开发工具多样。系统分前台和后台,前台有电影浏览、选座支付等功能,后台可进行地域、电影等管理,还支持多种统计。项目运用Springboot等多项技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于javaweb+mysql的springboot在线电影售票系统设计和实现(java+springboot+jpa+mysql+freemarker+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SpringBoot在线电影售票系统设计和实现(java+springboot+jpa+mysql+freemarker+maven)

一、项目简述

前台:

1、正在上映的电影浏览查看。

2、影院信息浏览查看。

3、新闻咨询信息浏览查看。

4、地域信息查看切换。

5、用户注册登录。

6、电影排期查看。

7、在线选座生成订单并支付。

8、电影、影院的评价及评价浏览。

9、用户个人中心。

10、用户中心订单管理。

11、用户中心余额充值。

12、用户中心电影评价、影院评价管理。

后台:

1、地域管理。

2、电影管理、电影评价管理。

3、影院管理、影院评价管理。

4、影厅管理。

5、拍片场次管理。

6、新闻咨询管理。

7、用户管理。

8、订单管理。

9、支付管理。

10、统计类:包括用户、电影、影院、票房等等的统计。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: Springboot+ SpringMVC + Spring Data JPA + freemarker + JavaScript + JQuery + Ajax + maven等等

	@Autowired
	private MovieService movieService;
	@Autowired
	private MovieCommentService movieCommentService;
	
	/**
	 * 电影列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model, Movie movie, PageBean<Movie> pageBean){
		model.addAttribute("pageBean", movieService.findPage(movie, pageBean));
		model.addAttribute("name",movie.getName());
		return "admin/movie/list";
	}
	
	/**
	 * 电影添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("movieAreaList", MovieArea.values());
		model.addAttribute("movieTypeList", MovieType.values());
		model.addAttribute("movieLangList", MovieLang.values());
		return "admin/movie/add";
	}
	
	/**
	 * 电影编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		model.addAttribute("movie", movieService.findById(id));
		model.addAttribute("movieAreaList", MovieArea.values());
		model.addAttribute("movieTypeList", MovieType.values());
		model.addAttribute("movieLangList", MovieLang.values());
		return "admin/movie/edit";
			return Result.error(CodeMsg.HOME_ORDER_BALANCE_OUT);
		}
		//订单状态都合适
		//1、订单状态修改成已支付;2、扣除用户余额
		if(!orderService.paySuccess(order)){
			return Result.error(CodeMsg.HOME_ORDER_PAY_ERROR);
		}
		return Result.success(true);
	}
}

/**
 * 公用的上传类
 *
 */
@RequestMapping("/upload")
@Controller
public class UploadController {

    @Value("${movie.upload.photo.sufix}")
    private String uploadPhotoSufix;

    @Value("${movie.upload.photo.maxsize}")
    private long uploadPhotoMaxSize;

    private String uploadPhotoPath = System.getProperty("user.dir") + "/src/main/resources/upload/";
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        log.info("视频上传成功,保存位置:" + uploadVideoPath + filename);
        return Result.success(filename);
    }
}

/**
 * 前台首页
 *
 */
@RequestMapping("/home/index")
@Controller
public class IndexController {

	@Autowired
	private AreaService areaService;
	@Autowired
	private MovieService movieService;
	@Autowired
	private CinemaService cinemaService;
	@Autowired
	private NewsService newsService;
	@Autowired
	private AccountService accountService;
	
	/**
	
	/**
	 * 座位保存
	 * @param seats
	 * @return
	 */
	@RequestMapping(value="/edit_seat",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> editSeat(@RequestParam(name="seats",required=true)String seats){
		List<CinemaHallSeat> seatList = JSONObject.parseArray(seats, CinemaHallSeat.class);
		cinemaHallSeatService.saveAll(seatList);
		return Result.success(true);
	}
	
	/**
	 * 根据影院id查找影厅
	 * @param cid
	 * @return
	 */
	@RequestMapping(value="/get_cinema_halls",method=RequestMethod.POST)
	@ResponseBody
	public Result<List<CinemaHall>> getCinemaHalls(@RequestParam(name="cid",required=true)Long cid){
		return Result.success(cinemaHallService.findAll(cid));
	}
}

/**
 * 后台用户管理控制器
 *
 */
@RequestMapping("/admin/user")
@Controller
public class UserController {
		Account account = (Account)SessionUtil.get(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY);
		model.addAttribute("orderList", orderService.findAll(account.getId()));
		return "home/account/user-order-list";
	}
	
	
	/**
	 * 用户评价列表
	 * @param model
	 * @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";
	}
	
	/**
	 * 获取订单子项
	 * @param sn
	 * @return
	 */
	@RequestMapping(value="/get_order_item",method=RequestMethod.POST)
	@ResponseBody
	public Result<List<OrderItem>> getOrderItem(@RequestParam(name="order_sn",required=true)String sn){
		Order order = orderService.find(sn);
		if(order == null){
			return Result.error(CodeMsg.HOME_ORDER_NO_EXIST);
		}
		return Result.success(orderItemService.find(order.getId()));
	}
	
	/**
	 * 删除订单
		return string;
	}
	
	/**
	 * 获取指定格式时间再指定分钟后的时间字符串
	 * @param date
	 * @param formatter
	 * @param minites
	 * @return
	 */
	public static String getFormatterDate(String date,String formatter,int minites){
		SimpleDateFormat sdf = new SimpleDateFormat(formatter);
		String ret = null;
		try {
			Date parse = sdf.parse(date);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(parse);
			calendar.add(Calendar.MINUTE, minites);
			ret = sdf.format(calendar.getTime());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ret;
	}
	
	/**
	 * 获取指定分钟前的时间
	 * @param date
	 * @param afterMinites
	 * @return
	 */
	public static Date getBeforeDate(Date date,int beforeMinites){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MINUTE, -beforeMinites);
		return calendar.getTime();
	}
	
	/**
	 * 获取制定天数前的日期
	public Result<Boolean> login(HttpServletRequest request, User user, String cpacha){
		if(user == null){
			return Result.error(CodeMsg.DATA_ERROR);
		}
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(user);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//表示实体信息合法,开始验证验证码是否为空
		if(StringUtils.isEmpty(cpacha)){
			return Result.error(CodeMsg.CPACHA_EMPTY);
		}
		//说明验证码不为空,从session里获取验证码
		Object attribute = request.getSession().getAttribute("admin_login");
		if(attribute == null){
			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){
			return Result.error(CodeMsg.ADMIN_USER_UNABLE);
		}
		//检查用户所属角色状态是否可用
		if(findByUsername.getRole() == null || findByUsername.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){
			return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);
		}
		//检查用户所属角色的权限是否存在
		if(findByUsername.getRole().getAuthorities() == null || findByUsername.getRole().getAuthorities().size() == 0){
			return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);
		}
 */
@RequestMapping("/admin/cinema_hall_session")
@Controller
public class CinemaHallSessionController {

	@Autowired
	private CinemaService cinemaService;
	@Autowired
	private CinemaHallService cinemaHallService;
	@Autowired
	private MovieService movieService;
	@Autowired
	private CinemaHallSessionService cinemaHallSessionService;
	
	/**
	 * 排片场次列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model, CinemaHallSession cinemaHallSession, PageBean<CinemaHallSession> pageBean){
		model.addAttribute("pageBean", cinemaHallSessionService.findPage(cinemaHallSession, pageBean));
		model.addAttribute("showDate",cinemaHallSession.getShowDate());
		return "admin/cinema_hall_session/list";
	}
	
	/**
	 * 排片场次添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("cinemaList", cinemaService.findAll());
		model.addAttribute("movieList", movieService.findAll());
		model.addAttribute("cinemaSessionTypeList", CinemaSessionType.values());
		return "admin/cinema_hall_session/add";
	}
	
	/**
	 * 排片场次编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		model.addAttribute("cinemaHallSession", cinemaHallSessionService.findById(id));
		model.addAttribute("movieList", movieService.findAll());
		model.addAttribute("cinemaList", cinemaService.findAll());
		model.addAttribute("cinemaSessionTypeList", CinemaSessionType.values());

/**
 * 后台用户管理控制器
 *
 */
@RequestMapping("/admin/user")
@Controller
public class UserController {

	@Autowired
	private UserService userService;
	@Autowired
	private RoleService roleService;
	@Autowired
	private OperaterLogService operaterLogService;
	/**
	 * 用户列表页面
	 * @param model
	 * @param user
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model, User user, PageBean<User> pageBean){
		model.addAttribute("title", "用户列表");
		model.addAttribute("username", user.getUsername());
		model.addAttribute("pageBean", userService.findList(user, pageBean));
		return "admin/user/list";
	}
	
	/**
	 * 新增用户页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("roles", roleService.findAll());
		return "admin/user/add";
	}
	
	/**
	 * 用户添加表单提交处理
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(User user){
			model.addAttribute("msg", "订单编号不存在!");
			return RuntimeConstant.RUN_ERROR_VIEW;
		}
		if(order.getStatus() != Order.status_unpay){
			model.addAttribute("msg", "订单状态不可支付!");
			return RuntimeConstant.RUN_ERROR_VIEW;
		}
		long passTime = System.currentTimeMillis()/1000 - order.getCreateTime().getTime()/1000;
		if(passTime > orderTimeout){
			model.addAttribute("msg", "订单已超时,不可支付!");
			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
	public Result<Boolean> orderPay(@RequestParam(name="order_sn",required=true)String sn){
		Order order = orderService.find(sn);
		if(order == null){
			return Result.error(CodeMsg.HOME_ORDER_NO_EXIST);
		}
		if(order.getStatus() != Order.status_unpay){
			return Result.error(CodeMsg.HOME_ORDER_STATUS_UNABLE);
		}
		long passTime = System.currentTimeMillis()/1000 - order.getCreateTime().getTime()/1000;
		if(passTime > orderTimeout){
			return Result.error(CodeMsg.HOME_ORDER_STATUS_TIMEOUT);
		}
		if(order.getAccount().getBalance().compareTo(order.getNewMoney()) < 0){
			return Result.error(CodeMsg.HOME_ORDER_BALANCE_OUT);
		}
		//订单状态都合适
		//1、订单状态修改成已支付;2、扣除用户余额
		if(!orderService.paySuccess(order)){
			return Result.error(CodeMsg.HOME_ORDER_PAY_ERROR);
		}
		return Result.success(true);
	}
}

	 * @return
	 */
	@RequestMapping(value="/user-pay-to-account",method=RequestMethod.GET)
	public String userPayToAccount(Model model){
		model.addAttribute("payments", PaymentType.values());
		return "home/account/user-pay-to-account";
	}
	
	/**
	 * 修改个人资料
	 * @param account
	 * @return
	 */
	@RequestMapping(value="/update_info",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> updateInfo(Account account){
		Account loginedAccount = (Account)SessionUtil.get(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY);
		loginedAccount.setNickname(account.getNickname());
		loginedAccount.setSex(account.getSex());
		if(accountService.save(loginedAccount) == null){
			return Result.error(CodeMsg.SAVE_ERROR);
		}
		//表示用户已经修改成功,放入session
		SessionUtil.set(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY, loginedAccount);
		return Result.success(true);
	}
	
	/**
	 * 修改图片
	 * @param account
	 * @return
	 */
	@RequestMapping(value="/update_head_pic",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> updateHeadPic(Account account){
		Account loginedAccount = (Account)SessionUtil.get(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY);
		loginedAccount.setHeadPic(account.getHeadPic());
		if(accountService.save(loginedAccount) == null){
			return Result.error(CodeMsg.SAVE_ERROR);
		}
		//表示用户已经修改成功,放入session
		SessionUtil.set(SessionConstant.SESSION_ACCOUNT_LOGIN_KEY, loginedAccount);
		return Result.success(true);
	}
	
	/**
	 * 修改密码
	 * @param password
	 * @return
	 */
	@RequestMapping(value="/update_pwd",method=RequestMethod.POST)
	@ResponseBody
		User findById = userService.find(user.getId());
		//讲提交的用户信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(user, findById, "id","createTime","updateTime");
		if(userService.save(findById) == null){
			return Result.error(CodeMsg.ADMIN_USE_EDIT_ERROR);
		}
		operaterLogService.add("编辑用户,用户名:" + user.getUsername());
		return Result.success(true);
	}
	
	/**
	 * 删除用户
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			userService.delete(id);
		} catch (Exception e) {
			return Result.error(CodeMsg.ADMIN_USE_DELETE_ERROR);
		}
		operaterLogService.add("添加用户,用户ID:" + id);
		return Result.success(true);
	}
}

		model.addAttribute("movieList", movieService.findAll());
		model.addAttribute("cinemaSessionTypeList", CinemaSessionType.values());
		return "admin/cinema_hall_session/add";
	}
	
	/**
	 * 排片场次编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		model.addAttribute("cinemaHallSession", cinemaHallSessionService.findById(id));
		model.addAttribute("movieList", movieService.findAll());
		model.addAttribute("cinemaList", cinemaService.findAll());
		model.addAttribute("cinemaSessionTypeList", CinemaSessionType.values());
		return "admin/cinema_hall_session/edit";
	}
	
	/**
	 * 添加排片场次表单提交
	 * @param cinemaHallSession
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(CinemaHallSession cinemaHallSession){
		if(cinemaHallSession == null){
			return Result.error(CodeMsg.DATA_ERROR);
		}
		CodeMsg validate = ValidateEntityUtil.validate(cinemaHallSession);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//判断是否是编辑
		if(cinemaHallSession.getId() != null && cinemaHallSession.getId() > 0){
			CinemaHallSession findById = cinemaHallSessionService.findById(cinemaHallSession.getId());
			cinemaHallSession.setCreateTime(findById.getCreateTime());
		}
		//生成散场时间
		String startTime = cinemaHallSession.getShowDate() + " " + cinemaHallSession.getShowTime();
		cinemaHallSession.setStartTime(startTime);
		cinemaHallSession.setEndTime(StringUtil.getFormatterDate(startTime, "yyyy-MM-dd HH:mm", Integer.valueOf(cinemaHallSession.getMovie().getTime())));
		if(cinemaHallSessionService.isExistHall(cinemaHallSession.getId(),cinemaHallSession.getCinemaHall().getId(), cinemaHallSession.getShowDate(), startTime,cinemaHallSession.getEndTime())){
			return Result.error(CodeMsg.ADMIN_CINEMA_HALL_SESSION_SAVE_EXIST);
		}
		//表示数据合法,可以保存到数据库
		if(cinemaHallSessionService.save(cinemaHallSession) == null){
		Area area = (Area) SessionUtil.get(SessionConstant.SESSION_HOME_AREA);
		model.addAttribute("cinemaList", area == null ? cinemaService.findAll() : cinemaService.findAll(area.getId()));
		model.addAttribute("topNewsList", newsService.findTop());
		model.addAttribute("topMoneyMovieList", movieService.findTopMoneyList());
		return "home/cinema/list";
	}
	
	/**
	 * 影院详情页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping("/detail")
	public String detail(Model model,@RequestParam(name="id",required=true) Long id){
		Cinema findById = cinemaService.findById(id);
		model.addAttribute("cinema", findById);
		model.addAttribute("cinemaHallSessionList", cinemaHallSessionService.findDistinctShowDateByCinemaList(id));
		model.addAttribute("nearCinemaList", cinemaService.findAll(findById.getArea().getCityId()));
		model.addAttribute("commentList", cinemaCommentService.findByCinema(id));
		return "home/cinema/detail";
	}
	
	/**
	 * 获取指定影院、指定日期下的上映影片
	 * @param model
	 * @param cid
	 * @param showDate
	 * @return
	 */
	@RequestMapping("/get_show_movie")
	public String getShowMovie(Model model,
			@RequestParam(name="cid",required=true) Long cid,
			@RequestParam(name="showDate",required=true) String showDate){
		model.addAttribute("cinemaHallSessionList", cinemaHallSessionService.findDistinctMovieByCinemaList(cid, showDate));
		return "home/cinema/get_show_movie";
	}
	
	/**
	 * 统计影院上映场次
	@Autowired
	private CinemaHallSessionService cinemaHallSessionService;
	@Autowired
	private CinemaService cinemaService;
	@Autowired
	private CinemaHallSeatService cinemaHallSeatService;
	@Value("${movie.select.seat.max.num}")
	private Integer selectedSeatMax;//最大选座数
	
	@Autowired
	private OrderService orderService;
	@Autowired
	private OrderItemService orderItemService;
	/**
	 * 电影列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping("/list")
	public String list(Model model,@RequestParam(name="type",defaultValue="0") Integer type){
		model.addAttribute("movieList", type == 0 ? movieService.findShowList() : movieService.findFutureList());
		model.addAttribute("type", type);
		model.addAttribute("topNewsList", newsService.findTop());
		model.addAttribute("topMoneyMovieList", movieService.findTopMoneyList());
		return "home/movie/list";
	}
	
	/**
	 * 电影详情页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping("/detail")
	public String detail(Model model,@RequestParam(name="id",required=true) Long id){
		model.addAttribute("movie", movieService.findById(id));
		model.addAttribute("topMovieList", movieService.findTopList(5));
		model.addAttribute("distinctCinemaHallSessionList", cinemaHallSessionService.findDistinctCinemaByMovieId(id));
		model.addAttribute("distinctShowDateCinemaHallSessionList", cinemaHallSessionService.findDistinctShowDateByMovieId(id));
		model.addAttribute("commentList", movieCommentService.findByMovie(id));
		return "home/movie/detail";
	}
	
	/**
	 * 选座页面
	 * @param model
	 * @param id
	 * @return
	 */
public class CinemaController {

	@Autowired
	private CinemaService cinemaService;
	@Autowired
	private AreaService areaService;
	@Autowired
	private CinemaCommentService cinemaCommentService;
	
	/**
	 * 电影院列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model, Cinema cinema, PageBean<Cinema> pageBean){
		model.addAttribute("pageBean", cinemaService.findPage(cinema, pageBean));
		model.addAttribute("name",cinema.getName());
		return "admin/cinema/list";
	}
	
	/**
	 * 电影院添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("provinceList", areaService.getAllProvince());
		model.addAttribute("cinemaServiceList", CinemaServices.values());
		return "admin/cinema/add";
	}
	
	/**
	 * 电影院编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		Cinema cinema = cinemaService.findById(id);
		model.addAttribute("cinema", cinema);
		model.addAttribute("provinceList", areaService.getAllProvince());
		model.addAttribute("cityList", areaService.getAllCity(cinema.getArea().getProvinceId()));
		model.addAttribute("districtList", areaService.getAllDistrict(cinema.getArea().getCityId()));
		model.addAttribute("cinemaServiceList", CinemaServices.values());
		return "admin/cinema/edit";
	}
	
	/**
	 * 添加电影院表单提交
	 * @param cinema
				log.info("进入支付宝电脑网站支付");
				return "home/pay/alipay_pc";
			}
			default:
				break;
		}
		model.addAttribute("msg", "未定义的支付方式!");
		return RuntimeConstant.RUN_ERROR_VIEW;
	}
	
	/**
	 * 支付宝异步通知
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/alipay_notify")
	@ResponseBody
	public String alipayNotify(HttpServletRequest request){
		if(!Alipay.isValid(request)){
			log.error("支付宝异步通知签名验证失败!");
			return "fail";
		}
		//签名验证通过
		//商户订单号
		String sn = request.getParameter("out_trade_no");
		//支付宝交易金额
		String total_amount = request.getParameter("total_amount");
		//交易状态
		String trade_status = request.getParameter("trade_status");
		if("TRADE_SUCCESS".equals(trade_status)){
			//表示是支付成功
			//查询支付记录
			PayLog payLog = payLogService.find(sn);
			if(payLog == null){
				log.error("支付记录未找到sn=" + sn);
				return "fail";
			}
			//检查支付记录的状态
			if(payLog.getStatus() != PayLog.status_unpay){
				log.error("支付记录状态错误,status=" + payLog.getStatus());
				return "fail";
	}
	
	public static String getMac(){
		String mac = "";
		try {
			InetAddress localHost = InetAddress.getLocalHost();
			byte[] hardwareAddress = NetworkInterface.getByInetAddress(localHost).getHardwareAddress();
			StringBuffer sb = new StringBuffer("");
			for(int i=0; i<hardwareAddress.length; i++) {
			    //字节转换为整数
			    int temp = hardwareAddress[i]&0xff;
			    String str = Integer.toHexString(temp);
			    //System.out.println("每8位:"+str);
			    if(str.length()==1) {
			      sb.append("0"+str);
			    }else {
			      sb.append(str);
			    }
			  }
			mac = sb.toString();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return mac.toUpperCase();
	}
	
	public static boolean authOrder(String orderSn,String phone){
		Map<String, String> headerParaMap = new HashMap<String, String>();
		String mac = getMac();
		String paramToken = DESUtil.encrypt(orderSn, mac+"#"+orderSn+"#"+phone);
		headerParaMap.put("paramToken", paramToken);
		String timeToken = DESUtil.encrypt("muyi_ylrc", System.currentTimeMillis()+"");
		headerParaMap.put("timeToken", timeToken);
		String sendPost = HttpUtil.sendPost("http://120.25.120.129:8081/order_auth/verify",headerParaMap,"orderSn="+orderSn+"&phone="+phone+"&mac="+mac);
		JSONObject parseObject = JSONObject.parseObject(sendPost);
		if(parseObject.getIntValue("code") != CodeMsg.SUCCESS.getCode()){
			return false;
		}
		return true;
	}
	
	public static String readFileToString(File file){
		String string = "";
		if(file != null){
			try {
				BufferedReader br = new BufferedReader(new FileReader(file));
			    String line = null;
			    while ((line = br.readLine()) != null) {
			    	string += line;
			    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值