一、 查询景点列表,模糊搜索
分页显示
<form id="queryFormId"
action="${pageContext.request.contextPath }/showScenicList.action">
<!-- 查询表单 -->
<div class="col-md-12">
<ul class="list-unstyled list-inline">
<li><input type="text" id="name" value="${scenic_name }"
name="name" class="form-control" placeholder="景点名称"></li>
<li class='O1'><button type="submit"
class="btn btn-primary btn-search">查询景点</button></li>
</ul>
</div>
<!-- 查询景点列表显示内容 -->
<c:forEach items="${page.rows}" var="row">
<div class="col-md-12">
<div
style="width: 100%; height: 250px; margin: 0 auto; background-color: aliceblue;">
<img src="http://localhost:8080/data/file/${row.scenic_img}"
width="40%" height="100%" alt="加载失败"
style="float: left; border-radius: 30px;">
<div class="caption"
style="height: 99%; padding: 0px; margin: 0px auto;">
<div style="padding: 10px; font-size: 16px;">景点编号:${row.scenic_id}</div>
<div style="padding: 10px; font-size: 30px;">
<a href="#" class="sname" style="color: orange;">景点名称:${row.scenic_name}</a>
</div>
<div style="padding: 10px; margin: 0px auto;">
<div style="float: left; font-size: 20px;">景点电话:${row.scenic_phone}</div>
<div style="float: right; font-size: 20px; padding: 0px;">景点评分:${row.scenic_evaluate} 分</div>
</div>
<div class="clearfloat" style="font-size: 20px;">
<div style="font-size: 20px; padding: 10px;">景点价格:${row.scenic_price} 元</div>
<div style="font-size: 20px; margin-left: 60%;">
<a href="#" class="btn btn-info" data-toggle="modal"
data-target="#scenicDetailDialog"
onclick="detailScenic(${row.scenic_id})">景点详情</a>
</div>
</div>
</div>
</div>
<br>
</div>
</c:forEach>
<div class="col-md-12" style="">
<itheima:page
url="${pageContext.request.contextPath }/showScenicList.action" />
</div>
</form>
Controller
/**
* 查询景点列表
*/
@RequestMapping("/showScenicList.action")
public String showScenicList(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5") Integer rows, String scenic_name, Model model) {
// 根据项目名条件查询所有项目
Page<AlxScenic> alxScenics = scenicService.findAlxScenicList(page, rows, scenic_name);
// 向模型中传递数据
model.addAttribute("page", alxScenics);// 查询到的项目集合用page集合表示,jsp中再通过page.rows取出每一项
model.addAttribute("scenic_name", scenic_name);// 回显查询项目名的关键字
return "../ailvxing/alx_scenic";
}
Service
public Page<AlxScenic> findAlxScenicList(Integer page, Integer rows, String scenic_name);
ServiceImpl
@Service("alxScenicService")
@Transactional
public class AlxScenicServiceImpl implements AlxScenicService {
/**
* 注入爱旅行景点预订Dao对象
*/
@Autowired
private AlxScenicDao scenicDao;
@Override
public Page<AlxScenic> findAlxScenicList(Integer page, Integer rows, String scenic_name) {
// 创建项目对象
AlxScenic alxScenic = new AlxScenic();
// 判断项目名是否为空
if (StringUtils.isNotBlank(scenic_name)) {
alxScenic.setScenic_name(scenic_name);
}
// 设置当前页
alxScenic.setStart((page - 1) * rows);
// 每页数
alxScenic.setRows(rows);
// 查询项目列表
List<AlxScenic> alxScenics = scenicDao.findAlxScenicList(alxScenic);
// 查询项目列表总记录数
Integer count = scenicDao.selectAlxScenicListCount(alxScenic);
// 创建page返回对象
Page<AlxScenic> result = new Page<AlxScenic>();
result.setPage(page);// 当前页
result.setRows(alxScenics);// 列表
result.setSize(rows);// 一行多少
result.setTotal(count);// 总记录数
// Page的result封装了分页查询的所有所需对象数据
return result;
}
}
Dao(Mapper)
// 根据景点名查询景点
public List<AlxScenic> findAlxScenicList(AlxScenic alxScenic);
// 分页,查询景点数
public Integer selectAlxScenicListCount(AlxScenic alxScenic);
Dao.xml(Mapper.xml)
<mapper namespace="com.ttms.core.dao.AlxScenicDao">
<sql id="selectAlxScenicListWhere">
<where>
<if test="scenic_name !=null">
scenic_name like "%"#{scenic_name}"%"
</if>
</where>
</sql>
<!-- 根据景点名称查询景点信息 -->
<select id="findAlxScenicList" parameterType="AlxScenic"
resultType="AlxScenic">
select
scenic_id,
scenic_name,
scenic_img,
scenic_price,
scenic_phone,
scenic_evaluate,
scenic_startDate,
scenic_endDate
from alx_scenic
<include refid="selectAlxScenicListWhere" />
<!-- 执行分页查询 -->
<if test="start !=null and rows !=null">
limit #{start},#{rows}
</if>
</select>
<!-- 根据景点名称查询景点总记录数 -->
<select id="selectAlxScenicListCount" parameterType="AlxScenic"
resultType="Integer">
select count(*) from alx_scenic
<include refid="selectAlxScenicListWhere" />
</select>
</mapper>
二、查看景点详情
弹出模态框
//查询详情
function detailScenic(scenic_id) {
$.ajax({
type:"get",
url:"<%=basePath%>getScenicById.action",
data:{"scenic_id":scenic_id},//注意这里的传过去的键值对要对应上
success:function(data) {
console.log(data);
$("#detail_scenic_id").val(data.scenic_id);
$("#detail_scenic_img").attr('src','http://localhost:8080/data/file/'+data.scenic_img)
$("#detail_scenic_name").text(data.scenic_name)
$("#detail_scenic_price").text(data.scenic_price)
$("#detail_scenic_evaluate").text(data.scenic_evaluate).attr('style','font-size:18px')
$("#detail_scenic_introduce").text(data.scenic_introduce).attr('style','font-size:18px')
$("#detail_scenic_phone").text(data.scenic_phone).attr('style','font-size:18px')
$("#detail_scenic_startDate").text(new Date(data.scenic_startDate).toLocaleDateString());
$("#detail_scenic_endDate").text(new Date(data.scenic_endDate).toLocaleDateString());
}
});
}
Controller
/**
* id查询景点详情
* @param scenic_id
* @param session
* @return
*/
@RequestMapping("/getScenicById.action")
@ResponseBody
public AlxScenic getScenicById(Integer scenic_id, HttpSession session) {
AlxScenic alxScenic = scenicService.getScenicById(scenic_id);
session.setAttribute("Service_SESSION", alxScenic);
return alxScenic;
}
Service
// id查询景点详情
public AlxScenic getScenicById(Integer scenic_id);
ServiceImpl
// id查询景点详情
@Override
public AlxScenic getScenicById(Integer scenic_id) {
AlxScenic alxScenic = scenicDao.getScenicById(scenic_id);
return alxScenic;
}
Dao
// id查询景点详情
public AlxScenic getScenicById(Integer scenic_id);
Dao.xml
<!-- 通过id查景点 -->
<select id="getScenicById" parameterType="Integer" resultType="AlxScenic">
select * from alx_scenic where scenic_id=#{scenic_id}
</select>
三、景点预定
未登录预订拦截
登录成功预订
//将该景点添加到用户预订
function reserveScenic() {
//alert($("#detail_scenic_id").val());
var scenic_id = $("#detail_scenic_id").val();
var alx_uid = '${AlxUser_Session.alx_uid }';
/* alert(scenic_id);
alert(alx_uid); */
console.log(scenic_id);
console.log(alx_uid);
$.post("<%=basePath%>alx/userReserveScenic.action",
$("#reserveScenicForm").serialize(),function(data){
if(data =="OK"){
alert("景点预订成功!");
window.location.reload();
}else{
alert("景点预订失败!");
$(window).attr("location","<%=basePath%>alxCheck.action");
<%-- window.location.href="<%=basePath%>/toAlxlogin.action"; --%>
}
});
}
Controller
/**
* 景点立即预订,向景区预定订单中添加
* @param reserveScenic
* @param session
* @return
*/
@RequestMapping("/alx/userReserveScenic.action")
@ResponseBody
public String userReserveScenic(ReserveScenic reserveScenic, HttpSession session) {
// 获取Session中的当前用户信息
AlxUser alxUser = (AlxUser) session.getAttribute("AlxUser_Session");
// 将当前用户id存储在客户对象中
reserveScenic.setAlx_uid(alxUser.getAlx_uid());
// 执行Service层中的创建方法,返回受影响的行数
int rows = scenicService.createReserveScenic(reserveScenic);
if (rows > 0) {
return "OK";
} else {
return "FAIL";
}
}
/**
* 未登录跳转
* @param model
* @return
*/
@RequestMapping("/alxCheck.action")
public String alxCheck(Model model) {
model.addAttribute("msg", "亲,请先登录!!!");
return "../ailvxing/alx_login";
}
Service
// 景点立即预订,向景区预定订单中添加
public int createReserveScenic(ReserveScenic reserveScenic);
ServiceImpl
// 景点立即预订,向景区预定订单中添加
@Override
public int createReserveScenic(ReserveScenic reserveScenic) {
return scenicDao.createReserveScenic(reserveScenic);
}
Dao
// 景点立即预订,向景区预定订单中添加
public int createReserveScenic(ReserveScenic reserveScenic);
Dao.xml
<!-- 景点立即预订,向景区预定订单中添加 -->
<insert id="createReserveScenic" parameterType="ReserveScenic">
insert into reserve_scenic(
alx_uid,
scenic_id
)
values(
#{alx_uid},
#{scenic_id}
)
</insert>
下一篇 收藏景点