涉及接口 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;
}
...
...
}效果展示

