Java项目:前台预定+后台管理酒店管理系统(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 {@Autowiredprivate UserService userService;@Autowiredprivate RedisTemplate redisTemplate;@Autowiredprivate HttpServletRequest request;@AutowiredBCryptPasswordEncoder encoder;/*** 查询全部数据** @return*/@RequestMapping(value = "userList",method = RequestMethod.GET)public Result findAll() {List<User> 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<User> pageList = userService.findSearch(searchMap, page, size);return new Result(true,StatusCode.OK,"查询成功", new PageResult<User>(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)@ResponseBodypublic 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)@ResponseBodypublic 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 {@Autowiredprivate ScenicService scenicService;@Autowiredprivate ScenicDao scenicDao;@Autowiredprivate HotelService hotelService;@Autowiredprivate HotelDao hotelDao;/***查询星级* @return*/@ResponseBody@RequestMapping(value = "/star",method = RequestMethod.POST)public Result judgeStar(String id,String start){System.out.println(id+"===="+start);Optional<Scenic> 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() {@Overridepublic Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {List<Predicate> 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<Scenic> 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<Hotel> hotels=hotelService.findByCountryLike(scenic.getContry());Collections.sort(hotels, new Comparator<Hotel>() {@Overridepublic 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 {@Autowiredprivate OrdersService ordersService;@Autowiredprivate HotelOrdersService hotel_ordersService;@Autowiredprivate HotelService hotelService;@Autowiredprivate ScenicService scenicService;/*** 查询全部数据* @return*/@ResponseBody@RequestMapping(value = "/list",method= RequestMethod.GET)public Result findAll(){List<Orders> 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<Orders> 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<HotelOrders> findAllOrderHotel(HttpSession session){User user= (User) session.getAttribute("user");List<HotelOrders> 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<Orders> pageList = ordersService.findSearch(searchMap, page, size);return new Result(true,StatusCode.OK,"查询成功", new PageResult<Orders>(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,"评价成功!");}}
源码获取:博客首页 "资源" 里下载!
相关文章:

Solr初始化源码分析-Solr初始化与启动
用solr做项目已经有一年有余,但都是使用层面,只是利用solr现有机制,修改参数,然后监控调优,从没有对solr进行源码级别的研究。但是,最近手头的一个项目,让我感觉必须把solrn内部原理和扩展机制弄…

iOS :UIPickerView reloadAllComponets not work
编辑信息页面用了很多选择栏,大部分都用 UIPickerView 来实现。在切换数据显示的时候, UIPickerView 不更新数据,不得其解。Google 无解,原因在于无法描述自己的问题,想想应该还是代码哪里写错了。 写了个测试方法&…

单相计量芯片RN8209D使用经验分享(转)
单相计量芯片RN8209D使用经验分享转载于:https://www.cnblogs.com/LittleTiger/p/10736060.html

git 对之前的commit 进行重新签名 Resign
在向开源社区提交PR的时候如果之前的提交忘记添加sign (个人签名/公司签名),则社区的DCO检查会失败。 关于通过DCO检查能够确保以下几件事情生效: 你所提交的贡献是由你自己完成或者 你参与了其中,并且有权利按照开源…
【原创】linux命令bc使用详解
最近经常要在linux下做一些进制转换,看到了可以使用bc命令,如下: echo "obase10;ibase16;CFFF" | bc 用完以后就对bc进行了进一步的了解, man bc里面有详细的使用说明。 1.是什么,怎么用 bc - An arbitrary precision calculator language 一…

Java项目:学生信息管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 用户的登录注册,学生信息管理,教师信息管理,班级信 息管理,采用mvcx项目架构,覆盖增删改查,包括学…

MVC學習網站
http://www.cnblogs.com/haogj/archive/2011/11/23/2246032.html

数据导出Excel表格
public String exportInfoFr(String path,String name,String startdate,String enddate,SysUser user){List<Map<String, Object>> list this.esEntPermitErrDao.findListObjectBySql("select 字段值1,字段值2,字段值3,字段值4,字段值5 from 表名 where 字段…

Rocksdb 通过posix_advise 让内核减少在page_cache的预读
文章目录1. 问题排查确认I/O完全/大多数来自于rocksdb确认此时系统只使用了rocksdb的Get来读确认每次系统调用下发读的请求大小确认是否在内核发生了预读2. 问题原因内核预读机制page_cache_sync_readaheadondemand_readahead3. 优化事情起源于 组内的分布式kv 系统使用rocksdb…

[leetcode] Minimum Path Sum
Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can only move either down or right at any point in time.分析:动态规划…

Java项目:在线小说阅读系统(读者+作者+管理员)(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 1:用户及主要操作功能 游客可以浏览网站的主页,登陆注册,小说湿度,下单购 买,订单查询,个人信息查询…

游戏中的脚本语言
本文最初发表于《游戏创造》(http://www.chinagcn.com)2007年8月刊。版权所有,侵权必究。如蒙转载,必须保留本声明,和作者署名;不得用于商业用途,必须保证全文完整。网络版首次发表于恋花蝶的博客(http://blog.csdn.ne…

mvn项目中的pom文件提示Error parsing lifecycle processing instructions解决
清空.m2/repository下的所有依赖文件,重新下载即可解决该问题。 如果本地用户下没有.m2/repository 目录,找到如下mvn 指定的repository,进去之后清空所有文件。 转载于:https://www.cnblogs.com/Hackerman/p/10736498.html

blktrace 工具集使用 及其实现原理
文章目录工具使用原理分析内核I/O栈blktrace 代码做的事情内核调用 ioctl 做的事情BLKTRACESETUPBLKTRACESTOPBLKTRACETEARDOWN内核 调用blk_register_tracepoints 之后做的事情参考最近使用blktrace 工具集来分析I/O 在磁盘上的一些瓶颈问题,特此做一个简单的记录。…

Java项目:教材管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教U阿以领取入库的教材,可以退还教材…

mysql更改数据文件目录及my.ini位置| MySQL命令详解
需求:更改mysql数据数据文件目录及my.ini位置。 步骤: 1、查找my.ini位置,可通过windows服务所对应mysql启动项,查看其对应属性->可执行文件路径,获取my.ini路径。 "D:\MySQL\MySQL Server 5.5\bin\mysqld&quo…

私有云管理-Windows Azure Pack
今天是2014年的第一天,今年的第一篇博客关于私有云,而我在2014年的主要目标也是针对私有云。随着Windows Azure在中国的落地,大家逐渐的熟悉了在Windows Azure中的云体验。而微软针对私有云、混合云推出了一个管理自助门户,Window…

面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维
1 面向对象 1.1 你是如何认识新事物的? 从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类。 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述。 理解: [1] 类包含了两个要素:特性和行为 > 同一类…

cannot find main module 解决办法
做6.824 实验的过程中想要跑测试,发现go test -run 2A时 出现cannot find main module问题,测试跑不起来。 原因 这个原因是从GO1.11 版本开始引入了go.mod文件来对项目中的go源码的编译相关的内容进行管理,经常使用GO的同学可能深受go get…

Java项目:网上选课系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能: 系统分为三个角色。最高权限管理员,学生,教师,包括 学生管理,教师管理,课程管理,选课,退课…

C#中类的继承 override virtual new的作用以及代码分析
继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法; override 子类中必须显示声明该方法是重写的父类中的方法; new 子类中忽略父类的已存在的方法,“重写该方法“; C#中不支…

spring手动代码控制事务
为什么80%的码农都做不了架构师?>>> DataSourceTransactionManager tran new DataSourceTransactionManager(vjdbcTemplate.getDataSource());DefaultTransactionDefinition def new DefaultTransactionDefinition();//事务定义类def.setPropagationB…

tar命令-压缩,解压缩文件
tar: -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 上面五个参数是独立的,压缩解压都要用到其中一个,可以和下面的命令连用但只能用其中一个。…

MIT 6.824 Lab2A (raft) -- Leader Election
文章目录实验要求Leader Election流程 及详细实现介绍基本角色关键超时变量关键的两个RPC实现RequestVote RPCAppendEntries RPCGo并发编程实现leader election调度本节记录的是完成MIT6.824 raft lab的leader Election部分实验。代码: https://github.com/BaronStack/MIT-6.82…

Java项目:在线考试系统(java+springboot+vue+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 本系统主要实现的功能有: 学生以及老师的注册登录,在线考试,错题查询,学生管理,问题管理,错题管理,错题查询…

写给自己的web开发资源
web开发给我的感觉就是乱七八糟,而且要学习感觉总是会有东西要学习,很乱很杂我也没空搞,(其实学习这个的方法就是去用它,什么你直接用?学过js么学过jquery么?哈哈,我没有系统的看完过…

虚拟机VMWare“提示:软件虚拟化与此平台上的长模式不兼容”的解决方法
虚拟机VMWare“提示:软件虚拟化与此平台上的长模式不兼容”不少童鞋反映,在使用Windows7 64位操作系统时,无法运行VMWare或MS Virtual server等软件虚拟操作系统。提示为“提示:软件虚拟化与此平台上的长模式不兼容. 禁用长模式. …

如何在Vue项目中使用vw实现移动端适配(转)
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种。在《使用Flexible实现手淘H5页面的终端适配》提出了Flexible的布局方案,随着viewport单位越来越受到众多浏览器的支持,因此在《再聊移动端页面的适配》一文中提出了…

Jsoncpp 在C++开发中的一些使用记录
jsoncpp 是一个C 语言实现的json库,非常方便得支持C得各种数据类型到json 以及 json到各种数据类型的转化。 一个json 类型的数据如下: {"code" : 10.01,"files" : "","msg" : "","uploadid&q…

Java项目:图书管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学…