package com.application.zhangshi_app_android.data; import androidx.annotation.NonNull; import com.android.app_base.base.model.BaseModel; import com.android.app_base.http.ResultData; import com.application.zhangshi_app_android.bean.CaptchaImageBean; import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; import com.application.zhangshi_app_android.data.source.HttpDataSource; import com.application.zhangshi_app_android.data.source.LocalDataSource; import com.application.zhangshi_app_android.data.source.http.HttpDataSourceImpl; import com.application.zhangshi_app_android.data.source.local.LocalDataSourceImpl; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.DoubleUnaryOperator; import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.Observer; import okhttp3.MultipartBody; /** * @author Ljj * @date 2023.03.01. 20:58 * @desc 数据仓库,包含网络数据和本地数据 */ public class DataRepository extends BaseModel implements HttpDataSource, LocalDataSource { private volatile static DataRepository INSTANCE = null; private final HttpDataSource mHttpDataSource; private final LocalDataSource mLocalDataSource; private DataRepository(@NonNull HttpDataSource httpDataSource, @NonNull LocalDataSource localDataSource) { this.mHttpDataSource = httpDataSource; this.mLocalDataSource = localDataSource; } public static DataRepository getInstance() { if (INSTANCE == null) { synchronized (DataRepository.class) { if (INSTANCE == null) { INSTANCE = new DataRepository(HttpDataSourceImpl.getInstance(), LocalDataSourceImpl.getInstance()); } } } return INSTANCE; } @Override public void onCleared() { HttpDataSourceImpl.destroyInstance(); LocalDataSourceImpl.destroyInstance(); INSTANCE = null; } /** * @see HttpDataSourceImpl */ /** * 获取验证码图片 */ public Observable> getCaptchaImage(){ return mHttpDataSource.getCaptchaImage(); } /** * 登录 */ public Observable> login(LoginRequestBean loginRequestBean){ return mHttpDataSource.login(loginRequestBean); } /** * 注册 */ public Observable> register(LoginRequestBean loginRequestBean){ return mHttpDataSource.register(loginRequestBean); } /** * 获取家大事记 */ @Override public Observable> getFamilyMemorabilia(Map paramsMap) { return mHttpDataSource.getFamilyMemorabilia(paramsMap); } /** * 增加家大事记 */ @Override public Observable> addFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { return mHttpDataSource.addFamilyMemorabilia(familyMemorabiliaBean); } /** * 删除家大事记 */ @Override public Observable> deleteFamilyMemorabilia(String ids) { return mHttpDataSource.deleteFamilyMemorabilia(ids); } /** * 删除家大事记 */ @Override public Observable> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { return mHttpDataSource.updateFamilyMemorabilia(familyMemorabiliaBean); } /** * 上传文件 */ public Observable> uploadFile(MultipartBody.Part file) { return mHttpDataSource.uploadFile(file); } /** * 获取家庭资产 */ public Observable> getFamilyAssets(Map paramsMap) { return mHttpDataSource.getFamilyAssets(paramsMap); } /** * 获取家庭设备 */ public Observable> getHomeDevices(Map paramsMap) { return mHttpDataSource.getHomeDevices(paramsMap); } /** * @see LocalDataSourceImpl */ }