Browse Source

@task: rename uploadFlag to clientId and

bai 3 năm trước cách đây
mục cha
commit
825c34d2b7

+ 9 - 3
demo/src/main/java/com/framework/app/Constants.kt

@@ -3,18 +3,24 @@ package com.framework.app
 /**
  * 测试服务器 IP
  */
-//const val testIP = "http://192.168.0.48:8876/"
 const val testIP = "http://192.168.0.48:8876/"
 
 const val test2IP = "http://192.168.0.11:8876/"
 
 const val tencentIP = "http://82.157.28.170:8876/"
 
-const val IP = tencentIP
+const val IP = testIP
+
+const val devFileServiceUrl = "http://develop.persagy.com/image-service/"
+
+const val fileServiceUrl = devFileServiceUrl
 
 const val pathDownloadMap = "adm/downloadMap?key="
 
 const val DEVICE_ID = "device_id"
 
 const val BDTP_TS = "bdtp_ts"
-const val ADM_TS = "adm_ts"
+
+const val ADM_TS = "adm_ts"
+
+const val CLIENT_ID = "client_id"

+ 38 - 4
demo/src/main/java/com/framework/app/api/Api.kt

@@ -1,8 +1,8 @@
 package com.framework.app.api
 
+import com.framework.app.http.FileDownloadInfo
 import com.framework.app.http.FileInfo
 import com.framework.app.http.FileUploadInfo
-import com.framework.app.test2IP
 import com.framework.mvvm.model.data.Model
 import com.framework.mvvm.model.vo.*
 import okhttp3.RequestBody
@@ -40,16 +40,50 @@ interface Api {
     @POST("adm/upload")
     suspend fun uploadBuilding(@Body building: UploadBuilding): Model<UploadResult>
 
+
+    @POST("adm/clientId")
+    suspend fun getClient(@Body user: User): Model<Client>
+
     /**
      * 获取文件上传接口
      */
-    @POST("http://develop.persagy.com/dmp-file/file/initSingleUpload?groupCode=BR&userId=bdtp&appId=adm&projectId=Pj000222011")
-    suspend fun getFileUploadInfo(@Body file: FileInfo): Model<FileUploadInfo>
+    @POST("http://develop.persagy.com/dmp-file/file/initSingleUpload")
+    suspend fun getFileUploadInfo(
+        @QueryMap param: Map<String, String> = mapOf(
+            "appId" to "adm",
+            "userId" to "bdtp",
+            "groupCode" to "XG",
+            "projectId" to "Pj5001120003"
+        ),
+        @Body file: FileInfo
+    ): Model<FileUploadInfo>
 
     /**
      * 上传文件
      */
-    @PUT("")
+    @PUT
     suspend fun uploadFile(@Url url: String, @Body file: RequestBody): String
+
+    /**
+     * 文件下载
+     */
+    @POST("http://develop.persagy.com/dmp-file/file/initFileDownload")
+    fun getFileDownloadInfo(
+        @QueryMap param: Map<String, String> = mapOf(
+            "appId" to "adm",
+            "userId" to "bdtp",
+            "groupCode" to "XG",
+            "projectId" to "Pj5001120003"
+        ),
+        @Body fileId: String
+    ): Model<FileDownloadInfo>
+
+    /**
+     * 返回地图
+     */
+    @GET
+    fun downloadFile(@Url url: String): String
+
+
 }
 

+ 16 - 0
demo/src/main/java/com/framework/app/http/FileDownload.kt

@@ -0,0 +1,16 @@
+package com.framework.app.http
+
+/**
+ * 文件下载信息
+ */
+data class FileDownloadInfo(
+    val id: String,
+    val fileDownloadUrl: String,  // 文件下载Url
+    val fileType: String,         // 文件类型:0 文件,1 文件夹
+    val fileName: String,         // 文件名
+    val businessId: String,
+    val fileBucket: String,
+    val fileMd5: String,
+    val fileSize: Int,
+    val groupCode: String
+)

+ 3 - 3
demo/src/main/java/com/framework/di/Di.kt

