소스 검색

refactor(更新) :
- `CustomSwitchStationLayer` 优化:选中项将最后绘制,以确保其显示在顶层
- `MessageBusinessManager` 新增证书更新功能:
- 增加 `MESSAGE_TYPE_UPDATE_LICENSE` 消息类型用于处理证书更新请求
- 收到证书更新消息后,会从指定路径下载证书文件
- 下载完成后,将证书文件复制到应用程序的配置目录下的 `OfflineActive.dat` 文件

周文健 1 개월 전
부모
커밋
0c5464f8a4

+ 1 - 1
app/src/main/java/com/grkj/iscs_mars/view/widget/CustomSwitchStationLayer.kt

@@ -390,7 +390,7 @@ class CustomSwitchStationLayer @JvmOverloads constructor(
             canvas.save()
 //            canvas.concat(currentMatrix)  // 地图照常缩放/旋转
 
-            val points = synchronized(dataLock) { stationList.toList() }
+            val points = synchronized(dataLock) { stationList.toList().sortedBy { it.isSelected } }
 
             // 屏幕上希望看到的半径/描边/文字大小(像素):
             val screenR = switchSize                   // e.g. 30px

+ 32 - 2
app/src/main/java/com/grkj/iscs_mars/websocket/MessageBusinessManager.kt

@@ -3,8 +3,8 @@ package com.grkj.iscs_mars.websocket
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
 import com.grkj.iscs_mars.R
-import com.grkj.iscs_mars.util.AppUtils
 import com.grkj.iscs_mars.util.CommonUtils
+import com.grkj.iscs_mars.util.FileUtil
 import com.grkj.iscs_mars.util.LzTekUtils
 import com.grkj.iscs_mars.util.SPUtils
 import com.grkj.iscs_mars.util.log.LogUtil
@@ -16,12 +16,14 @@ import com.sik.sikcore.shell.ShellUtils
 import com.sik.sikcore.thread.ThreadUtils
 import com.sik.siknet.http.httpDownloadFile
 import com.sik.siknet.http.interceptor.ProgressListener
-import kotlinx.coroutines.delay
+import java.io.File
 
 /**
  * 消息业务处理
  */
 object MessageBusinessManager {
+    private const val OFFLINE_ACTIVE_FILENAME = "OfflineActive.dat"
+
     /**
      * 消息类型,执行命令,输出结果到日志
      */
@@ -42,6 +44,11 @@ object MessageBusinessManager {
      */
     const val MESSAGE_TYPE_UPDATE_APP = "updateApp"
 
+    /**
+     * 更新证书
+     */
+    const val MESSAGE_TYPE_UPDATE_LICENSE = "updateLicense"
+
     /**
      * 基座配置
      */
@@ -136,6 +143,29 @@ object MessageBusinessManager {
                 }
             }
 
+            MESSAGE_TYPE_UPDATE_LICENSE -> {
+                val licenseDownloadPath = messageEntity.content ?: return
+                ThreadUtils.runOnIO {
+                    val downloadLicense = licenseDownloadPath.httpDownloadFile()
+                    downloadLicense?.let {
+                        LogUtil.i("下载证书完成,进行转移")
+                        val arcSoftActiveOfflineFile =
+                            File(
+                                "${
+                                    FileUtil.getRootFolder(
+                                        SIKCore.getApplication(),
+                                        5
+                                    )?.absolutePath
+                                }${FileUtil.CONFIG_DIR}${File.separator}${OFFLINE_ACTIVE_FILENAME}"
+                            )
+                        if (arcSoftActiveOfflineFile.parentFile?.exists() == false) {
+                            arcSoftActiveOfflineFile.parentFile?.mkdirs()
+                        }
+                        it.copyTo(arcSoftActiveOfflineFile, true)
+                    }
+                }
+            }
+
             MESSAGE_TYPE_DOCK_CONFIG -> {
                 val dockConfig = messageEntity.content ?: return
                 try {