PaperPageFetcher.java 4.7 KB
package com.wd.layoutdataimpl.model;

import android.text.TextUtils;


import com.wd.capability.layout.page.data.IPaperPageListener;
import com.wd.capability.network.BaseObserver;
import com.wd.capability.network.bean.MetaBean;
import com.wd.common.api.RequestApi;
import com.wd.capability.network.response.BaseResponse;
import com.wd.capability.network.fetcher.BaseDataFetcher;
import com.wd.foundation.bean.paper.PaperBean;
import com.wd.foundation.bean.paper.PaperNumInforListBean;
import com.wd.foundation.bean.paper.PaperPageBean;
import com.wd.foundation.wdkit.utils.SpUtils;
import com.wd.foundation.bean.utils.TimeUtil;

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

import io.reactivex.Observable;

/**
 * @Description: 电子报专题接口请求类
 * @Author: liyub
 * @Email: liyubing@wondertek.com.cn
 * @CreateDate: 2023/6/21
 * @UpdateRemark: 更新说明
 * @Version: 1.0
 */
public class PaperPageFetcher extends BaseDataFetcher<RequestApi> {

    private static final String TAG = "PaperPageFetcher";


    private IPaperPageListener iPaperPageListener;

    public PaperPageFetcher(IPaperPageListener iPaperPageListener) {
        this.iPaperPageListener = iPaperPageListener;
    }

    /**
     * 获取电子报版本信息
     *
     * @param date 查询日期
     */
    public void getPaperTime(String date) {

        Map<String, Object> map = new HashMap<>();
        if (!TextUtils.isEmpty(date)) {
            map.put("date", date);
        }

        Observable<BaseResponse<List<PaperNumInforListBean>>> codeData = getRetrofit().paperTime(map);
        request(codeData, new BaseObserver<List<PaperNumInforListBean>>() {
            @Override
            protected void dealSpecialCode(int code, String message) {
                if (iPaperPageListener != null) {
                    iPaperPageListener.onError(code, message);
                }

            }

            @Override
            public void onSuccess(List<PaperNumInforListBean> list) {
                if (iPaperPageListener != null) {

                    iPaperPageListener.onPageNumSuccess(list, date);
                }

            }

            @Override
            public void _onError(String e) {
                if (iPaperPageListener != null) {
                    iPaperPageListener.onError(-1, e);
                }
            }
        });
    }


    /**
     * @param date      查询日期
     * @param pageNum   版本号 页面;【不填则查询所有】
     * @param pagesSize 手机页面尺寸
     */
    public void getPaperList(String date, String pageNum, String pagesSize, boolean initFlag,boolean firstPage) {

        Map<String, Object> map = new HashMap<>();
        //不是请求首版数据
        if(!firstPage){
            if (!TextUtils.isEmpty(date)) {
                map.put("date", date);
            }

            if (!TextUtils.isEmpty(pageNum)) {
                map.put("pageNum", pageNum);
            }
        }

        map.put("pagesSize", pagesSize);

        Observable<BaseResponse<PaperBean>> codeData = firstPage ? getRetrofit().firstPaperList(map) :
                getRetrofit().paperList(map);
        request(codeData, new BaseObserver<PaperBean>() {
            @Override
            protected void dealSpecialCode(int code, String message) {
                if (iPaperPageListener != null) {
                    iPaperPageListener.onError(code, message);
                }

            }

            @Override
            public void onSuccess(PaperBean list) {

            }

            @Override
            protected void onSuccess(PaperBean list, MetaBean metaBean, String msg, int code) {
                if (iPaperPageListener != null) {
                    list.setList_date(date);
                    iPaperPageListener.onSuccess(list);
                }
                //只保存最新的一页数据,就缓存一张图片,可以不需要比对MD5,每次更新
                if (metaBean != null){
                    String currentDate = TimeUtil.getCurrentDate();
                    if (initFlag || date.equals(currentDate)){
                        String md5 = metaBean.getMd5();
                        if (list.getList() != null && list.getList().size() > 0) {
                            PaperPageBean paperPageBean = list.getList().get(0);
                            String pagePic = paperPageBean.getPagePic();
                            SpUtils.savePaperTodayMd5(md5,pagePic);
                        }
                    }
                }

            }

            @Override
            public void _onError(String e) {
                if (iPaperPageListener != null) {
                    iPaperPageListener.onError(-1, e);
                }
            }
        });
    }

}