Browse Source

@task: add request

bai 3 years ago
parent
commit
4644082677

+ 0 - 6
demo/src/main/java/com/framework/app/api/Api.kt

@@ -19,12 +19,6 @@ interface Api {
      * 获取框架数据
      */
     @POST("adm/frame")
-    suspend fun getFrame(): Model<Frame>
-
-    /**
-     * 获取框架数据
-     */
-    @POST("adm/frame")
     suspend fun getFrame(@Body request: AdmRequest): Model<Frame>
 
     /**

+ 24 - 0
demo/src/main/java/com/framework/mvvm/model/data/Http.kt

@@ -1,6 +1,30 @@
 package com.framework.mvvm.model.data
 
 /**
+ * from  获取数据
+ *  to   保存数据
+ * error 出错信息
+ */
+suspend fun <T> request(
+    from: suspend () -> Model<T>,
+    to: suspend (T) -> Unit,
+    error: ((String) -> Unit)? = null
+): Boolean {
+    var result = false
+    runCatching {
+        from()
+    }.onSuccess {
+        if (it.code == "00000") {
+            to(it.data)
+            result = true
+        }
+    }.onFailure {
+        error?.invoke(it.message ?: "you know nothing")
+    }
+    return result
+}
+
+/**
  * 发起网络请求, 封装返回结果
  *
  * @param         block : 实际请求数据的函数, 是挂起函数

+ 0 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/ProjectEntity.kt

@@ -19,7 +19,6 @@ data class ProjectEntity(
     @ColumnInfo(name = "create_time") val createTime: String,
     @ColumnInfo(name = "last_update") val lastUpdate: String,
     @ColumnInfo(name = "group_code") val groupCode: String,
-
     @ColumnInfo(name = "local_id") val localId: String?,
     @ColumnInfo(name = "local_name") val localName: String?,
     @ColumnInfo(name = "introduction") val introduction: String?,

+ 32 - 5
demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt

@@ -7,7 +7,6 @@ import com.framework.app.base.IRepository
 import com.framework.mvvm.model.data.Data
 import com.framework.mvvm.model.data.dataSource
 import com.framework.mvvm.model.data.request
-import com.framework.mvvm.model.data.toDb
 import com.framework.mvvm.model.db.AdmDatabase
 import com.framework.mvvm.model.db.entity.*
 import com.framework.mvvm.model.vo.AdmRequest
@@ -78,8 +77,34 @@ class AdmRepository(
         return db.infosConfigDao().getConfigByObjType(type)
     }
 
+    /**
+     * 请求框架数据
+     */
+    suspend fun requestFrame(request: AdmRequest) {
+        request(
+            from = { api.getFrame(request) },
+            to = { frame ->
+                println("frame: $frame")
+                val projects = frame.projects
+                val objects = frame.buildingsAndFloors
+                try {
+                    db.projectDao().insProject(projects)
+                    db.objectDao().insObjects(objects)
+                } catch (e: Exception) {
+                    Log.d("IRepository:${AdmRepository::class.simpleName}", e.message!!)
+                }
+            },
+            error = {
+                Log.d("requestFrame error: ", it)
+            }
+        )
+    }
+
+    /**
+     * 请求字典数据
+     */
     suspend fun requestDict(request: AdmRequest) {
-        toDb(
+        request(
             from = { api.getDict(request) },
             to = { define ->
 
@@ -95,7 +120,7 @@ class AdmRepository(
 
                 try {
                     db.pipeConfigDao().insConfigs(pipeConfig)
-                    db.infosConfigDao().insConfigs(infosConfig) // wu
+                    db.infosConfigDao().insConfigs(infosConfig)
                     db.configDao().insConfigs(config)
                     db.m2dEquipDao().insM2ds(m2dTypes)
                     db.relConfigDao().insConfigs(relConfig)
@@ -110,9 +135,11 @@ class AdmRepository(
         )
     }
 
-
+    /**
+     * 请求建筑数据
+     */
     suspend fun requestBuilding(request: AdmRequest) {
-        toDb(
+        request(
             from = { api.getBuilding(request) },
             to = { building ->
                 val file = building.file

+ 7 - 1
demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt

@@ -23,7 +23,7 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
             }
         }
 
-    fun requestFrame(request: AdmRequest) {
+    fun requestFrame1(request: AdmRequest) {
         _frameRequest.value = request
     }
 
@@ -39,6 +39,12 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
         }
     }
 
+    fun requestFrame(request: AdmRequest) {
+        viewModelScope.launch {
+            repository.requestFrame(request)
+        }
+    }
+
     fun requestDict(request: AdmRequest) {
         viewModelScope.launch {
             repository.requestDict(request)

+ 3 - 6
demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

@@ -43,17 +43,13 @@ class PocActivity : AppCompatActivity(), DIAware {
             startActivity<SceneActivity>()
         }
 
-        /*mVm.projects.observe(this) { data ->
-            // TODO use data todo sth
-        }
-
         mVm.requestFrame(
-            FrameRequest(
+            AdmRequest(
                 userId = "bdtp",
                 projectId = "Pj0002220002",
                 groupCode = "BR"
             )
-        )*/
+        )
 
         mVm.requestDict(
             AdmRequest(
@@ -62,6 +58,7 @@ class PocActivity : AppCompatActivity(), DIAware {
                 groupCode = "BR"
             )
         )
+
         mVm.requestBuilding(
             AdmRequest(
                 userId = "bdtp",