+
+}
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbDatabase.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbDatabase.kt
new file mode 100644
index 0000000000..4fade720b2
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbDatabase.kt
@@ -0,0 +1,15 @@
+package com.mogo.utils.sqlite.annotation
+
+
+/**
+ * 添加在要操作的数据对象名上面,用来设置数据库名称
+ *
+ * /**
+ * * @DbDatabase("AppSQLite.db")
+ * * class UserEntity {}
+ * */
+ * Created by donghongyu on 2019/9/6.
+ */
+@Retention(AnnotationRetention.RUNTIME)
+@Target(AnnotationTarget.CLASS)
+annotation class DbDatabase(val dbName: String)
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbField.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbField.kt
new file mode 100644
index 0000000000..cf63587d32
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbField.kt
@@ -0,0 +1,21 @@
+package com.mogo.utils.sqlite.annotation
+
+
+/**
+ * 添加在要处理的数据对象的字段之上,用来设置数据表的字段名称
+ * /**
+ * *@DbTable("tb_user")
+ * *class UserEntity {
+ * * @DbField("_id")
+ * * var id: Int = 0
+ * * @DbField("name")
+ * * var name: String? = null
+ * * @DbField("password")
+ * * var password: String? = null
+ * *}
+ * */
+ * Created by donghongyu on 2019/9/6.
+ */
+@Retention(AnnotationRetention.RUNTIME)
+@Target(AnnotationTarget.FIELD)
+annotation class DbField(val fieldName: String)
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbTable.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbTable.kt
new file mode 100644
index 0000000000..73aec8445f
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/annotation/DbTable.kt
@@ -0,0 +1,15 @@
+package com.mogo.utils.sqlite.annotation
+
+
+/**
+ * 添加在要操作的数据对象名上面,用来设置数据表名称
+ *
+ * /**
+ * * @DbTable("tb_user")
+ * * class UserEntity {}
+ * */
+ * Created by donghongyu on 2019/9/6.
+ */
+@Retention(AnnotationRetention.RUNTIME)
+@Target(AnnotationTarget.CLASS)
+annotation class DbTable(val tableName: String)
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxy.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxy.kt
new file mode 100644
index 0000000000..f48adc9f79
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxy.kt
@@ -0,0 +1,51 @@
+package com.mogo.utils.sqlite.proxy
+
+import android.database.sqlite.SQLiteDatabase
+import android.util.Log
+import com.mogo.utils.sqlite.IBaseDao
+
+/**
+ * 静态代理数据库操作类,用来记录日志
+ * Created by donghongyu on 2019/9/6.
+ */
+class BaseDaoProxy(var iBaseDao: IBaseDao) : IBaseDao by iBaseDao {
+ override fun init(sqLiteDatabase: SQLiteDatabase, entityClass: Class): Boolean {
+ Log.i("数据库代理", "初始化数据库连接……")
+ val isInitSuccess = iBaseDao.init(sqLiteDatabase, entityClass)
+ if (isInitSuccess) {
+ Log.i("数据库代理", "数据库连接成功……")
+ } else {
+ Log.e("数据库代理", "数据库连接失败……")
+ }
+ return isInitSuccess
+ }
+
+ override fun insert(entity: T): Long {
+ Log.i("数据库代理", "开始插入数据……")
+ val result = iBaseDao.insert(entity)
+ Log.i("数据库代理", "插入数据索引位置> $result <……")
+ return result
+ }
+
+ override fun delete(where: T): Int {
+ Log.i("数据库代理", "开始删除数据……")
+ val result = iBaseDao.delete(where)
+ Log.i("数据库代理", "删除了> $result <条数据……")
+ return result
+ }
+
+ override fun update(where: T, newEntity: T): Int {
+ Log.i("数据库代理", "开始更新数据……")
+ val result = iBaseDao.update(where, newEntity)
+ Log.i("数据库代理", "更新了> $result <条数据……")
+ return result
+ }
+
+ override fun query(where: T): MutableList {
+ Log.i("数据库代理", "开始查询数据……")
+ val result = iBaseDao.query(where)
+ Log.i("数据库代理", "查询到> ${result.size} <条数据……")
+ return result
+ }
+
+}
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyLog.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyLog.kt
new file mode 100644
index 0000000000..d65dd810dd
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyLog.kt
@@ -0,0 +1,50 @@
+package com.mogo.utils.sqlite.proxy
+
+import android.util.Log
+import java.lang.reflect.InvocationHandler
+import java.lang.reflect.Method
+import java.lang.reflect.Proxy
+
+/**
+ * 使用java实现动态代理数据库操作类加入日志功能
+ * Created by donghongyu on 2019/9/6.
+ */
+
+class BaseDaoProxyLog : InvocationHandler {
+
+ private var target: Any? = null
+
+ /**
+ * 绑定委托对象并返回一个【代理占位】
+ *
+ * @param target 真实对象
+ * @return 代理对象【占位】
+ */
+ fun bind(target: Any): Any {
+ this.target = target
+ //取得代理对象
+ return Proxy.newProxyInstance(
+ target.javaClass.classLoader,
+ target.javaClass.interfaces, this
+ )
+ }
+
+ /**
+ * 同过代理对象调用方法首先进入这个方法.
+ *
+ * @param proxy --代理对象
+ * @param method -- 方法,被调用方法.
+ * @param args -- 方法的参数
+ */
+ @Throws(Throwable::class)
+ override fun invoke(proxy: Any, method: Method, args: Array): Any? {
+ var result: Any? = null
+ //反射方法前调用
+ Log.i("数据库代理", "当前执行>>${method.name}")
+ //反射执行方法 相当于调用target.sayHelllo;
+ result = method.invoke(target, *args)
+ //反射方法后调用.
+ Log.i("数据库代理", "执行结果>>$result")
+ return result
+ }
+}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyShow.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyShow.kt
new file mode 100644
index 0000000000..d924191ba1
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/proxy/BaseDaoProxyShow.kt
@@ -0,0 +1,49 @@
+package com.mogo.utils.sqlite.proxy
+
+import android.util.Log
+import java.lang.reflect.InvocationHandler
+import java.lang.reflect.Method
+import java.lang.reflect.Proxy
+
+/**
+ * 使用java实现动态代理数据库操作类,加入更多额外的功能,来测试代理类的叠加功能
+ * Created by donghongyu on 2019/9/6.
+ */
+class BaseDaoProxyShow : InvocationHandler {
+
+ private var target: Any? = null
+
+ /**
+ * 绑定委托对象并返回一个【代理占位】
+ *
+ * @param target 真实对象
+ * @return 代理对象【占位】
+ */
+ fun bind(target: Any): Any {
+ this.target = target
+ //取得代理对象
+ return Proxy.newProxyInstance(
+ target.javaClass.classLoader,
+ target.javaClass.interfaces, this
+ )
+ }
+
+ /**
+ * 同过代理对象调用方法首先进入这个方法.
+ *
+ * @param proxy --代理对象
+ * @param method -- 方法,被调用方法.
+ * @param args -- 方法的参数
+ */
+ @Throws(Throwable::class)
+ override fun invoke(proxy: Any, method: Method, args: Array): Any? {
+ var result: Any? = null
+ //反射方法前调用
+ Log.i("数据库代理", "显示执行>>${method.name}")
+ //反射执行方法 相当于调用target.sayHelllo;
+ result = method.invoke(target, *args)
+ //反射方法后调用.
+ Log.i("数据库代理", "执行结果>>$result")
+ return result
+ }
+}
diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle
index 24fc77940c..20a6c6c8a5 100644
--- a/modules/mogo-module-v2x/build.gradle
+++ b/modules/mogo-module-v2x/build.gradle
@@ -52,19 +52,22 @@ dependencies {
compileOnly rootProject.ext.dependencies.androidxccorektx
compileOnly rootProject.ext.dependencies.androidxrecyclerview
- compileOnly rootProject.ext.dependencies.mogomap
- compileOnly rootProject.ext.dependencies.mogoutils
- compileOnly rootProject.ext.dependencies.mogocommons
compileOnly rootProject.ext.dependencies.mogoservice
compileOnly rootProject.ext.dependencies.mogoserviceapi
- compileOnly rootProject.ext.dependencies.modulecommon
- compileOnly rootProject.ext.dependencies.moduleservice
compileOnly rootProject.ext.dependencies.androidxappcompat
compileOnly rootProject.ext.dependencies.androidxconstraintlayout
compileOnly rootProject.ext.dependencies.arouter
compileOnly rootProject.ext.dependencies.carcallprovider
compileOnly rootProject.ext.dependencies.carcall
+ implementation project(':foudations:mogo-utils')
+ implementation project(':foudations:mogo-commons')
+ implementation project(':modules:mogo-module-map')
+ implementation project(':modules:mogo-module-common')
+ implementation project(':modules:mogo-module-search')
+ implementation project(':modules:mogo-module-service')
+
+
annotationProcessor rootProject.ext.dependencies.aroutercompiler
testImplementation 'junit:junit:4.13'
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
index fd3e901346..d3db7dc3cf 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
@@ -39,6 +39,7 @@ import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
+import com.mogo.utils.sqlite.IBaseDao;
import com.mogo.utils.storage.SharedPrefsMgr;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;