基于javaweb的SpringBoot+JPA旅行网站旅游管理系统(前台、后台)(java+springboot+jpa+thymeleaf+html+bootstrap+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

前台:路线收藏、攻略发布与收藏、景点预定、酒店预定等……

后台: 管理审核用户、酒店、景点、攻略、路线等……

300123202502

前台

140123202502

150123202502

160123202502

180123202502

190123202502

200123202502

210123202502

220123202502

230123202502

240123202502

后台

250123202502

260123202502

270123202502

290123202502

技术框架

JavaWeb SpringBoot JPA Thymeleaf HTML Bootstrap JavaScript SpringMVC MySQL

基于javaweb的SpringBoot+JPA旅行网站旅游管理系统(前台、后台)(java+springboot+jpa+thymeleaf+html+bootstrap+maven)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        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;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24



@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<>();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        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;
}

@Transactional(rollbackFor = Exception.class)
public Result saveTravelRoute(TravelRoute travelRoute) {

if (StringUtils.isEmpty(travelRoute.getId())) {//没有id的情况
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();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

@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";
}

@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")
public String pushStrategyListUI(HttpServletRequest request, Model model, @ModelAttribute("searchName") String searchName, @PageableDefault(size = 10) Pageable pageable) {
Page<TravelStrategy> page = strategyService.PushStrategyListUI(request,searchName, pageable);
List<TravelStrategy> top10Strategy = strategyService.findTop10Strategy();
model.addAttribute("top10Strategy", top10Strategy);
model.addAttribute("page", page);
return "strategy/pushStrategy";
}
}
package com.demo.controller;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@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);
}

@RequestMapping("/saveTravelRoute")
@ResponseBody
public Result saveTravelRoute(TravelRoute travelRoute) {
return systemService.saveTravelRoute(travelRoute);
}

@RequestMapping("/travelStrategyListUI")
public String travelStrategyListUI(Model model, @PageableDefault(size = 10) Pageable pageable) {
Page<TravelStrategy> page = systemService.getTravelStrategyPage(pageable);
model.addAttribute("page", page);
return "system/strategy/list";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    }
hotelRepository.saveAndFlush(hotel);
return ResultGenerator.genSuccessResult();
}

public Hotel getHotelById(String id) {
Hotel hotel = hotelRepository.findById(id).orElseThrow(() -> new ServiceException("酒店ID错误!"));
return hotel;
}

public Result updateStatus(String id) {
Hotel hotel = getHotelById(id);
if (hotel.getStatus().equals(StatusEnum.DOWM_STATUS.getCode())) {
//改变状态
hotel.setStatus(StatusEnum.UP_STATUS.getCode());
} 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();
}


项目链接:
https://javayms.github.io?id=511522430404105ab
https://javayms.pages.dev?id=511522430404105ab