Browse Source

修改学生端直播间退出参数

Pq 1 year ago
parent
commit
29b6ba27ca

+ 1 - 1
tclive/src/main/java/com/daya/tclive/api/StudentAPIService.java

@@ -44,7 +44,7 @@ public interface StudentAPIService {
      * @return
      */
     @GET(student + "imLiveBroadcastRoom/joinRoom")
-    Observable<BaseResponse<Object>> notifyJoinRoomAction(@Query("roomUid") String roomUid, @Query("userId") String userId,@Query("microphoneFlag") boolean microphoneFlag);
+    Observable<BaseResponse<Long>> notifyJoinRoomAction(@Query("roomUid") String roomUid, @Query("userId") String userId,@Query("microphoneFlag") boolean microphoneFlag);
 
 
     /**

+ 31 - 5
tclive/src/main/java/com/daya/tclive/presenter/TTLiveRoomPresenter.java

@@ -8,6 +8,7 @@ import android.util.Log;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.GsonUtils;
 import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.tclive.api.StudentAPIService;
@@ -62,6 +63,7 @@ import java.util.List;
 import java.util.Map;
 
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.annotations.NonNull;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.functions.Consumer;
@@ -79,6 +81,9 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
     private final static String TAG = "TTLiveRoomPresenter";
     private String roomId;
     private boolean isSendDefaultMsg = true;
+    private long joinLiveTime = -1;
+    private long startEnterLiveTime = -1;
+    private long leaveLiveTime = -1;
     private List<Disposable> disposablesManager = new ArrayList<>();//监听管理器
     private TRTCCloudListener mCloudListener = new TRTCCloudListener() {
         @Override
@@ -694,10 +699,15 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
         if (TextUtils.isEmpty(roomId) || TextUtils.isEmpty(userId)) {
             return;
         }
-        addSubscribe(create(StudentAPIService.class).notifyJoinRoomAction(roomId, userId, true), new DisposableObserver() {
+        addSubscribe(create(StudentAPIService.class).notifyJoinRoomAction(roomId, userId, true), new DisposableObserver<BaseResponse<Long>>() {
             @Override
-            public void onNext(Object o) {
-                //通知服务端加入成功即可,无须关注结果
+            public void onNext(@NonNull BaseResponse<Long> longBaseResponse) {
+                //通知服务端加入成功,取得加入时间搓
+                if (longBaseResponse != null) {
+                    joinLiveTime = longBaseResponse.getData();
+                    startEnterLiveTime = System.currentTimeMillis();
+                    leaveLiveTime = -1;
+                }
             }
 
             @Override
@@ -733,15 +743,31 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
         });
     }
 
+    private long getLeaveTime() {
+        if (leaveLiveTime != -1) {
+            return leaveLiveTime;
+        }
+        long currentTime = System.currentTimeMillis();
+        if (joinLiveTime != -1 && startEnterLiveTime != -1) {
+            leaveLiveTime = currentTime - startEnterLiveTime + joinLiveTime;
+        } else {
+            leaveLiveTime = -1;
+        }
+        return leaveLiveTime;
+    }
+
     public void notifyLeaveRoomAction() {
         handleAction(LiveRoomMsgConstants.ACTION_SEND_LEAVE_ROOM);
         ImUserState imUserState = new ImUserState();
         imUserState.setStatus(ImUserState.ACTION_LEAVE_LIVE_ROOM);
-        imUserState.setUserid(UserHelper.getUserId());
+        imUserState.setUserid(UserHelper.getImUserId());
         imUserState.setOs("Android");
+        if (getLeaveTime() != -1) {
+            imUserState.setTime(getLeaveTime());
+        }
         ArrayList<ImUserState> imUserStates = new ArrayList();
         imUserStates.add(imUserState);
-        RequestBody body = RequestBodyUtil.convertToRequestBodyJson(new Gson().toJson(imUserStates));
+        RequestBody body = RequestBodyUtil.convertToRequestBodyJson(GsonUtils.toJson(imUserStates));
         create(StudentAPIService.class).notifyLeaveRoomAction(body)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())