@@ -39,8 +39,8 @@ val httpModule = DI.Module("netModule") {
                 .connectTimeout(10, TimeUnit.SECONDS)
                 .readTimeout(300, TimeUnit.SECONDS)
                 .writeTimeout(300, TimeUnit.SECONDS)
-                .addInterceptor(instance<GzipRequestInterceptor>())
                 .addInterceptor(instance<HttpLoggingInterceptor>())
+                .addInterceptor(instance<GzipRequestInterceptor>())
                 .build()
         }
     }
@@ -50,10 +50,10 @@ val httpModule = DI.Module("netModule") {
         singleton {
             HttpLoggingInterceptor { message ->
                 try {
-                    LogUtil.e("OKHttp-----", message)
+                    LogUtil.d("OKHttp-----", message)
                 } catch (e: UnsupportedEncodingException) {
                     e.printStackTrace()
-                    LogUtil.e("OKHttp-----", message)
+                    LogUtil.d("OKHttp-----", message)
                 }
             }.setLevel(HttpLoggingInterceptor.Level.BODY)
         }

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

@@ -12,14 +12,13 @@ import com.google.gson.JsonElement
 data class ProjectEntity(
     @PrimaryKey val id: String,
     @ColumnInfo(name = "name") val name: String,
-    @ColumnInfo(name = "object_type") val objectType: String,
-    @ColumnInfo(name = "create_time") val createTime: String,
-    @ColumnInfo(name = "last_update") val lastUpdate: String,
-    @ColumnInfo(name = "group_code") val groupCode: String,
+    @ColumnInfo(name = "valid") val valid: Int,
+    @ColumnInfo(name = "obj_type") val objType: String?,
+    @ColumnInfo(name = "class_code") val classCode: String?,
+    @ColumnInfo(name = "group_code") val groupCode: String?,
+    @ColumnInfo(name = "grouping") val grouping: Int?,
     @ColumnInfo(name = "local_id") val localId: String?,
     @ColumnInfo(name = "local_name") val localName: String?,
-    @ColumnInfo(name = "introduction") val introduction: String?,
-    @ColumnInfo(name = "business_floor_num") val businessFloorNum: String?,
-    @ColumnInfo(name = "office_floor_num") val officeFloorNum: String?,
     @ColumnInfo(name = "infos") val infos: JsonElement? = null
-)
+)
+

+ 3 - 3
demo/src/main/java/com/framework/mvvm/model/db/entity/task/ObjectEntity.kt

@@ -17,9 +17,9 @@ import java.io.Serializable
 @Entity(tableName = "object")
 data class ObjectEntity(
     @PrimaryKey @ColumnInfo(name = "id") override val id: String,
-    @ColumnInfo(name = "project_id") override val projectId: String,
-    @ColumnInfo(name = "building_id") override val buildingId: String,
-    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "project_id") override val projectId: String?,
+    @ColumnInfo(name = "building_id") override val buildingId: String?,
+    @ColumnInfo(name = "floor_id") override val floorId: String?,
     @ColumnInfo(name = "state") override var state: Int = -1,
     @ColumnInfo(name = "valid") override var valid: Int = 1,
     @ColumnInfo(name = "ts") override val ts: Long = 0L,

+ 30 - 7
demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt

@@ -2,19 +2,19 @@ package com.framework.mvvm.model.repository
 
 import android.content.SharedPreferences
 import android.util.Log
+import androidx.core.content.edit
 import cn.hutool.core.util.IdUtil
-import com.framework.app.DEVICE_ID
+import com.framework.app.CLIENT_ID
 import com.framework.app.api.Api
 import com.framework.app.base.IRepository
+import com.framework.app.http.FileDownloadInfo
 import com.framework.app.http.FileInfo
 import com.framework.app.http.FileUploadInfo
 import com.framework.mvvm.model.data.*
 import com.framework.mvvm.model.db.AdmDatabase
 import com.framework.mvvm.model.db.entity.dict.*
 import com.framework.mvvm.model.db.entity.task.*
