基于javaweb的前台预定+后台管理酒店管理系统(java+ssm+jsp+mysql)

基于javaweb的前台预定+后台管理酒店管理系统(java+ssm+jsp+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

20220519001213

20220519001214

20220519001215

20220519001216

20220519001218

基于javaweb+jsp的酒店管理系统(前台预定+后台管理)(java+SSM+jsp+mysql+maven)

一、项目简述

功能介绍: 前台用户端:用户注册登录,房间展示,房间分类,房间 按价格区间查询,房间评论,房间预订等等 后台管理端:用户信息查询,房间分类管理,房间信息维 护,用户评论查看,入住结账等等

二、项目运行

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

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + maven等等。

用户控制器层:

/**

  • 控制器层

*/

@RestController

@CrossOrigin

@RequestMapping(“/user”)

public class UserController {

@Autowired

private UserService userService;

@Autowired

private RedisTemplate redisTemplate;

@Autowired

private HttpServletRequest request;

@Autowired

BCryptPasswordEncoder encoder;

/**

  • 查询全部数据

  • @return

*/

@RequestMapping(value = “userList”,method = RequestMethod.GET)

public Result findAll() {

List all = userService.findAll();

return new Result(true, StatusCode.OK, “查询成功”,all,all.size());

/**

  • 根据ID查询

  • @param id ID

  • @return

*/

@RequestMapping(value = “/{id}”, method = RequestMethod.GET)

public Result findById(@PathVariable Long id) {

return new Result(true, StatusCode.OK, “查询成功”, userService.findById(id));

/**

  • 分页+多条件查询

  • @param searchMap 查询条件封装

  • @param page 页码

  • @param size 页大小

  • @return 分页结果

*/

@RequestMapping(value=“/search/{page}/{size}”,method=RequestMethod.POST)

public Result findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){

Page pageList = userService.findSearch(searchMap, page, size);

return new Result(true,StatusCode.OK,“查询成功”, new PageResult(pageList.getTotalElements(), pageList.getContent()) );

/**

  • 根据条件查询

  • @param searchMap

  • @return

*/

@RequestMapping(value=“/search”,method = RequestMethod.POST)

public Result findSearch( @RequestBody Map searchMap){

return new Result(true,StatusCode.OK,“查询成功”,userService.findSearch(searchMap));

/**

  • 增加

  • @param user

*/

@RequestMapping(method=RequestMethod.POST)

public Result add(@RequestBody User user ){

userService.add(user);

return new Result(true,StatusCode.OK,“增加成功”);

/**

  • 修改

  • @param user

*/

@ResponseBody

@RequestMapping(value=“/{id}”,method= RequestMethod.PUT)

public Result update(User user, @PathVariable Long id ){

User oldUser=userService.findById(id);

user.setId(id);

user.setPassword(oldUser.getPassword());

userService.update(user);

return new Result(true,StatusCode.OK,“修改成功”);

/**

  • 修改

  • @param user

*/

@RequestMapping(value=“/change”,method= RequestMethod.POST,consumes = “application/json”)

public Result update(@RequestBody User user, HttpSession session){

User us= (User) session.getAttribute(“user”);

user.setId(us.getId());

user.setPassword(us.getPassword());

userService.update(user);

return new Result(true,StatusCode.OK,“修改成功”);

/**

  • 删除

  • @param id

*/

@RequestMapping(value=“/{id}”,method= RequestMethod.DELETE)

public Result delete(@PathVariable String id ){

userService.deleteById(id);

return new Result(true,StatusCode.OK,“删除成功”);

/**

  • 用户注册

  • @param code

  • @param user

  • @return

*/

@ResponseBody

@RequestMapping(value = “/register/”,method = RequestMethod.POST)

public Result regist(@RequestParam(name = “code”) String code,User user,HttpServletRequest request){

String sCode = (String) request.getSession().getAttribute(“user_register_email_code”);

if(!sCode.equalsIgnoreCase(code)){

return new Result(false,StatusCode.ERROR,“验证码错误!”);

userService.add(user);

return new Result(true,StatusCode.OK,“注册成功”);

/**

*判断账号是否存在

  • @param user

  • @return

*/

@RequestMapping(value = “/checkPhone”,method = RequestMethod.POST)

@ResponseBody

public Result checkPhone(User user){

String phone = user.getMobile();

if(!StringUtil.isMobile(phone)){

return new Result(false,StatusCode.ERROR,“请填写正确的手机号!”);

User userphone= userService.findByMobile(phone);

if (userphone == null){

return new Result(true,StatusCode.OK,“该手机号可以注册”);

return new Result(false,StatusCode.ERROR,“该手机号已经被注册”);

/**

  • 邮箱验证

  • @param user

  • @return

*/

@RequestMapping(value = “/email”,method = RequestMethod.POST)

@ResponseBody

public Result findemail(User user){

String email = user.getEmail();

if(!StringUtil.emailFormat(email)){

return new Result(true,StatusCode.ERROR,“请填写正确的邮箱格式”);

User useremail= userService.findByEmail(email);

if (useremail == null){

return new Result(true,StatusCode.OK,“该邮箱可以注册”);

return new Result(false,StatusCode.ERROR,“该邮箱已经被注册”);

/**

  • 用户登录

  • @param loginMap

  • @return

*/

@ResponseBody

@RequestMapping(value=“/login”,method=RequestMethod.POST)

public Result login(@RequestParam Map<String,String> loginMap,HttpServletRequest request){

String mobile = loginMap.get(“login”);

if (StringUtil.isMobile(mobile)){

User user = userService.findByMobileAndPassword(loginMap.get(“login”),loginMap.get(“password”));

if(user!=null){

request.getSession().setAttribute(“user”,user);

Map map=new HashMap();

return new Result(true,StatusCode.OK,“登陆成功”);

}else{

return new Result(false,StatusCode.LOGINERROR,“用户名或密码错误”);

}else {

User user = userService.findByNameAndPassword(loginMap.get(“login”),loginMap.get(“password”));

if(user!=null){

request.getSession().setAttribute(“user”,user);

Map map=new HashMap();

map.put(“name”,user.getName());//姓名

return new Result(true,StatusCode.OK,“登陆成功”,map);

}else{

return new Result(false,StatusCode.LOGINERROR,“用户名或密码错误”);

/**

  • 用户注销

  • @param request

  • @param response

  • @throws IOException

*/

@RequestMapping(value=“/logout”,method=RequestMethod.GET)

public void logout(HttpServletRequest request,HttpServletResponse response) throws IOException {

request.getSession().setAttribute(“user”, null);

response.sendRedirect(request.getContextPath() + “/dist/view”);

星级景点控制层:

/**

  • 星级景点控制层

*/

@Controller

@CrossOrigin

@RequestMapping(“/travel”)

public class RecomTravelController {

@Autowired

private ScenicService scenicService;

@Autowired

private ScenicDao scenicDao;

@Autowired

private HotelService hotelService;

@Autowired

private HotelDao hotelDao;

/**

*查询星级

  • @return

*/

@ResponseBody

@RequestMapping(value = “/star”,method = RequestMethod.POST)

public Result judgeStar(String id,String start){

System.out.println(id+“====”+start);

Optional s = scenicDao.findById(id);

if (s.isPresent()){

Scenic scenic = s.get();

int valuestar = (Integer.valueOf(start)+Integer.valueOf(scenic.getStart()))/2;

scenic.setStart(valuestar);

scenicDao.save(scenic);

System.out.println(“数据不为空!”);

return new Result(true,1,“”,“”);

}else {

System.out.println(“数据为空!”);

return new Result(false,0,“”,“”);

/**

*查询星级

  • @return

*/

@ResponseBody

@RequestMapping(value = “/hotel”,method = RequestMethod.POST)

public Result judgeHotelStar(Long id,String start){

Hotel scenic = hotelService.findById(id);

if (scenic!=null){

int valuestar = (Integer.valueOf(start)+Integer.valueOf(scenic.getStar()))/2;

scenic.setStar(valuestar);

hotelDao.save(scenic);

System.out.println(“数据不为空!”);

return new Result(true,1,“”,“”);

}else {

System.out.println(“数据为空!”);

return new Result(false,0,“”,“”);

/**

  • 查询单个景点

  • @param model

  • @param id

  • @return

*/

@RequestMapping(“/oneAttr”)

public String One_attr(Model model,Long id){

Scenic scenic=scenicService.findById(id);

model.addAttribute(“oneAttr”,scenic);

return “page/product”;

/**

  • 景点模糊查询分页

  • @param model

  • @param start

  • @param limit

  • @param search_key

  • @return

*/

@RequestMapping(“/search_attrs”)

public String search_attrs(Model model,@RequestParam(value = “start” ,defaultValue = “0”)Integer start,

@RequestParam(value = “limit” ,defaultValue = “6”)Integer limit,

@RequestParam String search_key){

start=start<0?0:start;

Sort sort=new Sort(Sort.Direction.DESC,“id”);

Pageable pageable=PageRequest.of(start,limit,sort);

Specification specification=new Specification() {

@Override

public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {

List scenics=new ArrayList<>();

if (StringUtils.isNotBlank(search_key)){

scenics.add( criteriaBuilder.like(root.get(“name”),“%”+search_key+“%”));

return criteriaBuilder.and(scenics.toArray(new Predicate[scenics.size()]));

};

Page page=scenicDao.findAll(specification,pageable);

model.addAttribute(“name”,search_key);

model.addAttribute(“attrs”,page);

model.addAttribute(“number”,page.getNumber());

model.addAttribute(“numberOfElements”,page.getNumberOfElements());

model.addAttribute(“size”,page.getSize());

model.addAttribute(“totalElements”,page.getTotalElements());

model.addAttribute(“totalPages”,page.getTotalPages());

model.addAttribute(“first”,page.isFirst());

model.addAttribute(“last”,page.isLast());

return “page/travel”;

@RequestMapping(“/local”)

public String localRefresh(Model model,Long id) {

Scenic scenic=scenicService.findById(id);

System.out.println(scenic.toString());

List hotels=hotelService.findByCountryLike(scenic.getContry());

Collections.sort(hotels, new Comparator() {

@Override

public int compare(Hotel o1, Hotel o2) {

if (o1.getStar()<o2.getStar()){

return 2;

if (o1.getStar().equals(o2.getStar()) ){

return 1;

return -1;

});

if (hotels.size()>=4){

List newList=hotels.subList(0,3);

model.addAttribute(“scenics”,newList);

System.out.println(“个数:”+newList.size());

}else {

model.addAttribute(“scenics”,hotels);

System.out.println(“个数2:”+hotels.size());

return “page/product::table_refresh”;

订单控制器层:

/**

  • 订单控制器层

*/

@Controller

@CrossOrigin

@RequestMapping(“/orders”)

public class OrdersController {

@Autowired

private OrdersService ordersService;

@Autowired

private HotelOrdersService hotel_ordersService;

@Autowired

private HotelService hotelService;

@Autowired

private ScenicService scenicService;

/**

  • 查询全部数据

  • @return

*/

@ResponseBody

@RequestMapping(value = “/list”,method= RequestMethod.GET)

public Result findAll(){

List all = ordersService.findAll();

return new Result(true, StatusCode.OK,“查询成功”,all,all.size());

/**

  • 查询全部订单

  • @return

*/

@ResponseBody

@RequestMapping(value = “/allorders”,method = RequestMethod.POST)

public String findAllOrders(HttpSession session, Model model) throws ParseException {

User user= (User) session.getAttribute(“user”);

model.addAttribute(“orders”,ordersService.findOrders(user.getId().toString()));

return “index_header::table_refresh”;

/**

  • 查询全部订单

  • @return

*/

@ResponseBody

@RequestMapping(value = “/allorder”,method = RequestMethod.POST)

public List findAllOrder(HttpSession session) throws ParseException {

User user= (User) session.getAttribute(“user”);

return ordersService.findOrders(user.getId().toString());

/**

  • 查询全部订单

  • @return

*/

@ResponseBody

@RequestMapping(value = “/allorderhotel”,method = RequestMethod.POST)

public List findAllOrderHotel(HttpSession session){

User user= (User) session.getAttribute(“user”);

List hotel_orders=hotel_ordersService.hotel_orders(user.getId());

return hotel_orders;

/**

  • 根据ID查询

  • @param id ID

  • @return

*/

@ResponseBody

@RequestMapping(value=“/{id}”,method= RequestMethod.GET)

public Result findById(@PathVariable Long id){

return new Result(true,StatusCode.OK,“查询成功”,ordersService.findById(id));

/**

  • 分页+多条件查询

  • @param searchMap 查询条件封装

  • @param page 页码

  • @param size 页大小

  • @return 分页结果

*/

@ResponseBody

@RequestMapping(value=“/search/{page}/{size}”,method=RequestMethod.POST)

public Result findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){

Page pageList = ordersService.findSearch(searchMap, page, size);

return new Result(true,StatusCode.OK,“查询成功”, new PageResult(pageList.getTotalElements(), pageList.getContent()) );

/**

  • 根据条件查询

  • @param searchMap

  • @return

*/

@ResponseBody

@RequestMapping(value=“/search”,method = RequestMethod.POST)

public Result findSearch( @RequestBody Map searchMap){

return new Result(true,StatusCode.OK,“查询成功”,ordersService.findSearch(searchMap));

/**

  • 订单添加操作

  • @param orders

*/

@ResponseBody

@RequestMapping(value =“/add”,method=RequestMethod.POST)

public Result add(Orders orders, HttpSession session){

//获取数量

User user = (User) session.getAttribute(“user”);

if (user == null){

return new Result(false,StatusCode.ACCESSERROR,“请登录”);

return ordersService.add(orders,user.getId(),orders.getId(),orders.getQty());

/**

  • 修改

  • @param

*/

@ResponseBody

@RequestMapping(value=“/{id}”,method= RequestMethod.PUT)

public Result update(@PathVariable Long id){

ordersService.updateStatus(id);

return new Result(true,StatusCode.OK,“修改成功”);

/**

  • 删除

  • @param id

*/

@ResponseBody

@RequestMapping(value=“/{id}”,method= RequestMethod.DELETE)

public Result delete(@PathVariable Long id ){

ordersService.deleteById(id);

return new Result(true,StatusCode.OK,“删除成功”);

@RequestMapping(value = “/ordersList”)

public String ordersList(){

return “admin/ordersmanage/orderslist”;

/**

  • 酒店评分

  • @param hotel

  • @return

*/

@ResponseBody

@PostMapping(“/hotelOrderStar”)

public Result hotelOrderStar(Hotel hotel,@RequestParam(“orderId”)Long orderId){

Long id = hotel.getId();

Hotel newHotel = hotelService.findById(id);

if(newHotel==null){

return new Result(false,StatusCode.ERROR,“未找到该酒店!”);

Integer currentStar = hotel.getStar();

Integer totalStar = newHotel.getStar();

if(currentStar<0){

return new Result(false,StatusCode.ERROR,“请选择评分!”);

Integer commentCount = newHotel.getCommentCount();

commentCount=commentCount+1;

totalStar=currentStar+totalStar;

int avgStar = totalStar / commentCount;

hotel.setCommentCount(commentCount);

hotel.setStar(avgStar);

Integer hotel1 = hotelService.updateStar(hotel);

hotel_ordersService.updateStarStatus(orderId);

if(hotel1==null){

return new Result(false,StatusCode.ERROR,“评分更新失败!”);

return new Result(true,StatusCode.OK,“评价成功!”);

/**

  • 景点评分

  • @param scenic

  • @return

*/

@ResponseBody

@PostMapping(“/travelOrderStar”)

public Result travelOrderStar(Scenic scenic,@RequestParam(“orderId”)Long orderId){

Long id = scenic.getId();

Scenic newScenic = scenicService.findById(id);

if(newScenic==null){

return new Result(false,StatusCode.ERROR,“未找到该景点!”);

Integer totalStar = newScenic.getStart();

Integer currentStar = scenic.getStart();

if(currentStar<0){

return new Result(false,StatusCode.ERROR,“请选择评分!”);

Integer commentCount = newScenic.getCommentCount();

commentCount=commentCount+1;

totalStar=currentStar+totalStar;

int avgStar = totalStar / commentCount;

scenic.setCommentCount(commentCount);

scenic.setStart(avgStar);

Integer scenic1 = scenicService.updateStar(scenic);

ordersService.updateStarStatus(orderId);

if(scenic1==null){

return new Result(false,StatusCode.ERROR,“评分更新失败!”);

return new Result(true,StatusCode.OK,“评价成功!”);


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值