Bladeren bron

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/src/main/java/com/quansu/heifengwuliu/vmodel/CommentListVModel.kt
石慧云 4 jaren geleden
bovenliggende
commit
f8cae08d76
100 gewijzigde bestanden met toevoegingen van 1035 en 1054 verwijderingen
  1. 1 1
      app/proguard-rules.pro
  2. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/AboutActivity.kt
  3. 2 4
      app/src/main/java/com/quansu/heifengwuliu/activity/AreaSelectActivity.kt
  4. 4 4
      app/src/main/java/com/quansu/heifengwuliu/activity/BankActivity.kt
  5. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/BillDetailsActivity.kt
  6. 5 11
      app/src/main/java/com/quansu/heifengwuliu/activity/ComVerityActivity.kt
  7. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/EachOtherActivity.kt
  8. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/EvaluateActivity.kt
  9. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/GrabDetailsActivity.kt
  10. 2 5
      app/src/main/java/com/quansu/heifengwuliu/activity/HomeActivity.kt
  11. 2 5
      app/src/main/java/com/quansu/heifengwuliu/activity/InvoiceActivity.kt
  12. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/InvoiceTitleActivity.kt
  13. 2 3
      app/src/main/java/com/quansu/heifengwuliu/activity/LoginActivity.kt
  14. 0 3
      app/src/main/java/com/quansu/heifengwuliu/activity/MsgActivity.kt
  15. 0 3
      app/src/main/java/com/quansu/heifengwuliu/activity/OneLoginActivity.kt
  16. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/PasswordActivity.kt
  17. 4 11
      app/src/main/java/com/quansu/heifengwuliu/activity/PersonalVerityActivity.kt
  18. 4 4
      app/src/main/java/com/quansu/heifengwuliu/activity/RechargeActivity.kt
  19. 3 6
      app/src/main/java/com/quansu/heifengwuliu/activity/RegisterActivity.kt
  20. 0 4
      app/src/main/java/com/quansu/heifengwuliu/activity/SettingsActivity.kt
  21. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/SourceDetailsActivity.kt
  22. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/SplashActivity.kt
  23. 4 4
      app/src/main/java/com/quansu/heifengwuliu/activity/VehicleInfoActivity.kt
  24. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/VehicleListActivity.kt
  25. 15 18
      app/src/main/java/com/quansu/heifengwuliu/activity/WaybillDetailsActivity.kt
  26. 2 2
      app/src/main/java/com/quansu/heifengwuliu/activity/WebViewActivity.kt
  27. 2 8
      app/src/main/java/com/quansu/heifengwuliu/fragment/AddressFragment.kt
  28. 0 6
      app/src/main/java/com/quansu/heifengwuliu/fragment/MineFragment.kt
  29. 1 1
      app/src/main/java/com/quansu/heifengwuliu/fragment/OwnerSingleFragment.kt
  30. 3 3
      app/src/main/java/com/quansu/heifengwuliu/repository/LoginRepository.kt
  31. 2 2
      app/src/main/java/com/quansu/heifengwuliu/repository/OneLoginRepository.kt
  32. 3 3
      app/src/main/java/com/quansu/heifengwuliu/repository/RegisterRepository.kt
  33. 1 12
      app/src/main/java/com/quansu/heifengwuliu/repository/SearchRepository.kt
  34. 1 1
      app/src/main/java/com/quansu/heifengwuliu/repository/UserInfoRepository.kt
  35. 13 10
      app/src/main/java/com/quansu/heifengwuliu/utils/OssUtils.kt
  36. 69 87
      app/src/main/java/com/quansu/heifengwuliu/utils/net/ApiService.kt
  37. 2 2
      app/src/main/java/com/quansu/heifengwuliu/utils/net/BBDCApiService.kt
  38. 2 2
      app/src/main/java/com/quansu/heifengwuliu/utils/net/BBDCResponse.kt
  39. 19 18
      app/src/main/java/com/quansu/heifengwuliu/vmodel/AccountBillVModel.kt
  40. 5 4
      app/src/main/java/com/quansu/heifengwuliu/vmodel/AddressAddVModel.kt
  41. 5 4
      app/src/main/java/com/quansu/heifengwuliu/vmodel/AddressVModel.kt
  42. 6 5
      app/src/main/java/com/quansu/heifengwuliu/vmodel/AllOwnerVModel.kt
  43. 7 5
      app/src/main/java/com/quansu/heifengwuliu/vmodel/AreaSelectVModel.kt
  44. 5 4
      app/src/main/java/com/quansu/heifengwuliu/vmodel/BankVModel.kt
  45. 10 10
      app/src/main/java/com/quansu/heifengwuliu/vmodel/BillDetailsVModel.kt
  46. 6 7
      app/src/main/java/com/quansu/heifengwuliu/vmodel/CollectionVModel.kt
  47. 23 21
      app/src/main/java/com/quansu/heifengwuliu/vmodel/ComVerityVModel.kt
  48. 12 12
      app/src/main/java/com/quansu/heifengwuliu/vmodel/DriverOrderListVModel.kt
  49. 10 10
      app/src/main/java/com/quansu/heifengwuliu/vmodel/EachOtherVModel.kt
  50. 45 49
      app/src/main/java/com/quansu/heifengwuliu/vmodel/EvaluateVModel.kt
  51. 10 11
      app/src/main/java/com/quansu/heifengwuliu/vmodel/GrabDetailsVModel.kt
  52. 8 1
      app/src/main/java/com/quansu/heifengwuliu/vmodel/HomeVModel.kt
  53. 8 8
      app/src/main/java/com/quansu/heifengwuliu/vmodel/IndexVModel.kt
  54. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/InvoiceTitleVModel.kt
  55. 6 4
      app/src/main/java/com/quansu/heifengwuliu/vmodel/InvoiceVModel.kt
  56. 25 22
      app/src/main/java/com/quansu/heifengwuliu/vmodel/LoginVModel.kt
  57. 0 7
      app/src/main/java/com/quansu/heifengwuliu/vmodel/MainVModel.kt
  58. 12 10
      app/src/main/java/com/quansu/heifengwuliu/vmodel/MineVModel.kt
  59. 12 12
      app/src/main/java/com/quansu/heifengwuliu/vmodel/MyOwnerVModel.kt
  60. 19 17
      app/src/main/java/com/quansu/heifengwuliu/vmodel/OneLoginVModel.kt
  61. 7 5
      app/src/main/java/com/quansu/heifengwuliu/vmodel/OrderListVModel.kt
  62. 2 2
      app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerImgVModel.kt
  63. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerMoreVModel.kt
  64. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerSingleVModel.kt
  65. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/PasswordVModel.kt
  66. 8 4
      app/src/main/java/com/quansu/heifengwuliu/vmodel/PersonalVerityVModel.kt
  67. 0 21
      app/src/main/java/com/quansu/heifengwuliu/vmodel/PrivateCenterVModel.kt
  68. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/RechargeVModel.kt
  69. 12 7
      app/src/main/java/com/quansu/heifengwuliu/vmodel/RegisterVModel.kt
  70. 2 1
      app/src/main/java/com/quansu/heifengwuliu/vmodel/SearchVModel.kt
  71. 10 5
      app/src/main/java/com/quansu/heifengwuliu/vmodel/SettingsVModel.kt
  72. 44 49
      app/src/main/java/com/quansu/heifengwuliu/vmodel/SourceDetailsVModel.kt
  73. 6 5
      app/src/main/java/com/quansu/heifengwuliu/vmodel/VehicleInfoVModel.kt
  74. 7 6
      app/src/main/java/com/quansu/heifengwuliu/vmodel/VehicleListVModel.kt
  75. 98 105
      app/src/main/java/com/quansu/heifengwuliu/vmodel/WaybillDetailsVModel.kt
  76. 4 3
      app/src/main/java/com/quansu/heifengwuliu/vmodel/WithdrawalVModel.kt
  77. 0 9
      app/src/main/java/com/quansu/heifengwuliu/widget/BaseLinearLayout.java
  78. 23 57
      base/src/main/java/com/ysnows/base/base/BActivity.kt
  79. 0 4
      base/src/main/java/com/ysnows/base/base/BAdapter.kt
  80. 9 33
      base/src/main/java/com/ysnows/base/base/BFragment.kt
  81. 5 25
      base/src/main/java/com/ysnows/base/base/BRActivity.kt
  82. 5 23
      base/src/main/java/com/ysnows/base/base/BRFragment.kt
  83. 121 48
      base/src/main/java/com/ysnows/base/base/BRRepository.kt
  84. 33 13
      base/src/main/java/com/ysnows/base/base/BRViewModel.kt
  85. 116 64
      base/src/main/java/com/ysnows/base/base/BRepository.kt
  86. 2 2
      base/src/main/java/com/ysnows/base/base/BTabActivity.kt
  87. 35 12
      base/src/main/java/com/ysnows/base/base/BViewModel.kt
  88. 2 2
      base/src/main/java/com/ysnows/base/inter/IPResponse.kt
  89. 1 1
      base/src/main/java/com/ysnows/base/inter/IRepository.kt
  90. 1 1
      base/src/main/java/com/ysnows/base/inter/IViewModel.kt
  91. 1 1
      base/src/main/java/com/ysnows/base/net/IResp.kt
  92. 1 0
      base/src/main/java/com/ysnows/base/net/NetCode.java
  93. 9 10
      base/src/main/java/com/ysnows/base/net/Resp.kt
  94. 8 19
      base/src/main/java/com/ysnows/base/utils/exception/ExceptionUtils.java
  95. 2 4
      base/src/main/java/com/ysnows/base/view/BRView.kt
  96. 1 4
      base/src/main/java/com/ysnows/base/view/BView.kt
  97. 0 2
      base/src/main/java/com/ysnows/base/view/BaseView.kt
  98. 4 0
      build.gradle
  99. 11 4
      common-build.gradle
  100. 3 2
      lookimg/src/main/java/com/quansu/lookimg/ImagePagerActivity.kt

+ 1 - 1
app/proguard-rules.pro

@@ -97,7 +97,7 @@
 # ALSO REMEMBER KEEPING YOUR MODEL CLASSES
 -keep class * extends com.billy.cc.core.component.IComponent{*;}
 -keep interface * implements com.ysnows.base.ccretrofit.IRoute{*;}
--keep class * implements com.ysnows.base.net.IResponse{*;}
+-keep class * implements com.ysnows.base.net.IResp{*;}
 -keep class * implements com.ysnows.base.inter.IModel{*;}
 
 

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/AboutActivity.kt

