酒店

状态增量更新时间:2019/11/13 17:26

涉及接口 hotel.incr.state
demo语言: Java
开发环境:
jdk1.7以上


非主线程异步轮询调用状态增量接口获取增量, 通过状态增量接口, 再次获取rp全量接口,更新产品状态信息


接口调用

后端通过http协议调用艺龙的hotel.incr.state接口
public class HotelStateIncrApi {
    private static double version = 1.50;
    private static EnumLocal locale = EnumLocal.zh_CN;
    private static boolean isHttps = false;
    ...
    ...
    
    /**
     * 通过http工具类调用艺龙接口,将前端参数拼接为URL
     */
    public StateIncrResult getStateIncr(GetStateIncrRequest condition,
        String userName, String appKey, String secretKey) {
        String url = "";
        String responseData = "";
        StateIncrResult result = new StateIncrResult();
        try{
            BaseRequest<GetStateIncrRequest> req = new BaseRequest<GetStateIncrRequest>();
            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.incr.state";
            url += "&user="+ userName +"&timestamp=";
            url += epoch;
            url += "&signature=";
            url += sig;
            url += "&data=" + Tool.encodeUri(str);
            
            //发送请求
            responseData = HttpUtil.Send("GET", url, "", "application/json");
            
            //返回值处理
            result = JsonUtil.jsonToObject(responseData, StateIncrResult.class);
        } catch (Exception e) {
            log.info("[HotelStateIncrApi] 异常: " + e);
            log.info("发送的url: " + url);
            log.info("返回值: " + responseData);
        }
        return result;
    }

    ...
    ...
}

增量任务类

增量任务轮询请求增量
// 具体实现参考订单增量


更新产品状态

根据增量更新产品状态
// 具体实现参考订单增量