From f582db342fc8b81c6d33a5b5bf408bd4d77298ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Sat, 1 Aug 2020 16:09:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E4=BB=A5=E5=89=8D?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93=E6=93=8D=E4=BD=9C=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/panel/EventPanelModuleProvider.kt | 5 - .../module/event/panel/bean/TripRecord.kt | 25 --- .../module/event/panel/dao/TripRecordDao.kt | 48 ----- .../event/panel/dao/TripRecordDatabase.kt | 25 --- .../panel/listener/ITripRecordCallback.kt | 18 -- .../module/event/panel/util/MogoApiManager.kt | 14 -- .../event/panel/util/TripRecordDataManager.kt | 171 ------------------ 7 files changed, 306 deletions(-) delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt delete mode 100644 modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt index 6ecde57f05..6a7f5365f1 100644 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/EventPanelModuleProvider.kt @@ -11,13 +11,10 @@ import com.mogo.map.marker.IMogoMarkerClickListener import com.mogo.map.navi.IMogoNaviListener import com.mogo.service.eventpanel.IEventPanelProvider import com.mogo.service.module.IMogoModuleLifecycle -import com.mogo.service.module.IMogoModuleProvider import com.mogo.utils.logger.Logger import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME import com.zhidao.mogo.module.event.panel.EventPanelConstants.PATH_NAME import com.zhidao.mogo.module.event.panel.fragment.EventPanelFragment -import com.zhidao.mogo.module.event.panel.util.MogoApiManager -import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager /** * 事件面板provider @@ -33,8 +30,6 @@ class EventPanelModuleProvider : IEventPanelProvider { */ override fun init(context: Context) { Logger.d(MODULE_NAME, "模块初始化====") - MogoApiManager.init(context) - TripRecordDataManager.init(context) } override fun createFragment(context: Context, data: Bundle?): Fragment? { diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt deleted file mode 100644 index d2738b3b4c..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/bean/TripRecord.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.zhidao.mogo.module.event.panel.bean - -import androidx.room.Entity -import androidx.room.PrimaryKey -import com.zhidao.mogo.module.event.panel.EventPanelConstants.ROAD_EVENT_USEFUL_STATUS_UNSET - -/** - * 出行记录本地存储封装类,此类标识了数据库表名以及字段名 - * - * @author tongchenfei - */ -@Entity -data class TripRecord(@PrimaryKey(autoGenerate = false) - var id: Int, - var eventId: String = "", - var eventType: Int, - /** - * 是否有用 - * 1 - 没用 - * 2 - 有用 - * 0 - 未设置 - */ - var usefulStatus: String = ROAD_EVENT_USEFUL_STATUS_UNSET, - var entity: String = "", - var recordTime: Long = System.currentTimeMillis()) \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt deleted file mode 100644 index 23860e8534..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDao.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.zhidao.mogo.module.event.panel.dao - -import androidx.room.* -import com.zhidao.mogo.module.event.panel.bean.TripRecord - -/** - * 出行动态dao,全部使用同步方法,在线程中执行 - * - * @author tongchenfei - */ -@Dao -interface TripRecordDao { - /** - * 查询当日数据 - * @param limitTime 当日0点的时间戳 - */ - @Query(value = "SELECT * FROM TripRecord WHERE recordTime > :limitTime ORDER BY recordTime DESC") - fun queryAllTripRecord(limitTime: Long): List - - /** - * 根据事件id获取出行动态 - * - * @param eventId 事件id [com.mogo.module.common.entity.V2XRoadEventEntity.noveltyInfo.infoId] - */ - @Query(value = "SELECT * FROM TripRecord WHERE eventId = :eventId") - fun queryTripRecordByEventId(eventId: String): TripRecord? - - @Query(value = "SELECT * FROM TripRecord WHERE id = :id") - fun queryTripRecordById(id: Int): TripRecord? - - @Insert(onConflict = OnConflictStrategy.REPLACE) - fun insert(vararg tripRecord: TripRecord) - - @Update - fun update(vararg tripRecord: TripRecord) - - @Delete - fun delete(vararg tripRecord: TripRecord) - - /** - * 删除超时的数据,即当天0时以前的数据 - * 虽然注解是Query,但是目的是执行后面的sql语句,所以就不要在意这些细节了 - * - * @param limitTime 当日0点的时间戳 - */ - @Query(value = "DELETE FROM TripRecord WHERE recordTime < :limitTime") - fun deleteOvertimeTripRecord(limitTime: Long) -} \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt deleted file mode 100644 index 92dafed8a4..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/dao/TripRecordDatabase.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.zhidao.mogo.module.event.panel.dao - -import android.content.Context -import androidx.room.Database -import androidx.room.Room -import androidx.room.RoomDatabase -import com.zhidao.mogo.module.event.panel.bean.TripRecord - -@Database(entities = [TripRecord::class], version = 1, exportSchema = false) -abstract class TripRecordDatabase : RoomDatabase() { - companion object{ - private var instance:TripRecordDatabase? = null - fun getInstance(context: Context):TripRecordDatabase{ - if (instance == null) { - synchronized(TripRecordDatabase::class.java) { - if (instance == null) { - instance = Room.databaseBuilder(context, TripRecordDatabase::class.java, "TripRecordDatabase.db").build() - } - } - } - return instance!! - } - } - abstract fun getTripRecordDao():TripRecordDao -} \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt deleted file mode 100644 index 6bf2e6208e..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/listener/ITripRecordCallback.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.zhidao.mogo.module.event.panel.listener - -import com.zhidao.mogo.module.event.panel.bean.TripRecord - -/** - * 数据库异步操作数据回调 - */ -interface ITripRecordCallback { - /** - * 查询全部出行动态成功 - */ - fun queryTripRecordListSuccess(tripRecordList:List) - - /** - * 有出行动态新增或更新后,回调此接口 - */ - fun insertOrUpdateTripRecordSuccess(tripRecord:TripRecord) -} \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt deleted file mode 100644 index d4d52b3c2d..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/MogoApiManager.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.zhidao.mogo.module.event.panel.util - -import android.content.Context -import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.service.IMogoServiceApis -import com.mogo.service.MogoServicePaths - -object MogoApiManager { - lateinit var serviceApis:IMogoServiceApis - - fun init(context: Context) { - serviceApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis - } -} \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt deleted file mode 100644 index 7a373ed714..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/TripRecordDataManager.kt +++ /dev/null @@ -1,171 +0,0 @@ -package com.zhidao.mogo.module.event.panel.util - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.content.IntentFilter -import android.os.Handler -import androidx.localbroadcastmanager.content.LocalBroadcastManager -import com.mogo.module.common.entity.V2XMessageEntity -import com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.* -import com.mogo.module.common.entity.V2XRoadEventEntity -import com.mogo.utils.ThreadPoolService -import com.mogo.utils.logger.Logger -import com.mogo.utils.network.utils.GsonUtil -import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME -import com.zhidao.mogo.module.event.panel.bean.TripRecord -import com.zhidao.mogo.module.event.panel.dao.TripRecordDao -import com.zhidao.mogo.module.event.panel.dao.TripRecordDatabase -import com.zhidao.mogo.module.event.panel.listener.ITripRecordCallback -import java.util.* -import kotlin.collections.ArrayList - - -private const val BROADCAST_SCENE_EVENT_ACTION = "com.v2x.scene_local_broadcast" -private const val BROADCAST_SCENE_MODIFY_ACTION = "com.zhidao.tanlu.dataerror" - -private const val BROADCAST_SCENE_EXTRA_KEY = "V2XMessageEntity" -private const val BORADCAST_SCENE_MODIFY_EVENT_ID_KEY = "id" -private const val BROADCAST_SCENE_MODIFY_EVENT_UPDATE_TYPE_KEY = "updateType" - -/** - * 出行动态的数据管理类,由于TripRecordFragment初始化时机较晚,所以封装一个单例类,提早初始化 - */ -object TripRecordDataManager { - private lateinit var context: Context - private val sceneEventReceiver = SceneEventReceiver() - private lateinit var tripRecordDao: TripRecordDao - - private val tripRecordCallbackList = ArrayList() - - fun init(context: Context) { - this.context = context - LocalBroadcastManager.getInstance(context).registerReceiver(sceneEventReceiver, IntentFilter(BROADCAST_SCENE_EVENT_ACTION)) - context.registerReceiver(sceneEventReceiver, IntentFilter(BROADCAST_SCENE_MODIFY_ACTION)) - tripRecordDao = TripRecordDatabase.getInstance(TripRecordDataManager.context).getTripRecordDao() - } - - fun addTripRecordCallback(callback: ITripRecordCallback) { - tripRecordCallbackList.add(callback) - } - - fun removeTripRecordCallback(callback: ITripRecordCallback) { - tripRecordCallbackList.remove(callback) - } - - private val handler = Handler() - fun queryAllTripRecord() { - ThreadPoolService.singleExecute { - val limitTime = countLimitTime() - // 查询所有的出行动态 - val tripRecordList = tripRecordDao.queryAllTripRecord(limitTime) - Logger.d(MODULE_NAME, "查询所有出行动态,limitTime: $limitTime, list: $tripRecordList") - // 删除超时的出行动态 - tripRecordDao.deleteOvertimeTripRecord(limitTime) - // 切换线程回调 - handler.post { - tripRecordCallbackList.forEach { callback -> - callback.queryTripRecordListSuccess(tripRecordList) - } - } - } - } - - fun insertTripRecord(record: TripRecord) { - ThreadPoolService.singleExecute { - // 先查一下此数据是否存在 - Logger.d(MODULE_NAME, "出行动态入库===$record") - - var check = tripRecordDao.queryTripRecordById(record.id) - - if (check == null) { - Logger.d(MODULE_NAME, "数据库中不存在此数据,直接插入") - check = record - tripRecordDao.insert(record) - } else { - Logger.d(MODULE_NAME, "数据库中存在此数据,更新recordTime即可,其他参数不变") - check.recordTime = System.currentTimeMillis() - tripRecordDao.update(check) - } - // 为了防止只进不出,所以在插入新数据时,进行过期数据删除操作 - tripRecordDao.deleteOvertimeTripRecord(countLimitTime()) - // 切换线程回调 - handler.post { - tripRecordCallbackList.forEach { callback -> - callback.insertOrUpdateTripRecordSuccess(check) - } - } - } - } - - /** - * 计算约束时间,即当日0时 - */ - private fun countLimitTime(): Long { - val calendar = Calendar.getInstance() - calendar.time = Date() - calendar.set(Calendar.HOUR_OF_DAY, 0) - calendar.set(Calendar.MINUTE, 0) - calendar.set(Calendar.SECOND, 0) - return calendar.timeInMillis - } - - /** - * 处理道路事件推送,保存到本地数据库 - * 目前只处理道路事件,违章提醒,他车求助,其他事件暂不处理 - */ - private fun dealSceneMessage(type: Int, content: Any) { - if (type in arrayOf(ALERT_ROAD_WARNING, ALERT_ILLEGAL_PARK_WARNING, ALERT_SEEK_WARNING)) { - val eventId = if (type == ALERT_ROAD_WARNING) { - val event = content as V2XRoadEventEntity - event.noveltyInfo.infoId - } else { - "" - } - Logger.d(MODULE_NAME, "处理场景事件,准备插入数据库===eventId: $eventId") - insertTripRecord(TripRecord(id = content.hashCode(), eventId = eventId, eventType = type, entity = GsonUtil.jsonFromObject(content))) - } - } - - /** - * 本地数据库同步v2x传过来的纠错信息 - */ - fun syncRoadEventModifyState(eventId: String, modifyType: String) { - Logger.d(MODULE_NAME, "准备同步纠错信息: $eventId, $modifyType") - ThreadPoolService.singleExecute { - // 找出需要纠错的数据 - val willModify = tripRecordDao.queryTripRecordByEventId(eventId) - if (willModify != null) { - // 查到数据进行修改,如果查不到数据,就不做操作了 - Logger.d(MODULE_NAME, "准备修改纠错状态:$willModify") - willModify.usefulStatus = modifyType - tripRecordDao.update(willModify) - // 切线程回调 - handler.post { - tripRecordCallbackList.forEach { callback -> - callback.insertOrUpdateTripRecordSuccess(willModify) - } - } - } - } - } - - class SceneEventReceiver : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { - Logger.d(MODULE_NAME, "收到V2X事件推送===") - when (intent.action) { - BROADCAST_SCENE_EVENT_ACTION -> { - // 道路事件推送 - val message = intent.getSerializableExtra(BROADCAST_SCENE_EXTRA_KEY) as V2XMessageEntity<*> - Logger.d(MODULE_NAME, "道路事件推送 type: ${message.type}, content: ${message.content}") - dealSceneMessage(message.type, message.content) - } - BROADCAST_SCENE_MODIFY_ACTION -> { - // 纠错推送 - syncRoadEventModifyState(intent.getStringExtra(BORADCAST_SCENE_MODIFY_EVENT_ID_KEY), intent.getStringExtra(BROADCAST_SCENE_MODIFY_EVENT_UPDATE_TYPE_KEY)) - } - } - - } - } -} \ No newline at end of file