SSM-景点预订01

一、 查询景点列表,模糊搜索

分页显示

<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}&nbsp分</div>
										</div>
										<div class="clearfloat" style="font-size: 20px;">
											<div style="font-size: 20px; padding: 10px;">景点价格:${row.scenic_price}&nbsp元</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>

下一篇 收藏景点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值