Преглед на файлове

hello world api data ok

allen преди 4 години
родител
ревизия
cd48ed1281

+ 7 - 0
hello/src/main/java/com/wdkl/ncs/android/component/hello/activity/HelloActivity.kt

@@ -13,6 +13,8 @@ import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.middleware.logic.contract.hello.HelloActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.hello.HelloActivityPresenter
+import com.wdkl.ncs.android.middleware.model.ChildCategoryShell
+import kotlinx.android.synthetic.main.hello_act_lay.*
 
 @Router(path = "/hello/main")
 class HelloActivity : BaseActivity<HelloActivityPresenter, HelloActLayBinding>(), HelloActivityContract.View {
@@ -27,6 +29,7 @@ class HelloActivity : BaseActivity<HelloActivityPresenter, HelloActLayBinding>()
     override fun init() {
         AppTool.SystemUI.showNavigationBar(this,false)
         AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
+        presenter.loadData(0)
     }
 
     override fun bindEvent() {
@@ -46,4 +49,8 @@ class HelloActivity : BaseActivity<HelloActivityPresenter, HelloActLayBinding>()
 
     override fun networkMonitor(state: NetState) {
     }
+
+    override fun showData(categoryList: ArrayList<ChildCategoryShell>) {
+        hello_api_data.setText(categoryList[0].toString())
+    }
 }

+ 10 - 0
hello/src/main/res/layout/hello_act_lay.xml

@@ -16,5 +16,15 @@
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
+    <TextView
+        android:id="@+id/hello_api_data"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        />
+
 </android.support.constraint.ConstraintLayout>
 </layout>

+ 18 - 16
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/ApiManager.kt

@@ -14,12 +14,12 @@ import okhttp3.*
 object ApiManager {
 
         /**
-         * @Name  apiFectory
+         * @Name  apiFactory
          * @Type  NetFectory
          * @Note  API构建者
          */
         @SuppressLint("StaticFieldLeak")
-        private val apiFectory = NetFectory.build(BaseApplication.appContext)
+        private val apiFactory = NetFactory.build(BaseApplication.appContext)
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.BASE_URL
@@ -36,7 +36,7 @@ object ApiManager {
          * @Type  ExtraApi
          * @Note  其他API
          */
-        val EXTRA_API :ExtraApi by lazy { apiFectory.createService(ExtraApi::class.java, urlManager.buyer) }
+        val EXTRA_API :ExtraApi by lazy { apiFactory.createService(ExtraApi::class.java, urlManager.buyer) }
 
 
         /**
@@ -44,91 +44,93 @@ object ApiManager {
          * @Type  BaseApi
          * @Note  基础API
          */
-        val BASE_API :BaseApi by lazy { apiFectory.createService(BaseApi::class.java, urlManager.basic)}
+        val BASE_API :BaseApi by lazy { apiFactory.createService(BaseApi::class.java, urlManager.basic)}
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_AFTERSALE
          * @Type  AfterSaleApi
          * @Note  售后API
          */
-        val API_AFTERSALE : AfterSaleApi by lazy { apiFectory.createService(AfterSaleApi::class.java, urlManager.buyer) }
+        val API_AFTERSALE : AfterSaleApi by lazy { apiFactory.createService(AfterSaleApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_CART
          * @Type  CartApi
          * @Note  购物车API
          */
-        val API_CART: CartApi by lazy { apiFectory.createService(CartApi::class.java, urlManager.buyer) }
+        val API_CART: CartApi by lazy { apiFactory.createService(CartApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_CATEGORY
          * @Type  CategoryApi
          * @Note  分类API
          */
-        val API_CATEGORY: CategoryApi by lazy { apiFectory.createService(CategoryApi::class.java, urlManager.buyer) }
+        val API_CATEGORY: CategoryApi by lazy { apiFactory.createService(CategoryApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_GOODS
          * @Type  GoodsApi
          * @Note  商品API
          */
-        val API_GOODS: GoodsApi by lazy { apiFectory.createService(GoodsApi::class.java, urlManager.buyer) }
+        val API_GOODS: GoodsApi by lazy { apiFactory.createService(GoodsApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_MEMBER
          * @Type  MemberApi
          * @Note  会员API
          */
-        val API_MEMBER: MemberApi by lazy { apiFectory.createService(MemberApi::class.java, urlManager.buyer) }
+        val API_MEMBER: MemberApi by lazy { apiFactory.createService(MemberApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_ORDER
          * @Type  OrderApi
          * @Note  订单API
          */
-        val API_ORDER: OrderApi by lazy { apiFectory.createService(OrderApi::class.java, urlManager.buyer) }
+        val API_ORDER: OrderApi by lazy { apiFactory.createService(OrderApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_PAYMENT
          * @Type  PaymentApi
          * @Note  支付API
          */
-        val API_PAYMENT: PaymentApi by lazy { apiFectory.createService(PaymentApi::class.java, urlManager.buyer) }
+        val API_PAYMENT: PaymentApi by lazy { apiFactory.createService(PaymentApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_PROMOTION
          * @Type  PromotionApi
          * @Note  促销API
          */
-        val API_PROMOTION: PromotionApi by lazy { apiFectory.createService(PromotionApi::class.java, urlManager.buyer) }
+        val API_PROMOTION: PromotionApi by lazy { apiFactory.createService(PromotionApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_SHOP
          * @Type  ShopApi
          * @Note  店铺API
          */
-        val API_SHOP: ShopApi by lazy { apiFectory.createService(ShopApi::class.java, urlManager.buyer) }
+        val API_SHOP: ShopApi by lazy { apiFactory.createService(ShopApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  com.wdkl.ncs.android.lib.api.ApiManager.Companion.API_TRADE
          * @Type  TradeApi
          * @Note  交易API
          */
-        val API_TRADE: TradeApi by lazy { apiFectory.createService(TradeApi::class.java, urlManager.buyer) }
+        val API_TRADE: TradeApi by lazy { apiFactory.createService(TradeApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  API_AD
          * @Type  AdApi
          * @Note  广告API
          */
-        val API_AD: AdApi by lazy { apiFectory.createService(AdApi::class.java, urlManager.buyer) }
+        val API_AD: AdApi by lazy { apiFactory.createService(AdApi::class.java, urlManager.buyer) }
 
         /**
          * @Name  PASSPORT_API
          * @Type  PassportApi
          * @Note  护照
          */
-        val PASSPORT_API :PassportApi by lazy { apiFectory.createService(PassportApi::class.java, urlManager.buyer) }
+        val PASSPORT_API :PassportApi by lazy { apiFactory.createService(PassportApi::class.java, urlManager.buyer) }
+
+        val API_HELLO :HelloApi by lazy { apiFactory.createService(HelloApi::class.java, urlManager.buyer)}
 
 
         /**

+ 12 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/HelloApi.kt

@@ -0,0 +1,12 @@
+package com.wdkl.ncs.android.middleware.api
+
+import io.reactivex.Observable
+import okhttp3.ResponseBody
+import retrofit2.http.GET
+import retrofit2.http.Path
+
+interface HelloApi{
+
+    @GET("goods/categories/{parent_id}/children")
+    fun getCategories(@Path("parent_id") parentId:Int): Observable<ResponseBody>
+}

+ 3 - 3
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/NetFectory.kt

@@ -30,7 +30,7 @@ import java.io.IOException
  * @Date   2018/8/10 上午8:28
  * @Note   网络工厂类
  */
-class NetFectory {
+class NetFactory {
 
     companion object {
 
@@ -41,8 +41,8 @@ class NetFectory {
          * @Note   构建
          * @param  context 上下文
          */
-        fun build(context: Context): NetFectory {
-            return NetFectory(context)
+        fun build(context: Context): NetFactory {
+            return NetFactory(context)
         }
 
     }

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApiProvides.kt

@@ -180,4 +180,8 @@ class ApiProvides {
         return  ApiManager.PASSPORT_API
     }
 
+    @Provides
+    fun provideHelloApi():HelloApi{
+        return ApiManager.API_HELLO
+    }
 }

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApplicationComponent.kt

@@ -137,4 +137,5 @@ interface ApplicationComponent {
      */
     fun providePassportApi():PassportApi
 
+    fun provideHelloApi(): HelloApi
 }

+ 7 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/hello/HelloActivityContract.kt

@@ -1,8 +1,13 @@
 package com.wdkl.ncs.android.middleware.logic.contract.hello
 
 import com.wdkl.ncs.android.lib.base.BaseContract
+import com.wdkl.ncs.android.middleware.model.ChildCategoryShell
 
 interface HelloActivityContract{
-    interface View :BaseContract.BaseView{}
-    interface Presenter :BaseContract.BasePresenter{}
+    interface View :BaseContract.BaseView{
+        fun showData(categoryList: ArrayList<ChildCategoryShell>)
+    }
+    interface Presenter :BaseContract.BasePresenter{
+        fun loadData(parentId:Int)
+    }
 }

+ 52 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/hello/HelloActivityPresenter.kt

@@ -1,13 +1,64 @@
 package com.wdkl.ncs.android.middleware.logic.presenter.hello
 
-import com.wdkl.ncs.android.lib.base.BaseContract
+import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
+import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
 import com.wdkl.ncs.android.lib.base.RxPresenter
+import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.lib.utils.more
+import com.wdkl.ncs.android.middleware.api.HelloApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.hello.HelloActivityContract
+import com.wdkl.ncs.android.middleware.model.ChildCategoryShell
+import io.reactivex.disposables.Disposable
+import org.json.JSONArray
 import javax.inject.Inject
 
 class HelloActivityPresenter @Inject constructor() :RxPresenter<HelloActivityContract.View>(),HelloActivityContract.Presenter{
     override fun bindDagger() {
         MiddlewareDaggerComponent.component.inject(this)
     }
+
+    @Inject
+    protected lateinit var helloApi: HelloApi
+
+    private val observer = object : ConnectionObserver<ArrayList<*>>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: ArrayList<*>, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            result.getOrNull(0)?.more { data ->
+                providerView().showData(result as ArrayList<ChildCategoryShell>)
+            }
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+    }
+
+    override fun loadData(parentId: Int) {
+        helloApi.getCategories(parentId).map { response->
+            var jsonResult = response.getJsonString()
+            /**初始化Result数据*/
+            val result = ArrayList<Any>()
+
+            if (jsonResult != ""){
+                val jsonArray = JSONArray(jsonResult)
+                for (i in 0..(jsonArray.length() - 1)){
+                    val item = ChildCategoryShell.map(jsonArray.getJSONObject(i))
+                    result.add(item)
+                }
+            }
+
+            return@map result
+        }.compose(ThreadFromUtils.defaultSchedulers()).subscribe(observer)
+    }
 }

+ 0 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/CategoryFragmentPresenter.kt

@@ -6,7 +6,6 @@ import com.wdkl.ncs.android.middleware.api.CategoryApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.home.CategoryFragmentContract
 import com.wdkl.ncs.android.middleware.model.ChildCategoryShell
-import com.wdkl.ncs.android.middleware.model.ChildCategoryViewModel
 import com.wdkl.ncs.android.middleware.model.ParentCategoryViewModel
 import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
 import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle