فهرست منبع

feat: 增加钱包模块

DoggyZhang 4 ماه پیش
والد
کامیت
f3b170595f
28فایلهای تغییر یافته به همراه243 افزوده شده و 5 حذف شده
  1. 1 0
      app/build.gradle
  2. 7 0
      app/src/main/java/com/adealink/weparty/module/wallet/IWalletService.kt
  3. 15 0
      app/src/main/java/com/adealink/weparty/module/wallet/Router.kt
  4. 23 0
      app/src/main/java/com/adealink/weparty/module/wallet/WalletModule.kt
  5. 4 0
      app/src/main/java/com/adealink/weparty/module/wallet/listener/IWalletListener.kt
  6. 4 0
      app/src/main/java/com/adealink/weparty/module/wallet/viewmodel/IWalletViewModel.kt
  7. 1 0
      app/src/main/res/values/strings.xml
  8. 1 0
      app/src/main/resources/META-INF/services/com.adealink.frame.router.IRouterInit
  9. 4 5
      module/order/src/main/java/com/adealink/weparty/order/OrderServiceImpl.kt
  10. 0 0
      module/order/src/main/resources/META-INF/services/com.adealink.weparty.module.order.IOrderService
  11. 1 0
      module/wallet/.gitignore
  12. 56 0
      module/wallet/build.gradle
  13. 0 0
      module/wallet/consumer-rules.pro
  14. 21 0
      module/wallet/proguard-rules.pro
  15. 19 0
      module/wallet/src/main/AndroidManifest.xml
  16. 14 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/WalletServiceImpl.kt
  17. 17 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/datasource/local/WalletLocalService.kt
  18. 5 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/datasource/remote/WalletHttpService.kt
  19. 8 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/viewmodel/WalletViewModel.kt
  20. 21 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/viewmodel/WalletViewModelFactory.kt
  21. 3 0
      module/wallet/src/main/res/values-in/strings.xml
  22. 3 0
      module/wallet/src/main/res/values-zh/strings.xml
  23. 3 0
      module/wallet/src/main/res/values/attrs.xml
  24. 3 0
      module/wallet/src/main/res/values/dimens.xml
  25. 4 0
      module/wallet/src/main/res/values/ids.xml
  26. 3 0
      module/wallet/src/main/res/values/strings.xml
  27. 1 0
      module/wallet/src/main/resources/META-INF/services/com.adealink.weparty.module.wallet.IWalletService
  28. 1 0
      settings.gradle

+ 1 - 0
app/build.gradle

@@ -217,6 +217,7 @@ android {
             ':module:activity',
             ':module:setting',
             ':module:order',
+            ':module:wallet',
     ]
     buildFeatures {
         viewBinding true

+ 7 - 0
app/src/main/java/com/adealink/weparty/module/wallet/IWalletService.kt

@@ -0,0 +1,7 @@
+package com.adealink.weparty.module.wallet
+
+import com.adealink.frame.aab.IService
+
+interface IWalletService : IService<IWalletService> {
+
+}

+ 15 - 0
app/src/main/java/com/adealink/weparty/module/wallet/Router.kt

@@ -0,0 +1,15 @@
+package com.adealink.weparty.module.wallet
+
+
+interface Wallet {
+
+    interface Common {
+
+        companion object {
+            const val PATH = "/wallet"
+        }
+
+    }
+
+
+}

+ 23 - 0
app/src/main/java/com/adealink/weparty/module/wallet/WalletModule.kt

@@ -0,0 +1,23 @@
+package com.adealink.weparty.module.wallet
+
+import com.adealink.frame.aab.BaseDynamicModule
+import com.adealink.weparty.R
+
+object WalletModule : BaseDynamicModule<IWalletService>(IWalletService::class),
+    IWalletService {
+
+    override val featureName: String
+        get() = "wallet"
+
+    override val moduleNameResId: Int
+        get() = R.string.module_wallet
+
+    override fun emptyService(): IWalletService {
+        return object : IWalletService {
+
+            override fun getService(): IWalletService? {
+                return null
+            }
+        }
+    }
+}

+ 4 - 0
app/src/main/java/com/adealink/weparty/module/wallet/listener/IWalletListener.kt

@@ -0,0 +1,4 @@
+package com.adealink.weparty.module.wallet.listener
+
+interface IWalletListener {
+}

+ 4 - 0
app/src/main/java/com/adealink/weparty/module/wallet/viewmodel/IWalletViewModel.kt

@@ -0,0 +1,4 @@
+package com.adealink.weparty.module.wallet.viewmodel
+
+interface IWalletViewModel {
+}

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -8,6 +8,7 @@
     <string name="module_activity" translatable="false">activity</string>
     <string name="module_setting" translatable="false">setting</string>
     <string name="module_order" translatable="false">order</string>
+    <string name="module_wallet" translatable="false">wallet</string>
     <string name="common_create">Create</string>
     <string name="common_send">Send</string>
     <string name="common_sending">Sending</string>

+ 1 - 0
app/src/main/resources/META-INF/services/com.adealink.frame.router.IRouterInit

@@ -6,3 +6,4 @@ com.adealink.frame.router.RouterInit_module_playmate
 com.adealink.frame.router.RouterInit_module_activity
 com.adealink.frame.router.RouterInit_module_setting
 com.adealink.frame.router.RouterInit_module_order
+com.adealink.frame.router.RouterInit_module_wallet

+ 4 - 5
module/order/src/main/java/com/adealink/weparty/order/OrderServiceImpl.kt

@@ -1,14 +1,13 @@
 package com.adealink.weparty.order
 
 import com.adealink.frame.spi.RegisterService
-import com.adealink.weparty.App
-import com.adealink.weparty.module.activity.IActivityService
+import com.adealink.weparty.module.order.IOrderService
 
-@RegisterService(IActivityService::class)
-class OrderServiceImpl : IActivityService {
+@RegisterService(IOrderService::class)
+class OrderServiceImpl : IOrderService {
 
 
-    override fun getService(): IActivityService {
+    override fun getService(): IOrderService {
         return this
     }
 

+ 0 - 0
module/order/src/main/resources/META-INF/services/com.adealink.weparty.module.order.OrderService → module/order/src/main/resources/META-INF/services/com.adealink.weparty.module.order.IOrderService


+ 1 - 0
module/wallet/.gitignore

@@ -0,0 +1 @@
+/build

+ 56 - 0
module/wallet/build.gradle

@@ -0,0 +1,56 @@
+plugins {
+    id 'com.android.dynamic-feature'
+    id 'org.jetbrains.kotlin.android'
+    id 'org.jetbrains.kotlin.kapt'
+    id 'kotlin-parcelize'
+}
+
+android {
+    namespace 'com.adealink.weparty.wallet'
+    compileSdk libs.versions.compileSdk.get().toInteger()
+
+    defaultConfig {
+        minSdk libs.versions.minSdk.get().toInteger()
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments += [
+                        "room.schemaLocation"  : "$projectDir/schemas".toString(),
+                        "room.incremental"     : "true",
+                        "room.expandProjection": "true"]
+            }
+        }
+    }
+
+
+
+    buildTypes {
+        release {
+            debuggable false
+        }
+    }
+    viewBinding {
+        enabled = true
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
+    }
+
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_17.majorVersion
+    }
+}
+
+dependencies {
+    implementation project(":app")
+    //frame
+    kapt libs.frame.router.compiler
+
+    //test
+    testImplementation libs.junit
+    androidTestImplementation libs.androidx.junit
+    androidTestImplementation libs.androidx.espresso.core
+}

+ 0 - 0
module/wallet/consumer-rules.pro


+ 21 - 0
module/wallet/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 19 - 0
module/wallet/src/main/AndroidManifest.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:dist="http://schemas.android.com/apk/distribution"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="LockedOrientationActivity">
+
+    <dist:module
+        dist:instant="false"
+        dist:title="@string/module_wallet">
+        <dist:fusing dist:include="true" />
+        <dist:delivery>
+            <dist:install-time>
+                <dist:removable dist:value="true" />
+            </dist:install-time>
+        </dist:delivery>
+    </dist:module>
+
+    <application>
+    </application>
+</manifest>

+ 14 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/WalletServiceImpl.kt

@@ -0,0 +1,14 @@
+package com.adealink.weparty.wallet
+
+import com.adealink.frame.spi.RegisterService
+import com.adealink.weparty.module.wallet.IWalletService
+
+@RegisterService(IWalletService::class)
+class WalletServiceImpl : IWalletService {
+
+
+    override fun getService(): IWalletService {
+        return this
+    }
+
+}

+ 17 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/datasource/local/WalletLocalService.kt

@@ -0,0 +1,17 @@
+package com.adealink.weparty.wallet.datasource.local
+
+import android.content.Context
+import com.adealink.frame.storage.sp.TypeDelegationPrefs
+import com.adealink.frame.util.AppUtil
+import com.adealink.weparty.module.profile.ProfileModule
+
+object WalletLocalService : TypeDelegationPrefs(
+    prefs = {
+        AppUtil.appContext.getSharedPreferences("pref_wallet", Context.MODE_PRIVATE)
+    },
+    userId = {
+        ProfileModule.getMyUid()
+    }
+) {
+
+}

+ 5 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/datasource/remote/WalletHttpService.kt

@@ -0,0 +1,5 @@
+package com.adealink.weparty.wallet.datasource.remote
+
+interface WalletHttpService {
+
+}

+ 8 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/viewmodel/WalletViewModel.kt

@@ -0,0 +1,8 @@
+package com.adealink.weparty.wallet.viewmodel
+
+import com.adealink.frame.mvvm.viewmodel.BaseViewModel
+import com.adealink.weparty.module.activity.viewmodel.IActivityViewModel
+
+class WalletViewModel : BaseViewModel(), IActivityViewModel {
+
+}

+ 21 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/viewmodel/WalletViewModelFactory.kt

@@ -0,0 +1,21 @@
+package com.adealink.weparty.wallet.viewmodel
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+@Suppress("UNCHECKED_CAST")
+class WalletViewModelFactory : ViewModelProvider.NewInstanceFactory() {
+
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        return with(modelClass) {
+            when {
+                isAssignableFrom(WalletViewModel::class.java) ->
+                    WalletViewModel()
+
+                else ->
+                    throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
+            } as T
+        }
+    }
+
+}

+ 3 - 0
module/wallet/src/main/res/values-in/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/wallet/src/main/res/values-zh/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/wallet/src/main/res/values/attrs.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/wallet/src/main/res/values/dimens.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 4 - 0
module/wallet/src/main/res/values/ids.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+</resources>

+ 3 - 0
module/wallet/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 1 - 0
module/wallet/src/main/resources/META-INF/services/com.adealink.weparty.module.wallet.IWalletService

@@ -0,0 +1 @@
+com.adealink.weparty.wallet.WalletServiceImpl

+ 1 - 0
settings.gradle

@@ -98,6 +98,7 @@ include ':module:playmate'
 include ':module:activity'
 include ':module:setting'
 include ':module:order'
+include ':module:wallet'
 
 //调试frame框架
 include ':frame:network'