Browse Source

1.添加已预约指标UI

王鹏鹏 3 years ago
parent
commit
2b9c68bb1f

+ 3 - 4
baselib/src/main/java/com/yingyangfly/baselib/net/BaseObserver.kt

@@ -1,7 +1,6 @@
 package com.yingyangfly.baselib.net
 
 import android.util.Log
-import com.alibaba.android.arouter.launcher.ARouter
 import com.tencent.bugly.crashreport.CrashReport
 import io.reactivex.Observer
 import io.reactivex.annotations.NonNull
@@ -13,7 +12,7 @@ import java.net.SocketTimeoutException
  * Date: 2018/10/9
  * Description:
  */
-abstract class BaseObserver<T> : Observer<BaseResp<T>> {
+abstract class BaseObserver<T> : Observer<XBaseEntity<T>> {
 
     val TAG = "BaseObserver"
     private val SUCCESS_CODE = 200
@@ -22,7 +21,7 @@ abstract class BaseObserver<T> : Observer<BaseResp<T>> {
         logd("onSubscribe")
     }
 
-    override fun onNext(@NonNull tBaseEntity: BaseResp<T>) {
+    override fun onNext(@NonNull tBaseEntity: XBaseEntity<T>) {
         logd("onNext")
         if (SUCCESS_CODE == tBaseEntity.code) {
             val t = tBaseEntity.data
@@ -59,7 +58,7 @@ abstract class BaseObserver<T> : Observer<BaseResp<T>> {
 //        ToastUtil.show(msg)
     }
 
-    open fun onFail(data: BaseResp<T>) {
+    open fun onFail(data: XBaseEntity<T>) {
     }
 
     fun logd(str: String) {

+ 19 - 0
baselib/src/main/java/com/yingyangfly/baselib/net/XBaseEntity.kt

@@ -0,0 +1,19 @@
+package com.yingyangfly.baselib.net
+
+import java.io.Serializable
+
+/**
+ * Author: Austin
+ * Date: 2018/10/9
+ * Description:
+ */
+class XBaseEntity<T> : Serializable {
+    var code: Int = -1
+    var message: String = ""
+    var data: T? = null
+    var success: Boolean = false
+    override fun toString(): String {
+        return "XBaseEntity(code=$code, message='$message', data=$data, success=$success)"
+    }
+
+}

+ 3 - 2
baselib/src/main/java/com/yingyangfly/baselib/net/convert/XlGsonResponseBodyConverter.java

@@ -18,6 +18,7 @@ package com.yingyangfly.baselib.net.convert;
 import com.google.gson.Gson;
 import com.google.gson.TypeAdapter;
 import com.yingyangfly.baselib.net.BaseResp;
+import com.yingyangfly.baselib.net.XBaseEntity;
 import com.yingyangfly.baselib.utils.GsonUtil;
 
 import java.io.IOException;
@@ -44,8 +45,8 @@ final class XlGsonResponseBodyConverter<T> implements Converter<ResponseBody, T>
     public T convert(ResponseBody value) throws IOException {
         String strJsong = value.string();
         try {
-            BaseResp bean;
-            bean = gson.fromJson(strJsong, BaseResp.class);
+            XBaseEntity bean;
+            bean = gson.fromJson(strJsong, XBaseEntity.class);
             if (bean.getCode() != 200) {
                 strJsong = GsonUtil.GsonString(bean);
             }

+ 3 - 3
home/src/main/java/com/yingyangfly/home/net/XHomeApiService.kt

@@ -1,6 +1,6 @@
 package com.yingyangfly.home.net
 
-import com.yingyangfly.baselib.net.BaseResp
+import com.yingyangfly.baselib.net.XBaseEntity
 import com.yingyangfly.home.entity.HomePageMsgBean
 import io.reactivex.Observable
 import retrofit2.http.POST
@@ -17,11 +17,11 @@ interface XHomeApiService {
      * 查询
      */
     @POST("app/warn/selectHomePageMsg")
-    fun getSelectHomePageMsg(@Query("msgType") msgType: String): Observable<BaseResp<HomePageMsgBean>>
+    fun getSelectHomePageMsg(@Query("msgType") msgType: String): Observable<XBaseEntity<HomePageMsgBean>>
 
     /**
      * 更改消息状态
      */
     @POST("app/warn/readMsg")
-    fun updateReadMsg(@Query("msgId") msgId: String): Observable<BaseResp<Unit>>
+    fun updateReadMsg(@Query("msgId") msgId: String): Observable<XBaseEntity<Unit>>
 }

+ 24 - 5
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/list/LiveBroadcastListActivity.kt

@@ -7,15 +7,22 @@ import com.yingyang.livebroadcast.R
 import com.yingyang.livebroadcast.adapter.LiveBroadcastAdapter
 import com.yingyang.livebroadcast.databinding.ActivityLiveBroadcastListBinding
 import com.yingyang.livebroadcast.entity.Record
+import com.yingyang.livebroadcast.entity.ReservationLiveBean
+import com.yingyang.livebroadcast.net.XLivebroadcastServiceFactory
 import com.yingyangfly.baselib.dialog.TipDialogFragment
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
+import com.yingyangfly.baselib.net.BaseObserver
+import com.yingyangfly.baselib.net.MyRxScheduler
+import com.yingyangfly.baselib.net.XUtils
 import com.yingyangfly.baselib.permissions.EsayPermissions
 import com.yingyangfly.baselib.permissions.OnPermission
 import com.yingyangfly.baselib.permissions.Permission
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.GsonUtil
 import com.yingyangfly.baselib.utils.JumpUtil
+import io.reactivex.schedulers.Schedulers
 
 /**
  * 直播列表
@@ -98,12 +105,24 @@ class LiveBroadcastListActivity :
     /**
      * 预约直播
      */
-    private fun appointmentLive(id: String) {
-        viewModel.reservationLive(id, fail = {
-            it.toast()
-        }, success = {
+    private fun appointmentLive(method: String) {
+        val requestBean = ReservationLiveBean().apply {
+            id = method
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        XLivebroadcastServiceFactory.getService()
+            .reservationLive(body)
+            .subscribeOn(Schedulers.io())
+            .compose(MyRxScheduler.ioMain(this, false))
+            .subscribe(object : BaseObserver<Unit>() {
+                override fun onSuccess(t: Unit?) {
+                    loadData(true)
+                }
 
-        })
+                override fun onFail(msg: String) {
+                    msg.toast()
+                }
+            })
     }
 
     override fun initListener() {

+ 0 - 19
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/list/LiveBroadcastListViewModel.kt

@@ -35,23 +35,4 @@ class LiveBroadcastListViewModel : BaseViewModel() {
         success,
         fail
     )
-
-    /**
-     * 预约直播
-     */
-    fun reservationLive(
-        method: String,
-        fail: ((msg: String) -> Unit)? = null,
-        success: ((success: Unit) -> Unit)? = null,
-    ) = launchFlow(false) {
-        val requestBean = ReservationLiveBean().apply {
-            id = method
-        }
-        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
-        LIVEBROADCAST_API.reservationLive(body)
-    }.runUI(
-        success,
-        fail
-    )
-
 }

+ 16 - 3
livebroadcast/src/main/java/com/yingyang/livebroadcast/adapter/LiveBroadcastAdapter.kt

@@ -1,10 +1,10 @@
 package com.yingyang.livebroadcast.adapter
 
 import android.annotation.SuppressLint
+import android.text.TextUtils
 import com.yingyang.livebroadcast.R
 import com.yingyang.livebroadcast.databinding.ItemLiveBroadcastBinding
 import com.yingyang.livebroadcast.entity.Record
-import com.yingyang.livebroadcast.entity.StreamInfo
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
 
@@ -27,11 +27,24 @@ class LiveBroadcastAdapter(override val layoutId: Int = R.layout.item_live_broad
 
     override fun onBindViewHolder(binding: ItemLiveBroadcastBinding, item: Record, position: Int) {
         binding.data = item
-        binding.tvTitle.text = method
+        if (TextUtils.equals("预约直播", method)) {
+            if (TextUtils.equals("1", item.isReservation)) {
+                binding.tvTitle.text = "已预约"
+            } else {
+                binding.tvTitle.text = "预约直播"
+            }
+        } else {
+            binding.tvTitle.text = method
+        }
         binding.layoutLiveBroadcast.setOnSingleClickListener {
             when (method) {
                 "预约直播" -> {
-                    onLiveBroadcastImageClickListener?.invoke("", method, item.liveName, item.id)
+                    onLiveBroadcastImageClickListener?.invoke(
+                        "",
+                        method,
+                        item.liveName,
+                        item.id
+                    )
                 }
                 "直播中" -> {
                     onLiveBroadcastImageClickListener?.invoke(

+ 1 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/entity/LiveBroadcastListBean.kt

@@ -27,6 +27,7 @@ data class Record(
     val liveStatus: String,//直播状态 1未开始 2直播中 3已结束 4已取消
     val liveTags: String,//设置标签
     val liveVideo: String,//录播地址
+    val isReservation: String,//是否预定 1是 2否
     val streamInfo: StreamInfo//流信息
 )
 

+ 1 - 5
livebroadcast/src/main/java/com/yingyang/livebroadcast/net/LivebroadcastApiService.kt

@@ -28,11 +28,7 @@ interface LivebroadcastApiService {
     @POST("im/user_sign")
     suspend fun getUserSign(@Query("userId") userId: String): BaseResp<String>
 
-    /**
-     * 预约直播列表
-     */
-    @POST("live/reservation")
-    suspend fun reservationLive(@Body requestBody: RequestBody): BaseResp<Unit>
+
 
 
 }

+ 21 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/net/XLivebroadcastApiService.kt

@@ -0,0 +1,21 @@
+package com.yingyang.livebroadcast.net
+
+import com.yingyangfly.baselib.net.XBaseEntity
+import io.reactivex.Observable
+import okhttp3.RequestBody
+import retrofit2.http.Body
+import retrofit2.http.POST
+
+/**
+ * Author: Austin
+ * Date: 19-4-1
+ * Description:
+ */
+interface XLivebroadcastApiService {
+
+    /**
+     * 预约直播列表
+     */
+    @POST("live/reservation")
+    fun reservationLive(@Body requestBody: RequestBody): Observable<XBaseEntity<Unit>>
+}

+ 21 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/net/XLivebroadcastServiceFactory.kt

@@ -0,0 +1,21 @@
+package com.yingyang.livebroadcast.net
+
+import com.yingyangfly.baselib.config.AccountConfig
+import com.yingyangfly.baselib.net.ServiceFactory
+
+/**
+ * Author: Austin
+ * Date: 19-4-11
+ * Description:
+ */
+object XLivebroadcastServiceFactory {
+
+    fun getService(): XLivebroadcastApiService {
+        if (apiService != null) {
+            return apiService!!
+        }
+        return ServiceFactory.getService(AccountConfig.API_URL, XLivebroadcastApiService::class.java)
+    }
+
+    var apiService: XLivebroadcastApiService? = null
+}

+ 2 - 2
push/src/main/java/com/yingyang/push/net/XPushApiService.kt

@@ -1,6 +1,6 @@
 package com.yingyang.push.net
 
-import com.yingyangfly.baselib.net.BaseResp
+import com.yingyangfly.baselib.net.XBaseEntity
 import io.reactivex.Observable
 import retrofit2.http.POST
 import retrofit2.http.Query
@@ -16,5 +16,5 @@ interface XPushApiService {
      * 更改消息状态
      */
     @POST("app/warn/readMsg")
-    fun updateReadMsg(@Query("msgId") msgId: String): Observable<BaseResp<Unit>>
+    fun updateReadMsg(@Query("msgId") msgId: String): Observable<XBaseEntity<Unit>>
 }

+ 4 - 4
workbenches/src/main/java/com/yingyang/workbenches/net/WorkbencheApiService.kt

@@ -1,7 +1,7 @@
 package com.yingyang.workbenches.net
 
 import com.yingyang.workbenches.entity.PayImageBean
-import com.yingyangfly.baselib.net.BaseResp
+import com.yingyangfly.baselib.net.XBaseEntity
 import io.reactivex.Observable
 import okhttp3.RequestBody
 import retrofit2.http.Body
@@ -21,7 +21,7 @@ interface WorkbencheApiService {
     @POST("app/pay/createPreOrder")
     fun getPayImage(
         @Body requestBody: RequestBody
-    ): Observable<BaseResp<PayImageBean>>
+    ): Observable<XBaseEntity<PayImageBean>>
 
     /**
      * 取消支付
@@ -29,7 +29,7 @@ interface WorkbencheApiService {
     @POST("app/pay/delPayOrder")
     fun delPayOrder(
         @Query("orderNo") orderNo: String
-    ): Observable<BaseResp<String>>
+    ): Observable<XBaseEntity<String>>
 
     /**
      * 获取支付状态
@@ -37,5 +37,5 @@ interface WorkbencheApiService {
     @POST("app/pay/selectPayResult")
     fun getSelectPayResult(
         @Query("orderNo") orderNo: String
-    ): Observable<BaseResp<String>>
+    ): Observable<XBaseEntity<String>>
 }