-import com.framework.mvvm.model.vo.AdmRequest
-import com.framework.mvvm.model.vo.Building
-import com.framework.mvvm.model.vo.UploadBuilding
+import com.framework.mvvm.model.vo.*
 import okhttp3.RequestBody
 
 class AdmRepository(
@@ -437,7 +437,7 @@ class AdmRepository(
             val areas = serveAreaDao.getAreasByBuildingId(buildingId)
                 .filter { it.state == 0 || it.state == 1 }
 
-            val deviceId = sp.getString(DEVICE_ID, "") ?: ""
+            val clientId = sp.getString(CLIENT_ID, "") ?: ""
 
             val jobId = IdUtil.simpleUUID()
 
@@ -457,7 +457,7 @@ class AdmRepository(
 
             val uploadBuilding = UploadBuilding(
                 projectId = projectId,
-                uploadFlag = deviceId,
+                clientId = clientId,
                 uploadData = building
             )
 
@@ -513,7 +513,7 @@ class AdmRepository(
      *  获取文件信息
      */
     suspend fun getFileUploadInfo(file: FileInfo): Model<FileUploadInfo> {
-        return api.getFileUploadInfo(file)
+        return api.getFileUploadInfo(file = file)
     }
 
     /**
@@ -522,4 +522,27 @@ class AdmRepository(
     suspend fun uploadFile(url: String, file: RequestBody): String {
         return api.uploadFile(url, file)
     }
+
+    /**
+     * 获取文件下载信息
+     */
+    suspend fun getFileDownloadInfo(fileId: String): Model<FileDownloadInfo> {
+        return api.getFileDownloadInfo(fileId = fileId)
+    }
+
+    /**
+     * 下载地址
+     */
+    suspend fun downloadFile(fileUrl: String): String {
+        return api.downloadFile(url = fileUrl)
+    }
+
+    /**
+     * 获取 Client
+     */
+    suspend fun getClient(user: User) {
+        val model = api.getClient(user)
+        val client = model.data
+        sp.edit { putString(CLIENT_ID, client.clientId) }
+    }
 }

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/vo/AdmRequest.kt

@@ -5,7 +5,7 @@ data class AdmRequest(
     val projectId: String = "",       // 项目Id
     val groupCode: String = "",       // 集团代码
     val buildingId: String = "",      // 建筑id
-    val uploadFlag: String = "",      // 设备唯一标识
+    val clientId: String = "",        // 客户端唯一标识
     val bdtpDownloadTs: Long = 0L,    // bdtp数据库下载同步时间戳
     val admDownloadTs: Long = 0L      // adm数据库下载同步时间戳
 )

+ 6 - 0
demo/src/main/java/com/framework/mvvm/model/vo/Client.kt

@@ -0,0 +1,6 @@
+package com.framework.mvvm.model.vo
+
+/**
+ * 存储客户端信息
+ */
+data class Client(val clientId: String)

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/vo/UploadBuilding.kt

@@ -2,6 +2,6 @@ package com.framework.mvvm.model.vo
 
 data class UploadBuilding(
     val projectId: String,
-    val uploadFlag: String,
+    val clientId: String,
     val uploadData: Building
 )

+ 6 - 0
demo/src/main/java/com/framework/mvvm/model/vo/User.kt

@@ -0,0 +1,6 @@
+package com.framework.mvvm.model.vo
+
+/**
+ * User
+ */
+data class User(val userId: String)

+ 14 - 3
demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt

@@ -15,6 +15,7 @@ import com.framework.mvvm.model.data.*
 import com.framework.mvvm.model.db.entity.task.ObjectEntity
 import com.framework.mvvm.model.repository.AdmRepository
 import com.framework.mvvm.model.vo.AdmRequest
+import com.framework.mvvm.model.vo.User
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.SharingStarted.Companion.WhileSubscribed
 import kotlinx.coroutines.flow.StateFlow
@@ -90,9 +91,9 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
                     AdmRequest(
                         userId = "bdtp",
                         projectId = building.projectId!!,
-                        groupCode = "BR",
-                        buildingId = if(isOnlyRelation) "" else building.id,
-                        uploadFlag = sp.getString(DEVICE_ID, "") ?: "",
+                        groupCode = "XG",
+                        buildingId = if (isOnlyRelation) "" else building.id,
+                        clientId = sp.getString(CLIENT_ID, "") ?: "",
                         bdtpDownloadTs = sp.getLong("${building.buildingId}.$BDTP_TS", 0L),
                         admDownloadTs = sp.getLong("${building.buildingId}.$ADM_TS", 0L)
                     )
@@ -186,4 +187,14 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
             }
         }
     }
