基
于javaweb+mysql的springboot+jpa旅行网站旅游管理系统(前台、后台)(java+springboot+jpa+thymeleaf+html+bootstrap)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台:路线收藏、攻略发布与收藏、景点预定、酒店预定等……
后台: 管理审核用户、酒店、景点、攻略、路线等……
前台
后台
技术框架
JavaWeb SpringBoot JPA Thymeleaf HTML Bootstrap JavaScript SpringMVC MySQL
基于javaweb+mysql的SpringBoot+JPA旅行网站旅游管理系统(前台、后台)(java+springboot+jpa+thymeleaf+html+bootstrap)
User user = userRepository.findUserByUsername(cookie.getValue());
Hotel hotel = findHotelById(id);
UserHotel userHotel = userHotelRepository.findUserHotelByHotelAndUser(hotel, user);
//每个酒店只能预约一次
return userHotel != null;
}
return false;
}
public List<UserAttractions> getReserveAttractionsByUser(HttpServletRequest request) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("未能获得正确的用户名");
}
User user = userRepository.findUserByUsername(cookie.getValue());
return userAttractionsRepository.findUserAttractionsByUser(user);
}
@Transactional(rollbackFor = Exception.class)
public Result cancelAttractionsReserve(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("用户没有登录!");
}
Attractions attractions = findAttractionsById(id);
User user = userRepository.findUserByUsername(cookie.getValue());
UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);
//存在值就是取消预约.不存在值就是预约
if (userAttractions != null) {
userAttractionsRepository.delete(userAttractions);
} 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);
public String logout(HttpServletRequest request, HttpServletResponse response) {
systemService.logout(request,response);
return "redirect:/system";
}
@RequestMapping("/hotelListUI")
public String hotelListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<Hotel> page = systemService.getHotelPage(pageable);
model.addAttribute("page", page);
return "system/hotel/list";
}
@RequestMapping("/saveHotel")
@ResponseBody
public Result saveHotel(Hotel hotel) {
return systemService.saveHotel(hotel);
}
@RequestMapping("/updateStatus")
@ResponseBody
public Result updateStatus(String id) {
return systemService.updateStatus(id);
}
@RequestMapping("/getHotelById")
@ResponseBody
public Result getHotelById(String id) {
return ResultGenerator.genSuccessResult(systemService.getHotelById(id));
}
@RequestMapping("/attractionsListUI")
public String attractionsListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<Attractions> page = systemService.getAttractionsPage(pageable);
model.addAttribute("page", page);
return "system/attractions/list";
}
@RequestMapping("/getAttractionsById")
@ResponseBody
public Result getAttractionsById(String id) {
return ResultGenerator.genSuccessResult(systemService.getAttractionsById(id));
}
@RequestMapping("/updateAttractionsStatus")
@ResponseBody
public Result updateAttractionsStatus(String id) {
@Service
public class LoginService {
@Autowired
private UserRepository userRepository;
public Result login(User user, HttpServletResponse response) {
User userByUsername = userRepository.findUserByUsername(user.getUsername());
if (userByUsername == null) {
return ResultGenerator.genFailResult("用户名错误!");
} else {
if (user.getPassword().equals(userByUsername.getPassword())) {
Cookie cookie = new Cookie("username", user.getUsername());
cookie.setPath("/");
cookie.setMaxAge(3600);
response.addCookie(cookie);
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("密码错误!");
}
}
}
public void logout(HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = CookieUitl.get(request, "username");
if(cookie != null){
CookieUitl.set(response,"username",null,0);
}
}
@Controller
@RequestMapping("/system")
public class SystemController {
@Autowired
private SystemService systemService;
@RequestMapping("")
public String loginUI() {
return "system/login/login";
}
@RequestMapping("/login")
@ResponseBody
public Result login(SysUser sysUser, HttpServletResponse response) {
return systemService.login(sysUser,response);
}
@RequestMapping("/userListUI")
public String userListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<User> page = systemService.getUserPage(pageable);
model.addAttribute("page",page);
return "system/user/list";
}
@RequestMapping("/saveUser")
@ResponseBody
public Result saveUser(User user) {
return systemService.saveUser(user);
}
@RequestMapping("/getUserById")
@ResponseBody
public Result getUserById(String id) {
return ResultGenerator.genSuccessResult(systemService.getUserById(id));
@Service
public class ReserveService {
@Autowired
private HotelRepository hotelRepository;
@Autowired
private AttractionsRepository attractionsRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private UserHotelRepository userHotelRepository;
@Autowired
private UserAttractionsRepository userAttractionsRepository;
public Page<Hotel> reserveHotelListUI(String searchName, Pageable pageable) {
//查询启用的酒店列表
Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//status状态,查询状态为0,启动的酒店
predicates.add((cb.equal(root.get("status"), 0)));
//酒店name模糊查询
if (!StringUtils.isEmpty(searchName)) {
predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));
}
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return hotelPage;
}
public Hotel findHotelById(String id) {
return hotelRepository.findById(id).orElseThrow(() -> new ServiceException("酒店id错误!"));
}
public Page<Attractions> reserveAttractionsListUI(String searchName, Pageable pageable) {
//查询启用的景点列表
Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
} else {
hotel.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
hotelRepository.saveAndFlush(hotel);
return ResultGenerator.genSuccessResult();
}
public Page<Attractions> getAttractionsPage(Pageable pageable) {
Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return attractionsPage;
}
public Attractions getAttractionsById(String id) {
Attractions attractions = attractionsRepository.findById(id).orElseThrow(() -> new ServiceException("景点ID错误"));
return attractions;
}
public Result updateAttractionsStatus(String id) {
Attractions attractions = getAttractionsById(id);
if (attractions.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
attractions.setStatus(StatusEnum.UP_STATUS.getCode());
} else {
attractions.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
attractionsRepository.saveAndFlush(attractions);
return ResultGenerator.genSuccessResult();
}
@Transactional(rollbackFor = Exception.class)
public Result saveAttractions(Attractions attractions) {
if (StringUtils.isEmpty(attractions.getId())) {//没有id的情况
attractions.setId(IdGenerator.id());
attractions.setStatus(StatusEnum.DOWM_STATUS.getCode());
attractions.setCreateDate(new Date());
int i = random.nextInt(100);
attractions.setImage("MY_jingdian_0" + (i % 8 + 1));
} else {
@Controller
@RequestMapping("/system")
public class SystemController {
@Autowired
private SystemService systemService;
@RequestMapping("")
public String loginUI() {
return "system/login/login";
}
@RequestMapping("/login")
@ResponseBody
public Result login(SysUser sysUser, HttpServletResponse response) {
return systemService.login(sysUser,response);
}
@RequestMapping("/userListUI")
public String userListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<User> page = systemService.getUserPage(pageable);
model.addAttribute("page",page);
return "system/user/list";
}
@RequestMapping("/saveUser")
@ResponseBody
private UserStrategyRepository userStrategyRepository;
public Page<TravelStrategy> TravelStrategyListUI(String searchName, Pageable pageable) {
//查询通过后台审核的攻略列表
Page<TravelStrategy> travelStrategyPage = travelStrategyRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//status状态,查询状态为0,启动的攻略
predicates.add((cb.equal(root.get("status"), 0)));
//攻略name模糊查询
if (!StringUtils.isEmpty(searchName)) {
predicates.add((cb.like(root.get("title"), "%" + searchName + "%")));
}
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return travelStrategyPage;
}
public Page<TravelStrategy> PushStrategyListUI(HttpServletRequest request, String searchName, Pageable pageable) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("用户未登录");
}
User user = userRepository.findUserByUsername(cookie.getValue());
//查询通过后台审核的攻略列表
Page<TravelStrategy> travelStrategyPage = travelStrategyRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//攻略name模糊查询
predicates.add((cb.equal(root.get("user"), user)));
//攻略name模糊查询
if (!StringUtils.isEmpty(searchName)) {
predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));
}
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return travelStrategyPage;
}
public TravelStrategy findTravelStrategyById(String id) {
return travelStrategyRepository.findById(id).orElseThrow(() -> new ServiceException("攻略id错误!"));
}
public Boolean isStrategy(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie != null) {
throw new ServiceException("未能获得正确的用户名");
}
User user = userRepository.findUserByUsername(cookie.getValue());
if (StringUtils.isEmpty(travelStrategy.getId())) {//没有id的情况
travelStrategy.setId(IdGenerator.id());
if (travelStrategy.getStatus() == null) {
//默认为停用
travelStrategy.setStatus(StatusEnum.DOWM_STATUS.getCode());
travelStrategy.setCreateDate(new Date());
travelStrategy.setUser(user);
}
} else {
//有id的情况
TravelStrategy oldTravelStrategy = getTravelStrategyById(travelStrategy.getId());
travelStrategy.setStatus(oldTravelStrategy.getStatus());
travelStrategy.setCreateDate(oldTravelStrategy.getCreateDate());
}
travelStrategyRepository.saveAndFlush(travelStrategy);
return ResultGenerator.genSuccessResult();
}
public List<TravelStrategy> findTop10Strategy() {
PageRequest pageable = PageRequest.of(0, 10);
//查询启用的旅游路线列表
Page<TravelStrategy> travelStrategyPage = travelStrategyRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//status状态,查询状态为0,启动的路线
predicates.add((cb.equal(root.get("status"), 0)));
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return travelStrategyPage.getContent();
}
}
package com.demo.controller;
throw new ServiceException("不存在该用户!");
}
return user;
}
public Result centerEdit(User user) {
User oldUser = userRepository.findById(user.getId()).orElseThrow(() -> new ServiceException("用户ID错误!"));
oldUser.setName(user.getName());
userRepository.save(oldUser);
return ResultGenerator.genSuccessResult();
}
public Result centerEditPW(HttpServletRequest request, HttpServletResponse response, String id, String oldPassword, String newPassword) {
User oldUser = userRepository.findById(id).orElseThrow(() -> new ServiceException("用户ID错误!"));
if (!oldUser.getPassword().equals(oldPassword)) {
return ResultGenerator.genFailResult("原始密码错误!");
}
oldUser.setPassword(newPassword);
userRepository.save(oldUser);
//重新登录
loginService.logout(request, response);
return ResultGenerator.genSuccessResult();
}
}
package com.demo.common.util;
public class CookieUitl {
/**
* 设置一个cookie
* @param response HttpServletResponse
* @param name cookie的名称
* @param value cookie的内容
* @param maxAge cookie的持续时间
*/
public static void set(HttpServletResponse response,
String name,
String value,
int maxAge) {
Cookie cookie = new Cookie(name, value);
cookie.setPath("/");
public Result updateAttractionsStatus(String id) {
Attractions attractions = getAttractionsById(id);
if (attractions.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
attractions.setStatus(StatusEnum.UP_STATUS.getCode());
} else {
attractions.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
attractionsRepository.saveAndFlush(attractions);
return ResultGenerator.genSuccessResult();
}
@Transactional(rollbackFor = Exception.class)
public Result saveAttractions(Attractions attractions) {
if (StringUtils.isEmpty(attractions.getId())) {//没有id的情况
attractions.setId(IdGenerator.id());
attractions.setStatus(StatusEnum.DOWM_STATUS.getCode());
attractions.setCreateDate(new Date());
int i = random.nextInt(100);
attractions.setImage("MY_jingdian_0" + (i % 8 + 1));
} else {
//有id的情况
Attractions oldAttractions = getAttractionsById(attractions.getId());
attractions.setStatus(oldAttractions.getStatus());
attractions.setCreateDate(oldAttractions.getCreateDate());
attractions.setImage(oldAttractions.getImage());
}
attractionsRepository.saveAndFlush(attractions);
return ResultGenerator.genSuccessResult();
}
public Page<TravelRoute> getTravelRoutePage(Pageable pageable) {
Page<TravelRoute> travelRoutePage = travelRouteRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return travelRoutePage;
@Controller
@RequestMapping("/user")
public class UserCenterController {
@Autowired
private UserCenterService userCenterService;
@RequestMapping("/centerUI")
public String centerUI(Model model, HttpServletRequest request) {
User user = userCenterService.getUser(request);
model.addAttribute("user", user);
return "center/user-center";
}
@RequestMapping("/centerEditUI")
public String centerEditUI(Model model, HttpServletRequest request) {
User user = userCenterService.getUser(request);
model.addAttribute("user", user);
return "center/user-center-edit";
}
@RequestMapping("/centerEdit")
@ResponseBody
public Result centerEdit(Model model, User user) {
return userCenterService.centerEdit(user);
}
@RequestMapping("/centerEditPWUI")
public String centerEditPWUI(Model model, HttpServletRequest request) {
User user = userCenterService.getUser(request);
model.addAttribute("id", user.getId());
List<UserHotel> userHotelList = reserveService.getReserveHotelByUser(request);
List<UserAttractions> userAttractionsList = reserveService.getReserveAttractionsByUser(request);
model.addAttribute("userHotelList", userHotelList);
model.addAttribute("userAttractionsList",userAttractionsList);
return "reserve/reserve-user-manage";
}
@RequestMapping("/cancelReserve")
@ResponseBody
public Result cancelReserve(HttpServletRequest request, String id) {
return reserveService.cancelReserve(request,id);
}
@RequestMapping("/reserveAttractionsListUI")
public String reserveAttractionsListUI(Model model, @ModelAttribute("searchName") String searchName, @PageableDefault(size = 10) Pageable pageable) {
Page<Attractions> page = reserveService.reserveAttractionsListUI(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-attractions";
}
@RequestMapping("/attractionsDetailsUI")
public String attractionsDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = "id") String id) {
Attractions attractions = reserveService.findAttractionsById(id);
//如果用户显示已经预约,就是查看预约列表
Boolean flag = reserveService.isReserveAttractions(request, id);
List<Hotel> top10Hotel = reserveService.getTop10Hotel();
List<Attractions> top10Attractions = reserveService.getTop10Attractions();
model.addAttribute("top10Hotel", top10Hotel);
model.addAttribute("top10Attractions", top10Attractions);
model.addAttribute("attractions", attractions);
model.addAttribute("flag", flag);
return "reserve/reserve-attractions-details";
}
@RequestMapping("/cancelAttractionsReserve")
@ResponseBody
public Result cancelAttractionsReserve(HttpServletRequest request,String id) {
return reserveService.cancelAttractionsReserve(request,id);
}
}
package com.demo.controller;
systemService.logout(request,response);
return "redirect:/system";
}
@RequestMapping("/hotelListUI")
public String hotelListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<Hotel> page = systemService.getHotelPage(pageable);
model.addAttribute("page", page);
return "system/hotel/list";
}
@RequestMapping("/saveHotel")
@ResponseBody
public Result saveHotel(Hotel hotel) {
return systemService.saveHotel(hotel);
}
@RequestMapping("/updateStatus")
@ResponseBody
public Result updateStatus(String id) {
return systemService.updateStatus(id);
}
@RequestMapping("/getHotelById")
@ResponseBody
public Result getHotelById(String id) {
return ResultGenerator.genSuccessResult(systemService.getHotelById(id));
}
@RequestMapping("/attractionsListUI")
public String attractionsListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<Attractions> page = systemService.getAttractionsPage(pageable);
model.addAttribute("page", page);
return "system/attractions/list";
}
@RequestMapping("/getAttractionsById")
@ResponseBody
public Result getAttractionsById(String id) {
return ResultGenerator.genSuccessResult(systemService.getAttractionsById(id));
}
@RequestMapping("/updateAttractionsStatus")
@ResponseBody
public Result updateAttractionsStatus(String id) {
return systemService.updateAttractionsStatus(id);
@Controller
@RequestMapping("/system")
public class SystemController {
@Autowired
private SystemService systemService;
@RequestMapping("")
public String loginUI() {
return "system/login/login";
}
@RequestMapping("/login")
@ResponseBody
public Result login(SysUser sysUser, HttpServletResponse response) {
return systemService.login(sysUser,response);
}
@RequestMapping("/userListUI")
public String userListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<User> page = systemService.getUserPage(pageable);
model.addAttribute("page",page);
return "system/user/list";
}
@RequestMapping("/saveUser")
@ResponseBody
public Result saveUser(User user) {
return systemService.saveUser(user);
}
@RequestMapping("/getUserById")
@ResponseBody
public Result getUserById(String id) {
return ResultGenerator.genSuccessResult(systemService.getUserById(id));
}
@RequestMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response) {
systemService.logout(request,response);
return "redirect:/system";
}
return userCenterService.centerEditPW(request, response, id, oldPassword, newPassword);
}
}
package com.demo.service;
@Service
public class LoginService {
@Autowired
private UserRepository userRepository;
public Result login(User user, HttpServletResponse response) {
User userByUsername = userRepository.findUserByUsername(user.getUsername());
if (userByUsername == null) {
return ResultGenerator.genFailResult("用户名错误!");
} else {
if (user.getPassword().equals(userByUsername.getPassword())) {
Cookie cookie = new Cookie("username", user.getUsername());
cookie.setPath("/");
cookie.setMaxAge(3600);
response.addCookie(cookie);
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("密码错误!");
}
}
@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();
List<Attractions> top10Attractions = reserveService.getTop10Attractions();
model.addAttribute("top10Hotel", top10Hotel);
model.addAttribute("top10Attractions", top10Attractions);
model.addAttribute("hotel", hotel);
model.addAttribute("flag", flag);
return "reserve/reserve-hotel-details";
}
@RequestMapping("/reserveManageUI")
public String reserveManageUI(Model model, HttpServletRequest request) {
List<UserHotel> userHotelList = reserveService.getReserveHotelByUser(request);
travelRoute.setId(IdGenerator.id());
if (travelRoute.getStatus() == null) {
//默认为停用
travelRoute.setStatus(StatusEnum.DOWM_STATUS.getCode());
travelRoute.setCollectNumber(0);
travelRoute.setCreateDate(new Date());
}
} else {
//有id的情况
TravelRoute oldTravelRoute = getTravelRouteById(travelRoute.getId());
travelRoute.setStatus(oldTravelRoute.getStatus());
travelRoute.setCollectNumber(oldTravelRoute.getCollectNumber());
travelRoute.setCreateDate(oldTravelRoute.getCreateDate());
}
travelRouteRepository.saveAndFlush(travelRoute);
return ResultGenerator.genSuccessResult();
}
public TravelRoute getTravelRouteById(String id) {
TravelRoute travelRoute = travelRouteRepository.findById(id).orElseThrow(() -> new ServiceException("路线ID错误!"));
return travelRoute;
}
public Result updateTravelRouteStatus(String id) {
TravelRoute travelRoute = getTravelRouteById(id);
if (travelRoute.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
travelRoute.setStatus(StatusEnum.UP_STATUS.getCode());
} else {
travelRoute.setStatus(StatusEnum.DOWM_STATUS.getCode());
}
travelRouteRepository.saveAndFlush(travelRoute);
return ResultGenerator.genSuccessResult();
}
public Page<TravelStrategy> getTravelStrategyPage(Pageable pageable) {
Page<TravelStrategy> travelStrategyPage = travelStrategyRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
Page<TravelStrategy> travelStrategyPage = travelStrategyRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//攻略name模糊查询
predicates.add((cb.equal(root.get("user"), user)));
//攻略name模糊查询
if (!StringUtils.isEmpty(searchName)) {
predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));
}
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return travelStrategyPage;
}
public TravelStrategy findTravelStrategyById(String id) {
return travelStrategyRepository.findById(id).orElseThrow(() -> new ServiceException("攻略id错误!"));
}
public Boolean isStrategy(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie != null) {
User user = userRepository.findUserByUsername(cookie.getValue());
TravelStrategy travelStrategy1 = findTravelStrategyById(id);
UserStrategy userStrategy = userStrategyRepository.findUserStrategyByTravelStrategyAndUser(travelStrategy1, user);
//每个路线只能关注一次
if (userStrategy != null) {
return true;
}
}
return false;
}
@Transactional(rollbackFor = Exception.class)
public Result cancelTravelStrategyReserve(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("用户没有登录!");
}
TravelStrategy travelStrategy = findTravelStrategyById(id);
User user = userRepository.findUserByUsername(cookie.getValue());
UserStrategy userStrategy = userStrategyRepository.findUserStrategyByTravelStrategyAndUser(travelStrategy, user);
public Boolean isReserveHotel(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie != null) {
User user = userRepository.findUserByUsername(cookie.getValue());
Hotel hotel = findHotelById(id);
UserHotel userHotel = userHotelRepository.findUserHotelByHotelAndUser(hotel, user);
//每个酒店只能预约一次
return userHotel != null;
}
return false;
}
public List<UserAttractions> getReserveAttractionsByUser(HttpServletRequest request) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("未能获得正确的用户名");
}
User user = userRepository.findUserByUsername(cookie.getValue());
return userAttractionsRepository.findUserAttractionsByUser(user);
}
@Transactional(rollbackFor = Exception.class)
public Result cancelAttractionsReserve(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("用户没有登录!");
}
Attractions attractions = findAttractionsById(id);
User user = userRepository.findUserByUsername(cookie.getValue());
UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);
//存在值就是取消预约.不存在值就是预约
if (userAttractions != null) {
userAttractionsRepository.delete(userAttractions);
} else {
UserAttractions newUserAttractions = new UserAttractions();
newUserAttractions.setId(IdGenerator.id());
newUserAttractions.setCreateDate(new Date());
newUserAttractions.setUser(user);
newUserAttractions.setAttractions(attractions);
userAttractionsRepository.saveAndFlush(newUserAttractions);
}
@Service
public class SystemService {
@Autowired
private SysUserRepository sysUserRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private HotelRepository hotelRepository;
@Autowired
private AttractionsRepository attractionsRepository;
@Autowired
private TravelRouteRepository travelRouteRepository;
@Autowired
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 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) {
Cookie cookie = CookieUitl.get(request, "sysUsername");
if (cookie != null) {
CookieUitl.set(response, "sysUsername", null, 0);
}
}
public Page<User> getUserPage(Pageable pageable) {
Page<User> userPage = userRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("id")));
return null;
}, pageable);
return userPage;
}
@Transactional(rollbackFor = Exception.class)
public Result saveUser(User user) {
System.out.println(user.getId());
if (StringUtils.isEmpty(user.getId())) {//没有id的情况
user.setId(IdGenerator.id());
} else {
User oldUser = getUserById(user.getId());
user.setUsername(oldUser.getUsername());
user.setName(oldUser.getName());
oldUser.setPassword(user.getPassword());
}
userRepository.saveAndFlush(user);
return ResultGenerator.genSuccessResult();
}
public User getUserById(String id) {
User user = userRepository.findById(id).orElseThrow(() -> new ServiceException("用户ID错误"));
return user;
}
}
public Page<User> getUserPage(Pageable pageable) {
Page<User> userPage = userRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("id")));
return null;
}, pageable);
return userPage;
}
@Transactional(rollbackFor = Exception.class)
public Result saveUser(User user) {
System.out.println(user.getId());
if (StringUtils.isEmpty(user.getId())) {//没有id的情况
user.setId(IdGenerator.id());
} else {
User oldUser = getUserById(user.getId());
user.setUsername(oldUser.getUsername());
user.setName(oldUser.getName());
oldUser.setPassword(user.getPassword());
}
userRepository.saveAndFlush(user);
return ResultGenerator.genSuccessResult();
}
public User getUserById(String id) {
User user = userRepository.findById(id).orElseThrow(() -> new ServiceException("用户ID错误"));
return user;
}
public Page<Hotel> getHotelPage(Pageable pageable) {
Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return hotelPage;
}
@Transactional(rollbackFor = Exception.class)
public Result saveHotel(Hotel hotel) {
if (StringUtils.isEmpty(hotel.getId())) {//没有id的情况
hotel.setId(IdGenerator.id());
hotel.setStatus(StatusEnum.DOWM_STATUS.getCode());
hotel.setCreateDate(new Date());
int i = random.nextInt(100);
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("未能获得正确的用户名");
}
User user = userRepository.findUserByUsername(cookie.getValue());
return userAttractionsRepository.findUserAttractionsByUser(user);
}
@Transactional(rollbackFor = Exception.class)
public Result cancelAttractionsReserve(HttpServletRequest request, String id) {
Cookie cookie = CookieUitl.get(request, "username");
if (cookie == null) {
throw new ServiceException("用户没有登录!");
}
Attractions attractions = findAttractionsById(id);
User user = userRepository.findUserByUsername(cookie.getValue());
UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);
//存在值就是取消预约.不存在值就是预约
if (userAttractions != null) {
userAttractionsRepository.delete(userAttractions);
} 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;
}
if (!oldUser.getPassword().equals(oldPassword)) {
return ResultGenerator.genFailResult("原始密码错误!");
}
oldUser.setPassword(newPassword);
userRepository.save(oldUser);
//重新登录
loginService.logout(request, response);
return ResultGenerator.genSuccessResult();
}
}
package com.demo.common.util;
public class CookieUitl {
/**
* 设置一个cookie
* @param response HttpServletResponse
* @param name cookie的名称
* @param value cookie的内容
* @param maxAge cookie的持续时间
*/
public static void set(HttpServletResponse response,
String name,
String value,
int maxAge) {
Cookie cookie = new Cookie(name, value);
cookie.setPath("/");
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
/**
* 查找cookie
* @param request HttpServletRequest
* @param name 要查找的cookie的名称
* @return
}
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;
}
public List<Hotel> getTop10Hotel() {
PageRequest pageable = PageRequest.of(0, 10);
//查询启用的酒店列表
Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//status状态,查询状态为0,启动的酒店
predicates.add((cb.equal(root.get("status"), 0)));
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return hotelPage.getContent();
}
public List<Attractions> getTop10Attractions() {
PageRequest pageable = PageRequest.of(0, 10);
Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//status状态,查询状态为0,启动的景点
predicates.add((cb.equal(root.get("status"), 0)));
//景点name模糊查询
query.where(predicates.toArray(new Predicate[]{}));
query.orderBy(cb.desc(root.get("createDate")));
return null;
}, pageable);
return attractionsPage.getContent();
}
@RequestMapping("/attractionsListUI")
public String attractionsListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<Attractions> page = systemService.getAttractionsPage(pageable);
model.addAttribute("page", page);
return "system/attractions/list";
}
@RequestMapping("/getAttractionsById")
@ResponseBody
public Result getAttractionsById(String id) {
return ResultGenerator.genSuccessResult(systemService.getAttractionsById(id));
}
@RequestMapping("/updateAttractionsStatus")
@ResponseBody
public Result updateAttractionsStatus(String id) {
return systemService.updateAttractionsStatus(id);
}
@RequestMapping("/saveAttractions")
@ResponseBody
public Result saveAttractions(Attractions attractions) {
return systemService.saveAttractions(attractions);
}
@RequestMapping("/travelRouteListUI")
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);
}