涉及接口 hotel.list
demo语言: Java
开发环境:
前端 jQuery类库、layui、 bootstrap
后端 jdk1.7以上、 tomcat8以上、 springmvc + spring + mybatis
web页面展示酒店列表
html输入项
创建城市输入、入离日期输入、酒店名称输入、星级选择、价格选择等输入框或按钮
<!-- 城市选择 --> <input type="text" id='selectCity' placeholder="请选择" value="北京市" class="layui-input" lay-value="0101" > <!-- 入离日期选择 --> <input id="dateSelect" readonly="readonly" class="form-control" value="2019-10-15 到 2019-10-16"> <!-- 酒店名称、位置输入 --> <input id="inputHotelOrLocation" type="text" class="form-control" placeholder="酒店名称/位置 不限"> <!-- 星级筛选 --> <div class="row search-item"> <div class="tit">星级(可多选)</div> <div class="btn-group" data-toggle="buttons" style="width: 100%"> <button id="btnStarRateDefault" name="btnStarRate" value="-1" >不限</button> <button id="btnStarRate012" name="btnStarRate" value="0,1,2" >经济/客栈</button> <button id="btnStarRate3" name="btnStarRate" value="3" >三星/舒适</button> <button id="btnStarRate4" name="btnStarRate" value="4" >四星/高档</button> <button id="btnStarRate5" name="btnStarRate" value="5" >五星/豪华</button> </div> </div>
js请求对象
构造请求url及请求数据
var url = "/api/hotel/getHotelList"; // controller路径 // 构造请求参数对象 var req = { "cityId": city, "arrivalDate": arrivalDate, "departureDate" : departureDate, "queryText": queryText, "highRate": highRate, "lowRate": lowRate, "sortType": sort, "starRate": starRate, "pageIndex" : pageIndex };
js请求后端
提交后端后返回酒店列表,并对列表结果进行处理
// 请求酒店列表 var result = ajaxCommonForJson(url, "POST", req); // 对返回结果进行展示 if (result != null && result.list != null && result.list.length > 0) { var hotelList = ""; $.each(result.list, function (i, info) { var currency = "¥ "; if (info.currencyCode == "RMB") { currency = "¥ "; } else if (info.currencyCode == "HKD") { currency = "$ "; } else if (info.currencyCode == "MOP") { currency = "$ "; } else if (info.currencyCode == "JPY") { currency = "¥"; } else if (info.currencyCode == "TWD") { currency = "$ "; } hotelList += '<div name="divHotelCard" class="list-group-item">' + '<div class="container my-hotellist">'; + '<img src="' + info.thumbnailUrl + '" />'; + '<span>' + info.hotelName + '</span><span>' + info.score +'分 <span>' + info.reviewCount + '条点评</span></span><span>' + info.starRate + '</span>'; + '<span>' + info.districtName + '/' + info.businessZoneName + '</span><span>' + currency + info.lowRate + '</span>'; + '<input style="display: none" value="' + info.hotelId +'" /></div></div>'; }); $('#divHotelList').append(hotelList); // 对每个酒店项添加点击事件 $('div[name="divHotelCard"]').click(function () { var detailUrl = '/view/hotel/detail?hotelId=' + $(this).find('div').find('input').val() + '&arrivalDate=' + $("[name='daterangepicker_start']").val() + '&departureDate=' +$("[name='daterangepicker_end']").val(); if ($('#inputUser').val() != null && $('#inputUser').val() != "" && $('#inputUser').val() != "null") { detailUrl += "&user=" + $('#inputUser').val(); } window.location.href= detailUrl; }); }
后端调用
后端通过http协议调用艺龙的hotel.list接口
public class HotelListApi { private static double version = 1.50; private static EnumLocal locale = EnumLocal.zh_CN; private static boolean isHttps = false; ... ... /** * 通过http工具类调用艺龙接口,将前端参数拼接为URL */ public HotelListResult getHotelList(HotelListCondition condition, String userName, String appKey, String secretKey) { HotelListResult result = new HotelListResult(); String url = ""; String responseData = ""; try{ BaseRequest<HotelListCondition> req = new BaseRequest<HotelListCondition>(); req.Version = version; req.Local = locale; req.Request = condition; //请求参数转换为Json字符串 String str = JsonUtil.entity2Json(req); //产生签名 long epoch = System.currentTimeMillis()/1000; String sig = Tool.md5(epoch + Tool.md5(str + appKey) + secretKey); //产生请求链接 url = "http://" + serverHost + "/rest?format=json&method=hotel.list"; url += "&user="+ userName +"×tamp="; url += epoch; url += "&signature="; url += sig; url += "&data=" + Tool.encodeUri(str); //发送请求 responseData = HttpUtil.Send("GET", url, "", "application/json"); //返回值处理 result = JsonUtil.jsonToObject(responseData, HotelListResult.class); } catch (Exception e) { log.info("[HotelListApi] 异常: " + e); log.info("发送的url: " + url); log.info("返回值: " + responseData); } return result; } ... ... }
效果展示