@@ -14,8 +14,8 @@ import com.ysnows.base.utils.B
 
 open class AboutActivity : MBActivity<BViewModel<BRepository>, ActivityAboutBinding>() {
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
 
         val privatePolicyItem: QMUICommonListItemView = binding.layGroupList.createItemView(
                 null,

+ 2 - 4
app/src/main/java/com/quansu/heifengwuliu/activity/AreaSelectActivity.kt

@@ -8,10 +8,8 @@ import com.quansu.heifengwuliu.adapter.AreaSelectAdapter
 import com.quansu.heifengwuliu.base.MBRActivity
 import com.quansu.heifengwuliu.databinding.ActivityAreaselectBinding
 import com.quansu.heifengwuliu.model.AreaBean
-import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.quansu.heifengwuliu.vmodel.AreaSelectVModel
-import com.ysnows.base.net.IResponse
-import io.reactivex.Observable
+import com.ysnows.base.net.IResp
 
 //城市选择
 class AreaSelectActivity : MBRActivity<AreaSelectVModel, AreaSelectAdapter, ActivityAreaselectBinding>() {
@@ -86,7 +84,7 @@ class AreaSelectActivity : MBRActivity<AreaSelectVModel, AreaSelectAdapter, Acti
         return false
     }
 
-    override fun onListReceive(res: IResponse<*>) {
+    override fun onListReceive(res: IResp<*>) {
         super.onListReceive(res)
         if (res.empty() && type > 1) {
             val intent = Intent()

+ 4 - 4
app/src/main/java/com/quansu/heifengwuliu/activity/BankActivity.kt

@@ -19,8 +19,8 @@ import java.util.ArrayList
  */
 class BankActivity : MBActivity<BankVModel, ActivityBankBinding>(), OnUploadCallback<String> {
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getInfo()
     }
 
@@ -50,7 +50,7 @@ class BankActivity : MBActivity<BankVModel, ActivityBankBinding>(), OnUploadCall
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this,vm)
                         .setUpLoad("bank", list, this)
 
             }
@@ -63,7 +63,7 @@ class BankActivity : MBActivity<BankVModel, ActivityBankBinding>(), OnUploadCall
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("bank", list, this)
 
             return

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/BillDetailsActivity.kt

@@ -13,8 +13,8 @@ import com.quansu.heifengwuliu.vmodel.BillDetailsVModel
 class BillDetailsActivity : MBRActivity<BillDetailsVModel, BillDetailsAdapter, ActivityBilldetailsBinding>(){
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getTotalInfo()
     }
     override fun binding(): ActivityBilldetailsBinding {

+ 5 - 11
app/src/main/java/com/quansu/heifengwuliu/activity/ComVerityActivity.kt

@@ -3,24 +3,21 @@ package com.quansu.heifengwuliu.activity
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.util.Log
 import com.luck.picture.lib.PictureSelector
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.base.MBActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.databinding.ActivityComVerifyBinding
 import com.quansu.heifengwuliu.inte.OnUploadCallback
-import com.quansu.heifengwuliu.repository.ComVerifyRepository
 import com.quansu.heifengwuliu.utils.OssUtils
 import com.quansu.heifengwuliu.vmodel.ComVerityVModel
-import com.ysnows.base.base.BRepository
 import java.util.ArrayList
 
-class ComVerityActivity : MBActivity<ComVerityVModel, ActivityComVerifyBinding>() , OnUploadCallback<String> {
+class ComVerityActivity : MBActivity<ComVerityVModel, ActivityComVerifyBinding>(), OnUploadCallback<String> {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getInfo()
     }
 
@@ -36,9 +33,6 @@ class ComVerityActivity : MBActivity<ComVerityVModel, ActivityComVerifyBinding>(
         return ComVerityVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return ComVerifyRepository()
-    }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         super.onActivityResult(requestCode, resultCode, data)
@@ -54,7 +48,7 @@ class ComVerityActivity : MBActivity<ComVerityVModel, ActivityComVerifyBinding>(
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this, vm)
                         .setUpLoad("company", list, this)
 
             }
@@ -67,7 +61,7 @@ class ComVerityActivity : MBActivity<ComVerityVModel, ActivityComVerifyBinding>(
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("company", list, this)
 
             return

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/EachOtherActivity.kt

@@ -14,8 +14,8 @@ import com.quansu.heifengwuliu.vmodel.EachOtherVModel
 class EachOtherActivity: MBRActivity<EachOtherVModel, EachOtherAdapter, ActivityEachOtherBinding>() {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.order_id= intent?.extras?.getString("order_id", "")!!
 
     }

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/EvaluateActivity.kt

@@ -12,8 +12,8 @@ import com.quansu.heifengwuliu.vmodel.EvaluateVModel
 class EvaluateActivity: MBActivity<EvaluateVModel, ActivityEvaluateBinding>(){
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.order_id= intent?.extras?.getString("order_id", "")!!
         vm.url.value= intent?.extras?.getString("url", "")!!
         vm.sn.value= intent?.extras?.getString("sn", "")!!

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/GrabDetailsActivity.kt

@@ -14,8 +14,8 @@ import com.quansu.heifengwuliu.vmodel.GrabDetailsVModel
 class GrabDetailsActivity : MBActivity<GrabDetailsVModel, ActivityGrabdetailsBinding>() {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         titleBar()?.tvRight?.text = getString(R.string.share)
         titleBar()?.tvRight?.setTextColor(parseColor("#FFBC00"))
 

+ 2 - 5
app/src/main/java/com/quansu/heifengwuliu/activity/HomeActivity.kt

@@ -33,11 +33,11 @@ class HomeActivity : MBActivity<HomeVModel, ActivityHomeBinding>() {
 
     }
 
-    override fun initCreate(savedInstanceState: Bundle?) {
+    override fun init(savedInstanceState: Bundle?) {
         if (savedInstanceState != null) {
             mIndex = savedInstanceState.getInt("currTabIndex")
         }
-        super.initCreate(savedInstanceState)
+        super.init(savedInstanceState)
 
         vm.user.observe(this, Observer {
             if (null == it) {
@@ -55,9 +55,6 @@ class HomeActivity : MBActivity<HomeVModel, ActivityHomeBinding>() {
         return HomeVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return HomeRepository()
-    }
 
     override fun title(): String? {
         return null

+ 2 - 5
app/src/main/java/com/quansu/heifengwuliu/activity/InvoiceActivity.kt

@@ -10,11 +10,8 @@ import com.quansu.heifengwuliu.adapter.InvoiceAdapter
 import com.quansu.heifengwuliu.base.MBRActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.databinding.ActivityInvoiceBinding
-import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.quansu.heifengwuliu.vmodel.InvoiceVModel
-import com.ysnows.base.net.IResponse
 import com.ysnows.base.utils.UiSwitch
-import io.reactivex.Observable
 
 class InvoiceActivity : MBRActivity<InvoiceVModel, InvoiceAdapter, ActivityInvoiceBinding>() {
 
@@ -31,8 +28,8 @@ class InvoiceActivity : MBRActivity<InvoiceVModel, InvoiceAdapter, ActivityInvoi
     }
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
 
     }
 

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/InvoiceTitleActivity.kt

@@ -12,8 +12,8 @@ import com.quansu.heifengwuliu.vmodel.InvoiceTitleVModel
 class InvoiceTitleActivity : MBActivity<InvoiceTitleVModel, ActivityInvoiceTitleBinding>(){
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getInfo()
     }
     override fun vmClass(): Class<InvoiceTitleVModel> {

+ 2 - 3
app/src/main/java/com/quansu/heifengwuliu/activity/LoginActivity.kt

@@ -5,12 +5,14 @@ import com.quansu.heifengwuliu.databinding.ActivityLoginBinding
 import com.quansu.heifengwuliu.repository.LoginRepository
 import com.quansu.heifengwuliu.vmodel.LoginVModel
 import com.ysnows.base.base.BRepository
+
 class LoginActivity : MBActivity<LoginVModel, ActivityLoginBinding>() {
 
 
     override fun title(): String? {
         return null
     }
+
     override fun binding(): ActivityLoginBinding {
         return ActivityLoginBinding.inflate(layoutInflater)
     }
@@ -19,9 +21,6 @@ class LoginActivity : MBActivity<LoginVModel, ActivityLoginBinding>() {
         return LoginVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return LoginRepository()
-    }
 
     override fun transluent(): Boolean {
         return true

+ 0 - 3
app/src/main/java/com/quansu/heifengwuliu/activity/MsgActivity.kt

@@ -4,11 +4,8 @@ import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.adapter.MsgAdapter
 import com.quansu.heifengwuliu.base.MBRActivity
 import com.quansu.heifengwuliu.databinding.ActivityMsgBinding
-import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
-import io.reactivex.Observable
 
 class MsgActivity : MBRActivity<BRViewModel<BRRepository>, MsgAdapter, ActivityMsgBinding>() {
     override fun binding(): ActivityMsgBinding {

+ 0 - 3
app/src/main/java/com/quansu/heifengwuliu/activity/OneLoginActivity.kt

@@ -33,9 +33,6 @@ class OneLoginActivity : MBActivity<OneLoginVModel, ActivityOneloginBinding>() {
         return OneLoginVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return OneLoginRepository()
-    }
 
     override val isRxbus: Boolean
         get() = true

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/PasswordActivity.kt

@@ -25,8 +25,8 @@ class PasswordActivity : MBActivity<PasswordVModel, ActivityPasswordBinding>() {
 
     }
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.type.value= type
         if(type==2){
             //初始化密码输入框

+ 4 - 11
app/src/main/java/com/quansu/heifengwuliu/activity/PersonalVerityActivity.kt

@@ -3,24 +3,21 @@ package com.quansu.heifengwuliu.activity
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.util.Log
 import com.luck.picture.lib.PictureSelector
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.base.MBActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.databinding.ActivityPersonalVerifyBinding
 import com.quansu.heifengwuliu.inte.OnUploadCallback
-import com.quansu.heifengwuliu.repository.PersonalVerifyRepository
 import com.quansu.heifengwuliu.utils.OssUtils
 import com.quansu.heifengwuliu.vmodel.PersonalVerityVModel
-import com.ysnows.base.base.BRepository
 import java.util.*
 
 class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonalVerifyBinding>(), OnUploadCallback<String> {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getInfo()
     }
 
@@ -32,10 +29,6 @@ class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonal
         return PersonalVerityVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return PersonalVerifyRepository()
-    }
-
 
     override fun title(): String? {
         return getString(R.string.identity_verify)
@@ -55,7 +48,7 @@ class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonal
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this, vm)
                         .setUpLoad("idcard", list, this)
 
             }
@@ -68,7 +61,7 @@ class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonal
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("idcard", list, this)
 
             return

+ 4 - 4
app/src/main/java/com/quansu/heifengwuliu/activity/RechargeActivity.kt

@@ -19,8 +19,8 @@ import java.util.ArrayList
 class RechargeActivity: MBActivity<RechargeVModel, ActivityRechargeBinding>(), OnUploadCallback<String> {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getBankInfo()
 
     }
@@ -53,7 +53,7 @@ class RechargeActivity: MBActivity<RechargeVModel, ActivityRechargeBinding>(), O
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this, vm)
                         .setUpLoad("recharge", list, this)
 
             }
@@ -66,7 +66,7 @@ class RechargeActivity: MBActivity<RechargeVModel, ActivityRechargeBinding>(), O
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("recharge", list, this)
 
             return

+ 3 - 6
app/src/main/java/com/quansu/heifengwuliu/activity/RegisterActivity.kt

@@ -10,8 +10,8 @@ import com.ysnows.base.base.BRepository
 
 class RegisterActivity : MBActivity<RegisterVModel, ActivityRegisterBinding>() {
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.openId = intent?.extras?.getString("openid", "")
         vm.unionId = intent?.extras?.getString("unionid", "")
     }
@@ -19,7 +19,7 @@ class RegisterActivity : MBActivity<RegisterVModel, ActivityRegisterBinding>() {
     override fun listeners() {
         super.listeners()
         binding.butRegister.onClick {
-           vm.register(binding.butRegister)
+            vm.register(binding.butRegister)
         }
     }
 
@@ -36,9 +36,6 @@ class RegisterActivity : MBActivity<RegisterVModel, ActivityRegisterBinding>() {
         return RegisterVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return RegisterRepository()
-    }
     override fun transluent(): Boolean {
         return true
     }

+ 0 - 4
app/src/main/java/com/quansu/heifengwuliu/activity/SettingsActivity.kt

@@ -82,10 +82,6 @@ class SettingsActivity : MBActivity<SettingsVModel, ActivitySettingsBinding>() {
         return SettingsVModel::class.java
     }
 
-    override fun createRepository(): BRepository {
-        return UserInfoRepository()
-    }
-
     @Subscribe(tags = [Tag(ConfigRx.LOGIN)])
     fun userInfo(from: String) {
         vm.firstReq()

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/SourceDetailsActivity.kt

@@ -18,8 +18,8 @@ import com.quansu.heifengwuliu.vmodel.SourceDetailsVModel
 class SourceDetailsActivity: MBActivity<SourceDetailsVModel, ActivitySourcedetailsBinding>(){
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.again= intent?.extras?.getInt("again", 0)!!
 
         var info_id=intent?.extras?.getString("info_id", "")

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/SplashActivity.kt

@@ -24,8 +24,8 @@ class SplashActivity : MBActivity<BViewModel<BRepository>, MainGuidBinding>() {
     }
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         initPagers()
     }
 

+ 4 - 4
app/src/main/java/com/quansu/heifengwuliu/activity/VehicleInfoActivity.kt

@@ -79,8 +79,8 @@ class VehicleInfoActivity: MBActivity<VehicleInfoVModel, ActivityVehicleInfoBind
 
     }
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         vm.getInfo()
         //监听数据
         vm.info.observe(this, Observer {
@@ -157,7 +157,7 @@ class VehicleInfoActivity: MBActivity<VehicleInfoVModel, ActivityVehicleInfoBind
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this, vm)
                         .setUpLoad("car", list, this)
 
             }
@@ -170,7 +170,7 @@ class VehicleInfoActivity: MBActivity<VehicleInfoVModel, ActivityVehicleInfoBind
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("car", list, this)
 
             return

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/VehicleListActivity.kt

@@ -14,8 +14,8 @@ class VehicleListActivity : MBRActivity<VehicleListVModel, VehicleListAdapter, A
 
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         var info_id=intent?.extras?.getString("info_id", "")
         vm.info_id.value=info_id
 

+ 15 - 18
app/src/main/java/com/quansu/heifengwuliu/activity/WaybillDetailsActivity.kt

@@ -14,7 +14,7 @@ import com.quansu.heifengwuliu.inte.OnUploadCallback
 import com.quansu.heifengwuliu.model.WaybillDetails
 import com.quansu.heifengwuliu.utils.OssUtils
 import com.quansu.heifengwuliu.vmodel.WaybillDetailsVModel
-import java.util.ArrayList
+import java.util.*
 
 /**
  * 司机/货主 运单详情
@@ -30,11 +30,11 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
 
     }
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
-        vm.ll=binding.ll
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
+        vm.ll = binding.ll
 
-        vm.type.value=type
+        vm.type.value = type
         var order_id = intent?.extras?.getString("order_id", "")
 
         vm.getInfo(order_id!!)
@@ -48,15 +48,15 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
 
     }
 
-    private fun initViewPager(bean: WaybillDetails){
-        var  adapterOut= OrderInfoadapter()
-        binding.recyclerViewOut.adapter=adapterOut
-        var  outList = bean.info.send
+    private fun initViewPager(bean: WaybillDetails) {
+        var adapterOut = OrderInfoadapter()
+        binding.recyclerViewOut.adapter = adapterOut
+        var outList = bean.info.send
         adapterOut!!.addData(outList)
         //入
-        var adapterIn= OrderInfoInadapter()
-        binding.recyclerViewIn.adapter=adapterIn
-        var  inList = bean.info.receive
+        var adapterIn = OrderInfoInadapter()
+        binding.recyclerViewIn.adapter = adapterIn
+        var inList = bean.info.receive
         adapterIn!!.addData(inList)
 
     }
@@ -75,7 +75,7 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
 
     override fun onUploadSuccess(t: String) {
         val ss: Array<String> = t.split(",".toRegex()).toTypedArray()
-        vm.img.value=ss[1]
+        vm.img.value = ss[1]
 
     }
 
@@ -97,7 +97,7 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
                     list.add(path.path)
                 }
 
-                OssUtils(this)
+                OssUtils(this, vm)
                         .setUpLoad("order", list, this)
 
             }
@@ -110,7 +110,7 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
             val selectList = PictureSelector.obtainMultipleResult(data) ?: return
             val list = ArrayList<String>()
             list.add(selectList[0].path)
-            OssUtils(this)
+            OssUtils(this, vm)
                     .setUpLoad("order", list, this)
 
             return
@@ -122,9 +122,6 @@ class WaybillDetailsActivity : MBActivity<WaybillDetailsVModel, ActivityWaybilld
         }
 
 
-
-
-
     }
 
 

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/WebViewActivity.kt

@@ -10,8 +10,8 @@ import com.ysnows.base.base.BViewModel
 
 open class WebViewActivity : MBActivity<BViewModel<BRepository>, ActivityWebviewBinding>() {
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
 
         binding.webView.webViewClient = MyWebViewClient()
         val settings = binding.webView.settings

+ 2 - 8
app/src/main/java/com/quansu/heifengwuliu/fragment/AddressFragment.kt

@@ -6,23 +6,17 @@ import android.os.Bundle
 import android.text.TextUtils
 import android.view.LayoutInflater
 import android.view.ViewGroup
-import android.view.inputmethod.EditorInfo
-import android.widget.TextView.OnEditorActionListener
 import androidx.recyclerview.widget.LinearLayoutManager
-import com.qmuiteam.qmui.kotlin.onClick
 import com.quansu.heifengwuliu.activity.AddressAddActivity
 import com.quansu.heifengwuliu.adapter.AddressAdapter
 import com.quansu.heifengwuliu.base.MBRFragment
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.databinding.FragmentAddressBinding
 import com.quansu.heifengwuliu.model.AddressBean
-import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.quansu.heifengwuliu.vmodel.AddressVModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.B
 import com.ysnows.base.utils.UiSwitch
-import io.reactivex.Observable
-import kotlinx.android.synthetic.main.widget_search.view.*
 import java.util.*
 
 //发货 -卸货地址
@@ -85,7 +79,7 @@ class AddressFragment : MBRFragment<AddressVModel, AddressAdapter, FragmentAddre
     }
 
 
-    override fun onListReceive(res: IResponse<*>) {
+    override fun onListReceive(res: IResp<*>) {
         super.onListReceive(res)
         if (null != res) {
             sideBarData.clear()

+ 0 - 6
app/src/main/java/com/quansu/heifengwuliu/fragment/MineFragment.kt

@@ -25,10 +25,4 @@ class MineFragment : MBFragment<MineVModel, FragmentMineBinding>() {
     override fun vmClass(): Class<MineVModel> {
         return MineVModel::class.java
     }
-
-    override fun createRepository(): BRepository {
-        return MineRepository()
-    }
-
-
 }

+ 1 - 1
app/src/main/java/com/quansu/heifengwuliu/fragment/OwnerSingleFragment.kt

@@ -574,7 +574,7 @@ class OwnerSingleFragment : MBFragment<OwnerSingleVModel, FragmentOwnersingleBin
 
     private fun choseMap() {
 
-        AndPermission.with(repository().context)
+        AndPermission.with(context)
                 .runtime()
                 .permission(Permission.ACCESS_COARSE_LOCATION,
                         Permission.ACCESS_FINE_LOCATION,

+ 3 - 3
app/src/main/java/com/quansu/heifengwuliu/repository/LoginRepository.kt

@@ -28,7 +28,7 @@ class LoginRepository : BRepository() {
             return
         }
 
-        lreq(NetEngine.service.login(mobile, passWord))
+        rxLreq(NetEngine.service.login(mobile, passWord))
                 .doOnNext() {
                     if (it.ok(true)) {
                         var bean: LoginBean =it.data() as LoginBean;
@@ -56,7 +56,7 @@ class LoginRepository : BRepository() {
             toast(R.string.please_input_code)
             return
         }
-        lreq(NetEngine.service.smsLogin(mobile, code))
+        rxLreq(NetEngine.service.smsLogin(mobile, code))
                 .doOnNext() {
                     if (it.ok(true)) {
                         var bean: LoginBean =it.data() as LoginBean;
@@ -100,7 +100,7 @@ class LoginRepository : BRepository() {
     @SuppressLint("CheckResult")
     fun simLogin(mobile:String,type: String) {
 
-        lreq(NetEngine.service.simlRegister(mobile,type))
+        rxLreq(NetEngine.service.simlRegister(mobile,type))
                 .doOnNext{
                     if (it.ok(true)) {
                         var bean: LoginBean =it.data() as LoginBean;

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/repository/OneLoginRepository.kt

@@ -15,7 +15,7 @@ class OneLoginRepository : BRepository() {
     @SuppressLint("CheckResult")
     fun login(code: String) {
 
-        lreq(NetEngine.service.wxLogin(code))
+        rxLreq(NetEngine.service.wxLogin(code))
                 .doOnError() {
                     it.printStackTrace()
                 }
@@ -46,7 +46,7 @@ class OneLoginRepository : BRepository() {
     @SuppressLint("CheckResult")
     fun simLogin(mobile: String, type: String) {
 
-        lreq(NetEngine.service.simlRegister(mobile, type))
+        rxLreq(NetEngine.service.simlRegister(mobile, type))
                 .doOnNext {
                     if (it.ok(true)) {
                         var bean: LoginBean = it.data() as LoginBean;

+ 3 - 3
app/src/main/java/com/quansu/heifengwuliu/repository/RegisterRepository.kt

@@ -7,7 +7,7 @@ import com.quansu.heifengwuliu.activity.HomeActivity
 import com.quansu.heifengwuliu.config.ConfigRx
 import com.quansu.heifengwuliu.model.LoginBean
 import com.quansu.heifengwuliu.utils.net.NetEngine
-import com.quansu.heifengwuliu.utils.net.Response
+import com.ysnows.base.net.Resp
 import com.tencent.mmkv.MMKV
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.utils.UiSwitch
@@ -16,7 +16,7 @@ import io.reactivex.Observable
 class RegisterRepository : BRepository() {
 
 
-    fun register(name: String?, mobile: String?, code: String?, type: String?, open_id: String? = null, unionid: String? = null): Observable<Response<Any>>? {
+    fun register(name: String?, mobile: String?, code: String?, type: String?, open_id: String? = null, unionid: String? = null): Observable<Resp<Any>>? {
         if (name.isNullOrEmpty()) {
             toast(R.string.please_input_user_name)
             return null
@@ -31,7 +31,7 @@ class RegisterRepository : BRepository() {
         }
 
         return Observable.create { emitter ->
-            lreq(NetEngine.service.register(name, mobile, code, type, open_id,unionId = unionid))
+            rxLreq(NetEngine.service.register(name, mobile, code, type, open_id,unionId = unionid))
                     .doOnNext() {
                         if (it.ok(true)) {
                             var bean: LoginBean = it.data() as LoginBean;

+ 1 - 12
app/src/main/java/com/quansu/heifengwuliu/repository/SearchRepository.kt

@@ -1,22 +1,11 @@
 package com.quansu.heifengwuliu.repository
 
 import com.quansu.heifengwuliu.utils.net.NetEngine
-import com.quansu.heifengwuliu.utils.net.Response
+import com.ysnows.base.net.Resp
 import com.ysnows.base.base.BRepository
 import io.reactivex.Observable
 
 class SearchRepository : BRepository() {
 
-    fun addTodo(kw: String): Observable<Response<Any>> {
-        return Observable.create { emitter ->
-            req(NetEngine.service.addTodo(kw))
-                    .doOnNext() {
-                        toast(it.msg())
-                        emitter.onNext(it)
-                    }
-                    .subscribe()
-        }
-    }
-
 
 }

+ 1 - 1
app/src/main/java/com/quansu/heifengwuliu/repository/UserInfoRepository.kt

@@ -9,7 +9,7 @@ open class UserInfoRepository : BRepository() {
 
     fun getUserInfo(): Observable<User> {
         return Observable.create { emitter ->
-            req(NetEngine.service.getUser())
+            rxReq(NetEngine.service.getUser())
                     .doOnNext() {
                         if (it.ok()) {
                             it.data()?.let { user ->

+ 13 - 10
app/src/main/java/com/quansu/heifengwuliu/utils/OssUtils.kt

@@ -9,6 +9,9 @@ import com.quansu.heifengwuliu.inte.OnUploadCallback
 import com.quansu.heifengwuliu.model.ImageSign
 import com.quansu.heifengwuliu.model.KeyType
 import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.quansu.heifengwuliu.vmodel.BankVModel
+import com.ysnows.base.base.BRepository
+import com.ysnows.base.base.BViewModel
 import com.ysnows.base.dialog.QMUIProgressDialog
 import com.ysnows.base.view.BView
 import com.zhy.http.okhttp.OkHttpUtils
@@ -22,7 +25,7 @@ import java.util.regex.Pattern
  *Created by shihuiyun
  *on 2020/9/16
  */
-class OssUtils(var bView: BView) {
+class OssUtils(var bView: BView, val vm: BViewModel<*>) {
 
     /**
      * 获取sign
@@ -31,11 +34,10 @@ class OssUtils(var bView: BView) {
      */
     fun getSign(type: String, onCall: OnCall<ImageSign>) {
 
-        bView.repository()!!.lreq(NetEngine.service.getSignedUrl(type))
-                .doOnNext(){
+        vm.repository().rxLreq(NetEngine.service.getSignedUrl(type))
+                .doOnNext() {
                     onCall.onCall(it.data()!!)
                 }.subscribe()
-
     }
 
     /**
@@ -51,8 +53,8 @@ class OssUtils(var bView: BView) {
     }
 
 
-    var key=""
-    fun setUpLoad(type: String,urls: ArrayList<String>,onUploadListener:OnUploadCallback<String>){
+    var key = ""
+    fun setUpLoad(type: String, urls: ArrayList<String>, onUploadListener: OnUploadCallback<String>) {
         key = ""
         val size = intArrayOf(urls.size)
         if (size[0] <= 0) return
@@ -89,9 +91,9 @@ class OssUtils(var bView: BView) {
 
 
                     val fileName = name //文件名
-                    Log.e("-shy-", "fileName=: "+fileName )
+                    Log.e("-shy-", "fileName=: " + fileName)
 
-                    Log.e("-shy-", "request=: "+Gson().toJson(request) )
+                    Log.e("-shy-", "request=: " + Gson().toJson(request))
 
                     val requestCall = OkHttpUtils.post()
                             .url(imageSign.host)
@@ -110,6 +112,7 @@ class OssUtils(var bView: BView) {
                                 qmuiProgressDialog[0]!!.dismiss()
                             }
                         }
+
                         override fun onResponse(response: String, id: Int) {
                             //地址
                             onUploadListener.onUploadSuccess(arr[id]!!.key + "," + imageSign.host + "/" + arr[id]!!.key)
@@ -124,7 +127,7 @@ class OssUtils(var bView: BView) {
             }
         })
 
-     }
+    }
 
 
-    }
+}

+ 69 - 87
app/src/main/java/com/quansu/heifengwuliu/utils/net/ApiService.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.utils.net
 
 import com.quansu.heifengwuliu.model.*
+import com.ysnows.base.net.Resp
 import io.reactivex.Observable
 import retrofit2.http.*
 import java.util.*
@@ -13,49 +14,49 @@ interface ApiService {
 
     @POST("task/save")
     @FormUrlEncoded
-    fun addTodo(@Field("title") title: String?): Observable<Response<Any>>
+    fun addTodo(@Field("title") title: String?): Observable<Resp<Any>>
 
     @POST("alipay/order_info")
     @FormUrlEncoded
-    fun alipayPreOrder(@Field("vip_level") vip_level: Int): Observable<Response<String>>
+    fun alipayPreOrder(@Field("vip_level") vip_level: Int): Observable<Resp<String>>
 
 
     @GET("task/ls")
-    fun taskList(@Query("action") action: String?, @Query("page") page: Int): Observable<Response<List<Todo>>>
+    fun taskList(@Query("action") action: String?, @Query("page") page: Int): Observable<Resp<List<Todo>>>
 
 
     @POST("bac")
     @FormUrlEncoded
-    fun bac(@Field("settings") settings: String?, @Field("funcs") funcsJson: String?, @Field("searchs") searchJson: String?, @Field("gesture") gestureJson: String?): Observable<Response<String>>
+    fun bac(@Field("settings") settings: String?, @Field("funcs") funcsJson: String?, @Field("searchs") searchJson: String?, @Field("gesture") gestureJson: String?): Observable<Resp<String>>
 
     @POST("task/save")
     @FormUrlEncoded
-    fun taskSave(@Field("id") id: Int, @FieldMap params: HashMap<String?, Any?>?): Observable<Response<String>>
+    fun taskSave(@Field("id") id: Int, @FieldMap params: HashMap<String?, Any?>?): Observable<Resp<String>>
 
     @POST("task/checked")
     @FormUrlEncoded
-    fun taskChecked(@Field("id") id: Int): Observable<Response<Any>>
+    fun taskChecked(@Field("id") id: Int): Observable<Resp<Any>>
 
 
     @GET("user/logout")
-    fun logout(): Observable<Response<Any>>
+    fun logout(): Observable<Resp<Any>>
 
     @GET("order/submmit")
-    fun order_submmit(): Observable<Response<String>>
+    fun order_submmit(): Observable<Resp<String>>
 
     @POST("order/active")
     @FormUrlEncoded
-    fun active(@Field("code") code: String?): Observable<Response<Any>>
+    fun active(@Field("code") code: String?): Observable<Resp<Any>>
 
     @GET("func/getFuncIcon")
-    fun getFuncIcon(@Query("host") host: String?): Observable<Response<String>>
+    fun getFuncIcon(@Query("host") host: String?): Observable<Resp<String>>
 
 //    ------------
 
 
     @POST("api/common/getOssSign")
     @FormUrlEncoded
-    fun getSignedUrl(@Field("type") type: String?): Observable<Response<ImageSign>>
+    fun getSignedUrl(@Field("type") type: String?): Observable<Resp<ImageSign>>
 
 
     /**
@@ -65,7 +66,7 @@ interface ApiService {
      */
     @POST("api/index/loginSms")
     @FormUrlEncoded
-    fun getRegisterCode(@Field("mobile") mobile: String?): Observable<Response<SendSmsBean>>
+    fun getRegisterCode(@Field("mobile") mobile: String?): Observable<Resp<SendSmsBean>>
 
 
     /**
@@ -75,7 +76,7 @@ interface ApiService {
      */
     @POST("api/index/sendSms")
     @FormUrlEncoded
-    fun getRegisterSms(@Field("mobile") mobile: String?): Observable<Response<SendSmsBean>>
+    fun getRegisterSms(@Field("mobile") mobile: String?): Observable<Resp<SendSmsBean>>
 
 
     /**
@@ -85,7 +86,7 @@ interface ApiService {
      */
     @POST("api/index/jiguangLogin")
     @FormUrlEncoded
-    fun jiguangLogin(@Field("loginToken") loginToken: String): Observable<Response<LoginBean>>
+    fun jiguangLogin(@Field("loginToken") loginToken: String): Observable<Resp<LoginBean>>
 
     /**
      * 注册
@@ -96,7 +97,7 @@ interface ApiService {
     @POST("api/index/register")
     @FormUrlEncoded
     fun register(@Field("name") name: String?, @Field("mobile") mobile: String?, @Field("code") code: String?,
-                 @Field("type") type: String?, @Field("openid") openid: String? = null, @Field("unionid") unionId: String? = null): Observable<Response<LoginBean>>
+                 @Field("type") type: String?, @Field("openid") openid: String? = null, @Field("unionid") unionId: String? = null): Observable<Resp<LoginBean>>
 
 
     /**
@@ -106,7 +107,7 @@ interface ApiService {
      */
     @POST("api/index/pwdLogin")
     @FormUrlEncoded
-    fun login(@Field("mobile") mobile: String?, @Field("pwd") pwd: String?): Observable<Response<LoginBean>>
+    fun login(@Field("mobile") mobile: String?, @Field("pwd") pwd: String?): Observable<Resp<LoginBean>>
 
     /**
      *短信登录
@@ -115,7 +116,7 @@ interface ApiService {
      */
     @POST("api/index/smslogin")
     @FormUrlEncoded
-    fun smsLogin(@Field("mobile") mobile: String?, @Field("code") code: String?): Observable<Response<LoginBean>>
+    fun smsLogin(@Field("mobile") mobile: String?, @Field("code") code: String?): Observable<Resp<LoginBean>>
 
     /**
      *微信登录
@@ -124,7 +125,7 @@ interface ApiService {
      */
     @POST("api/index/wxLogin")
     @FormUrlEncoded
-    fun wxLogin(@Field("code") code: String?): Observable<Response<LoginBean>>
+    fun wxLogin(@Field("code") code: String?): Observable<Resp<LoginBean>>
 
 
     /**
@@ -134,22 +135,22 @@ interface ApiService {
      */
     @POST("api/index/siml_register")
     @FormUrlEncoded
-    fun simlRegister(@Field("mobile") mobile: String?, @Field("type") type: String?): Observable<Response<LoginBean>>
+    fun simlRegister(@Field("mobile") mobile: String?, @Field("type") type: String?): Observable<Resp<LoginBean>>
 
     /**
      * 用户信息
      * @return
      */
     @GET("api/user/getuserinfo")
-    fun getUser(): Observable<Response<User>>
+    fun getUser(): Observable<Resp<User>>
 
     /**
      * 地址列表
      * @return
      */
     @GET("api/address/addressList")
-    fun addressList(@Query("type") type: String?,
-                    @Query("k") k: String, @Query("p") p: Int): Observable<Response<List<AddressBean>>>
+    suspend fun addressList(@Query("type") type: String?,
+                            @Query("k") k: String, @Query("p") p: Int): Resp<List<AddressBean>>
 
 
     /**
@@ -157,7 +158,7 @@ interface ApiService {
      * @return
      */
     @GET("api/common/getArea")
-    fun getArea(@Query("code") code: String?, @Query("page") page: Int): Observable<Response<List<AreaBean>>>
+    suspend fun getArea(@Query("code") code: String?, @Query("page") page: Int): Resp<List<AreaBean>>
 
 
     /**
@@ -172,7 +173,7 @@ interface ApiService {
                     @Field("city") city: String?, @Field("area") area: String?,
                     @Field("address") address: String?, @Field("name") name: String?,
                     @Field("mobile") mobile: String?, @Field("type") type: String?,
-                    @Field("is_default") is_default: String?): Observable<Response<Any>>
+                    @Field("is_default") is_default: String?): Observable<Resp<Any>>
 
 
     /**
@@ -180,7 +181,7 @@ interface ApiService {
      * @return
      */
     @GET("api/address/addressGet")
-    fun getAddress(@Query("addr_id") addr_id: String?): Observable<Response<AddressDetailsBean>>
+    fun getAddress(@Query("addr_id") addr_id: String?): Observable<Resp<AddressDetailsBean>>
 
 
     /**
@@ -188,15 +189,14 @@ interface ApiService {
      * @return
      */
     @GET("api/address/addressDel")
-    fun setAddressDel(@Query("addr_id") addr_id: String?): Observable<Response<Any>>
+    fun setAddressDel(@Query("addr_id") addr_id: String?): Observable<Resp<Any>>
 
     /**
      * 货源详情-货主端
      * @return
      */
     @GET("api/info/infoGet")
-    fun infoGet(@Query("info_id") info_id: String?): Observable<Response<DataInfoBean>>
-
+    fun infoGet(@Query("info_id") info_id: String?): Observable<Resp<DataInfoBean>>
 
 
     /**
@@ -204,8 +204,7 @@ interface ApiService {
      * @return
      */
     @GET("api/info/orderGet")
-    fun orderGet(@Query("order_id") order_id: String?): Observable<Response<WaybillDetails>>
-
+    fun orderGet(@Query("order_id") order_id: String?): Observable<Resp<WaybillDetails>>
 
 
     /**
@@ -225,7 +224,7 @@ interface ApiService {
                  @Field("data") data: String?,
                  @Field("send") send: String?,
                  @Field("receive") receive: String?
-    ): Observable<Response<InfoEditBean>>
+    ): Observable<Resp<InfoEditBean>>
 
 
     /**
@@ -234,7 +233,7 @@ interface ApiService {
      */
     @POST("api/info/infoPay")
     @FormUrlEncoded
-    fun infoGetPay(@Field("info_id") info_id: String?, @Field("pay_pwd") pay_pwd: String?): Observable<Response<Any>>
+    fun infoGetPay(@Field("info_id") info_id: String?, @Field("pay_pwd") pay_pwd: String?): Observable<Resp<Any>>
 
 
     /**
@@ -242,14 +241,14 @@ interface ApiService {
      * @return
      */
     @GET("api/info/infoCancel")
-    fun infoCancel(@Query("info_id") info_id: String?): Observable<Response<Any>>
+    fun infoCancel(@Query("info_id") info_id: String?): Observable<Resp<Any>>
 
     /**
      * 货源列表
      * @return
      */
     @GET("api/info/infoList")
-    fun infoList(@Query("info_state") info_state: String?, @Query("p") p: Int): Observable<Response<List<InfoListBean>>>
+    suspend fun infoList(@Query("info_state") info_state: String?, @Query("p") p: Int): Resp<List<InfoListBean>>
 
 
     /**
@@ -257,7 +256,7 @@ interface ApiService {
      * @return
      */
     @GET("api/driver/myDriver")
-    fun myDriver(@Query("k") k: String?, @Query("p") p: Int): Observable<Response<List<DriverBean>>>
+    suspend fun myDriver(@Query("k") k: String?, @Query("p") p: Int): Resp<List<DriverBean>>
 
 
     /**
@@ -265,7 +264,7 @@ interface ApiService {
      * @return
      */
     @GET("api/driver/allDriver")
-    fun allDriver(@Query("k") k: String?, @Query("p") p: Int): Observable<Response<List<DriverBean>>>
+    fun allDriver(@Query("k") k: String?, @Query("p") p: Int): Observable<Resp<List<DriverBean>>>
 
     /**
      * 常用司机-添加收藏
@@ -273,7 +272,7 @@ interface ApiService {
      */
     @POST("api/driver/setDriver")
     @FormUrlEncoded
-    fun setDriver(@Field("arr") arr: String): Observable<Response<Any>>
+    fun setDriver(@Field("arr") arr: String): Observable<Resp<Any>>
 
 
     /**
@@ -284,7 +283,7 @@ interface ApiService {
     @FormUrlEncoded
     fun setInfo(@Field("idcard_z") idcard_z: String?, @Field("idcard_f") idcard_f: String?,
                 @Field("name") name: String?, @Field("idcard") idcard: String?
-    ): Observable<Response<Any>>
+    ): Observable<Resp<Any>>
 
     /**
      * 银行卡信息-保存
@@ -294,8 +293,7 @@ interface ApiService {
     @FormUrlEncoded
     fun setCardBank(@Field("name") name: String?, @Field("number") number: String?,
                     @Field("bank") bank: String?, @Field("kbank") kbank: String?,
-                    @Field("image") image: String?): Observable<Response<Any>>
-
+                    @Field("image") image: String?): Observable<Resp<Any>>
 
 
     /**
@@ -303,7 +301,7 @@ interface ApiService {
      * @return
      */
     @GET("api/user/getInfo")
-    fun getInfo(@Query("type") type: String?): Observable<Response<InfoBean>>
+    fun getInfo(@Query("type") type: String?): Observable<Resp<InfoBean>>
 
 
     /**
@@ -314,8 +312,7 @@ interface ApiService {
     @FormUrlEncoded
     fun setCompany(@Field("license_img") license_img: String?, @Field("license_sn") license_sn: String?,
                    @Field("company_name") company_name: String?
-    ): Observable<Response<Any>>
-
+    ): Observable<Resp<Any>>
 
 
     /**
@@ -336,12 +333,7 @@ interface ApiService {
                @Field("organization") organization: String?, @Field("reg_date") reg_date: String?,
                @Field("cert_date") cert_date: String?, @Field("driver_org") driver_org: String?,
                @Field("start_date") start_date: String?, @Field("end_date") end_date: String?
-    ): Observable<Response<Any>>
-
-
-
-
-
+    ): Observable<Resp<Any>>
 
 
     /**
@@ -351,7 +343,7 @@ interface ApiService {
     @POST("api/user/setPwd")
     @FormUrlEncoded
     fun setPwd(@Field("oldpwd") oldpwd: String?, @Field("newpwd") newpwd: String?,
-               @Field("type") type: String?): Observable<Response<Any>>
+               @Field("type") type: String?): Observable<Resp<Any>>
 
 
     /**
@@ -361,10 +353,10 @@ interface ApiService {
     @POST("api/invoice/invoiceEdit")
     @FormUrlEncoded
     fun invoiceEdit(@Field("invoice_id") invoice_id: String?, @Field("company") company: String?,
-                @Field("sn") sn: String?, @Field("addr") addr: String?,
+                    @Field("sn") sn: String?, @Field("addr") addr: String?,
                     @Field("tel") tel: String?, @Field("bank") bank: String?,
-                   @Field("number") number: String?
-    ): Observable<Response<Any>>
+                    @Field("number") number: String?
+    ): Observable<Resp<Any>>
 
 
     /**
@@ -372,8 +364,7 @@ interface ApiService {
      * @return
      */
     @GET("api/invoice/invoiceGet")
-    fun invoiceGet(): Observable<Response<Invoice>>
-
+    fun invoiceGet(): Observable<Resp<Invoice>>
 
 
     /**
@@ -381,8 +372,7 @@ interface ApiService {
      * @return
      */
     @GET("api/invoice/invoiceList")
-    fun invoiceList(@Query("p") p: Int): Observable<Response<ArrayList<Invoice>>>
-
+    suspend fun invoiceList(@Query("p") p: Int): Resp<ArrayList<Invoice>>
 
 
     /**
@@ -390,8 +380,7 @@ interface ApiService {
      * @return
      */
     @GET("api/order/infoList")
-    fun infoListDriver(@Query("k") k: String?, @Query("p") p: Int): Observable<Response<List<InfoListBean>>>
-
+    suspend fun infoListDriver(@Query("k") k: String?, @Query("p") p: Int): Resp<List<InfoListBean>>
 
 
     /**
@@ -399,7 +388,7 @@ interface ApiService {
      * @return
      */
     @GET("api/order/infoGet")
-    fun infoGetDriver(@Query("info_id") info_id: String?): Observable<Response<DataInfoBean>>
+    fun infoGetDriver(@Query("info_id") info_id: String?): Observable<Resp<DataInfoBean>>
 
 
     /**
@@ -407,8 +396,7 @@ interface ApiService {
      * @return
      */
     @GET("api/info/orderGet")
-    fun orderGetDriver(@Query("order_id") order_id: String?): Observable<Response<WaybillDetails>>
-
+    fun orderGetDriver(@Query("order_id") order_id: String?): Observable<Resp<WaybillDetails>>
 
 
     /**
@@ -416,8 +404,7 @@ interface ApiService {
      * @return
      */
     @GET("api/order/getInfo")
-    fun getInfoDriver(@Query("info_id") info_id: String?): Observable<Response<Any>>
-
+    fun getInfoDriver(@Query("info_id") info_id: String?): Observable<Resp<Any>>
 
 
     /**
@@ -425,7 +412,7 @@ interface ApiService {
      * @return
      */
     @GET("api/order/myList")
-    fun myList(@Query("order_state") order_state: String?, @Query("p") p: Int): Observable<Response<List<InfoListBean>>>
+    suspend fun myList(@Query("order_state") order_state: String?, @Query("p") p: Int): Resp<List<InfoListBean>>
 
 
     /**
@@ -434,7 +421,7 @@ interface ApiService {
      */
     @FormUrlEncoded
     @POST("api/order/setStatus")
-    fun setStatus( @FieldMap params: HashMap<String, String>): Observable<Response<Any>>
+    fun setStatus(@FieldMap params: HashMap<String, String>): Observable<Resp<Any>>
 
 
     /**
@@ -442,7 +429,7 @@ interface ApiService {
      * @return
      */
     @GET("api/wxocr/cv_idcard")
-    fun cvIdcard(@Query("img") img: String?): Observable<Response<Idcard>>
+    fun cvIdcard(@Query("img") img: String?): Observable<Resp<Idcard>>
 
 
     /**
@@ -450,7 +437,7 @@ interface ApiService {
      * @return
      */
     @GET("api/wxocr/cv_businessLicense")
-    fun cvBusinessLicense(@Query("img") img: String?): Observable<Response<Business>>
+    fun cvBusinessLicense(@Query("img") img: String?): Observable<Resp<Business>>
 
 
     /**
@@ -458,7 +445,7 @@ interface ApiService {
      * @return
      */
     @GET("api/wxocr/cv_bankCard")
-    fun cvBankCard(@Query("img") img: String?): Observable<Response<BankCard>>
+    fun cvBankCard(@Query("img") img: String?): Observable<Resp<BankCard>>
 
 
     /**
@@ -466,14 +453,14 @@ interface ApiService {
      * @return
      */
     @GET("api/wxocr/cv_vehicle")
-    fun cvVehicle(@Query("img") img: String?): Observable<Response<CvVehicle>>
+    fun cvVehicle(@Query("img") img: String?): Observable<Resp<CvVehicle>>
 
     /**
      * 识别行驶证-OCR
      * @return
      */
     @GET("api/wxocr/cv_driving")
-    fun cvDriving(@Query("img") img: String?): Observable<Response<CvDriving>>
+    fun cvDriving(@Query("img") img: String?): Observable<Resp<CvDriving>>
 
 
     /**
@@ -481,7 +468,7 @@ interface ApiService {
      * @return
      */
     @GET("api/amount/amountCount")
-    fun amountCount(): Observable<Response<AmountCount>>
+    fun amountCount(): Observable<Resp<AmountCount>>
 
 
     /**
@@ -489,9 +476,7 @@ interface ApiService {
      * @return
      */
     @GET("api/amount/amountList")
-    fun amountList(@Query("type") type: String,@Query("status") status: String, @Query("p") p: Int): Observable<Response<List<AmountList>>>
-
-
+    suspend fun amountList(@Query("type") type: String, @Query("status") status: String, @Query("p") p: Int): Resp<List<AmountList>>
 
     /**
      * 资金提现-资金
@@ -500,17 +485,16 @@ interface ApiService {
     @POST("api/amount/withdraw")
     @FormUrlEncoded
     fun withdraw(@Field("money") money: String?, @Field("name") name: String?,
-                   @Field("bank") bank: String?, @Field("kbank") kbank: String?,
+                 @Field("bank") bank: String?, @Field("kbank") kbank: String?,
                  @Field("number") number: String?
-    ): Observable<Response<Any>>
+    ): Observable<Resp<Any>>
 
     /**
      *明细列表统计-资金
      * @return
      */
     @GET("api/amount/amountTotal")
-    fun amountTotal(@Query("type") type: String,@Query("status") status: String, @Query("p") p: Int): Observable<Response<AmountCount>>
-
+    fun amountTotal(@Query("type") type: String, @Query("status") status: String, @Query("p") p: Int): Observable<Resp<AmountCount>>
 
 
     /**
@@ -518,7 +502,7 @@ interface ApiService {
      * @return
      */
     @GET("api/amount/getCard")
-    fun getCard(): Observable<Response<Card>>
+    fun getCard(): Observable<Resp<Card>>
 
 
     /**
@@ -529,7 +513,7 @@ interface ApiService {
     @FormUrlEncoded
     fun amountAdd(@Field("money") money: String?,
                   @Field("pic") pic: String?
-    ): Observable<Response<Any>>
+    ): Observable<Resp<Any>>
 
 
     /**
@@ -537,9 +521,7 @@ interface ApiService {
      * @return
      */
     @GET("api/info/carList")
-    fun carList(@Query("info_id") info_id: String?, @Query("p") p: Int): Observable<Response<List<DriverBean>>>
-
-
+    suspend fun carList(@Query("info_id") info_id: String?, @Query("p") p: Int): Resp<List<DriverBean>>
 
 
     /**
@@ -548,7 +530,7 @@ interface ApiService {
      */
     @POST("api/info/carPay")
     @FormUrlEncoded
-    fun carPay(@Field("money") money: String?,@Field("order_id") order_id: String?, @Field("pay_pwd") pay_pwd: String?): Observable<Response<Any>>
+    fun carPay(@Field("money") money: String?,@Field("order_id") order_id: String?, @Field("pay_pwd") pay_pwd: String?): Observable<Resp<Any>>
 
 
 
@@ -560,7 +542,7 @@ interface ApiService {
     @FormUrlEncoded
     fun eva(@Field("order_id") order_id: String?, @Field("score") score: String?,
                     @Field("content") content: String?
-    ): Observable<Response<Any>>
+    ): Observable<Resp<Any>>
 
 
 
@@ -569,7 +551,7 @@ interface ApiService {
      * @return
      */
     @GET("api/info/orderEva")
-    fun orderEva(@Query("order_id") order_id: String?,@Query("p") p: Int): Observable<Response<List<OrderEva>>>
+    suspend fun orderEva(@Query("order_id") order_id: String?,@Query("p") p: Int): Resp<List<OrderEva>>
 
 
 

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/utils/net/BBDCApiService.kt

@@ -1,6 +1,6 @@
 package com.quansu.heifengwuliu.utils.net
 
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 import retrofit2.http.GET
 import retrofit2.http.Query
@@ -16,5 +16,5 @@ interface BBDCApiService {
 //    fun login(@Field("user_mobile") user_name: String?, @Field("pwd") pwd: String?): Observable<Response<User>>
 
     @GET("loadLexisList.action")
-    fun loadLexisList(@Query("word") word: String?, @Query("strict") strict: String = "1"): Observable<IResponse<Any>>
+    fun loadLexisList(@Query("word") word: String?, @Query("strict") strict: String = "1"): Observable<IResp<Any>>
 }

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/utils/net/BBDCResponse.kt

@@ -1,7 +1,7 @@
 package com.quansu.heifengwuliu.utils.net
 
 import com.ysnows.base.base.BApp
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.Toasts
 
 class BBDCResponse<D>(
@@ -10,7 +10,7 @@ class BBDCResponse<D>(
         private val total: Int = 0,
         private val count: Int = 10,
         private val wordlist: D? = null
-) : IResponse<D> {
+) : IResp<D> {
 
     override fun ok(showError: Boolean): Boolean {
         val ok = code == 1

+ 19 - 18
app/src/main/java/com/quansu/heifengwuliu/vmodel/AccountBillVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.activity.BillDetailsActivity
@@ -12,7 +13,7 @@ import com.quansu.heifengwuliu.model.User
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 
@@ -20,29 +21,25 @@ import io.reactivex.Observable
  *Created by shihuiyun
  *on 2020/9/18
  */
- class AccountBillVModel : BRViewModel<BRRepository>() {
+class AccountBillVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
 
     val user: MutableLiveData<User?> = MutableLiveData(User.get())
-    var info:MutableLiveData<AmountCount> = MutableLiveData<AmountCount>()
+    var info: MutableLiveData<AmountCount> = MutableLiveData<AmountCount>()
 
-    var fragment: AccountBillFragment? =null
-    var type="0"
-    var status="0"
+    var fragment: AccountBillFragment? = null
+    var type = "0"
+    var status = "0"
 
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.amountList(type,status,repository().autoPage())
-    }
-
-    fun getAmountCount(){
+    fun getAmountCount() {
 
-        repository().lreq(NetEngine.service.amountCount())
+        repository().rxLreq(NetEngine.service.amountCount())
                 .doOnNext {
                     if (it.ok(false)) {
-                        var bean=it.data() as AmountCount
-                        if(null!=bean){
-                            info.value=bean
+                        var bean = it.data() as AmountCount
+                        if (null != bean) {
+                            info.value = bean
                         }
 
                     }
@@ -51,7 +48,7 @@ import io.reactivex.Observable
     }
 
 
-    fun goWithdrawal(){//提现
+    fun goWithdrawal() {//提现
 
         UiSwitch.bundleRes(fragment, WithdrawalActivity::class.java, Bundle().apply {
             putString("money", info.value!!.can_use)
@@ -59,14 +56,18 @@ import io.reactivex.Observable
 
     }
 
-    fun toBillDetails(){//账单明细
+    fun toBillDetails() {//账单明细
 
         UiSwitch.single(repository().context, BillDetailsActivity::class.java)
 
     }
 
-    fun toRecharge(){//去充值
+    fun toRecharge() {//去充值
 
         UiSwitch.singleRes(fragment, RechargeActivity::class.java, MIntentAction.REQUEST_CODE_ONE)
     }
+
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.amountList(type, status, repository().page) }
+    }
 }

+ 5 - 4
app/src/main/java/com/quansu/heifengwuliu/vmodel/AddressAddVModel.kt

@@ -2,6 +2,7 @@ package com.quansu.heifengwuliu.vmodel
 
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.text.TextUtils
 import android.util.Log
@@ -23,7 +24,7 @@ import com.ysnows.base.ccretrofit.CCRetrofit
 import com.ysnows.base.route.IGaode
 import com.ysnows.base.utils.UiSwitch
 
-open class AddressAddVModel : BViewModel<BRepository>() {
+open class AddressAddVModel(application: Application) : BViewModel<BRepository>(application) {
 
     var checked: MutableLiveData<Int> = MutableLiveData()
     var cityname: MutableLiveData<String> = MutableLiveData()
@@ -147,7 +148,7 @@ open class AddressAddVModel : BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.addressEdit(addr_id, lat, lng, province, city, area, address,
+        repository().rxLreq(NetEngine.service.addressEdit(addr_id, lat, lng, province, city, area, address,
                 name, phone, type, checked.value.toString()))
                 .doOnNext() { res ->
                     if (res.ok(true)) {
@@ -178,7 +179,7 @@ open class AddressAddVModel : BViewModel<BRepository>() {
         addr_id=addrid
 
 
-        repository().lreq(NetEngine.service.getAddress(addr_id))
+        repository().rxLreq(NetEngine.service.getAddress(addr_id))
                 .doOnNext() {
                     if (it.ok()) {
                         var info=it.data() as AddressDetailsBean
@@ -222,7 +223,7 @@ open class AddressAddVModel : BViewModel<BRepository>() {
 
     fun setSureDel(addr_id: String){
 
-        repository().lreq(NetEngine.service.setAddressDel(addr_id))
+        repository().rxLreq(NetEngine.service.setAddressDel(addr_id))
                 .doOnNext() {
                     if (it.ok()) {
                         val intent = Intent()

+ 5 - 4
app/src/main/java/com/quansu/heifengwuliu/vmodel/AddressVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.os.Bundle
 import com.quansu.heifengwuliu.activity.AddressAddActivity
@@ -8,12 +9,12 @@ import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.fragment.AddressFragment
 import com.quansu.heifengwuliu.model.AddressBean
 import com.quansu.heifengwuliu.utils.net.NetEngine
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.B
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 
-class AddressVModel : SearchVModel() {
+class AddressVModel(application: Application) : SearchVModel(application) {
 
 
     var type: String? = null
@@ -46,8 +47,8 @@ class AddressVModel : SearchVModel() {
                         .ok(), MIntentAction.REQUEST_CODE_ONE)
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.addressList(type, k, repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return {NetEngine.service.addressList(type, k, repository().page)}
     }
 
 

+ 6 - 5
app/src/main/java/com/quansu/heifengwuliu/vmodel/AllOwnerVModel.kt

@@ -1,16 +1,17 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import com.quansu.heifengwuliu.utils.net.NetEngine
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 
 /**
  *Created by shihuiyun
  *on 2020/9/23
  */
-class AllOwnerVModel : SearchVModel() {
-
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.myDriver(k, repository().autoPage())
+class AllOwnerVModel(application: Application) : SearchVModel(application) {
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.myDriver(k, repository().page) }
     }
+
 }

+ 7 - 5
app/src/main/java/com/quansu/heifengwuliu/vmodel/AreaSelectVModel.kt

@@ -1,20 +1,21 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import com.quansu.heifengwuliu.model.Todo
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 
 
-class AreaSelectVModel : BRViewModel<BRRepository>() {
+class AreaSelectVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
     var code = "0"//默认市
 
     fun check(item: Todo, position: Int) {
         repository()
-                .lreq(NetEngine.service.taskChecked(item.id))
+                .rxLreq(NetEngine.service.taskChecked(item.id))
                 .doOnNext {
                     if (it.ok(true)) {
                         item.checked = if (item.checked == 1) 0 else 1
@@ -24,7 +25,8 @@ class AreaSelectVModel : BRViewModel<BRRepository>() {
                 .subscribe()
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.getArea(code, repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.getArea(code, repository().page) }
     }
+
 }

+ 5 - 4
app/src/main/java/com/quansu/heifengwuliu/vmodel/BankVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.text.TextUtils
 import androidx.databinding.Bindable
@@ -12,7 +13,7 @@ import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
 
-class BankVModel : BViewModel<BRepository>() {
+class BankVModel(application: Application) : BViewModel<BRepository>(application) {
 
    // var image: MutableLiveData<String> = MutableLiveData("")
    var image=""
@@ -48,7 +49,7 @@ class BankVModel : BViewModel<BRepository>() {
 
     fun discernBank(img:String){//识别银行卡
 
-        repository().lreq(NetEngine.service.cvBankCard(img))
+        repository().rxLreq(NetEngine.service.cvBankCard(img))
                 .doOnNext {
                     if (it.ok()) {
                         var bean=it.data() as BankCard
@@ -80,7 +81,7 @@ class BankVModel : BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.setCardBank(name, number,bank,kbank, image))
+        repository().rxLreq(NetEngine.service.setCardBank(name, number,bank,kbank, image))
                 .doOnNext {
                     if (it.ok(true)) {
                         var con = repository().context as Activity
@@ -102,7 +103,7 @@ class BankVModel : BViewModel<BRepository>() {
 
     fun getInfo(){
         //获取银行卡信息
-        repository().lreq(NetEngine.service.getInfo("4"))
+        repository().rxLreq(NetEngine.service.getInfo("4"))
                 .doOnNext {
                     if (it.ok(false)) {
                         var bean=it.data() as InfoBean

+ 10 - 10
app/src/main/java/com/quansu/heifengwuliu/vmodel/BillDetailsVModel.kt

@@ -1,32 +1,32 @@
 package com.quansu.heifengwuliu.vmodel
 
 
+import android.app.Application
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.model.AmountCount
-import com.quansu.heifengwuliu.model.DataInfoBean
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 
-class BillDetailsVModel : BRViewModel<BRRepository>() {
+class BillDetailsVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
     val info: MutableLiveData<AmountCount> = MutableLiveData<AmountCount>()
 
-    var type="0"
-    var status="0"
+    var type = "0"
+    var status = "0"
 
 
     fun getTotalInfo() {
         //添加司机
 
         repository()
-                .lreq(NetEngine.service.amountTotal(type,status,repository().autoPage()))
+                .rxLreq(NetEngine.service.amountTotal(type, status, repository().autoPage()))
                 .doOnNext {
                     if (it.ok(false)) {
-                        var bean=it.data() as AmountCount
-                        info.value=bean
+                        var bean = it.data() as AmountCount
+                        info.value = bean
 
                     }
                 }
@@ -34,8 +34,8 @@ class BillDetailsVModel : BRViewModel<BRRepository>() {
     }
 
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.amountList(type,status,repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.amountList(type, status, repository().page) }
     }
 
 }

+ 6 - 7
app/src/main/java/com/quansu/heifengwuliu/vmodel/CollectionVModel.kt

@@ -1,19 +1,20 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import com.quansu.heifengwuliu.utils.net.NetEngine
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 
-class CollectionVModel : SearchVModel() {
+class CollectionVModel(application: Application) : SearchVModel(application) {
 
 
     fun setSaveDriver(arr: String) {
         //添加司机
 
         repository()
-                .lreq(NetEngine.service.setDriver(arr))
+                .rxLreq(NetEngine.service.setDriver(arr))
                 .doOnNext {
                     if (it.ok(true)) {
                         val intent = Intent()
@@ -25,10 +26,8 @@ class CollectionVModel : SearchVModel() {
                 .subscribe()
     }
 
-
-
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.myDriver(k, repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.myDriver(k, repository().page) }
     }
 
 

+ 23 - 21
app/src/main/java/com/quansu/heifengwuliu/vmodel/ComVerityVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.text.TextUtils
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
@@ -12,7 +13,7 @@ import com.quansu.heifengwuliu.utils.ChosePhotoUtils
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BViewModel
 
-class ComVerityVModel : BViewModel<ComVerifyRepository>() {
+class ComVerityVModel(application: Application) : BViewModel<ComVerifyRepository>(application) {
 
     var imgBL: MutableLiveData<String> = MutableLiveData("")
     var isShow: MutableLiveData<Boolean> = MutableLiveData(true)
@@ -32,29 +33,29 @@ class ComVerityVModel : BViewModel<ComVerifyRepository>() {
             notifyPropertyChanged(BR.iDNumber)
         }
 
-    fun choseImg(){
+    fun choseImg() {
         //选择照片
         ChosePhotoUtils.getChosePhoto(view()!!.context(), 1)
 
     }
 
-    fun  toSubmit(){
+    fun toSubmit() {
 
-        if(TextUtils.isEmpty(imgBL.value)){
+        if (TextUtils.isEmpty(imgBL.value)) {
             toast("请上传营业执照照片")
             return
         }
-        if(TextUtils.isEmpty(name)){
+        if (TextUtils.isEmpty(name)) {
             toast("请输入公司名称")
             return
         }
 
-        if(TextUtils.isEmpty(iDNumber)){
+        if (TextUtils.isEmpty(iDNumber)) {
             toast("请输入证件编号")
             return
         }
 
-        repository().lreq(NetEngine.service.setCompany(imgBL.value,iDNumber,name))
+        repository().rxLreq(NetEngine.service.setCompany(imgBL.value, iDNumber, name))
                 .doOnNext {
                     if (it.ok(true)) {
                         (repository().context as Activity).finish()
@@ -63,18 +64,18 @@ class ComVerityVModel : BViewModel<ComVerifyRepository>() {
                 .subscribe()
     }
 
-    fun getInfo(){
+    fun getInfo() {
         //获取个人信息
-        repository().lreq(NetEngine.service.getInfo("3"))
+        repository().rxLreq(NetEngine.service.getInfo("3"))
                 .doOnNext {
                     if (it.ok(true)) {
-                        var bean=it.data()
-                        if(null!=bean){
+                        var bean = it.data()
+                        if (null != bean) {
                             isShow.value = bean.status != "1"
                             //设置值
-                            imgBL.value=bean.license_img
-                            name=bean.company_name
-                            iDNumber=bean.license_sn
+                            imgBL.value = bean.license_img
+                            name = bean.company_name
+                            iDNumber = bean.license_sn
 
                         }
 
@@ -84,14 +85,14 @@ class ComVerityVModel : BViewModel<ComVerifyRepository>() {
 
     }
 
-    fun discernBusiness(img:String){//识别营业执照
+    fun discernBusiness(img: String) {//识别营业执照
 
-        repository().lreq(NetEngine.service.cvBusinessLicense(img))
+        repository().rxLreq(NetEngine.service.cvBusinessLicense(img))
                 .doOnNext {
                     if (it.ok()) {
-                        var bean=it.data() as Business
-                        name=bean.enterprise_name
-                        iDNumber=bean.reg_num
+                        var bean = it.data() as Business
+                        name = bean.enterprise_name
+                        iDNumber = bean.reg_num
 
                     }
                 }
@@ -99,6 +100,7 @@ class ComVerityVModel : BViewModel<ComVerifyRepository>() {
 
     }
 
-
-
+    override fun createRepository(): ComVerifyRepository {
+        return ComVerifyRepository()
+    }
 }

+ 12 - 12
app/src/main/java/com/quansu/heifengwuliu/vmodel/DriverOrderListVModel.kt

@@ -1,7 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
-import com.quansu.heifengwuliu.activity.SourceDetailsActivity
 import com.quansu.heifengwuliu.activity.WaybillDetailsActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.fragment.DriverOrderListFragment
@@ -9,15 +9,15 @@ import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
 import com.ysnows.base.ccretrofit.CCRetrofit
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.route.ILookimg
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 import java.util.ArrayList
 
-class DriverOrderListVModel : BRViewModel<BRRepository>() {
+class DriverOrderListVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
-    var fragment: DriverOrderListFragment? =null
+    var fragment: DriverOrderListFragment? = null
 
     var infoState: String? = null
 
@@ -38,23 +38,23 @@ class DriverOrderListVModel : BRViewModel<BRRepository>() {
         UiSwitch.bundleRes(fragment, WaybillDetailsActivity::class.java, Bundle().apply {
             putString("order_id", order_id)
             putInt("type", 2)
-        },MIntentAction.REQUEST_CODE_ONE)
+        }, MIntentAction.REQUEST_CODE_ONE)
 
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.myList(infoState, repository().autoPage())
-    }
-
 
-    fun toLookImg(qrcode:String){
-        var list= ArrayList<String>()
+    fun toLookImg(qrcode: String) {
+        var list = ArrayList<String>()
         list.add(qrcode)
         CCRetrofit.instance()
                 .with(repository().context)
                 .create(ILookimg::class.java)
-                .previewImageArr(list,0)
+                .previewImageArr(list, 0)
                 .subscribe()
     }
 
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.myList(infoState, repository().page) }
+    }
+
 }

+ 10 - 10
app/src/main/java/com/quansu/heifengwuliu/vmodel/EachOtherVModel.kt

@@ -1,29 +1,29 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import com.quansu.heifengwuliu.model.User
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
-import io.reactivex.Observable
+import com.ysnows.base.net.IResp
 
 /**
  *Created by shihuiyun
  *on 2020/9/22
  */
-class EachOtherVModel: BRViewModel<BRRepository>() {
+class EachOtherVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
-    var order_id=""
-    var user=User.get()
-
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.orderEva(order_id,repository().autoPage())
-    }
+    var order_id = ""
+    var user = User.get()
 
 
-    fun isSelf(uid:String):Boolean{//是自己的
+    fun isSelf(uid: String): Boolean {//是自己的
         return uid == user!!.uid
 
     }
 
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.orderEva(order_id, repository().page) }
+    }
+
 }

+ 45 - 49
app/src/main/java/com/quansu/heifengwuliu/vmodel/EvaluateVModel.kt

@@ -1,9 +1,9 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.text.TextUtils
-import android.widget.Toast
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.BR
@@ -15,7 +15,7 @@ import com.ysnows.base.base.BViewModel
  *Created by shihuiyun
  *on 2020/9/22
  */
-class EvaluateVModel: BViewModel<BRepository>() {
+class EvaluateVModel(application: Application) : BViewModel<BRepository>(application) {
 
     var isShow: MutableLiveData<Boolean> = MutableLiveData(true)
 
@@ -23,15 +23,15 @@ class EvaluateVModel: BViewModel<BRepository>() {
     var sn: MutableLiveData<String> = MutableLiveData()
     var time: MutableLiveData<String> = MutableLiveData()
 
-    var branch : MutableLiveData<Int> = MutableLiveData(0)//0-5
+    var branch: MutableLiveData<Int> = MutableLiveData(0)//0-5
 
 
-    var order_id=""
-    var choseOn1=MutableLiveData(false)
-    var choseOn2=MutableLiveData(false)
-    var choseOn3=MutableLiveData(false)
-    var choseOn4=MutableLiveData(false)
-    var choseOn5=MutableLiveData(false)
+    var order_id = ""
+    var choseOn1 = MutableLiveData(false)
+    var choseOn2 = MutableLiveData(false)
+    var choseOn3 = MutableLiveData(false)
+    var choseOn4 = MutableLiveData(false)
+    var choseOn5 = MutableLiveData(false)
 
     @Bindable
     var name: String? = null
@@ -41,21 +41,21 @@ class EvaluateVModel: BViewModel<BRepository>() {
         }
 
 
-    fun toSubmit(){
+    fun toSubmit() {
         //发布
 
-        if(TextUtils.isEmpty(name)){
+        if (TextUtils.isEmpty(name)) {
             toast("请输入评论")
             return
 
         }
 
-        if(branch.value==0){
+        if (branch.value == 0) {
             toast("请给对方打星,至少一星")
             return
         }
 
-        repository().lreq(NetEngine.service.eva(order_id,branch.value.toString(),name))
+        repository().rxLreq(NetEngine.service.eva(order_id, branch.value.toString(), name))
                 .doOnNext {
                     if (it.ok(true)) {
 
@@ -70,56 +70,52 @@ class EvaluateVModel: BViewModel<BRepository>() {
 
     }
 
-    fun toStars(type:Int){
-        when(type){
-            1->{
-                if(!choseOn1.value!!){
-                    branch.value= branch.value!! +1
-                }else{
-                    branch.value= branch.value!! -1
+    fun toStars(type: Int) {
+        when (type) {
+            1 -> {
+                if (!choseOn1.value!!) {
+                    branch.value = branch.value!! + 1
+                } else {
+                    branch.value = branch.value!! - 1
                 }
-                choseOn1.value=!choseOn1.value!!
+                choseOn1.value = !choseOn1.value!!
             }
-            2->{
-                if(!choseOn2.value!!){
-                    branch.value= branch.value!! +1
-                }else{
-                    branch.value= branch.value!! -1
+            2 -> {
+                if (!choseOn2.value!!) {
+                    branch.value = branch.value!! + 1
+                } else {
+                    branch.value = branch.value!! - 1
                 }
-                choseOn2.value=!choseOn2.value!!
+                choseOn2.value = !choseOn2.value!!
 
             }
-            3->{
-                if(!choseOn3.value!!){
-                    branch.value= branch.value!! +1
-                }else{
-                    branch.value= branch.value!! -1
+            3 -> {
+                if (!choseOn3.value!!) {
+                    branch.value = branch.value!! + 1
+                } else {
+                    branch.value = branch.value!! - 1
                 }
-                choseOn3.value=!choseOn3.value!!
+                choseOn3.value = !choseOn3.value!!
             }
-            4->{
-                if(!choseOn4.value!!){
-                    branch.value= branch.value!! +1
-                }else{
-                    branch.value= branch.value!! -1
+            4 -> {
+                if (!choseOn4.value!!) {
+                    branch.value = branch.value!! + 1
+                } else {
+                    branch.value = branch.value!! - 1
                 }
-                choseOn4.value=!choseOn4.value!!
+                choseOn4.value = !choseOn4.value!!
             }
-            5->{
-                if(!choseOn5.value!!){
-                    branch.value= branch.value!! +1
-                }else{
-                    branch.value= branch.value!! -1
+            5 -> {
+                if (!choseOn5.value!!) {
+                    branch.value = branch.value!! + 1
+                } else {
+                    branch.value = branch.value!! - 1
                 }
-                choseOn5.value=!choseOn5.value!!
+                choseOn5.value = !choseOn5.value!!
             }
         }
 
     }
 
 
-
-
-
-
 }

+ 10 - 11
app/src/main/java/com/quansu/heifengwuliu/vmodel/GrabDetailsVModel.kt

@@ -3,6 +3,7 @@ package com.quansu.heifengwuliu.vmodel
 import android.Manifest.permission.CALL_PHONE
 import android.annotation.SuppressLint
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.net.Uri
 import android.text.TextUtils
@@ -20,12 +21,12 @@ import com.ysnows.base.base.BViewModel
  *Created by shihuiyun
  *on 2020/9/20
  */
-open class GrabDetailsVModel: BViewModel<BRepository>() {
+open class GrabDetailsVModel(application: Application) : BViewModel<BRepository>(application) {
 
     val info: MutableLiveData<DataInfoBean> = MutableLiveData<DataInfoBean>()
 
     fun getInfo(info_id: String) {
-        repository().preq(NetEngine.service.infoGetDriver(info_id))
+        repository().rxLreq(NetEngine.service.infoGetDriver(info_id))
                 .doOnNext() {
                     if (it.ok()) {
 
@@ -38,9 +39,9 @@ open class GrabDetailsVModel: BViewModel<BRepository>() {
 
 
     @SuppressLint("WrongConstant")
-    fun toCallPhone(mobile:String){
+    fun toCallPhone(mobile: String) {
         //拨打电话
-        if(TextUtils.isEmpty(mobile)){
+        if (TextUtils.isEmpty(mobile)) {
             toast("未添加该公司的电话!!")
             return
         }
@@ -58,17 +59,15 @@ open class GrabDetailsVModel: BViewModel<BRepository>() {
 
     }
 
-    fun toGrab(info_id:String){
+    fun toGrab(info_id: String) {
         //抢单
         QMUIDialog.MessageDialogBuilder(repository().context)
                 .setTitle("提示")
                 .setMessage("确定要抢单么")
-                .addAction("取消", QMUIDialogAction.ActionListener(){
-                    dialog, index ->
+                .addAction("取消", QMUIDialogAction.ActionListener() { dialog, index ->
                     dialog.dismiss()
                 })
-                .addAction("确定", QMUIDialogAction.ActionListener(){
-                    dialog, index ->
+                .addAction("确定", QMUIDialogAction.ActionListener() { dialog, index ->
                     setSureGrab(info_id)
 
 
@@ -79,9 +78,9 @@ open class GrabDetailsVModel: BViewModel<BRepository>() {
     }
 
 
-    fun  setSureGrab(info_id:String){
+    fun setSureGrab(info_id: String) {
 
-        repository().lreq(NetEngine.service.getInfoDriver(info_id))
+        repository().rxLreq(NetEngine.service.getInfoDriver(info_id))
                 .doOnNext() {
                     if (it.ok(true)) {
                         val intent = Intent()

+ 8 - 1
app/src/main/java/com/quansu/heifengwuliu/vmodel/HomeVModel.kt

@@ -1,11 +1,12 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.model.User
 import com.quansu.heifengwuliu.repository.HomeRepository
 import com.ysnows.base.base.BViewModel
 
-open class HomeVModel : BViewModel<HomeRepository>() {
+open class HomeVModel(application: Application) : BViewModel<HomeRepository>(application) {
     val user: MutableLiveData<User> = MutableLiveData<User>(User.get())
 
     override fun firstReq() {
@@ -18,4 +19,10 @@ open class HomeVModel : BViewModel<HomeRepository>() {
                 .subscribe()
     }
 
+
+    override fun createRepository(): HomeRepository {
+        return HomeRepository()
+    }
+
+
 }

+ 8 - 8
app/src/main/java/com/quansu/heifengwuliu/vmodel/IndexVModel.kt

@@ -1,23 +1,23 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
-import androidx.fragment.app.Fragment
 import com.quansu.heifengwuliu.activity.GrabDetailsActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.fragment.IndexFragment
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 
-class IndexVModel : BRViewModel<BRRepository>()  {
+class IndexVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
-     var indexframent:IndexFragment?=null
+    var indexframent: IndexFragment? = null
 
-    fun setFragment(indexframent:IndexFragment){
-        this.indexframent=indexframent
+    fun setFragment(indexframent: IndexFragment) {
+        this.indexframent = indexframent
     }
 
 
@@ -30,8 +30,8 @@ class IndexVModel : BRViewModel<BRRepository>()  {
 
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.infoListDriver( "", repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.infoListDriver("", repository().page) }
     }
 
 

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/InvoiceTitleVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.text.TextUtils
 import androidx.databinding.Bindable
 import com.quansu.heifengwuliu.BR
@@ -8,7 +9,7 @@ import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
 
-class InvoiceTitleVModel : BViewModel<BRepository>() {
+class InvoiceTitleVModel(application: Application) : BViewModel<BRepository>(application) {
 
 
 
@@ -88,7 +89,7 @@ class InvoiceTitleVModel : BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.invoiceEdit(invoice_id,company,sn,addr,tel,bank,number))
+        repository().rxLreq(NetEngine.service.invoiceEdit(invoice_id,company,sn,addr,tel,bank,number))
                 .doOnNext {
                     if (it.ok(true)) {
                         (repository().context as Activity).finish()
@@ -101,7 +102,7 @@ class InvoiceTitleVModel : BViewModel<BRepository>() {
 
     fun getInfo(){
         //获取发票抬头
-        repository().lreq(NetEngine.service.invoiceGet())
+        repository().rxLreq(NetEngine.service.invoiceGet())
                 .doOnNext {
                     if (it.ok(true)) {
                         var bean=it.data()

+ 6 - 4
app/src/main/java/com/quansu/heifengwuliu/vmodel/InvoiceVModel.kt

@@ -1,13 +1,14 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.graphics.Color
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import io.reactivex.Observable
 
-class InvoiceVModel : BRViewModel<BRRepository>() {
+class InvoiceVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
 
     //state:1:开票中 2通过(已邮寄) 3系统拒绝  9取消
@@ -33,8 +34,9 @@ class InvoiceVModel : BRViewModel<BRRepository>() {
 
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.invoiceList(repository().autoPage())
+
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return {NetEngine.service.invoiceList(repository().page)}
     }
 
 

+ 25 - 22
app/src/main/java/com/quansu/heifengwuliu/vmodel/LoginVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.view.View
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
@@ -17,22 +18,22 @@ import io.reactivex.disposables.Disposable
 import io.reactivex.schedulers.Schedulers
 import java.util.concurrent.TimeUnit
 
-open class LoginVModel : BViewModel<LoginRepository>() {
+open class LoginVModel(application: Application) : BViewModel<LoginRepository>(application) {
 
 
     var passwordVisiblity = MutableLiveData<Int>()
     var codeVisibility = MutableLiveData<Int>()
-    var switchType= MutableLiveData<String>()
+    var switchType = MutableLiveData<String>()
 
     var codeTip: MutableLiveData<String> = MutableLiveData(getCodeStr)
     private var disposable: Disposable? = null
 
-    private var showType=true
+    private var showType = true
 
     init {
-        passwordVisiblity.value=View.GONE
-        codeVisibility.value=View.VISIBLE
-        switchType.value="使用密码登录"
+        passwordVisiblity.value = View.GONE
+        codeVisibility.value = View.VISIBLE
+        switchType.value = "使用密码登录"
     }
 
     companion object {
@@ -41,11 +42,9 @@ open class LoginVModel : BViewModel<LoginRepository>() {
         const val getCodeStr = "获取验证码"
 
 
-
     }
 
 
-
     fun getSmsCode(start: Long = 1) {
         if (codeTip.value != getCodeStr) {
             return
@@ -56,7 +55,7 @@ open class LoginVModel : BViewModel<LoginRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.getRegisterCode(phone))
+        repository().rxLreq(NetEngine.service.getRegisterCode(phone))
                 .doOnNext() { res ->
                     if (res.ok(true)) {
 //                        var bean: SendSmsBean = res.data() as SendSmsBean
@@ -91,6 +90,7 @@ open class LoginVModel : BViewModel<LoginRepository>() {
     private fun disposeTimer() {
         disposable?.isDisposed ?: disposable?.dispose()
     }
+
     @Bindable
     open var phone: String? = null
         set(value) {
@@ -114,33 +114,36 @@ open class LoginVModel : BViewModel<LoginRepository>() {
         }
 
 
-
     fun login() {
         //todo:
-        if(showType){//验证码登录
+        if (showType) {//验证码登录
 
             repository().loginCode(phone, code)
 
-        }else{//密码登录
+        } else {//密码登录
             repository().login(phone, passWord)
 
         }
 
     }
-    fun setShowType(){
 
-        if(showType){//验证码显示-密码显示
-            passwordVisiblity.value=View.VISIBLE
-            codeVisibility.value=View.GONE
-            switchType.value="使用验证码登录"
+    fun setShowType() {
+
+        if (showType) {//验证码显示-密码显示
+            passwordVisiblity.value = View.VISIBLE
+            codeVisibility.value = View.GONE
+            switchType.value = "使用验证码登录"
 
-        }else{//密码显示-验证码
-            passwordVisiblity.value=View.GONE
-            codeVisibility.value=View.VISIBLE
-            switchType.value="使用密码登录"
+        } else {//密码显示-验证码
+            passwordVisiblity.value = View.GONE
+            codeVisibility.value = View.VISIBLE
+            switchType.value = "使用密码登录"
         }
-        showType=!showType
+        showType = !showType
     }
 
+    override fun createRepository(): LoginRepository {
+        return LoginRepository()
+    }
 
 }

+ 0 - 7
app/src/main/java/com/quansu/heifengwuliu/vmodel/MainVModel.kt

@@ -1,7 +0,0 @@
-package com.quansu.heifengwuliu.vmodel
-
-import com.quansu.heifengwuliu.repository.SearchRepository
-import com.ysnows.base.base.BViewModel
-
-class MainVModel : BViewModel<SearchRepository>() {
-}

+ 12 - 10
app/src/main/java/com/quansu/heifengwuliu/vmodel/MineVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.activity.*
@@ -16,7 +17,7 @@ import com.ysnows.base.utils.UiSwitch
  *Created by shihuiyun
  *on 2020/9/10
  */
-open class MineVModel : BViewModel<MineRepository>() {
+open class MineVModel(application: Application) : BViewModel<MineRepository>(application) {
     val user: MutableLiveData<User?> = MutableLiveData(User.get())
 
     fun goSettings() {
@@ -37,7 +38,7 @@ open class MineVModel : BViewModel<MineRepository>() {
     }
 
 
-    fun goMyOwner(){//我的货主
+    fun goMyOwner() {//我的货主
 
         single(MyOwnerActivity::class.java)
 
@@ -46,22 +47,21 @@ open class MineVModel : BViewModel<MineRepository>() {
     fun goCollection() {
 //        single(CollectionActivity::class.java)
         bundle(CollectionActivity::class.java, Bundle().apply {
-            putString("type", "0") })
+            putString("type", "0")
+        })
 
     }
+
     fun goInvoice() {
         //发票
         single(InvoiceActivity::class.java)
     }
 
-    fun goComment(){
+    fun goComment() {
         single(CommentListActivity::class.java)
     }
 
 
-
-
-
     fun goPersonalVerify() {
         single(PersonalVerityActivity::class.java)
     }
@@ -71,7 +71,6 @@ open class MineVModel : BViewModel<MineRepository>() {
     }
 
 
-
     override fun firstReq() {
         super.firstReq()
         repository().getUserInfo()
@@ -85,7 +84,8 @@ open class MineVModel : BViewModel<MineRepository>() {
         DialUtils.dialPhone(view()?.context(), "19898989898")
 
     }
-    fun goAdress(){
+
+    fun goAdress() {
 
         bundle(AddressActivity::class.java, Bundle().apply {
             putString("type", "1")
@@ -95,7 +95,9 @@ open class MineVModel : BViewModel<MineRepository>() {
     }
 
 
-
+    override fun createRepository(): MineRepository {
+        return MineRepository()
+    }
 
 
 }

+ 12 - 12
app/src/main/java/com/quansu/heifengwuliu/vmodel/MyOwnerVModel.kt

@@ -2,6 +2,7 @@ package com.quansu.heifengwuliu.vmodel
 
 
 import android.app.Activity
+import android.app.Application
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.activity.AllOwnerActivity
 import com.quansu.heifengwuliu.config.MIntentAction
@@ -9,27 +10,27 @@ import com.quansu.heifengwuliu.model.AmountCount
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 
-class MyOwnerVModel : BRViewModel<BRRepository>() {
+class MyOwnerVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
     val info: MutableLiveData<AmountCount> = MutableLiveData<AmountCount>()
 
-    var type="0"
-    var status="0"
+    var type = "0"
+    var status = "0"
 
 
     fun getTotalInfo() {
         //添加司机
 
         repository()
-                .lreq(NetEngine.service.amountTotal(type,status,repository().autoPage()))
+                .rxLreq(NetEngine.service.amountTotal(type, status, repository().autoPage()))
                 .doOnNext {
                     if (it.ok(false)) {
-                        var bean=it.data() as AmountCount
-                        info.value=bean
+                        var bean = it.data() as AmountCount
+                        info.value = bean
 
                     }
                 }
@@ -37,16 +38,15 @@ class MyOwnerVModel : BRViewModel<BRRepository>() {
     }
 
 
-
-    fun toAdd(){
+    fun toAdd() {
         UiSwitch.singleRes(repository().context as Activity, AllOwnerActivity::class.java,
                 MIntentAction.REQUEST_CODE_ONE)
 
     }
 
-
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.amountList(type,status,repository().autoPage())
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return { NetEngine.service.amountList(type, status, repository().page) }
     }
 
+
 }

+ 19 - 17
app/src/main/java/com/quansu/heifengwuliu/vmodel/OneLoginVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import com.qmuiteam.qmui.widget.dialog.QMUIDialog
 import com.quansu.heifengwuliu.activity.HomeActivity
 import com.quansu.heifengwuliu.model.LoginBean
@@ -16,7 +17,7 @@ import com.ysnows.base.route.IJpush
 import com.ysnows.base.utils.UiSwitch
 
 
-open class OneLoginVModel : BViewModel<OneLoginRepository>() {
+open class OneLoginVModel(application: Application) : BViewModel<OneLoginRepository>(application) {
 
     fun clickLogin() {
 
@@ -40,39 +41,38 @@ open class OneLoginVModel : BViewModel<OneLoginRepository>() {
     }
 
 
-
     fun login(token: String) {
         repository().login(token)
     }
 
-    fun wxLogin(){
+    fun wxLogin() {
 
         //微信登录
-       WeChatUtil.setWXLoigin(repository().context)
+        WeChatUtil.setWXLoigin(repository().context)
 
     }
 
 
-    fun simLogin(mobile:String,type: String ){
-        repository().simLogin(mobile,type)
+    fun simLogin(mobile: String, type: String) {
+        repository().simLogin(mobile, type)
     }
 
-    fun oneLogin(code:String){
+    fun oneLogin(code: String) {
 
 
-        repository().lreq(NetEngine.service.jiguangLogin(code))
+        repository().rxLreq(NetEngine.service.jiguangLogin(code))
                 .doOnNext() { res ->
                     if (res.ok(true)) {
                         //保存token
 
-                        var bean: LoginBean =res.data() as LoginBean;
+                        var bean: LoginBean = res.data() as LoginBean;
 
-                        MMKV.defaultMMKV().putString("token",bean.TOKEN)
-                        UiSwitch.single(repository().context,HomeActivity::class.java)
+                        MMKV.defaultMMKV().putString("token", bean.TOKEN)
+                        UiSwitch.single(repository().context, HomeActivity::class.java)
                         (repository().context as Activity).finish()
-                    }else{
-                        if(res.code()==0){
-                            var bean: LoginBean =res.data() as LoginBean;
+                    } else {
+                        if (res.code() == 0) {
+                            var bean: LoginBean = res.data() as LoginBean;
                             val items = arrayOf("司机", "货主")
                             val builder = QMUIDialog.CheckableDialogBuilder(repository().context)
                             builder.setTitle("选择类型去注册")
@@ -82,8 +82,8 @@ open class OneLoginVModel : BViewModel<OneLoginRepository>() {
                                         dialog.dismiss()
                                     }
                                     .addAction("确定") { dialog, index ->
-                                       var type= if(builder.checkedIndex==0) "1" else "2"
-                                        simLogin(bean.mobile,type);
+                                        var type = if (builder.checkedIndex == 0) "1" else "2"
+                                        simLogin(bean.mobile, type);
                                         dialog.dismiss()
                                     }
                                     .show()
@@ -101,12 +101,14 @@ open class OneLoginVModel : BViewModel<OneLoginRepository>() {
 //                                    .show()
 
 
-
                         }
                     }
                 }
                 .subscribe()
     }
 
+    override fun createRepository(): OneLoginRepository {
+        return OneLoginRepository()
+    }
 
 }

+ 7 - 5
app/src/main/java/com/quansu/heifengwuliu/vmodel/OrderListVModel.kt

@@ -1,18 +1,19 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import com.quansu.heifengwuliu.activity.SourceDetailsActivity
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
 import com.ysnows.base.ccretrofit.CCRetrofit
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.route.ILookimg
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 import java.util.ArrayList
 
-class OrderListVModel : BRViewModel<BRRepository>() {
+class OrderListVModel(application: Application) : BRViewModel<BRRepository>(application) {
 
 
     var infoState: String? = null
@@ -39,9 +40,6 @@ class OrderListVModel : BRViewModel<BRRepository>() {
 
     }
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.infoList(infoState, repository().autoPage())
-    }
 
 
     fun toLookImg(qrcode:String){
@@ -54,4 +52,8 @@ class OrderListVModel : BRViewModel<BRRepository>() {
                 .subscribe()
     }
 
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return {NetEngine.service.infoList(infoState, repository().page)}
+    }
+
 }

+ 2 - 2
app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerImgVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import androidx.lifecycle.MutableLiveData
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
@@ -8,12 +9,11 @@ import com.ysnows.base.base.BViewModel
  *Created by shihuiyun
  *on 2020/9/23
  */
-open class OwnerImgVModel : BViewModel<BRepository>(){
+open class OwnerImgVModel(application: Application) : BViewModel<BRepository>(application) {
 
     var url: MutableLiveData<String> = MutableLiveData()
     var name: MutableLiveData<String> = MutableLiveData()
     var weight: MutableLiveData<String> = MutableLiveData()
 
 
-
 }

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerMoreVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import android.text.TextUtils
 import android.widget.TextView
@@ -25,7 +26,7 @@ import com.ysnows.base.utils.B
 import com.ysnows.base.utils.UiSwitch
 
 
-open class OwnerMoreVModel : BViewModel<BRepository>() {
+open class OwnerMoreVModel(application: Application) : BViewModel<BRepository>(application) {
 
     var unit: MutableLiveData<String> = MutableLiveData()
 
@@ -56,7 +57,7 @@ open class OwnerMoreVModel : BViewModel<BRepository>() {
 
     fun getDataInfo(info_id:String){
 
-        repository().lreq(NetEngine.service.infoGet(info_id))
+        repository().rxLreq(NetEngine.service.infoGet(info_id))
                 .doOnNext() {
                     if (it.ok()) {
                         info.value=it.data() as DataInfoBean
@@ -75,7 +76,7 @@ open class OwnerMoreVModel : BViewModel<BRepository>() {
     ){
         //todo:发布货源
 
-        repository().lreq(NetEngine.service.infoEdit(info_id,type_id,total,driver,nums,is_public,is_insurance,type,
+        repository().rxLreq(NetEngine.service.infoEdit(info_id,type_id,total,driver,nums,is_public,is_insurance,type,
         data,send,receive))
                 .doOnNext() {
                     if (it.ok(true)) {

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/OwnerSingleVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.activity.SourceDetailsActivity
@@ -11,7 +12,7 @@ import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.UiSwitch
 
 
-open class OwnerSingleVModel : BViewModel<BRepository>() {
+open class OwnerSingleVModel(application: Application) : BViewModel<BRepository>(application) {
 
     var unit: MutableLiveData<String> = MutableLiveData(unitValues)
     var goodstype: MutableLiveData<String> = MutableLiveData()
@@ -59,7 +60,7 @@ open class OwnerSingleVModel : BViewModel<BRepository>() {
 
     fun getDataInfo(info_id:String){
 
-        repository().lreq(NetEngine.service.infoGet(info_id))
+        repository().rxLreq(NetEngine.service.infoGet(info_id))
                 .doOnNext() {
                     if (it.ok()) {
                         info.value=it.data() as DataInfoBean
@@ -78,7 +79,7 @@ open class OwnerSingleVModel : BViewModel<BRepository>() {
     ){
         //todo:发布货源
 
-        repository().lreq(NetEngine.service.infoEdit(info_id,type_id,total,driver,nums,is_public,is_insurance,type,
+        repository().rxLreq(NetEngine.service.infoEdit(info_id,type_id,total,driver,nums,is_public,is_insurance,type,
         data,send,receive))
                 .doOnNext() {
                     if (it.ok(true)) {

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/PasswordVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.text.TextUtils
 import android.util.Log
 import androidx.databinding.Bindable
@@ -13,7 +14,7 @@ import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.MMKVManager
 
-open class PasswordVModel : BViewModel<BRepository>() {
+open class PasswordVModel(application: Application) : BViewModel<BRepository>(application) {
 
 
     var isShow: MutableLiveData<Boolean> = MutableLiveData( User.get()!!.isPwd)
@@ -72,7 +73,7 @@ open class PasswordVModel : BViewModel<BRepository>() {
                 return
             }
 
-            repository().lreq(NetEngine.service.setPwd(oldpwd, passWord,"0"))
+            repository().rxLreq(NetEngine.service.setPwd(oldpwd, passWord,"0"))
                     .doOnNext {
                         if (it.ok(true)) {
                             toast(it.msg())
@@ -110,7 +111,7 @@ open class PasswordVModel : BViewModel<BRepository>() {
             toast("请输入新支付密码")
             return
         }
-        repository().lreq(NetEngine.service.setPwd(oldpwd, newPassword,"1"))
+        repository().rxLreq(NetEngine.service.setPwd(oldpwd, newPassword,"1"))
                 .doOnNext {
                     if (it.ok(true)) {
                         toast(it.msg())

+ 8 - 4
app/src/main/java/com/quansu/heifengwuliu/vmodel/PersonalVerityVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.text.TextUtils
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
@@ -16,7 +17,7 @@ import com.tencent.mmkv.MMKV
 import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.UiSwitch
 
-class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
+class PersonalVerityVModel(application: Application) : BViewModel<PersonalVerifyRepository>(application) {
 
     //https://cdnheifengwuliu.qs110.com/idcard/xuzgomb3/android/v/mmexport1599207639412.jpg
     var imgIDMan: MutableLiveData<String> = MutableLiveData("")
@@ -72,7 +73,7 @@ class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.setInfo(imgIDMan.value, imgIDEmblem.value,name,iDNumber))
+        repository().rxLreq(NetEngine.service.setInfo(imgIDMan.value, imgIDEmblem.value,name,iDNumber))
                 .doOnNext {
                     if (it.ok(true)) {
                         (repository().context as Activity).finish()
@@ -85,7 +86,7 @@ class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
 
     fun getInfo(){
         //获取个人信息
-        repository().lreq(NetEngine.service.getInfo("1"))
+        repository().rxLreq(NetEngine.service.getInfo("1"))
                 .doOnNext {
                     if (it.ok(false)) {
                         var bean=it.data()
@@ -108,7 +109,7 @@ class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
 
     fun discernID(img:String){//识别身份证
 
-        repository().lreq(NetEngine.service.cvIdcard(img))
+        repository().rxLreq(NetEngine.service.cvIdcard(img))
                 .doOnNext {
                     if (it.ok()) {
                        var bean=it.data() as Idcard
@@ -121,4 +122,7 @@ class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
      }
 
 
+    override fun createRepository(): PersonalVerifyRepository {
+        return PersonalVerifyRepository()
+    }
 }

+ 0 - 21
app/src/main/java/com/quansu/heifengwuliu/vmodel/PrivateCenterVModel.kt

@@ -1,21 +0,0 @@
-package com.quansu.heifengwuliu.vmodel
-
-import androidx.lifecycle.MutableLiveData
-import com.quansu.heifengwuliu.model.User
-import com.quansu.heifengwuliu.repository.UserInfoRepository
-import com.ysnows.base.base.BViewModel
-
-open class PrivateCenterVModel : BViewModel<UserInfoRepository>() {
-    open var user: MutableLiveData<User> = MutableLiveData<User>(User.get())
-
-    override fun firstReq() {
-        super.firstReq()
-
-        repository()
-                .getUserInfo()
-                .doOnNext() {
-                    user.value = it
-                }
-                .subscribe()
-    }
-}

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/RechargeVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.text.TextUtils
 import androidx.databinding.Bindable
@@ -16,7 +17,7 @@ import com.ysnows.base.base.BViewModel
  *Created by shihuiyun
  *on 2020/9/22
  */
-class RechargeVModel: BViewModel<BRepository>() {
+class RechargeVModel(application: Application): BViewModel<BRepository>(application) {
 
     var url:MutableLiveData<String> = MutableLiveData()
 
@@ -48,7 +49,7 @@ class RechargeVModel: BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.amountAdd(money, url.value))
+        repository().rxLreq(NetEngine.service.amountAdd(money, url.value))
                 .doOnNext {
                     if (it.ok(true)) {
                         var con = repository().context as Activity
@@ -61,7 +62,7 @@ class RechargeVModel: BViewModel<BRepository>() {
     }
 
     fun getBankInfo(){//获取系统卡号
-        repository().lreq(NetEngine.service.getCard())
+        repository().rxLreq(NetEngine.service.getCard())
                 .doOnNext {
                     if (it.ok(false)) {
                         var bean=it.data() as Card

+ 12 - 7
app/src/main/java/com/quansu/heifengwuliu/vmodel/RegisterVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.view.View
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
@@ -25,7 +26,7 @@ import io.reactivex.disposables.Disposable
 import io.reactivex.schedulers.Schedulers
 import java.util.concurrent.TimeUnit
 
-open class RegisterVModel : BViewModel<RegisterRepository>() {
+open class RegisterVModel(application: Application) : BViewModel<RegisterRepository>(application) {
     var codeTip: MutableLiveData<String> = MutableLiveData(getCodeStr)
     private var disposable: Disposable? = null
 
@@ -81,16 +82,16 @@ open class RegisterVModel : BViewModel<RegisterRepository>() {
             toast(R.string.please_input_code)
             return
         }
-        if(!showType.value!!){
+        if (!showType.value!!) {
             toast("请勾选已阅读并同意《平台服务协议》")
             return
         }
 
-        IdentityDialogUtils.shoChooseIdentity(repository().context!!,view,object : ChoiceData {
+        IdentityDialogUtils.shoChooseIdentity(repository().context!!, view, object : ChoiceData {
 
             override fun onRestuse(type: String?) {
 
-                repository().lreq(NetEngine.service.register(userName, phone, code, type, openId,unionId))
+                repository().rxLreq(NetEngine.service.register(userName, phone, code, type, openId, unionId))
                         .doOnNext() { it ->
                             if (it.ok(true)) {
                                 var bean: LoginBean = it.data() as LoginBean;
@@ -113,9 +114,8 @@ open class RegisterVModel : BViewModel<RegisterRepository>() {
     }
 
 
-
     fun choseType() {
-        showType.value =!showType.value!!
+        showType.value = !showType.value!!
 
     }
 
@@ -129,7 +129,7 @@ open class RegisterVModel : BViewModel<RegisterRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.getRegisterSms(phone))
+        repository().rxLreq(NetEngine.service.getRegisterSms(phone))
                 .doOnNext() { res ->
                     if (res.ok(true)) {
                         startTimer(start)
@@ -177,5 +177,10 @@ open class RegisterVModel : BViewModel<RegisterRepository>() {
     private fun disposeTimer() {
         disposable?.isDisposed ?: disposable?.dispose()
     }
+
+    override fun createRepository(): RegisterRepository {
+        return RegisterRepository()
+    }
 }
 
+

+ 2 - 1
app/src/main/java/com/quansu/heifengwuliu/vmodel/SearchVModel.kt

@@ -1,13 +1,14 @@
 package com.quansu.heifengwuliu.vmodel
 
 
+import android.app.Application
 import android.view.inputmethod.EditorInfo
 import androidx.databinding.Bindable
 import com.quansu.heifengwuliu.BR
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
 
-open abstract class SearchVModel : BRViewModel<BRRepository>() {
+open abstract class SearchVModel(application: Application) : BRViewModel<BRRepository>(application) {
     @Bindable
     var k: String = ""
         set(value) {

+ 10 - 5
app/src/main/java/com/quansu/heifengwuliu/vmodel/SettingsVModel.kt

@@ -1,5 +1,6 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.activity.BankActivity
@@ -9,7 +10,7 @@ import com.quansu.heifengwuliu.repository.UserInfoRepository
 import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.UiSwitch
 
-class SettingsVModel : BViewModel<UserInfoRepository>() {
+class SettingsVModel(application: Application) : BViewModel<UserInfoRepository>(application) {
     val user: MutableLiveData<User?> = MutableLiveData(User.get())
 
 
@@ -28,22 +29,26 @@ class SettingsVModel : BViewModel<UserInfoRepository>() {
 
 
     //设置登录密码和支付密码 1:登录密码 2支付密码
-    fun goPassword(type:Int){
+    fun goPassword(type: Int) {
         UiSwitch.bundle(repository().context, PasswordActivity::class.java, Bundle().apply {
-            putInt("type",type)
+            putInt("type", type)
         })
     }
 
 
-    fun goBank(){//银行卡信息
+    fun goBank() {//银行卡信息
 
         UiSwitch.single(repository().context, BankActivity::class.java)
 
     }
 
-    fun goEditProfile(){//编辑资料
+    fun goEditProfile() {//编辑资料
 
 
     }
 
+    override fun createRepository(): UserInfoRepository {
+        return UserInfoRepository()
+    }
+
 }

+ 44 - 49
app/src/main/java/com/quansu/heifengwuliu/vmodel/SourceDetailsVModel.kt

@@ -3,6 +3,7 @@ package com.quansu.heifengwuliu.vmodel
 import android.Manifest
 import android.annotation.SuppressLint
 import android.app.Activity
+import android.app.Application
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
@@ -39,12 +40,12 @@ import com.ysnows.base.utils.UiSwitch
 /*
 *  * 订单状态 info_state:10->待支付  20->待接单  30->进行中 40-> 已完成  100->已取消
 */
-open class SourceDetailsVModel : BViewModel<BRepository>() {
+open class SourceDetailsVModel(application: Application) : BViewModel<BRepository>(application) {
 
     val info: MutableLiveData<DataInfoBean> = MutableLiveData<DataInfoBean>()
 
     //1:需要复制信息再来一单 0直接关闭就行
-    var again:Int=0
+    var again: Int = 0
 
 
     @Bindable
@@ -56,21 +57,21 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
 
     fun getInfo(info_id: String) {
 
-            repository().preq(NetEngine.service.infoGet(info_id))
-                    .doOnNext() {
-                        if (it.ok()) {
+        repository().rxLreq(NetEngine.service.infoGet(info_id))
+                .doOnNext() {
+                    if (it.ok()) {
 
-                            info.value = it.data() as DataInfoBean
+                        info.value = it.data() as DataInfoBean
 
-                        }
                     }
-                    .subscribe()
+                }
+                .subscribe()
 
     }
 
 
-    fun getInfoPay(info_id: String,pay_pwd:String) {
-        repository().lreq(NetEngine.service.infoGetPay(info_id,pay_pwd))
+    fun getInfoPay(info_id: String, pay_pwd: String) {
+        repository().rxLreq(NetEngine.service.infoGetPay(info_id, pay_pwd))
                 .doOnNext() {
                     if (it.ok(true)) {
                         toast(it.msg())
@@ -79,7 +80,7 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
                 .subscribe()
     }
 
-    fun showPayDialog(info_id: String,view:LinearLayout){
+    fun showPayDialog(info_id: String, view: LinearLayout) {
         var mNormalPopup = QMUIPopups.fullScreenPopup(repository().context)
         val builder: QMUISkinValueBuilder = QMUISkinValueBuilder.acquire()
         val frameLayout = QMUIFrameLayout(repository().context)
@@ -89,27 +90,28 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
         var layout = layoutInflater.inflate(R.layout.item_apy, null)
         val butCancel: ImageView = layout.findViewById(R.id.iv_close)
         val tvMoney: TextView = layout.findViewById(R.id.tv_money)
-        tvMoney.text="¥"+info.value!!.order.total
+        tvMoney.text = "¥" + info.value!!.order.total
 
         val payPwdEditText: PasswordView = layout.findViewById(R.id.ppet)
-        var password=""
+        var password = ""
 
         payPwdEditText.setPasswordListener(object : PasswordView.PasswordListener {
             override fun keyEnterPress(pwd: String?, isComplete: Boolean) {
-                password= pwd!!
-                if(!TextUtils.isEmpty(password)&&password.length==6){
-                    getInfoPay(info_id,password)
+                password = pwd!!
+                if (!TextUtils.isEmpty(password) && password.length == 6) {
+                    getInfoPay(info_id, password)
                     mNormalPopup.dismiss()
                 }
 
             }
+
             override fun passwordChange(changeText: String?) {
             }
 
             override fun passwordComplete(pwd: String?) {
-                password=pwd!!
-                if(!TextUtils.isEmpty(password)&&password.length==6){
-                    getInfoPay(info_id,password)
+                password = pwd!!
+                if (!TextUtils.isEmpty(password) && password.length == 6) {
+                    getInfoPay(info_id, password)
                     mNormalPopup.dismiss()
                 }
             }
@@ -122,7 +124,7 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
         }
         builder.release();
 
-        val size= QMUIDisplayHelper.getScreenWidth(repository().context)
+        val size = QMUIDisplayHelper.getScreenWidth(repository().context)
 
         val lp: FrameLayout.LayoutParams = FrameLayout.LayoutParams(size,
                 FrameLayout.LayoutParams.WRAP_CONTENT)
@@ -138,11 +140,11 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
 
     }
 
-    fun setCancelOrder(info_id: String){
+    fun setCancelOrder(info_id: String) {
         //取消发布
 
 
-        repository().lreq(NetEngine.service.infoCancel(info_id))
+        repository().rxLreq(NetEngine.service.infoCancel(info_id))
                 .doOnNext() {
                     if (it.ok()) {
 
@@ -154,15 +156,15 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
                 .subscribe()
     }
 
-    fun anotherOne(){
+    fun anotherOne() {
         //再来一单
-        if(again==0) {
+        if (again == 0) {
             var con = repository().context as Activity
             con.finish()
-        }else{
+        } else {
             //发送信息-并且关闭
 
-            var order=info.value!!.order
+            var order = info.value!!.order
             RxBus.get().post(ConfigRx.ADD_ADAIN, Gson().toJson(order))
 
             var con = repository().context as Activity
@@ -172,35 +174,34 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
         }
     }
 
-    fun goDriverList(info_id:String){
+    fun goDriverList(info_id: String) {
         //接单车辆
         UiSwitch.bundle(repository().context, VehicleListActivity::class.java, Bundle().apply {
-            putString("info_id",info_id)
+            putString("info_id", info_id)
         })
 
     }
 
 
-
-   fun isShowCancelBut(info_state:Int):Boolean{
+    fun isShowCancelBut(info_state: Int): Boolean {
         //取消按钮
 
-         return info_state==10||info_state==20
+        return info_state == 10 || info_state == 20
     }
 
-    fun isShowReceiveVehicle(info_state:Int):Boolean{
+    fun isShowReceiveVehicle(info_state: Int): Boolean {
         //接单车辆按钮
 
 
-        return info_state==30||info_state==40
+        return info_state == 30 || info_state == 40
 
     }
 
 
     @SuppressLint("WrongConstant")
-    fun toCallPhone(mobile:String){
+    fun toCallPhone(mobile: String) {
         //拨打电话
-        if(TextUtils.isEmpty(mobile)){
+        if (TextUtils.isEmpty(mobile)) {
             toast("未添加该公司的电话!!")
             return
         }
@@ -219,24 +220,18 @@ open class SourceDetailsVModel : BViewModel<BRepository>() {
     }
 
 
-
-    fun  getOrderStatus(info_state:Int):String{
-        when(info_state){
-            10->return "待支付"
-            20->return "待接单"
-            30->return "进行中"
-            40->return "已完成"
-            100->return "已取消"
-            else ->return ""
+    fun getOrderStatus(info_state: Int): String {
+        when (info_state) {
+            10 -> return "待支付"
+            20 -> return "待接单"
+            30 -> return "进行中"
+            40 -> return "已完成"
+            100 -> return "已取消"
+            else -> return ""
 
         }
 
     }
 
 
-
-
-
-
-
 }

+ 6 - 5
app/src/main/java/com/quansu/heifengwuliu/vmodel/VehicleInfoVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.text.TextUtils
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
@@ -16,7 +17,7 @@ import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
 
-class VehicleInfoVModel : BViewModel<BRepository>() {
+class VehicleInfoVModel(application: Application) : BViewModel<BRepository>(application) {
     val info: MutableLiveData<InfoBean> = MutableLiveData<InfoBean>()
 
     var driverImg: MutableLiveData<String> = MutableLiveData("")
@@ -136,7 +137,7 @@ class VehicleInfoVModel : BViewModel<BRepository>() {
 
     fun discernVehicle(img: String) {//获取驾驶证信息
 
-        repository().lreq(NetEngine.service.cvVehicle(img))
+        repository().rxLreq(NetEngine.service.cvVehicle(img))
                 .doOnNext {
                     if (it.ok()) {
                        var bean=it.data() as CvVehicle
@@ -155,7 +156,7 @@ class VehicleInfoVModel : BViewModel<BRepository>() {
     }
     fun discernDriving(img: String) {//获取行驶证信息
 
-        repository().lreq(NetEngine.service.cvDriving(img))
+        repository().rxLreq(NetEngine.service.cvDriving(img))
                 .doOnNext {
                     if (it.ok()) {
                        var bean=it.data() as CvDriving
@@ -200,7 +201,7 @@ class VehicleInfoVModel : BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.setCar(driverImg.value, drivingZ.value, drivingF.value, tonnage.value.toString(),licenseDl,
+        repository().rxLreq(NetEngine.service.setCar(driverImg.value, drivingZ.value, drivingF.value, tonnage.value.toString(),licenseDl,
         licenseCy, color_code, carType_code,carLoad,carBrand,drivingSn,carWight,carSize,carCate_code,carEnergy_code,carOwn,
         carUse,carSn,organization, regDate.value, certDate.value,driverOrg, startDate.value, endDate.value))
                 .doOnNext {
@@ -221,7 +222,7 @@ class VehicleInfoVModel : BViewModel<BRepository>() {
 
 
     fun getInfo() {
-        repository().lreq(NetEngine.service.getInfo("2"))
+        repository().rxLreq(NetEngine.service.getInfo("2"))
                 .doOnNext {
                     if (it.ok(false)) {
                         var bean = it.data() as InfoBean

+ 7 - 6
app/src/main/java/com/quansu/heifengwuliu/vmodel/VehicleListVModel.kt

@@ -1,17 +1,17 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Application
 import android.os.Bundle
 import androidx.lifecycle.MutableLiveData
-import com.quansu.heifengwuliu.activity.SourceDetailsActivity
 import com.quansu.heifengwuliu.activity.WaybillDetailsActivity
 import com.quansu.heifengwuliu.utils.net.NetEngine
 import com.ysnows.base.base.BRRepository
 import com.ysnows.base.base.BRViewModel
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.UiSwitch
 import io.reactivex.Observable
 
-class VehicleListVModel : BRViewModel<BRRepository>()  {
+class VehicleListVModel(application: Application) : BRViewModel<BRRepository>(application)  {
 
 
     val info_id: MutableLiveData<String> = MutableLiveData<String>()
@@ -31,9 +31,6 @@ class VehicleListVModel : BRViewModel<BRRepository>()  {
     }
 
 
-    override fun api(): Observable<out IResponse<*>> {
-        return NetEngine.service.carList(info_id.value, repository().autoPage())
-    }
 
     fun goDetails(order_id:String){
         //去运单详情
@@ -44,5 +41,9 @@ class VehicleListVModel : BRViewModel<BRRepository>()  {
 
     }
 
+    override fun apiFunc(): suspend () -> IResp<*> {
+        return {NetEngine.service.carList(info_id.value, repository().page)}
+    }
+
 
 }

+ 98 - 105
app/src/main/java/com/quansu/heifengwuliu/vmodel/WaybillDetailsVModel.kt

@@ -3,12 +3,12 @@ package com.quansu.heifengwuliu.vmodel
 import android.Manifest
 import android.annotation.SuppressLint
 import android.app.Activity
+import android.app.Application
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import android.os.Bundle
 import android.text.TextUtils
-import android.text.TextWatcher
 import android.view.LayoutInflater
 import android.widget.EditText
 import android.widget.FrameLayout
@@ -16,8 +16,6 @@ import android.widget.ImageView
 import android.widget.LinearLayout
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
-import com.google.gson.Gson
-import com.hwangjr.rxbus.RxBus
 import com.qmuiteam.qmui.layout.QMUIFrameLayout
 import com.qmuiteam.qmui.skin.QMUISkinValueBuilder
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
@@ -40,8 +38,6 @@ import com.yanzhenjie.permission.AndPermission
 import com.ysnows.base.base.BRepository
 import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.UiSwitch
-import com.ysnows.base.utils.UiUtils
-import com.ysnows.base.view.BView
 import java.util.*
 
 
@@ -49,24 +45,24 @@ import java.util.*
 *
 *   订单状态 order_state:0->全部 10->待取货 20->运输中 30->待结算 40->待评价 50->已完成
 */
-open class WaybillDetailsVModel : BViewModel<BRepository>() {
+open class WaybillDetailsVModel(application: Application) : BViewModel<BRepository>(application) {
 
     val info: MutableLiveData<WaybillDetails> = MutableLiveData<WaybillDetails>()
+
     //0货主端  2司机端
     val type: MutableLiveData<Int> = MutableLiveData<Int>()
 
     val tvTitle: MutableLiveData<String> = MutableLiveData<String>()
 
 
-    var order_state:Int=0
+    var order_state: Int = 0
 
     var img: MutableLiveData<String> = MutableLiveData("")//司机端
     val isDialogShow: MutableLiveData<Boolean> = MutableLiveData<Boolean>(false)//司机端
 
     val isButShow: MutableLiveData<Boolean> = MutableLiveData<Boolean>(true)
 
-    var ll: LinearLayout? =null
-
+    var ll: LinearLayout? = null
 
 
     @Bindable
@@ -79,55 +75,55 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
 
     fun getInfo(order_id: String) {
 
-        if(type.value==0){//货主端-运单详情
+        if (type.value == 0) {//货主端-运单详情
 
-            repository().preq(NetEngine.service.orderGet(order_id))
+            repository().rxPreq(NetEngine.service.orderGet(order_id))
                     .doOnNext() {
                         if (it.ok()) {
 
                             info.value = it.data() as WaybillDetails
-                            order_state= info.value!!.order.order_state
-                            when(info.value!!.order.order_state){
-                                10->tvTitle.value="运输轨迹"
-                                20->tvTitle.value="运输轨迹"
-                                30->tvTitle.value="去结算"
-                                40->{
-                                    if(null!=info.value!!.eva.my_eva){
-                                        order_state=50
+                            order_state = info.value!!.order.order_state
+                            when (info.value!!.order.order_state) {
+                                10 -> tvTitle.value = "运输轨迹"
+                                20 -> tvTitle.value = "运输轨迹"
+                                30 -> tvTitle.value = "去结算"
+                                40 -> {
+                                    if (null != info.value!!.eva.my_eva) {
+                                        order_state = 50
                                         tvTitle.value = "查看评价"
-                                    }else {
+                                    } else {
                                         tvTitle.value = "待评价"
                                     }
                                 }
-                                50->tvTitle.value="查看评价"
+                                50 -> tvTitle.value = "查看评价"
                             }
 
                         }
                     }
                     .subscribe()
 
-        }else{ //司机端-货主详情
+        } else { //司机端-货主详情
 
-            repository().preq(NetEngine.service.orderGetDriver(order_id))
+            repository().rxPreq(NetEngine.service.orderGetDriver(order_id))
                     .doOnNext() {
                         if (it.ok()) {
 
-                            info.value = it.data()as WaybillDetails
-                            order_state= info.value!!.order.order_state
-                            isButShow.value = order_state==10||order_state==20||order_state==40||order_state==50
-
-                            when(info.value!!.order.order_state){
-                                10->tvTitle.value="开始送货"
-                                20->tvTitle.value="已送达"
-                                40->{
-                                    if(null!=info.value!!.eva.my_eva){
-                                        order_state=50
+                            info.value = it.data() as WaybillDetails
+                            order_state = info.value!!.order.order_state
+                            isButShow.value = order_state == 10 || order_state == 20 || order_state == 40 || order_state == 50
+
+                            when (info.value!!.order.order_state) {
+                                10 -> tvTitle.value = "开始送货"
+                                20 -> tvTitle.value = "已送达"
+                                40 -> {
+                                    if (null != info.value!!.eva.my_eva) {
+                                        order_state = 50
                                         tvTitle.value = "查看评价"
-                                    }else {
+                                    } else {
                                         tvTitle.value = "待评价"
                                     }
                                 }
-                                50->tvTitle.value="查看评价"
+                                50 -> tvTitle.value = "查看评价"
                             }
 
                         }
@@ -136,14 +132,12 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
         }
 
 
-
-
     }
 
 
-    fun toStartShip(order_id:String){
+    fun toStartShip(order_id: String) {
 
-        if(type.value==0) {//货主端
+        if (type.value == 0) {//货主端
             //0->全部 10->待取货 20->运输中 30->待结算 40->待评价 50->已完成
 //        10->tvTitle.value="运输轨迹"
 //        20->tvTitle.value="运输轨迹"
@@ -171,7 +165,7 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
                 //货主给司机评价
 
                 UiSwitch.bundleRes(repository().context as Activity, EvaluateActivity::class.java, Bundle().apply {
-                    putString("order_id",order_id)
+                    putString("order_id", order_id)
                     putString("url", info.value!!.driver.avatar)
                     putString("sn", info.value!!.order.order_sn)
                     putString("time", info.value!!.order.create_time)
@@ -183,19 +177,19 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
             }
             if (order_state == 50) {
                 //查看评价
-               UiSwitch.bundle(repository().context, EachOtherActivity::class.java,
-                Bundle().apply {
-                    putString("order_id",order_id)
+                UiSwitch.bundle(repository().context, EachOtherActivity::class.java,
+                        Bundle().apply {
+                            putString("order_id", order_id)
 
-                  }
+                        }
                 )
 
                 return
             }
 
-        }else{//司机端
+        } else {//司机端
 
-            if(order_state==10) {
+            if (order_state == 10) {
                 QMUIDialog.MessageDialogBuilder(repository().context)
                         .setTitle("提示")
                         .setMessage("确定要开始送货么")
@@ -209,28 +203,28 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
                         .show()
                 return
             }
-            if(order_state==20){//已完成
+            if (order_state == 20) {//已完成
 
-                isDialogShow.value=true
-                number=""
+                isDialogShow.value = true
+                number = ""
             }
-            if(order_state==40){//待评价--司机对货主的评价
+            if (order_state == 40) {//待评价--司机对货主的评价
 
                 UiSwitch.bundleRes(repository().context as Activity, EvaluateActivity::class.java, Bundle().apply {
-                    putString("order_id",order_id)
+                    putString("order_id", order_id)
                     putString("url", "")
                     putString("sn", info.value!!.order.order_sn)
                     putString("time", info.value!!.order.create_time)
-                },MIntentAction.REQUEST_CODE_COMMENT)
+                }, MIntentAction.REQUEST_CODE_COMMENT)
 
 
             }
 
-            if(order_state==50){//查看评价
+            if (order_state == 50) {//查看评价
 
                 UiSwitch.bundle(repository().context, EachOtherActivity::class.java,
                         Bundle().apply {
-                            putString("order_id",order_id)
+                            putString("order_id", order_id)
                         }
                 )
             }
@@ -239,20 +233,19 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
         }
 
 
-
     }
 
 
-    fun setSureSend(order_id:String){
+    fun setSureSend(order_id: String) {
 
-        var map= HashMap<String, String>()
+        var map = HashMap<String, String>()
         map["order_id"] = order_id
         map["state"] = "20"
-        repository().lreq(NetEngine.service.setStatus(map))
+        repository().rxLreq(NetEngine.service.setStatus(map))
                 .doOnNext() {
                     if (it.ok()) {
-                        order_state=20//变成运输中
-                        tvTitle.value="已送达"
+                        order_state = 20//变成运输中
+                        tvTitle.value = "已送达"
                     }
                 }
                 .subscribe()
@@ -260,11 +253,10 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
     }
 
 
-
     @SuppressLint("WrongConstant")
-    fun toCallPhone(mobile:String){
+    fun toCallPhone(mobile: String) {
         //拨打电话
-        if(TextUtils.isEmpty(mobile)){
+        if (TextUtils.isEmpty(mobile)) {
             toast("未添加该公司的电话!!")
             return
         }
@@ -282,40 +274,42 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
 
     }
 
-    fun interceptClick(){
+    fun interceptClick() {
         return
     }
+
     fun choseImg() {
         //选择照片
         ChosePhotoUtils.getChosePhoto(view()!!.context(), 1)
 
     }
-    fun goOperation(type:Int,order_id:String,data_id:String){
-        if(type==1){
-            isDialogShow.value=false
-        }else{
+
+    fun goOperation(type: Int, order_id: String, data_id: String) {
+        if (type == 1) {
+            isDialogShow.value = false
+        } else {
             //确定
-            if(TextUtils.isEmpty(number)){
+            if (TextUtils.isEmpty(number)) {
                 toast("输入运送数量")
                 return
             }
-            if(TextUtils.isEmpty(img.value)){
+            if (TextUtils.isEmpty(img.value)) {
                 toast("请上传凭证")
                 return
             }
 
-            var map= HashMap<String, String>()
+            var map = HashMap<String, String>()
             map["order_id"] = order_id
             map["state"] = "30"
-            map["data_id"] =data_id
+            map["data_id"] = data_id
             map["img"] = img.value.toString()
             map["nums"] = number.toString()
-            repository().lreq(NetEngine.service.setStatus(map))
+            repository().rxLreq(NetEngine.service.setStatus(map))
                     .doOnNext() {
                         if (it.ok(true)) {
-                            order_state=30//变成待结算
-                            tvTitle.value=""
-                            isDialogShow.value=false
+                            order_state = 30//变成待结算
+                            tvTitle.value = ""
+                            isDialogShow.value = false
                         }
                     }
                     .subscribe()
@@ -324,7 +318,7 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
 
     }
 
-    fun  getOrderStatus(order_state:Int):String {
+    fun getOrderStatus(order_state: Int): String {
         //0->全部 10->待取货 20->运输中 30->待结算 40->待评价 50->已完成
         if (type.value == 0) {//货主端
             when (order_state) {
@@ -350,8 +344,7 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
     }
 
 
-
-    fun showPayDialog(order_id: String){
+    fun showPayDialog(order_id: String) {
         var mNormalPopup = QMUIPopups.fullScreenPopup(repository().context)
         val builder: QMUISkinValueBuilder = QMUISkinValueBuilder.acquire()
         val frameLayout = QMUIFrameLayout(repository().context)
@@ -362,39 +355,40 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
         val butCancel: ImageView = layout.findViewById(R.id.iv_close)
         val etMoney: EditText = layout.findViewById(R.id.et_money)
 
-        val butSure: QMUIRoundButton =layout.findViewById(R.id.but_sure)
+        val butSure: QMUIRoundButton = layout.findViewById(R.id.but_sure)
 
         val payPwdEditText: PasswordView = layout.findViewById(R.id.ppet)
-        var password=""
+        var password = ""
 
 
         payPwdEditText.setPasswordListener(object : PasswordView.PasswordListener {
             override fun keyEnterPress(pwd: String?, isComplete: Boolean) {
-                password= pwd!!
-                if(!TextUtils.isEmpty(password)&&password.length==6){
-                    var money=etMoney.text.toString().trim()
-                    if(TextUtils.isEmpty(money)){
+                password = pwd!!
+                if (!TextUtils.isEmpty(password) && password.length == 6) {
+                    var money = etMoney.text.toString().trim()
+                    if (TextUtils.isEmpty(money)) {
                         toast("请输入支付金额")
                         return
                     }
-                    getInfoPay(money,order_id,password)
+                    getInfoPay(money, order_id, password)
                     mNormalPopup.dismiss()
                 }
 
             }
+
             override fun passwordChange(changeText: String?) {
             }
 
             override fun passwordComplete(pwd: String?) {
-                password=pwd!!
-                if(!TextUtils.isEmpty(password)&&password.length==6){
+                password = pwd!!
+                if (!TextUtils.isEmpty(password) && password.length == 6) {
 
-                    var money=etMoney.text.toString().trim()
-                    if(TextUtils.isEmpty(money)){
+                    var money = etMoney.text.toString().trim()
+                    if (TextUtils.isEmpty(money)) {
                         toast("请输入支付金额")
                         return
                     }
-                    getInfoPay(money,order_id,password)
+                    getInfoPay(money, order_id, password)
                     mNormalPopup.dismiss()
                 }
             }
@@ -403,16 +397,16 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
 
 
         butSure.setOnClickListener {
-            var money=etMoney.text.toString().trim()
-            if(TextUtils.isEmpty(money)){
+            var money = etMoney.text.toString().trim()
+            if (TextUtils.isEmpty(money)) {
                 toast("请输入支付金额")
                 return@setOnClickListener
             }
 
-            if(!TextUtils.isEmpty(password)&&password.length==6){
-                getInfoPay(money,order_id,password)
+            if (!TextUtils.isEmpty(password) && password.length == 6) {
+                getInfoPay(money, order_id, password)
                 mNormalPopup.dismiss()
-            }else{
+            } else {
                 toast("请输入支付密码")
                 return@setOnClickListener
             }
@@ -424,7 +418,7 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
         }
         builder.release();
 
-        val size= QMUIDisplayHelper.getScreenWidth(repository().context)
+        val size = QMUIDisplayHelper.getScreenWidth(repository().context)
 
         val lp: FrameLayout.LayoutParams = FrameLayout.LayoutParams(size,
                 FrameLayout.LayoutParams.WRAP_CONTENT)
@@ -441,26 +435,25 @@ open class WaybillDetailsVModel : BViewModel<BRepository>() {
     }
 
 
-    fun getInfoPay(money:String,order_id: String,pay_pwd:String) {
-        repository().lreq(NetEngine.service.carPay(money,order_id,pay_pwd))
+    fun getInfoPay(money: String, order_id: String, pay_pwd: String) {
+        repository().rxLreq(NetEngine.service.carPay(money, order_id, pay_pwd))
                 .doOnNext() {
                     if (it.ok(true)) {
-                        order_state=40
-                        tvTitle.value= "待评价"
+                        order_state = 40
+                        tvTitle.value = "待评价"
                     }
 
                 }
                 .subscribe()
     }
 
-    fun changeComment(){//发表完评论改变状态
-        order_state=50
-        tvTitle.value="查看评价"
+    fun changeComment() {//发表完评论改变状态
+        order_state = 50
+        tvTitle.value = "查看评价"
 
     }
 
 
-
 }
 
 

+ 4 - 3
app/src/main/java/com/quansu/heifengwuliu/vmodel/WithdrawalVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import android.app.Activity
+import android.app.Application
 import android.content.Intent
 import android.text.TextUtils
 import androidx.databinding.Bindable
@@ -18,7 +19,7 @@ import com.ysnows.base.utils.UiSwitch
  *Created by shihuiyun
  *on 2020/9/22
  */
-class WithdrawalVModel: BViewModel<BRepository>() {
+class WithdrawalVModel(application: Application): BViewModel<BRepository>(application) {
 
     var canUseMoney: MutableLiveData<String> = MutableLiveData()
 
@@ -49,7 +50,7 @@ class WithdrawalVModel: BViewModel<BRepository>() {
             return
         }
 
-        repository().lreq(NetEngine.service.withdraw(money, infoBank.value!!.name,infoBank.value!!.bank,
+        repository().rxLreq(NetEngine.service.withdraw(money, infoBank.value!!.name,infoBank.value!!.bank,
                 infoBank.value!!.kbank,infoBank.value!!.number))
                 .doOnNext {
                     if (it.ok(true)) {
@@ -63,7 +64,7 @@ class WithdrawalVModel: BViewModel<BRepository>() {
     }
 
     fun getBankInfo(){//获取银行信息
-        repository().lreq(NetEngine.service.getInfo("4"))
+        repository().rxLreq(NetEngine.service.getInfo("4"))
                 .doOnNext {
                     if (it.ok(false)) {
                         var bean=it.data() as InfoBean

+ 0 - 9
app/src/main/java/com/quansu/heifengwuliu/widget/BaseLinearLayout.java

@@ -73,15 +73,6 @@ public class BaseLinearLayout extends LinearLayout implements BaseView {
         return null;
     }
 
-    @Nullable
-    @Override
-    public BRepository repository() {
-        BView bView = view();
-        if (bView != null) {
-            return bView.repository();
-        }
-        return null;
-    }
 
     @Override
     public void toast(@Nullable String msg) {

+ 23 - 57
base/src/main/java/com/ysnows/base/base/BActivity.kt

@@ -1,10 +1,7 @@
 package com.ysnows.base.base
 
 import android.content.Context
-import android.content.pm.ActivityInfo
-import android.os.Build
 import android.os.Bundle
-import android.os.PersistableBundle
 import android.text.TextUtils
 import android.view.View
 import android.view.ViewGroup
@@ -19,7 +16,6 @@ import androidx.constraintlayout.widget.ConstraintSet
 import androidx.databinding.ViewDataBinding
 import androidx.lifecycle.ViewModelProvider
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
-import com.githang.statusbar.StatusBarCompat
 import com.hwangjr.rxbus.RxBus
 import com.kingja.loadsir.callback.Callback.OnReloadListener
 import com.kingja.loadsir.core.LoadService
@@ -41,14 +37,14 @@ import kotlinx.coroutines.cancelChildren
 import kotlin.coroutines.CoroutineContext
 
 abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatActivity(), BView, OnReloadListener, TitleBar.DataSource, CoroutineScope {
-    protected lateinit var repository: BRepository
 
     private val job = SupervisorJob()
 
     override val coroutineContext: CoroutineContext
         get() = Dispatchers.Main + job
 
-    override fun coroutine(): CoroutineScope? {
+
+    override fun coroutine(): CoroutineScope {
         return this
     }
 
@@ -64,19 +60,8 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
 
     private var titleBar: TitleBar? = null
 
-
-
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
-        } else {
-            try {
-                //设置坚屏 一定要放到try catch里面,否则会崩溃
-                requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
-            } catch (e: Exception) {
-            }
-        }
-
 
 //        if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) {
 //            finish()
@@ -84,19 +69,15 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
 //        }
 //        requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
 
-        initRepository()
         __before()
-
-
         binding = binding()
         binding.lifecycleOwner = this
-        if (vmClass() != null) {
-            vm = ViewModelProvider(this)[vmClass()!!]
-            vm.init()
-            vm.setBR(repository = repository())
-            vm.attachView(this)
-            binding.setVariable(BR.vm, vm)
-        }
+
+        vm = ViewModelProvider(this)[vmClass()]
+        vm.attachView(this)
+        vm.init()
+
+        binding.setVariable(BR.vm, vm)
         val rootView = binding.root as ViewGroup
         swipeRefreshLayout = rootView.findViewById(R.id.refresh_layout)
         if (swipeRefreshLayout != null) {
@@ -122,9 +103,6 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         }
 
         setContentView(rootView)
-        //手机标题栏字体颜色
-        StatusBarCompat.setStatusBarColor(this, resources.getColor(R.color.white))
-
         setStatusBar()
         register()
         loadService = if (contentView != null) {
@@ -135,8 +113,19 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         initView(rootView)
         listeners()
         customizeEmptyView()
-        initCreate(savedInstanceState)
+        init(savedInstanceState)
         onRefresh()
+
+        initObserver();
+    }
+
+    private fun initObserver() {
+        vm.refreshing.observe(this) { refreshing ->
+            refreshing(refreshing)
+            if (refreshing) {
+                onRefresh()
+            }
+        }
     }
 
     protected open fun vmClass(): Class<VM> {
@@ -152,7 +141,6 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         QMUIStatusBarHelper.translucent(this)
     } else {
         StatusBarUtil.setColor(this, resources.getColor(R.color.white), 1)
-
     }
 
     override fun initView(view: View?) {
@@ -164,7 +152,7 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
      *
      * @param savedInstanceState
      */
-    protected open fun initCreate(savedInstanceState: Bundle?) {}
+    protected open fun init(savedInstanceState: Bundle?) {}
     override fun customizeEmptyView() {}
     fun setTitle(title: String?) {
         runOnUiThread {
@@ -190,16 +178,6 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
 
     protected abstract fun binding(): B
 
-    /**
-     * 绑定Presenter
-     */
-    protected open fun createRepository(): BRepository {
-        return BRepository()
-    }
-
-    override fun repository(): BRepository {
-        return repository
-    }
 
     override fun context(): Context {
         return this
@@ -211,16 +189,6 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         unRegister()
     }
 
-    /**
-     * 初始化Presenter
-     *
-     * @return
-     */
-    protected open fun initRepository(): BRepository {
-        repository = createRepository()
-        repository.attachView(this)
-        return repository
-    }
 
     override fun onReload(v: View?) {
         if (needLogin() && user() == null) {
@@ -306,6 +274,7 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         return R.color.white
     }
 
+
     override fun titleSize(): Int {
         return 17
     }
@@ -379,7 +348,4 @@ abstract class BActivity<VM : BViewModel<*>, B : ViewDataBinding> : RxAppCompatA
         const val TO_LOGIN = 1
     }
 
-
-
-
-}
+}

+ 0 - 4
base/src/main/java/com/ysnows/base/base/BAdapter.kt

@@ -46,10 +46,6 @@ abstract class BAdapter<T, K : BaseViewHolder> : BaseQuickAdapter<T, K>, BaseVie
         } else null
     }
 
-    override fun repository(): BRepository? {
-        val bView = view()
-        return bView?.repository()
-    }
 
     override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {
         super.onDetachedFromRecyclerView(recyclerView)

+ 9 - 33
base/src/main/java/com/ysnows/base/base/BFragment.kt

@@ -37,24 +37,23 @@ import kotlin.coroutines.CoroutineContext
  * @param <B>
 </B></VM> */
 abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment(), BView, OnReloadListener, TitleBar.DataSource, CoroutineScope {
-    protected lateinit var repository: BRepository
     override var loadService: LoadService<*>? = null
 
+    protected lateinit var vm: VM
+    protected lateinit var binding: B
+    private var swipeRefreshLayout: SwipeRefreshLayout? = null
+
 
     private val job = SupervisorJob()
 
     override val coroutineContext: CoroutineContext
         get() = Dispatchers.Main + job
 
-    override fun coroutine(): CoroutineScope? {
+
+    override fun coroutine(): CoroutineScope {
         return this
     }
 
-
-    protected lateinit var vm: VM
-    protected lateinit var binding: B
-    private var swipeRefreshLayout: SwipeRefreshLayout? = null
-
     protected var titleBar: TitleBar? = null
 
     private var page_status = 0
@@ -87,7 +86,6 @@ abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment()
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        initRepository()
         register()
     }
 
@@ -96,7 +94,6 @@ abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment()
         binding.lifecycleOwner = this
         vm = ViewModelProvider(this).get(vmClass())
         vm.init()
-        vm.setBR(repository = repository())
         vm.attachView(this)
         binding.setVariable(BR.vm, vm)
         val view = binding.root as ViewGroup
@@ -127,31 +124,10 @@ abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment()
         return BViewModel::class.java as Class<VM>
     }
 
-    /**
-     * 绑定Presenter
-     */
-    protected open fun createRepository(): BRepository {
-        return BRepository()
-    }
-
-    override fun repository(): BRepository {
-        return repository
-    }
-
     override fun context(): Context {
         return requireContext()
     }
 
-    /**
-     * 初始化Presenter
-     *
-     * @return
-     */
-    protected open fun initRepository(): BRepository? {
-        repository = createRepository()
-        repository.attachView(this)
-        return repository
-    }
 
     override fun onReload(v: View?) {
         if (needLogin() && user() == null) {
@@ -252,11 +228,13 @@ abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment()
         return R.color.white
     }
 
+
     @ColorRes
     override fun rightTextColor(): Int {
         return R.color.white
     }
 
+
     override fun titleSize(): Int {
         return 17
     }
@@ -313,6 +291,4 @@ abstract class BFragment<VM : BViewModel<*>, B : ViewDataBinding> : RxFragment()
     override fun exitFromTopAnim(): Boolean {
         return false
     }
-
-
-}
+}

+ 5 - 25
base/src/main/java/com/ysnows/base/base/BRActivity.kt

@@ -11,9 +11,8 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import com.ysnows.base.R
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.view.BRView
-import io.reactivex.Observable
 
 abstract class BRActivity<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseViewHolder>, B : ViewDataBinding> : BActivity<VM, B>(), BRView<A> {
     open lateinit var mAdapter: A
@@ -50,9 +49,6 @@ abstract class BRActivity<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseV
         }
     }
 
-    override fun createRepository(): BRRepository {
-        return BRRepository()
-    }
 
     override fun refreshing(refreshing: Boolean) {
         if (refresh_layout != null) {
@@ -73,25 +69,10 @@ abstract class BRActivity<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseV
 
 
     override fun loadMore() {
-
-        vm.repository().reqList().subscribe()
+//        vm.repository().reqList().subscribe()
+        vm.reqMore()
     }
 
-    override fun repository(): BRRepository {
-        return repository as BRRepository
-    }
-
-    /**
-     * 初始化Presenter
-     *
-     * @return
-     */
-    override fun initRepository(): BRRepository {
-        repository = createRepository()
-        repository.attachView(this)
-
-        return repository as BRRepository
-    }
 
     override fun getTotal(total: Int) {}
 
@@ -145,9 +126,8 @@ abstract class BRActivity<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseV
         }
     }
 
-    override fun onListReceive(res: IResponse<*>) {}
+    override fun onListReceive(res: IResp<*>) {}
 
     override fun adapter(): A = mAdapter
 
-
-}
+}

+ 5 - 23
base/src/main/java/com/ysnows/base/base/BRFragment.kt

@@ -6,14 +6,14 @@ import androidx.recyclerview.widget.RecyclerView
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import com.ysnows.base.R
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.view.BRView
-import io.reactivex.Observable
 
 /**
  *
  */
 abstract class BRFragment<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseViewHolder>, B : ViewDataBinding> : BFragment<VM, B>(), BRView<A> {
+
     protected lateinit var mAdapter: A
 
     private var recyclerView: RecyclerView? = null
@@ -43,10 +43,6 @@ abstract class BRFragment<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseV
 //            adapter.setPreLoadNumber(2);
     }
 
-    override fun createRepository(): BRRepository {
-        return BRRepository()
-    }
-
 
     override fun vmClass(): Class<VM> {
         return BRViewModel::class.java as Class<VM>
@@ -61,26 +57,12 @@ abstract class BRFragment<VM : BRViewModel<*>, A : BaseQuickAdapter<*, out BaseV
         get() = true
 
     override fun loadMore() {
-        vm.repository().reqList().subscribe()
-
-    }
-
-    override fun repository(): BRRepository {
-        return repository as BRRepository
-    }
+//        vm.repository().reqList().subscribe()
+        vm.reqMore()
 
-    /**
-     * 初始化Presenter
-     *
-     * @return
-     */
-    override fun initRepository(): BRRepository {
-        repository = createRepository()
-        repository.attachView(this)
-        return repository as BRRepository
     }
 
-    override fun onListReceive(res: IResponse<*>) {}
+    override fun onListReceive(res: IResp<*>) {}
     override fun getTotal(total: Int) {}
 
     override fun adapter(): A = mAdapter

+ 121 - 48
base/src/main/java/com/ysnows/base/base/BRRepository.kt

@@ -2,22 +2,26 @@ package com.ysnows.base.base
 
 import android.annotation.SuppressLint
 import com.ysnows.base.emptyview.callback.EmptyCallback
-import com.ysnows.base.model.IResultList
-import com.ysnows.base.net.IResponse
-import com.ysnows.base.utils.MMKVManager
+import com.ysnows.base.emptyview.callback.LoadingCallback
+import com.ysnows.base.emptyview.callback.TimeoutCallback
+import com.ysnows.base.emptyview.callback.ToLoginCallback
+import com.ysnows.base.net.IResp
+import com.ysnows.base.net.NetCode
+import com.ysnows.base.net.Resp
+import com.ysnows.base.utils.exception.ExceptionUtils
 import com.ysnows.base.view.BRView
 import io.reactivex.Observable
 import io.reactivex.ObservableEmitter
-import io.reactivex.ObservableOnSubscribe
 
 open class BRRepository : BRepository() {
 
-    override fun view(): BRView<*>? {
-        return bView as BRView<*>?
+    override fun view(): BRView<*> {
+        return bView as BRView<*>
     }
 
-    private lateinit var api: Observable<IResponse<Collection<Any>>>
 
+    private lateinit var api: Observable<IResp<Collection<Any>>>
+    private lateinit var apiFunc: suspend () -> IResp<*>
     var page = 0
 
     /**
@@ -27,85 +31,154 @@ open class BRRepository : BRepository() {
      * @param key
      * @param clazz
      *
-     * @return
-    </T> */
-    fun <D, T : IResultList<D>?> cacheReq(key: String?, clazz: Class<T>?): Observable<T> {
-        return Observable.create(ObservableOnSubscribe { emitter ->
-            val t = MMKVManager.instance().decodeParcelable(key, clazz)
-            var pagable = false
-            if (t != null) {
-                view()?.adapter()?.setList(t.list() as ArrayList<Nothing>)
-                emitter.onNext(t)
+     * @return</T>
+     *
+     * */
+
+    private suspend fun <T : IResp<*>> reqList(pageLoading: Boolean = true, func: suspend () -> T): T {
+
+        try {
+            if (pageLoading) {
+                bView.loadService?.showCallback(LoadingCallback::class.java)
+            }
+            val resp = func()
+            view().onListReceive(resp)
+
+            if (resp.code() == NetCode.CODE_OFFLINE) {
+                when {
+                    pageLoading -> {
+                        bView.loadService?.showCallback(ToLoginCallback::class.java)
+                    }
+                    view().isNeedRefresh -> {
+                        view().refreshing(false)
+                    }
+                }
+
+                bView.processCodeOffline()
             } else {
-                pagable = true
+                if (page <= 1) {
+                    if (resp.empty()) { //如果没有数据
+                        view().loadService?.showCallback(EmptyCallback::class.java)
+                    } else {
+                        view().adapter().setList(resp.data() as Collection<Nothing>)
+                        view().loadService?.showSuccess()
+                    }
+                } else {
+                    view().adapter().addData(resp.data() as Collection<Nothing>)
+                }
+
+                if (resp.more(page)) {
+                    view().adapter().loadMoreModule.loadMoreComplete()
+                } else {
+                    //数据全部加载完毕
+                    view().adapter().loadMoreModule.loadMoreEnd()
+                }
+
+
+                when {
+                    pageLoading -> {
+                        bView.loadService?.showSuccess()
+                    }
+                    view().isNeedRefresh -> {
+                        view().refreshing(false)
+                    }
+                }
+
+
+            }
+            return resp
+        } catch (e: Exception) {
+            e.printStackTrace()
+            when {
+                pageLoading -> {
+                    bView.loadService?.showCallback(TimeoutCallback::class.java)
+                }
+
+                view().isNeedRefresh -> {
+                    view().refreshing(false)
+                }
+                else -> {
+                    view().toast(ExceptionUtils.getExceptionName(e))
+                }
             }
-//            reqFirstPage(pagable)
-//                    .doOnNext(Consumer { res: IResponse<*> ->
-////                            if (res.ok()) {
-//                        val result = res.data() as T?
-//                        emitter.onNext(result)
-//                        val encode = MMKVManager.instance().encode(key, result)
-//                    } as Consumer<in IResponse<*>>)
-//                    .subscribe()
-        })
+
+            if (page >= 1) {
+                view().adapter().loadMoreModule.loadMoreFail()
+                page -= 1
+            }
+
+            return Resp<Any>(NetCode.CODE_EXCEPTION, message = ExceptionUtils.getExceptionName(e)) as T
+        }
+    }
+
+    suspend fun <T : IResp<*>> reqFirstPage(pagable: Boolean, apiFunc: suspend () -> T): T {
+        this.apiFunc = apiFunc
+        page = 1
+        return reqList(pagable, apiFunc)
+    }
+
+    suspend fun reqMore(): IResp<*> {
+        autoPage()
+        return reqList(false, this.apiFunc)
     }
 
 
-    fun reqFirstPage(api: Observable<IResponse<Collection<Any>>>, pagable: Boolean): Observable<IResponse<Collection<Any>>> {
+    fun rxReqFirstPage(api: Observable<IResp<Collection<Any>>>, pagable: Boolean): Observable<IResp<Collection<Any>>> {
         this.api = api;
-        page = 1;
-        return reqList(api, pagable)
+        page = 1
+        return rxReqList(api, pagable)
     }
 
-    fun reqList(): Observable<IResponse<Collection<Any>>> {
-        return reqList(this.api, false)
+
+    fun rxReqList(): Observable<IResp<Collection<Any>>> {
+        return rxReqList(this.api, false)
     }
 
 
-    fun reqList(observable: Observable<IResponse<Collection<Any>>>): Observable<IResponse<Collection<Any>>> {
-        return reqList(observable, false)
+    fun rxReqList(observable: Observable<IResp<Collection<Any>>>): Observable<IResp<Collection<Any>>> {
+        return rxReqList(observable, false)
     }
 
     @SuppressLint("CheckResult")
-    fun reqList(observable: Observable<IResponse<Collection<Any>>>, pageLoading: Boolean): Observable<IResponse<Collection<Any>>> {
-        return Observable.create { emitter: ObservableEmitter<IResponse<Collection<Any>>> ->
-            req(observable, pageLoading, false)
+    fun rxReqList(observable: Observable<IResp<Collection<Any>>>, pageLoading: Boolean): Observable<IResp<Collection<Any>>> {
+        return Observable.create { emitter: ObservableEmitter<IResp<Collection<Any>>> ->
+            rxReq(observable, pageLoading, false)
                     .doOnError { throwable: Throwable ->
                         throwable.printStackTrace()
                         if (page >= 1) {
-                            view()?.adapter()?.loadMoreModule?.loadMoreFail()
+                            view().adapter().loadMoreModule.loadMoreFail()
                             page -= 1
                         }
                         emitter.onError(throwable)
                     }
-                    .subscribe({ res: IResponse<Collection<Any>> ->
-                        view()?.onListReceive(res)
+                    .subscribe({ res: IResp<Collection<Any>> ->
+                        view().onListReceive(res)
                         if (page <= 1) {
                             if (res.empty()) { //如果没有数据
-                                view()?.refreshing(false)
-                                view()?.loadService!!.showCallback(EmptyCallback::class.java)
+                                view().refreshing(false)
+                                view().loadService!!.showCallback(EmptyCallback::class.java)
                             } else {
-                                view()?.refreshing(false)
+                                view().refreshing(false)
                                 //Object data = res.data();
 //                                if (data instanceof IResultList) {
 //                                    adapter.setList(((IResultList) data).list());
 //                                }
-                                view()?.adapter()?.setList(res.data() as Collection<Nothing>)
-                                view()?.loadService!!.showSuccess()
+                                view().adapter().setList(res.data() as Collection<Nothing>)
+                                view().loadService!!.showSuccess()
                             }
-                            view()?.getTotal(res.total())
+                            view().getTotal(res.total())
                         } else {
 //                            Object data = res.data();
 //                            if (data instanceof IResultList) {
 //                                view().getAdapter().addData((((IResultList) data).list()));
 //                            }
-                            view()?.adapter()?.addData(res.data() as Collection<Nothing>)
+                            view().adapter().addData(res.data() as Collection<Nothing>)
                         }
                         if (res.more(page)) {
-                            view()?.adapter()?.loadMoreModule?.loadMoreComplete()
+                            view().adapter().loadMoreModule.loadMoreComplete()
                         } else {
                             //数据全部加载完毕
-                            view()?.adapter()?.loadMoreModule?.loadMoreEnd()
+                            view().adapter().loadMoreModule.loadMoreEnd()
                         }
                         emitter.onNext(res)
                     }, { throwable: Throwable? -> }) { emitter.onComplete() }

+ 33 - 13
base/src/main/java/com/ysnows/base/base/BRViewModel.kt

@@ -1,35 +1,49 @@
 package com.ysnows.base.base
 
+import android.app.Application
 import androidx.databinding.Observable.OnPropertyChangedCallback
 import androidx.databinding.PropertyChangeRegistry
-import com.ysnows.base.net.IResponse
+import androidx.lifecycle.viewModelScope
+import com.ysnows.base.net.IResp
 import com.ysnows.base.utils.Toasts
 import com.ysnows.base.view.BRView
-import io.reactivex.Observable
-
-abstract class BRViewModel<R : BRRepository> : BViewModel<R>() {
+import kotlinx.coroutines.launch
 
+@Suppress("UNCHECKED_CAST")
+abstract class BRViewModel<R : BRRepository>(application: Application) : BViewModel<R>(application) {
 
     override fun toast(msg: String?) {
-        Toasts.toast(view()!!.context(), msg)
+        Toasts.toast(view().context(), msg)
     }
 
     override fun toast(msgId: Int) {
-        Toasts.toast(view()!!.context(), msgId)
+        Toasts.toast(view().context(), msgId)
     }
 
     override fun firstReq() {
         /*如果列表里已经有数据了,请求的时候pagable=false*/
 
-        val pagable = view()!!.adapter().data.isEmpty()
-        repository().page = 0;
-        repository().reqFirstPage(api() as Observable<IResponse<Collection<Any>>>, pagable)
-                .subscribe()
+        val pagable = view().adapter().data.isEmpty()
+
+        repository().page = 0
+
+        viewModelScope.launch {
+            repository().reqFirstPage(pagable, apiFunc())
+        }
+
+//        repository().reqFirstPage(api() as Observable<IResponse<Collection<Any>>>, pagable)
+//                .subscribe()
+    }
+
+
+    fun reqMore() = viewModelScope.launch {
+        repository().reqMore()
     }
 
+
     override fun init() {}
-    override fun view(): BRView<*>? {
-        return bView as BRView<*>?
+    override fun view(): BRView<*> {
+        return bView as BRView<*>
     }
 
     @Transient
@@ -80,6 +94,12 @@ abstract class BRViewModel<R : BRRepository> : BViewModel<R>() {
         mCallbacks!!.notifyCallbacks(this, fieldId, null)
     }
 
-    abstract fun api(): Observable<out IResponse<*>>
+    override fun createRepository(): R {
+        return BRRepository() as R
+    }
+
+//    abstract fun api(): Observable<out IResponse<*>>
+
+    abstract fun apiFunc(): suspend () -> IResp<*>
 
 }

+ 116 - 64
base/src/main/java/com/ysnows/base/base/BRepository.kt

@@ -2,8 +2,6 @@ package com.ysnows.base.base
 
 import android.content.Context
 import android.os.Bundle
-import android.util.Log
-import com.socks.library.KLog
 import com.trello.rxlifecycle2.components.RxFragment
 import com.trello.rxlifecycle2.components.support.RxAppCompatActivity
 import com.ysnows.base.config.VConfig
@@ -11,11 +9,10 @@ import com.ysnows.base.dialog.QMUIProgressDialog
 import com.ysnows.base.emptyview.callback.LoadingCallback
 import com.ysnows.base.emptyview.callback.TimeoutCallback
 import com.ysnows.base.emptyview.callback.ToLoginCallback
-import com.ysnows.base.inter.IPResponse
 import com.ysnows.base.inter.IRepository
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 import com.ysnows.base.net.NetCode
-import com.ysnows.base.utils.MMKVManager
+import com.ysnows.base.net.Resp
 import com.ysnows.base.utils.Toasts
 import com.ysnows.base.utils.UiSwitch
 import com.ysnows.base.utils.exception.ExceptionUtils
@@ -29,59 +26,40 @@ import io.reactivex.schedulers.Schedulers
 import java.util.concurrent.TimeUnit
 
 open class BRepository : IRepository {
-    open var bView: BView? = null
+    open lateinit var bView: BView
 
     /**
      * 将View传递进Presenter
      *
      * @param view
      */
-    override fun attachView(view: BView?) {
+    override fun attachView(view: BView) {
         this.bView = view
     }
 
     override fun init() {}
-    override fun view(): BView? {
+    override fun view(): BView {
         return bView
     }
 
-    fun <D, T : IResponse<D>?> lreq(observable: Observable<T>): Observable<T> {
-        return req(observable, pageReq = false, loading = true)
+    fun <D, T : IResp<D>?> rxLreq(observable: Observable<T>): Observable<T> {
+        return rxReq(observable, pageReq = false, loading = true)
     }
 
-    fun <D, T : IResponse<D>?> preq(observable: Observable<T>): Observable<T> {
-        return req(observable, pageReq = true, loading = false)
+    fun <D, T : IResp<D>?> rxPreq(observable: Observable<T>): Observable<T> {
+        return rxReq(observable, pageReq = true, loading = false)
     }
 
-    fun <D, T : IResponse<D>?> req(observable: Observable<T>): Observable<T> {
-        return req(observable, pageReq = false, loading = false)
-    }
 
-    fun <D, T : IPResponse<D>?> cacheReq(key: String?, clazz: Class<T>, observable: Observable<T>): Observable<T> {
-        return Observable.create { emitter ->
-            val t = MMKVManager.instance().decodeParcelable(key, clazz)
-            if (t != null) {
-                emitter.onNext(t)
-            } else {
-                req(observable)
-                        .doOnNext { res: T ->
-                            if (res?.ok()!!) {
-                                val result = res.data() as T
-                                val encode = MMKVManager.instance().encode(key, result)
-                                KLog.d(encode)
-                                emitter.onNext(result)
-                            }
-                        }
-                        .subscribe()
-            }
-        }
+    fun <D, T : IResp<D>?> rxReq(observable: Observable<T>): Observable<T> {
+        return rxReq(observable, pageReq = false, loading = false)
     }
 
     /**
      * @param observable
      * @param pageReq 是否是页面请求
      */
-    fun <D, T : IResponse<D>?> req(observable: Observable<T>, pageReq: Boolean, loading: Boolean): Observable<T> {
+    fun <D, T : IResp<D>?> rxReq(observable: Observable<T>, pageReq: Boolean, loading: Boolean): Observable<T> {
         return Observable.create { emitter ->
             val qmuiProgressDialog = arrayOfNulls<QMUIProgressDialog>(1)
 
@@ -91,23 +69,21 @@ open class BRepository : IRepository {
                     .doOnSubscribe(Consumer { disposable: Disposable ->
                         if (!disposable.isDisposed) {
                             if (pageReq) {
-                                bView!!.loadService!!.showCallback(LoadingCallback::class.java)
+                                bView.loadService!!.showCallback(LoadingCallback::class.java)
                             }
                             if (loading) {
                                 qmuiProgressDialog[0] = QMUIProgressDialog()
-                                qmuiProgressDialog[0]!!.show(bView!!.context())
+                                qmuiProgressDialog[0]!!.show(bView.context())
                             }
                         }
                     } as Consumer<Disposable>)
-            if (bView != null) {
-                if (view() is RxAppCompatActivity) {
-                    subscribe = subscribe
-                            .compose((view() as RxAppCompatActivity?)!!.bindToLifecycle())
-                }
-                if (view() is RxFragment) {
-                    subscribe = subscribe
-                            .compose((view() as RxFragment?)!!.bindToLifecycle())
-                }
+            if (view() is RxAppCompatActivity) {
+                subscribe = subscribe
+                        .compose((view() as RxAppCompatActivity?)!!.bindToLifecycle())
+            }
+            if (view() is RxFragment) {
+                subscribe = subscribe
+                        .compose((view() as RxFragment?)!!.bindToLifecycle())
             }
             subscribe
                     .subscribeOn(AndroidSchedulers.mainThread())
@@ -115,17 +91,14 @@ open class BRepository : IRepository {
                     .subscribe(object : Observer<T> {
                         override fun onSubscribe(d: Disposable) {}
                         override fun onNext(iResponse: T) {
-
                             if (iResponse?.code() == NetCode.CODE_OFFLINE) {
                                 if (pageReq) {
-                                    bView?.loadService?.showCallback(ToLoginCallback::class.java)
+                                    bView.loadService?.showCallback(ToLoginCallback::class.java)
                                 }
-                                bView?.processCodeOffline()
-                                bView?.toLogin()
-
+                                bView.processCodeOffline()
                             } else {
                                 if (pageReq) {
-                                    bView?.loadService?.showSuccess()
+                                    bView.loadService?.showSuccess()
                                 }
                             }
                             emitter.onNext(iResponse)
@@ -134,15 +107,15 @@ open class BRepository : IRepository {
                         override fun onError(e: Throwable) {
                             e.printStackTrace()
                             if (pageReq) {
-                                bView!!.loadService!!.showCallback(TimeoutCallback::class.java)
+                                bView.loadService!!.showCallback(TimeoutCallback::class.java)
                             } else if (loading) {
                                 qmuiProgressDialog[0]!!.dismiss()
-                                view()!!.toast(ExceptionUtils.getExceptionName(e))
+                                view().toast(ExceptionUtils.getExceptionName(e))
                             } else {
-                                view()!!.toast(ExceptionUtils.getExceptionName(e))
+                                view().toast(ExceptionUtils.getExceptionName(e))
                             }
-                            if (view()!!.isNeedRefresh) {
-                                view()!!.refreshing(false)
+                            if (view().isNeedRefresh) {
+                                view().refreshing(false)
                             }
                             emitter.onError(e)
                         }
@@ -151,8 +124,8 @@ open class BRepository : IRepository {
                             if (loading) {
                                 qmuiProgressDialog[0]!!.dismiss()
                             }
-                            if (view()!!.isNeedRefresh) {
-                                view()!!.refreshing(false)
+                            if (view().isNeedRefresh) {
+                                view().refreshing(false)
                             }
                             emitter.onComplete()
                         }
@@ -161,21 +134,100 @@ open class BRepository : IRepository {
     }
 
     val context: Context?
-        get() = view()!!.context()
+        get() = view().context()
 
     override fun <T> single(clazz: Class<T>) {
-        UiSwitch.single(view()!!.context(), clazz)
+        UiSwitch.single(view().context(), clazz)
     }
 
     override fun <T> bundle(clazz: Class<T>, bundle: Bundle?) {
-        UiSwitch.bundle(view()!!.context(), clazz, bundle)
+        UiSwitch.bundle(view().context(), clazz, bundle)
     }
 
     override fun toast(msg: String?) {
-        Toasts.toast(view()!!.context(), msg)
+        Toasts.toast(view().context(), msg)
     }
 
     override fun toast(msgId: Int) {
-        Toasts.toast(view()!!.context(), msgId)
+        Toasts.toast(view().context(), msgId)
+    }
+
+
+    suspend fun <T : IResp<*>> lreq(func: suspend () -> T): T {
+        return req(loading = true, pageLoading = false, func)
+    }
+
+    suspend fun <T : IResp<*>> preq(func: suspend () -> T): T {
+        return req(loading = false, pageLoading = true, func)
+    }
+
+    @Suppress("UNCHECKED_CAST")
+    suspend fun <T : IResp<*>> req(loading: Boolean = false, pageLoading: Boolean = false, func: suspend () -> T): T {
+
+        var qmuiProgressDialog: QMUIProgressDialog? = null
+
+        try {
+
+            if (pageLoading) {
+                bView.loadService?.showCallback(LoadingCallback::class.java)
+            }
+
+            if (loading) {
+                qmuiProgressDialog = QMUIProgressDialog()
+                qmuiProgressDialog.show(bView.context())
+            }
+
+            val resp = func()
+
+            if (resp.code() == NetCode.CODE_OFFLINE) {
+                when {
+                    pageLoading -> {
+                        bView.loadService?.showCallback(ToLoginCallback::class.java)
+                    }
+                    loading -> {
+                        qmuiProgressDialog?.dismiss()
+                    }
+                    view().isNeedRefresh -> {
+                        view().refreshing(false)
+                    }
+                }
+
+                bView.processCodeOffline()
+            } else {
+                when {
+                    pageLoading -> {
+                        bView.loadService?.showSuccess()
+                    }
+                    loading -> {
+                        qmuiProgressDialog?.dismiss()
+                    }
+                    view().isNeedRefresh -> {
+                        view().refreshing(false)
+                    }
+                }
+            }
+            return resp
+        } catch (e: Exception) {
+            e.printStackTrace()
+            when {
+                pageLoading -> {
+                    bView.loadService?.showCallback(TimeoutCallback::class.java)
+                }
+                loading -> {
+                    qmuiProgressDialog?.dismiss()
+                    view().toast(ExceptionUtils.getExceptionName(e))
+                }
+                view().isNeedRefresh -> {
+                    view().refreshing(false)
+                }
+                else -> {
+                    view().toast(ExceptionUtils.getExceptionName(e))
+                }
+            }
+
+            return Resp<Any>(NetCode.CODE_EXCEPTION, message = ExceptionUtils.getExceptionName(e)) as T
+        }
     }
-}
+
+
+}

+ 2 - 2
base/src/main/java/com/ysnows/base/base/BTabActivity.kt

@@ -25,8 +25,8 @@ import com.ysnows.base.inter.IPagerAdapter
 abstract class BTabActivity<VM : BViewModel<*>, B : ViewDataBinding> : BActivity<VM, B>(),IPagerAdapter {
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         initTabs()
         initPager()
     }

+ 35 - 12
base/src/main/java/com/ysnows/base/base/BViewModel.kt

@@ -1,31 +1,31 @@
 package com.ysnows.base.base
 
+import android.app.Application
 import android.os.Bundle
 import androidx.databinding.Observable
 import androidx.databinding.Observable.OnPropertyChangedCallback
 import androidx.databinding.PropertyChangeRegistry
-import androidx.lifecycle.ViewModel
+import androidx.lifecycle.AndroidViewModel
+import androidx.lifecycle.MutableLiveData
 import com.ysnows.base.inter.IViewModel
 import com.ysnows.base.utils.Toasts
 import com.ysnows.base.utils.UiSwitch
 import com.ysnows.base.view.BView
 
-open class BViewModel<BR : BRepository> : ViewModel(), IViewModel, Observable {
+open class BViewModel<BR : BRepository>(application: Application) : AndroidViewModel(application), IViewModel, Observable {
 
-    private lateinit var repository: BR
+    val refreshing: MutableLiveData<Boolean> = MutableLiveData(false)
 
-    open fun setBR(repository: BRepository) {
-        this.repository = repository as BR
-    }
 
-    @JvmField
-    protected var bView: BView? = null
+    private lateinit var repository: BR
 
+    init {
 
-    open fun repository(): BR {
-        return repository
     }
 
+    protected lateinit var bView: BView
+
+
     override fun <T> single(clazz: Class<T>) {
         UiSwitch.single(view()!!.context(), clazz)
     }
@@ -51,12 +51,14 @@ open class BViewModel<BR : BRepository> : ViewModel(), IViewModel, Observable {
     }
 
     override fun firstReq() {}
-    override fun attachView(view: BView?) {
+
+    override fun attachView(view: BView) {
         bView = view
+        initRepository()
     }
 
     override fun init() {}
-    override fun view(): BView? {
+    override fun view(): BView {
         return bView
     }
 
@@ -107,4 +109,25 @@ open class BViewModel<BR : BRepository> : ViewModel(), IViewModel, Observable {
         }
         mCallbacks!!.notifyCallbacks(this, fieldId, null)
     }
+
+
+    /**
+     * 初始化Presenter
+     *
+     * @return
+     */
+    private fun initRepository(): BR {
+        repository = createRepository()
+        repository.attachView(view())
+        return repository
+    }
+
+    open fun createRepository(): BR {
+        return BRepository() as BR
+    }
+
+    fun repository(): BR {
+        return repository
+    }
+
 }

+ 2 - 2
base/src/main/java/com/ysnows/base/inter/IPResponse.kt

@@ -1,6 +1,6 @@
 package com.ysnows.base.inter
 
 import android.os.Parcelable
-import com.ysnows.base.net.IResponse
+import com.ysnows.base.net.IResp
 
-interface IPResponse<D> : IResponse<D>, Parcelable
+interface IPResponse<D> : IResp<D>, Parcelable

+ 1 - 1
base/src/main/java/com/ysnows/base/inter/IRepository.kt

@@ -9,7 +9,7 @@ interface IRepository {
     fun toast(@StringRes msgId: Int)
     fun <T> single(clazz: Class<T>)
     fun <T> bundle(clazz: Class<T>, bundle: Bundle?)
-    fun attachView(view: BView?)
+    fun attachView(view: BView)
     fun init()
     fun view(): BView?
 }

+ 1 - 1
base/src/main/java/com/ysnows/base/inter/IViewModel.kt

@@ -12,7 +12,7 @@ interface IViewModel {
     fun <T> single(clazz: Class<T>)
     fun <T> bundle(clazz: Class<T>, bundle: Bundle?)
     fun firstReq()
-    fun attachView(view: BView?)
+    fun attachView(view: BView)
     fun init()
     fun view(): BView?
 }

+ 1 - 1
base/src/main/java/com/ysnows/base/net/IResponse.kt → base/src/main/java/com/ysnows/base/net/IResp.kt

@@ -1,6 +1,6 @@
 package com.ysnows.base.net
 
-interface IResponse<D> {
+interface IResp<D> {
     fun ok(showError: Boolean = false): Boolean
     fun code(): Int
     fun msg(): String?

+ 1 - 0
base/src/main/java/com/ysnows/base/net/NetCode.java

@@ -2,4 +2,5 @@ package com.ysnows.base.net;
 
 public class NetCode {
     public static final int CODE_OFFLINE = 10;
+    public static final int CODE_EXCEPTION = -12;
 }

+ 9 - 10
app/src/main/java/com/quansu/heifengwuliu/utils/net/Response.kt → base/src/main/java/com/ysnows/base/net/Resp.kt

@@ -1,16 +1,15 @@
-package com.quansu.heifengwuliu.utils.net
+package com.ysnows.base.net
 
 import com.ysnows.base.base.BApp
-import com.ysnows.base.net.IResponse
 import com.ysnows.base.utils.Toasts
 
-class Response<D>(
-        private val status: Int = 0,
-        private val message: String? = null,
-        private val total: Int = 0,
-        private val count: Int = 10,
-        private val datas: D? = null
-) : IResponse<D> {
+class Resp<D>(
+        val status: Int = 0,
+        val message: String? = null,
+        val total: Int = 0,
+        val count: Int = 10,
+        val datas: D? = null
+) : IResp<D> {
 
     override fun ok(showError: Boolean): Boolean {
         val ok = status == 1
@@ -20,7 +19,7 @@ class Response<D>(
 //        }
         if (showError) {//状态成功的时候也可以提示
             Toasts.toast(BApp.instance(), msg())
-         }
+        }
         return ok
     }
 

+ 8 - 19
base/src/main/java/com/ysnows/base/utils/exception/ExceptionUtils.java

@@ -1,33 +1,22 @@
 package com.ysnows.base.utils.exception;
 
-import com.socks.library.KLog;
+import java.net.SocketTimeoutException;
+
+import javax.net.ssl.SSLHandshakeException;
 
 public class ExceptionUtils {
 
     public static String getExceptionName(Throwable e) {
 
-        String message = e.getMessage();
-        KLog.d(message);
-        if (message.contains("SSL handshake aborted")) {
-            return "网络错误,请检查手机网络";
+        if (e instanceof SocketTimeoutException) {
+            return "请求超时,请重新尝试!";
         }
 
-        if (message.contains("timed out")) {
-            return "系统繁忙,请重新尝试!";
+        if (e instanceof SSLHandshakeException) {
+            return "网络错误,请检查手机网络";
         }
 
-        return "系统繁忙,请重新尝试!";
 
-        //        return "系统繁忙,请重新尝试!";
-
-//            switch (message) {
-//                case "HTTP 404 Not Found":
-//                    return "未找到服务";
-//                case "Connection reset":
-//                    return "链接重置";
-//                default:
-//                    return message;
-//            }
-//        }
+        return "系统繁忙,请重新尝试!";
     }
 }

+ 2 - 4
base/src/main/java/com/ysnows/base/view/BRView.kt

@@ -2,21 +2,19 @@ package com.ysnows.base.view
 
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.ysnows.base.base.BRRepository
-import com.ysnows.base.net.IResponse
-import io.reactivex.Observable
+import com.ysnows.base.net.IResp
 
 interface BRView<A : BaseQuickAdapter<*, *>> : BView, LoadMoreView {
     fun adapter(): A
 
     fun initAdapter(): A
-    override fun repository(): BRRepository
 
     /**
      * 当 请求list接口数据返回的时候回掉, 可以用作正常的recyclerview渲染之外的数据处理
      *
      * @param res
      */
-    fun onListReceive(res: IResponse<*>)
+    fun onListReceive(res: IResp<*>)
     fun getTotal(total: Int)
 
 }

+ 1 - 4
base/src/main/java/com/ysnows/base/view/BView.kt

@@ -7,11 +7,8 @@ import com.ysnows.base.inter.IUser
 import kotlinx.coroutines.CoroutineScope
 
 interface BView : BaseView, HelperView, PlaceHolderView, RefreshView {
-
-    fun coroutine(): CoroutineScope?
-
     fun setStatusBar()
-
+    fun coroutine(): CoroutineScope
     /**
      * @param view 初始化View
      */

+ 0 - 2
base/src/main/java/com/ysnows/base/view/BaseView.kt

@@ -2,11 +2,9 @@ package com.ysnows.base.view
 
 import android.content.Context
 import androidx.annotation.StringRes
-import com.ysnows.base.base.BRepository
 
 interface BaseView : RxBusView {
     fun context(): Context?
-    fun repository(): BRepository?
     fun toast(msg: String?)
     fun toast(@StringRes msgID: Int)
     fun view(): BView?

+ 4 - 0
build.gradle

@@ -4,6 +4,10 @@ buildscript {
 
     ext.kotlin_version = '1.4.0'
 
+    ext.roomVersion = '2.2.5'
+    ext.archLifecycleVersion = '2.2.0'
+    ext.coroutines = '1.3.4'
+
     ext.application_id = "com.quansu.heifengwuliu"
     ext.application_version_code = 1
     ext.application_version_name = "1.0.1"

+ 11 - 4
common-build.gradle

@@ -48,14 +48,21 @@ dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
 
 
-    def lifecycle_version = "2.2.0"
-    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
-    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
+    // Lifecycle components
+    implementation "androidx.lifecycle:lifecycle-livedata:$rootProject.archLifecycleVersion"
+    implementation "androidx.lifecycle:lifecycle-viewmodel:$rootProject.archLifecycleVersion"
+    implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.archLifecycleVersion"
+    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$rootProject.archLifecycleVersion"
+
     implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
 
 
     implementation 'com.sagar:coroutinespermission:2.0.2'
-    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
+
+    // Kotlin components
+    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines"
+    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines"
+
 
     implementation 'com.githang:status-bar-compat:0.7'
 

+ 3 - 2
lookimg/src/main/java/com/quansu/lookimg/ImagePagerActivity.kt

@@ -8,6 +8,7 @@ import com.quansu.lookimg.adapter.ImagePagerAdapter
 import com.quansu.lookimg.databinding.ActivityImagepagerBinding
 import com.quansu.lookimg.vmodel.ImagePagerVModel
 import com.ysnows.base.base.BActivity
+import com.ysnows.base.base.BRepository
 import java.util.*
 
 /**
@@ -32,8 +33,8 @@ class ImagePagerActivity : BActivity<ImagePagerVModel, ActivityImagepagerBinding
     }
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
+    override fun init(savedInstanceState: Bundle?) {
+        super.init(savedInstanceState)
         initViewPager()
     }
 

Some files were not shown because too many files changed in this diff