Java项目:在线旅游订票系统(java+SpringBoot+FreeMarker+Mysql)
Posted qq_1334611189
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java项目:在线旅游订票系统(java+SpringBoot+FreeMarker+Mysql)相关的知识,希望对你有一定的参考价值。
实现的功能有:
管理员:系统管理、出发点管理、攻略分类管理、攻略管理、旅游景点产品管理、旅游景点产品详情管理、景点产品评论管理、定制信息管理、景点门票管理、旅游行程管理、景点评分管理、主题管理、新闻管理、订单统计等。
普通用户:注册登录、个人信息管理(个人信息、密码、订单等)、查看新闻、收藏景点产品、预定旅游景点、个人充值、预定景点门票、增加个人定制等。
景点商家信息代码:
/**
* @Description: TODO(景点商家信息)
*/
@Controller
@RequestMapping("/sellers")
public class SellerController
@Autowired
private ISellerService iSellerService;
@Autowired
private IUserService iUserService;
@RequestMapping("/findBySid.do")
@PreAuthorize("hasAnyAuthority('/sellers/findBySid.do')")
public ModelAndView findBySid(Integer sid) throws Exception
ModelAndView mv = new ModelAndView();
Seller seller = iSellerService.findBySid(sid);
mv.addObject("sellerInfo",seller);
List<User> list = iUserService.findAll(1,1000,"%%");
mv.addObject("UList",list);
mv.setViewName("seller-update");
return mv;
@RequestMapping("/findUsers.do")
@PreAuthorize("hasAnyAuthority('/sellers/findUsers.do')")
public ModelAndView findUsers() throws Exception
List<User> list = iSellerService.findUsers();
ModelAndView mv = new ModelAndView();
mv.addObject("users",list);
mv.setViewName("seller-add");
return mv;
//新增商家
@RequestMapping("/save.do")
@PreAuthorize("hasAnyAuthority('/sellers/save.do')")
public String save(Seller seller) throws Exception
iSellerService.save(seller);
return "redirect:findAlls.do";
//查询所有商家
@RequestMapping("/findAlls.do")
@PreAuthorize("hasAnyAuthority('/sellers/findAlls.do')")
public ModelAndView findAlls(
@RequestParam(name="page",required = true, defaultValue = "1") Integer page,
@RequestParam(name="size",required = true, defaultValue = "10") Integer size,
@RequestParam(name="search",required = true, defaultValue = "") String search
)throws Exception
ModelAndView mv = new ModelAndView();
List<Seller> list = iSellerService.findAlls(page,size,"%"+search+"%");
PageInfo pageInfo = new PageInfo(list);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("seller-list");
return mv;
//删除商家
@RequestMapping("/delete.do")
@PreAuthorize("hasAnyAuthority('/sellers/delete.do')")
public String delete(Integer sid) throws Exception
iSellerService.delete(sid);
return "redirect:findAlls.do";
//修改商家
@RequestMapping("/update.do")
@PreAuthorize("hasAnyAuthority('/sellers/update.do')")
public String update(Seller seller) throws Exception
iSellerService.update(seller);
return "redirect:findAlls.do";
用户登录服务类:
/**
* @Description: TODO(注册、登录、退出)
*/
@WebServlet("/user/*")
public class UserServlet extends BaseServlet
//声明UserService业务对象
private IUserService service = new UserServiceImpl();
/**
* 校验验证码
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public boolean checkCodeMethod(HttpServletRequest request, HttpServletResponse response) throws IOException
String check = request.getParameter("check");
//从sesion中获取验证码
HttpSession session = request.getSession();
String checkcode_server = (String)session.getAttribute("CHECKCODE_SERVER");
session.removeAttribute("CHECKCODE_SERVER");//为了保证验证码只能使用一次
if(checkcode_server == null || !checkcode_server.equalsIgnoreCase(check))
ResultInfo info = new ResultInfo();
//验证码错误
if ("".equals(check))
info.setErrorMsg("验证码不能为空");
else
info.setErrorMsg("验证码错误");
info.setFlag(false);
//将info对象序列化为json,响应数据
response.setContentType("application/json;charset=utf-8");
String json = writeValueAsString(info);
response.getWriter().write(json);
return false;
return true;
/**
* 注册功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void regist(HttpServletRequest request, HttpServletResponse response) throws Exception
//验证码
if(!checkCodeMethod(request,response))
return;
//1.获取数据,封装对象
Map<String, String[]> map = request.getParameterMap();
User user = new User();
try
BeanUtils.populate(user,map);
catch (Exception e)
e.printStackTrace();
//2.调用service完成注册
boolean flag = false;
if (user.getUsername() != null)
flag = service.regist(user);
ResultInfo info = new ResultInfo();
if(flag)//注册成功
info.setFlag(true);
else //注册失败
info.setFlag(false);
info.setErrorMsg("用户名已存在!");
//3.将info对象序列化为json,响应数据
String json = writeValueAsString(info);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
/**
* 登录功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void login(HttpServletRequest request, HttpServletResponse response) throws Exception
//1.获取用户名和密码数据
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
username = username != null ? username : "";
password = password != null ? password : "";
remember = remember != null ? remember : "";
User user = new User();
user.setUsername(username);
user.setPassword(password);
//3.调用Service查询
User u = service.login(user);
ResultInfo info = new ResultInfo();
//4.判断用户对象是否为null
if(u == null)
//用户名密码或错误
info.setFlag(false);
info.setErrorMsg("用户名密码或错误");
//5.判断登录成功
if(u != null)
Cookie user_cookie = new Cookie("username", URLEncoder.encode(username, "UTF-8")); //解决cookie乱码
Cookie pswd_cookie = new Cookie("password", password);
Cookie reme_cookie = new Cookie("remember", remember);
if(remember.equals("1"))
user_cookie.setMaxAge(24*60*60);
user_cookie.setPath(request.getContextPath()+"/");
response.addCookie(user_cookie);
pswd_cookie.setMaxAge(24*60*60);
pswd_cookie.setPath(request.getContextPath()+"/");
response.addCookie(pswd_cookie);
reme_cookie.setMaxAge(24*60*60);
reme_cookie.setPath(request.getContextPath()+"/");
response.addCookie(reme_cookie);
else
user_cookie.setMaxAge(0);
user_cookie.setPath("/");
response.addCookie(user_cookie);
pswd_cookie.setMaxAge(0);
pswd_cookie.setPath("/");
response.addCookie(pswd_cookie);
reme_cookie.setMaxAge(0);
reme_cookie.setPath("/");
response.addCookie(reme_cookie);
if (!checkCodeMethod(request,response))
return;
request.getSession().setAttribute("user",u);//登录成功标记
//登录成功
info.setFlag(true);
//响应数据
writeValue(info,response);
/**
* 查询一个
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void findOne(HttpServletRequest request, HttpServletResponse response) throws IOException
//从session中获取登录用户
Object user = request.getSession().getAttribute("user");
//将user写回客户端
writeValue(user,response);
/**
* 退出功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void exit(HttpServletRequest request, HttpServletResponse response) throws IOException
//1.销毁session
request.getSession().invalidate();
//2.跳转登录页面
response.sendRedirect(request.getContextPath()+"/login.jsp");
酒店订单相关操作:
/**
* @Description: TODO(酒店订单相关操作)
*/
@WebServlet("/order/*")
public class OrderServlet extends BaseServlet
/**
* 新增线路订单
* @param request
* @param response
* @throws Exception
*/
public void OrderRoute(HttpServletRequest request, HttpServletResponse response) throws Exception
ResultInfo info = new ResultInfo();
IOrderService IOrderService = new OrderServiceImpl();
//1.获取参数
Map<String, String[]> map = request.getParameterMap();
if (map.size()==0 || map.size()!=9)
info.setFlag(false);
info.setErrorMsg("预定失败");
String json = writeValueAsString(info);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return;
//2.1满足预定条件,查询账户余额
String uid = map.get("uid")[0];
String sid = map.get("sid")[0];
// Account account = IOrderService.findAccount(Integer.parseInt(uid));
Double paymoney = Double.valueOf(map.get("paymoney")[0]);
// if (account.getMoney()< paymoney)
// info.setFlag(false);
// info.setErrorMsg("您的账户余额不足,请充值!");
// String json = writeValueAsString(info);
// response.setContentType("application/json;charset=utf-8");
// response.getWriter().write(json);
// return;
//
//2.2余额可以进行预定,进行转账
// int target = IOrderService.findBySid(Integer.parseInt(sid));
// IOrderService.transfer(Integer.parseInt(uid),target,paymoney);
//2.3转账成功,生成订单,封装对象
RouteOrder routeOrder = new RouteOrder();
try
BeanUtils.populate(routeOrder,map);
catch (IllegalAccessException e)
e.printStackTrace();
catch (InvocationTargetException e)
e.printStackTrace();
//生成订单号
routeOrder.setOrderId(UuidUtil.getUuid());
//下单时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = LocalDateTime.now().format(formatter);
routeOrder.setOrdertime(dateTime);
//3.调用订单方法
IOrderService.addROrder(routeOrder);
//4.响应结果
info.setFlag(true);
writeValue(info,response);
/**
* 新增酒店订单
* @param request
* @param response
* @throws IOException
*/
public void addOrder(HttpServletRequest request, HttpServletResponse response) throws Exception
ResultInfo info = new ResultInfo();
IOrderService IOrderService = new OrderServiceImpl();
//1.获取参数
Map<String, String[]> map = request.getParameterMap();
if (map.size()==0 || map.size()!=11)
info.setFlag(false);
info.setErrorMsg("预定失败");
String json = writeValueAsString(info);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return;
//2.查询入住酒店和日期,判断是否可以入住
String uid = map.get("uid")[0];
String hid = map.get("hid")[0];
String beginday = map.get("beginday")[0];
String endday = map.get("endday")[0];
//2.1调用service方法查询
int count= IOrderService.selectOrder(uid,hid,beginday,endday,beginday,endday);
if (count!=0)//已经存在预定
info.setFlag(false);
info.setErrorMsg("您在该时间内已预定!");
String json = writeValueAsString(info);
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return;
//2.2满足预定条件,查询账户余额
// Account account = IOrderService.findAccount(Integer.parseInt(uid));
Double paymoney = Double.valueOf(map.get("paymoney")[0]);
// if (account.getMoney()< paymoney)
// info.setFlag(false);
// info.setErrorMsg("您的账户余额不足,请充值!");
// String json = writeValueAsString(info);
// response.setContentType("application/json;charset=utf-8");
// response.getWriter().write(json);
// return;
//
//2.3余额可以进行预定,进行转账
int target = IOrderService.findByhid(Integer.parseInt(hid));
IOrderService.transfer(Integer.parseInt(uid),target,paymoney);
//2.4转账成功,生成订单,封装对象
Order order = new Order();
try
BeanUtils.populate(order,map);
catch (IllegalAccessException e)
e.printStackTrace();
catch (InvocationTargetException e)
e.printStackTrace();
//生成订单号
order.setOrderId(UuidUtil.getUuid());
//下单时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = LocalDateTime.now().format(formatter);
order.setOrdertime(dateTime);
//3.调用订单方法
IOrderService.addOrder(order);
//4.响应结果
info.setFlag(true);
writeValue(info,response);
以上是关于Java项目:在线旅游订票系统(java+SpringBoot+FreeMarker+Mysql)的主要内容,如果未能解决你的问题,请参考以下文章
Java项目:在线旅游系统(java+jsp+SSM+Spring+mysql+maven)
基于JSP Servlet3.0 MySQL 的在线影院订票系统-作为程序员入门学习和毕业设计课题设计项目,真香!
Java项目:电影票订票管理系统(java+swing+MySQL)