riku
2025-10-31 1897c4ad5fa73b3f0a36e1aa0e1e9000302a6ace
app/src/main/java/cn/flightfeather/thirdappmodule/repository/SceneRepository.kt
@@ -1,14 +1,19 @@
package cn.flightfeather.thirdappmodule.repository
import cn.flightfeather.thirdappmodule.bean.entity.*
import cn.flightfeather.thirdappmodule.bean.vo.BaseSubScene
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailStrVo
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailVo
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.model.bean.BaseResponse
import cn.flightfeather.thirdappmodule.module.task.Division
import cn.flightfeather.thirdappmodule.repository.dao.DomainDao
import cn.flightfeather.thirdappmodule.repository.dao.SceneDao
import cn.flightfeather.thirdappmodule.util.Constant
import io.reactivex.Observable
import io.reactivex.functions.Function4
import okhttp3.ResponseBody
@@ -55,16 +60,16 @@
        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)
                            )
            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?) {
@@ -105,7 +110,7 @@
    fun putScene(scene: Scense, resultCallBack: ResultCallBack<ResponseBody>) {
        sceneDao.insert(scene)
        retrofit.create(ScenseService::class.java).putScense(scene)
                .enqueue(ResponseBodyCallBack(resultCallBack))
            .enqueue(ResponseBodyCallBack(resultCallBack))
    }
    /**
@@ -114,7 +119,7 @@
    fun updateScene(scene: Scense, resultCallBack: ResultCallBack<ResponseBody>) {
        sceneDao.update(scene)
        retrofit.create(ScenseService::class.java).updateScense(scene)
                .enqueue(ResponseBodyCallBack(resultCallBack))
            .enqueue(ResponseBodyCallBack(resultCallBack))
    }
    /**
@@ -125,6 +130,44 @@
            sceneDao.update(it)
        }
        retrofit.create(ScenseService::class.java).updateSceneList(sceneList)
                .enqueue(ResponseBodyCallBack(resultCallBack))
            .enqueue(ResponseBodyCallBack(resultCallBack))
    }
    /**
     * 获取场景详情,包含基础信息和场景特有信息
     */
    fun <T : BaseSubScene> getSceneDetail(scene: Scense, resultCallBack: ResultCallBack<SceneDetailVo<T>>) {
        val sceneService = when (scene.typeid.toString()) {
            Constant.SCENE_TYPE_SITE -> retrofit.create(ScenseService::class.java).getSceneDetail<T>(scene.guid)
            else -> retrofit.create(ScenseService::class.java).getSceneDetail<T>(scene.guid)
        }
        RetrofitFactory.executeResult(sceneService, object : ResultObserver<BaseResponse<SceneDetailVo<T>>>() {
            override fun onSuccess(result: BaseResponse<SceneDetailVo<T>>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
    /**
     * 更新场景详情
     */
    fun updateSceneDetail(vo: SceneDetailStrVo, resultCallBack: ResultCallBack<String>) {
        vo.scene ?: return
        val sceneService = retrofit.create(ScenseService::class.java).updateSceneDetail(vo.scene!!.typeid.toInt(), vo)
        RetrofitFactory.executeResult(sceneService, object : ResultObserver<BaseResponse<String>>() {
            override fun onSuccess(result: BaseResponse<String>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
}