基于javaweb+mysql的+JPA旅行网站旅游管理系统(前台、后台)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台:路线收藏、攻略发布与收藏、景点预定、酒店预定等……
后台: 管理审核用户、酒店、景点、攻略、路线等……
前台
后台
技术框架
JavaWeb SpringBoot JPA Thymeleaf HTML Bootstrap JavaScript SpringMVC MySQL
<div class="top_header_add">
<ul>
<li><a th:href="@{/}"><i class="fa fa-home"
aria-hidden="true"></i> 爱游人旅行网 </a>
</li>
</ul>
</div>
<div class="top_login">
<ul>
<li id="login"><i class="fa fa-sign-in" aria-hidden="true"></i> 你好,请<a
th:href="@{/loginUI}">登录</a> / <a
th:href="@{/registerUI}">注册</a>
/ <a target="_blank"
href="/travel/system">后台管理</a></li>
<li id="logout"><i class="fa fa-sign-in"></i> 你好,<a id="yonghuming"
th:href="@{/user/centerUI}"></a> <a
th:href="@{/logout}">退出</a>
</li>
<li th:each="route:${top10Route}"><a th:href="@{/route/travelRouteDetailsUI(id=${route.id})}"
data-toggle="tooltip" data-container="body"
th:title="${route.name}" th:text="${route.name}">xxxxxxxxxxxx</a>
</li>
</ul>
</div>
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<div class="cy-title">
<h2>友情链接</h2>
</div>
<ul class="cy-link">
<li><a href="javascript:void(0);">百度</a></li>
<li><a href="javascript:void(0);">QQ</a></li>
<li><a href="javascript:void(0);">微博</a></li>
<li><a href="javascript:void(0);">空间</a></li>
</ul>
<div class="cy-title">
<h2>联系我们</h2>
</div>
<ul class="cy-contact">
<li><i class="fa fa-map-marker"></i> 地址:河南省郑州市前程路8号郑州工商学院</li>
<li><i class="fa fa-compass"></i> 邮编:434000</li>
<li><i class="fa fa-phone"></i> 电话:158XXX3244</li>
return userRoute != null;
}
return false;
}
public List<UserRoute> getTravelRouteByUser(HttpServletRequest request) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("未能获得正确的用户名");
}
User user = userRepository.findUserByUsername(cookie.getValue());
return userRouteRepository.findUserRouteByUser(user);
}
public String travelRouteListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<TravelRoute> page = systemService.getTravelRoutePage(pageable);
model.addAttribute("page", page);
return "system/route/list";
}
@RequestMapping("/getTravelRouteById")
@ResponseBody
public Result getTravelRouteById(String id) {
return ResultGenerator.genSuccessResult(systemService.getTravelRouteById(id));
}
@RequestMapping("/updateTravelRouteStatus")
@ResponseBody
public Result updateTravelRouteStatus(String id) {
return systemService.updateTravelRouteStatus(id);
}
@RequestMapping("/saveTravelRoute")
private TravelStrategyRepository travelStrategyRepository;
private Random random = new Random(100);
public Result login(SysUser sysUser, HttpServletResponse response) {
SysUser sysUserByUsrname = sysUserRepository.findSysUserByUsername(sysUser.getUsername());
if (sysUserByUsrname == null) {
return ResultGenerator.genFailResult("用户名错误!");
} else {
if (sysUser.getPassword().equals(sysUserByUsrname.getPassword())) {
CookieUitl.set(response, "sysUsername", sysUser.getUsername(), 3600);
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("密码错误");
}
}
}
public void logout(HttpServletRequest request, HttpServletResponse response) {
<label class="label col col-1">通讯地址</label>
<div class="col col-2">
<p class="form-control-static">未实现</p>
</div>
<label class="label col col-1">职务</label>
<div class="col col-2">
<p class="form-control-static">未实现</p>
</div>
</section>
<section>
<label class="label col col-1">所在地区</label>
<div class="col col-2">
<p class="form-control-static">未实现</p>
</div>
<label class="label col col-1">所属人群</label>
<div class="col col-2">
<p class="form-control-static">未实现</p>
</div>
</section>
</div>
</fieldset>
<footer>
}
@RequestMapping("/cancelTravelStrategyReserve")
@ResponseBody
public Result cancelTravelStrategyReserve(HttpServletRequest request, String id) {
return strategyService.cancelTravelStrategyReserve(request, id);
}
@RequestMapping("/strategyManageUI")
public String strategyManageUI(Model model, HttpServletRequest request) {
List<UserStrategy> userStrategyList = strategyService.getTravelStrategyByUser(request);
List<TravelStrategy> top10Strategy = strategyService.findTop10Strategy();
model.addAttribute("top10Strategy", top10Strategy);
model.addAttribute("userStrategyList", userStrategyList);
return "strategy/strategy-manage";
}
@RequestMapping("/saveTravelStrategy")
@ResponseBody
public Result saveTravelStrategy(HttpServletRequest request, TravelStrategy travelStrategy) {
return strategyService.saveTravelStrategy(request, travelStrategy);
}
@RequestMapping("/pushStrategyListUI")
@Controller
@RequestMapping("/reserve")
public class ReserveController {
@Autowired
private ReserveService reserveService;
@RequestMapping("/reserveHotelListUI")
public String reserveHotelListUI(Model model, @ModelAttribute("searchName") String searchName, @PageableDefault(size = 10) Pageable pageable) {
Page<Hotel> page = reserveService.reserveHotelListUI(searchName, pageable);
List<Hotel> top10Hotel = reserveService.getTop10Hotel();
List<Attractions> top10Attractions = reserveService.getTop10Attractions();
model.addAttribute("top10Hotel", top10Hotel);
model.addAttribute("top10Attractions", top10Attractions);
model.addAttribute("page", page);
return "reserve/reserve-hotel";
}
@RequestMapping("/hotelDetailsUI")
public String hotelDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = "id") String id) {
Hotel hotel = reserveService.findHotelById(id);
//如果用户显示已经预约,就是查看预约列表
Boolean flag = reserveService.isReserveHotel(request, id);
List<Hotel> top10Hotel = reserveService.getTop10Hotel();
SysUser sysUserByUsrname = sysUserRepository.findSysUserByUsername(sysUser.getUsername());
if (sysUserByUsrname == null) {
return ResultGenerator.genFailResult("用户名错误!");
} else {
if (sysUser.getPassword().equals(sysUserByUsrname.getPassword())) {
CookieUitl.set(response, "sysUsername", sysUser.getUsername(), 3600);
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("密码错误");
}
}
}
<option value="松江区">松江区</option>
<option value="青浦区">青浦区</option>
<option value="嘉定区">嘉定区</option>
<option value="宝山区">宝山区</option>
<option value="崇明县">崇明县</option>
</select>
<i></i>
</label>
</div>
<label class="label col col-1">所属人群</label>
<div class="col col-2">
<label class="select">
<select id="throng" name="cmsMember.throng">
<option value="">--请选择--</option>
<option value="科研">科研</option>
<option value="科技管理">科技管理</option>
<option value="技术">技术</option>
<option value="教师">教师</option>
<option value="学生">学生</option>
<option value="其他" selected="selected">其他</option>
</select>
<i></i>
</label>
</div>
</section>
</div>
//景点name模糊查询
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return attractionsPage.getContent();
}
}
package com.demo.service;
import com.demo.common.core.Result;
import com.demo.common.core.ResultGenerator;
import com.demo.common.core.ServiceException;
import com.demo.common.enums.StatusEnum;
import com.demo.model.TravelStrategy;
import com.demo.model.User;
import com.demo.model.UserStrategy;
import com.demo.common.util.CookieUitl;
import com.demo.common.util.IdGenerator;
import com.demo.common.core.Result;
import com.demo.model.TravelRoute;
import com.demo.model.UserRoute;
import com.demo.service.RouteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
@RequestMapping("/route")
public class RouteController {
@Autowired
private RouteService routeService;
} else {
UserAttractions newUserAttractions = new UserAttractions();
newUserAttractions.setId(IdGenerator.id());
newUserAttractions.setCreateDate(new Date());
newUserAttractions.setUser(user);
newUserAttractions.setAttractions(attractions);
userAttractionsRepository.saveAndFlush(newUserAttractions);
}
return ResultGenerator.genSuccessResult();
}
public Boolean isReserveAttractions(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie != null) {
User user = userRepository.findUserByUsername(cookie.getValue());
Attractions attractions = findAttractionsById(id);
UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);
//每个景点只能预约一次
return userAttractions != null;
}
return false;
}
$("#login").show();
console.log('隐藏后面退出');
}
});
function getCookie(key) {
var arr1 = document.cookie.split("; ");//由于cookie是通过一个分号+空格的形式串联起来的,所以这里需要先按分号空格截断,变成[name=Jack,pwd=123456,age=22]数组类型;
for (var i = 0; i < arr1.length; i++) {
var arr2 = arr1[i].split("=");//通过=截断,把name=Jack截断成[name,Jack]数组;
if (arr2[0] == key) {
return decodeURI(arr2[1]);
}
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org"
layout:decorate="~{base/layout}">
return "strategy/travelStrategy";
}
@RequestMapping("/travelStrategyDetailsUI")
public String travelStrategyDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = "id") String id) {
TravelStrategy travelStrategy = strategyService.findTravelStrategyById(id);
//如果用户显示已经关注,就是查看关注列表
Boolean flag = strategyService.isStrategy(request, id);
List<TravelStrategy> top10Strategy = strategyService.findTop10Strategy();
model.addAttribute("top10Strategy", top10Strategy);
model.addAttribute("travelStrategy", travelStrategy);
model.addAttribute("flag", flag);
return "strategy/travelStrategy-details";