AppointmentDataFetcher.java 2.95 KB
package com.wd.layoutdataimpl.model;

import android.util.Log;


import com.wd.capability.network.BaseObserver;
import com.wd.capability.network.fetcher.BaseDataFetcher;
import com.wd.capability.network.response.BaseResponse;
import com.wd.common.api.RequestApi;
import com.wd.foundation.bean.custom.content.ContentBean;
import com.wd.foundation.bean.custom.content.ContentTypeConstant;
import com.wd.foundation.bean.response.AppointmentStatusBean;
import com.wd.foundation.wdkit.utils.PDUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;

public class AppointmentDataFetcher extends BaseDataFetcher<RequestApi> {

    private final IAppointmentListener mListener;

    public interface IAppointmentListener {
        default void onAppointmentSuccess() { };

        void onGetFailed(String error);

        void onGetAppointmentStatusSuccess(List<AppointmentStatusBean> response);
    }

    /**
     * 构造器
     *
     * @param listener 监听回调
     */
    public AppointmentDataFetcher(IAppointmentListener listener) {
        this.mListener = listener;
    }

    /**
     * 批量查询预约状态
     */
    public String getAppointmentStatus(List<ContentBean> contentBeanList) {
        //没登录不用调用
        if (!PDUtils.isLogin()) {
            return null;
        }
        boolean haveLiveData = false;
        List<Map<String, Object>> listMap = new ArrayList<>();
        for (ContentBean bean : contentBeanList) {
            if (String.valueOf(ContentTypeConstant.URL_TYPE_TWO).equals(bean.getObjectType())) {
                haveLiveData = true;
                Map<String, Object> mapT = new HashMap<>();
                mapT.put("liveId", bean.getObjectId());
                mapT.put("relationId", bean.getRelId());
                listMap.add(mapT);
            }
        }
        if(!haveLiveData){
            return  null;
        }
        RequestBody requestBody = getBody(listMap);
        Observable<BaseResponse<List<AppointmentStatusBean>>> observable = getRetrofit().getAppointmentStatusBatch(requestBody);
        request(observable, new BaseObserver<List<AppointmentStatusBean>>() {

            @Override
            protected void dealSpecialCode(int code, String message) {
                if (mListener != null) {
                    mListener.onGetFailed(message);
                }
            }

            @Override
            public void onSuccess(List<AppointmentStatusBean> response) {
                if (mListener != null) {
                    mListener.onGetAppointmentStatusSuccess(response);
                }
            }

            @Override
            public void _onError(String e) {
                if (mListener != null) {
                    Log.d("接口调用失败", e);
                    mListener.onGetFailed(e);
                }
            }
        });

        return requestBody.toString();
    }

}