package cn.flightfeather.thirdappmodule.repository
|
|
import cn.flightfeather.thirdappmodule.bean.entity.*
|
import cn.flightfeather.thirdappmodule.common.net.ResponseBodyCallBack
|
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
|
import cn.flightfeather.thirdappmodule.common.net.ResultObserver
|
import cn.flightfeather.thirdappmodule.common.net.RetrofitFactory
|
import cn.flightfeather.thirdappmodule.httpservice.ScenseService
|
import cn.flightfeather.thirdappmodule.module.task.Division
|
import cn.flightfeather.thirdappmodule.repository.dao.DomainDao
|
import cn.flightfeather.thirdappmodule.repository.dao.SceneDao
|
import io.reactivex.Observable
|
import io.reactivex.functions.Function4
|
import okhttp3.ResponseBody
|
import retrofit2.Response
|
|
/**
|
* @author riku
|
* Date: 2019/5/16
|
* 场景相关数据获取
|
*/
|
class SceneRepository {
|
|
private val sceneDao = SceneDao()
|
private val domainDao = DomainDao()
|
private val retrofit = RetrofitFactory.instance.retrofit
|
|
/**
|
* 获取场景信息
|
*/
|
fun getScene(sceneId: String, resultCallBack: ResultCallBack<Scense>) {
|
val dbService = sceneDao.getSceneByPrimaryKey(sceneId).map {
|
Response.success(it)
|
}
|
|
RetrofitFactory.executeResult(dbService, object : ResultObserver<Scense>() {
|
override fun onSuccess(result: Scense?) {
|
resultCallBack.onSuccess(result)
|
}
|
|
override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
|
resultCallBack.onFailure()
|
}
|
|
})
|
}
|
|
/**
|
* 获取行政区划信息
|
*/
|
fun getDivision(resultCallBack: ResultCallBack<Division>) {
|
val dbService1 = domainDao.getProvince()
|
val dbService2 = domainDao.getCity()
|
val dbService3 = domainDao.getDistrict()
|
val dbService4 = domainDao.getTown()
|
|
val zipService = Observable.zip(dbService1, dbService2, dbService3, dbService4,
|
Function4<List<Province>, List<City>, List<District>, List<Town>, Response<Division>> { t1, t2, t3, t4 ->
|
Response.success(
|
Division(
|
ArrayList(t1),
|
ArrayList(t2),
|
ArrayList(t3),
|
ArrayList(t4)
|
)
|
)
|
})
|
|
RetrofitFactory.executeResult(zipService, object : ResultObserver<Division>() {
|
override fun onSuccess(result: Division?) {
|
resultCallBack.onSuccess(result)
|
}
|
|
override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
|
resultCallBack.onFailure()
|
}
|
|
})
|
}
|
|
/**
|
* 获取场景类型
|
*/
|
fun getSceneType(resultCallBack: ResultCallBack<ArrayList<Domainitem>>) {
|
val dbService = domainDao.getSceneType().map {
|
Response.success(ArrayList(it))
|
}
|
|
RetrofitFactory.executeResult(dbService, object : ResultObserver<ArrayList<Domainitem>>() {
|
override fun onSuccess(result: ArrayList<Domainitem>?) {
|
resultCallBack.onSuccess(result)
|
}
|
|
override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
|
resultCallBack.onFailure()
|
}
|
|
|
})
|
}
|
|
/**
|
* 新增场景信息
|
*/
|
fun putScene(scene: Scense, resultCallBack: ResultCallBack<ResponseBody>) {
|
sceneDao.insert(scene)
|
retrofit.create(ScenseService::class.java).putScense(scene)
|
.enqueue(ResponseBodyCallBack(resultCallBack))
|
}
|
|
/**
|
* 更新场景信息
|
*/
|
fun updateScene(scene: Scense, resultCallBack: ResultCallBack<ResponseBody>) {
|
sceneDao.update(scene)
|
retrofit.create(ScenseService::class.java).updateScense(scene)
|
.enqueue(ResponseBodyCallBack(resultCallBack))
|
}
|
|
/**
|
* 批量更新场景信息
|
*/
|
fun updateSceneList(sceneList: ArrayList<Scense>, resultCallBack: ResultCallBack<ResponseBody>) {
|
sceneList.forEach {
|
sceneDao.update(it)
|
}
|
retrofit.create(ScenseService::class.java).updateSceneList(sceneList)
|
.enqueue(ResponseBodyCallBack(resultCallBack))
|
}
|
}
|