+
+    /**
+     * 获取服务端生成的客户端Id
+     */
+    fun getClient(user: User) {
+        viewModelScope.launch {
+            repository.getClient(user)
+        }
+    }
+
 }

+ 9 - 12
demo/src/main/java/com/sybotan/android/demo/DemoApp.kt

@@ -28,25 +28,23 @@ import android.app.Application
 import android.content.Context
 import android.content.SharedPreferences
 import android.util.Log
-import androidx.core.content.edit
 import cn.hutool.core.util.IdUtil
 import com.arashivision.sdkcamera.InstaCameraSDK
 import com.arashivision.sdkmedia.InstaMediaSDK
-import com.framework.app.DEVICE_ID
+import com.framework.app.CLIENT_ID
 import com.framework.di.*
+import com.framework.mvvm.model.vo.User
+import com.framework.mvvm.mv.AdmViewModel
 import com.sybotan.android.demo.tools.AssetsUtil
 import org.kodein.di.DI
 import org.kodein.di.DIAware
 import org.kodein.di.android.x.androidXModule
 import org.kodein.di.instance
 import java.io.File
-import java.util.*
-
 
 class DemoApp : Application(), DIAware {
 
     override val di: DI by DI.lazy {
-        // import(androidCoreModule(this@DemoApp))
         import(androidXModule(this@DemoApp))
         import(databaseModule)
         import(httpModule)
@@ -56,7 +54,8 @@ class DemoApp : Application(), DIAware {
         //import(factoryModule)
     }
 
-    val sp by instance<SharedPreferences>()
+    private val sp by instance<SharedPreferences>()
+    private val mVm by instance<AdmViewModel>()
 
     companion object {
         private val TAG = DemoApp::class.java.name
@@ -90,14 +89,12 @@ class DemoApp : Application(), DIAware {
 
         // Copy sample pictures from assets to local
         copyHdrSourceFromAssets()
-        val deviceId = sp.getString(DEVICE_ID, "") ?: ""
-        if (deviceId.isEmpty()) {
-            sp.edit {
-                putString(DEVICE_ID, "${IdUtil.simpleUUID()}")
-            }
+
+        val clientId = sp.getString(CLIENT_ID, "") ?: ""
+        if (clientId.isEmpty()) {
+            mVm.getClient(User(IdUtil.simpleUUID()))
         }
 
-        return
     } // Function onCreate()
 
     private fun copyHdrSourceFromAssets() {

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

@@ -106,8 +106,8 @@ class PocActivity : BaseActivity(), DIAware {
             mVm.requestDict(
                 AdmRequest(
                     userId = "bdtp",
-                    projectId = "0",
-                    groupCode = "JD"
+                    projectId = "Pj5001120003",
+                    groupCode = "XG"
                 )
             ) {
                 val builder = AlertDialog.Builder(this)
@@ -123,8 +123,8 @@ class PocActivity : BaseActivity(), DIAware {
             mVm.requestConfig(
                 AdmRequest(
                     userId = "bdtp",
-                    projectId = "Pj0002220011",
-                    groupCode = "BR"
+                    projectId = "Pj5001120003",
+                    groupCode = "XG"
                 )
             ) {
                 val builder = AlertDialog.Builder(this)
@@ -140,8 +140,8 @@ class PocActivity : BaseActivity(), DIAware {
             mVm.requestFrame(
                 AdmRequest(
                     userId = "bdtp",
-                    projectId = "Pj0002220011",
-                    groupCode = "BR"
+                    projectId = "Pj5001120003",
+                    groupCode = "XG"
                 )
             ) {
                 val builder = AlertDialog.Builder(this)