Compare commits
6 Commits
main
...
houhuifang
| Author | SHA1 | Date |
|---|---|---|
|
|
4e00b21e93 | 2 years ago |
|
|
dd2dd0e0cf | 2 years ago |
|
|
5126c98cb6 | 2 years ago |
|
|
50a0a7fe56 | 2 years ago |
|
|
9c725062d3 | 2 years ago |
|
|
cca06dd0d3 | 2 years ago |
@ -0,0 +1,61 @@
|
||||
package com.power.travel.controller;
|
||||
|
||||
import com.power.travel.service.RouteService;
|
||||
import com.power.travel.core.Result;
|
||||
import com.power.travel.model.TravelRoute;
|
||||
import com.power.travel.model.UserRoute;
|
||||
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;
|
||||
|
||||
@RequestMapping("/travelRouteListUI")
|
||||
public String travelRouteListUI(Model model, @ModelAttribute("searchName") String searchName, @PageableDefault(size = 10) Pageable pageable) {
|
||||
Page<TravelRoute> page = routeService.TravelRouteListUI(searchName, pageable);
|
||||
List<TravelRoute> top10Route = routeService.findTop10Route();
|
||||
model.addAttribute("top10Route", top10Route);
|
||||
model.addAttribute("page", page);
|
||||
return "route/travelRoute";
|
||||
}
|
||||
|
||||
@RequestMapping("/travelRouteDetailsUI")
|
||||
public String travelRouteDetailsUI(Model model, HttpServletRequest request, @RequestParam(name = "id") String id) {
|
||||
TravelRoute travelRoute = routeService.findTravelRouteById(id);
|
||||
//如果用户显示已经关注,就是查看关注列表
|
||||
Boolean flag = routeService.isRoute(request, id);
|
||||
List<TravelRoute> top10Route = routeService.findTop10Route();
|
||||
model.addAttribute("top10Route", top10Route);
|
||||
model.addAttribute("travelRoute", travelRoute);
|
||||
model.addAttribute("flag", flag);
|
||||
return "route/travelRoute-details";
|
||||
}
|
||||
|
||||
@RequestMapping("/routeManageUI")
|
||||
public String routeManageUI(Model model, HttpServletRequest request) {
|
||||
List<UserRoute> userRouteList = routeService.getTravelRouteByUser(request);
|
||||
model.addAttribute("userRouteList", userRouteList);
|
||||
return "route/route-user-manage";
|
||||
}
|
||||
|
||||
@RequestMapping("/cancelTravelRouteReserve")
|
||||
@ResponseBody
|
||||
public Result cancelTravelRouteReserve(HttpServletRequest request, String id) {
|
||||
return routeService.cancelTravelRouteReserve(request, id);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,123 @@
|
||||
package com.power.travel.service;
|
||||
|
||||
|
||||
import com.power.travel.core.Result;
|
||||
import com.power.travel.core.ResultGenerator;
|
||||
import com.power.travel.core.ServiceException;
|
||||
import com.power.travel.model.TravelRoute;
|
||||
import com.power.travel.model.User;
|
||||
import com.power.travel.model.UserRoute;
|
||||
import com.power.travel.repository.TravelRouteRepository;
|
||||
import com.power.travel.repository.UserRepository;
|
||||
import com.power.travel.repository.UserRouteRepository;
|
||||
import com.power.travel.util.CookieUitl;
|
||||
import com.power.travel.util.IdGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.thymeleaf.util.StringUtils;
|
||||
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
public class RouteService {
|
||||
|
||||
@Autowired
|
||||
private TravelRouteRepository travelRouteRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRouteRepository userRouteRepository;
|
||||
|
||||
public Page<TravelRoute> TravelRouteListUI(String searchName, Pageable pageable) {
|
||||
//查询启用的景区游玩路线列表
|
||||
Page<TravelRoute> travelRoutePage = travelRouteRepository.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 travelRoutePage;
|
||||
}
|
||||
|
||||
public TravelRoute findTravelRouteById(String id) {
|
||||
return travelRouteRepository.findById(id).orElseThrow(() -> new ServiceException("路线id错误!"));
|
||||
}
|
||||
|
||||
public Boolean isRoute(HttpServletRequest request, String id) {
|
||||
Cookie cookie = CookieUitl.get(request, "username");
|
||||
if (cookie != null) {
|
||||
User user = userRepository.findUserByUsername(cookie.getValue());
|
||||
TravelRoute travelRoute = findTravelRouteById(id);
|
||||
UserRoute userRoute = userRouteRepository.findUserRouteByTravelRouteAndUser(travelRoute, user);
|
||||
//每个路线只能关注一次
|
||||
if (userRoute != null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result cancelTravelRouteReserve(HttpServletRequest request, String id) {
|
||||
Cookie cookie = CookieUitl.get(request, "username");
|
||||
if (cookie == null) {
|
||||
throw new ServiceException("用户没有登录!");
|
||||
}
|
||||
TravelRoute travelRoute = findTravelRouteById(id);
|
||||
User user = userRepository.findUserByUsername(cookie.getValue());
|
||||
UserRoute userRoute = userRouteRepository.findUserRouteByTravelRouteAndUser(travelRoute, user);
|
||||
//存在值就是取消预约.不存在值就是预约
|
||||
if (userRoute != null) {
|
||||
userRouteRepository.delete(userRoute);
|
||||
} else {
|
||||
UserRoute newUserRoute = new UserRoute();
|
||||
newUserRoute.setId(IdGenerator.id());
|
||||
newUserRoute.setCreateDate(new Date());
|
||||
newUserRoute.setUser(user);
|
||||
newUserRoute.setTravelRoute(travelRoute);
|
||||
userRouteRepository.saveAndFlush(newUserRoute);
|
||||
}
|
||||
return ResultGenerator.genSuccessResult();
|
||||
}
|
||||
|
||||
public List<TravelRoute> findTop10Route() {
|
||||
PageRequest pageable = PageRequest.of(0, 10);
|
||||
//查询启用的景区游玩路线列表
|
||||
Page<TravelRoute> travelRoutePage = travelRouteRepository.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 travelRoutePage.getContent();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package com.power.travel.model;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import java.util.Date;
|
||||
//定义实体类,路线信息
|
||||
@Entity
|
||||
@Table(name = "travel_route")
|
||||
public class TravelRoute {
|
||||
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
private String id;
|
||||
|
||||
@Column(name = "routeName")
|
||||
private String name;
|
||||
|
||||
@Column(name = "routeDescribe")
|
||||
private String describe;
|
||||
|
||||
@Column(name = "routeAddress")
|
||||
private String address;
|
||||
|
||||
@Column(name = "routeStatus")
|
||||
private Integer status;
|
||||
|
||||
@Column(name = "collect_number")
|
||||
private Integer collectNumber;
|
||||
|
||||
@Column(name = "createDate")
|
||||
private Date createDate;
|
||||
|
||||
@Column(name = "update_date")
|
||||
private Date updateDate;
|
||||
|
||||
public String getId() { return id; }
|
||||
|
||||
public void setId(String id) { this.id = id; }
|
||||
|
||||
public String getName() { return name; }
|
||||
|
||||
public void setName(String name) { this.name = name; }
|
||||
|
||||
public String getDescribe() { return describe; }
|
||||
|
||||
public void setDescribe(String describe) { this.describe = describe; }
|
||||
|
||||
public String getAddress() { return address; }
|
||||
|
||||
public void setAddress(String address) { this.address = address; }
|
||||
|
||||
public Integer getStatus() { return status; }
|
||||
|
||||
public void setStatus(Integer status) { this.status = status; }
|
||||
|
||||
public Integer getCollectNumber() { return collectNumber; }
|
||||
|
||||
public void setCollectNumber(Integer collectNumber) { this.collectNumber = collectNumber; }
|
||||
|
||||
public Date getCreateDate() { return createDate; }
|
||||
|
||||
public void setCreateDate(Date createDate) { this.createDate = createDate; }
|
||||
|
||||
public Date getUpdateDate() { return updateDate; }
|
||||
|
||||
public void setUpdateDate(Date updateDate) { this.updateDate = updateDate; }
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
package com.power.travel.repository;
|
||||
|
||||
import com.power.travel.model.TravelRoute;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
|
||||
public interface TravelRouteRepository extends JpaRepository<TravelRoute, String>, JpaSpecificationExecutor<TravelRoute> {
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package com.power.travel.model;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@Table(name = "user_route")
|
||||
public class UserRoute {
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
private String id;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "user_id")
|
||||
private User user;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "route_id")
|
||||
private TravelRoute travelRoute;
|
||||
|
||||
@Column(name = "create_date")
|
||||
private Date createDate;
|
||||
|
||||
public String getId() { return id; }
|
||||
|
||||
public void setId(String id) { this.id = id; }
|
||||
|
||||
public User getUser() { return user; }
|
||||
|
||||
public void setUser(User user) { this.user = user; }
|
||||
|
||||
public Date getCreateDate() { return createDate; }
|
||||
|
||||
public void setCreateDate(Date createDate) { this.createDate = createDate; }
|
||||
|
||||
public TravelRoute getTravelRoute() { return travelRoute; }
|
||||
|
||||
public void setTravelRoute(TravelRoute travelRoute) { this.travelRoute = travelRoute; }
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.power.travel.repository;
|
||||
|
||||
import com.power.travel.model.TravelRoute;
|
||||
import com.power.travel.model.User;
|
||||
import com.power.travel.model.UserRoute;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface UserRouteRepository extends JpaRepository<UserRoute, String>, JpaSpecificationExecutor<UserRoute> {
|
||||
|
||||
List<UserRoute> findUserRouteByUser(User user);
|
||||
|
||||
UserRoute findUserRouteByTravelRouteAndUser(TravelRoute travelRoute, User user);
|
||||
}
|
||||
Loading…
Reference in new issue