소스 검색

老师端学生端解散群组逻辑增加

Pq 3 년 전
부모
커밋
6f3b9d0e4b

+ 3 - 2
rong_im/common_im_ui/src/main/java/com/common/im/presenter/ChatGroupSettingPresenter.java

@@ -32,6 +32,7 @@ import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.core.Scheduler;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.IMCenter;
 import io.rong.imkit.RongIM;
 import io.rong.imlib.RongIMClient;
 import io.rong.imlib.model.Conversation;
@@ -202,10 +203,10 @@ public class ChatGroupSettingPresenter extends BasePresenter<ChatGroupSettingCon
 
 
     public void delLocalConversation(String targetId) {
-        RongIMClient.getInstance().removeConversation(Conversation.ConversationType.GROUP, targetId, new RongIMClient.ResultCallback<Boolean>() {
+        IMCenter.getInstance().removeConversation(Conversation.ConversationType.GROUP, targetId, new RongIMClient.ResultCallback<Boolean>() {
             @Override
             public void onSuccess(Boolean aBoolean) {
-                if (getView() != null) {
+                if (getView() != null && aBoolean) {
                     getView().dissolveChatGroupSuccess(targetId);
                 }
             }

+ 2 - 1
rong_im/common_im_ui/src/main/java/com/common/im/ui/MessageFragment.java

@@ -20,6 +20,7 @@ import com.common.im.bean.RongIMGroupInfo;
 import com.common.im.bean.RongIMUserInfo;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -144,7 +145,7 @@ public class MessageFragment extends BaseMVPFragment<FragmentMessageLayoutBindin
             @Override
             public boolean onConversationClick(Context context, View view, BaseUiConversation conversation) {
                 if (null != presenter && TextUtils.isEmpty(conversation.mCore.getConversationTitle())) {
-                    if ("group".equals(conversation.mCore.getConversationType())) {
+                    if (conversation.mCore.getConversationType() == Conversation.ConversationType.GROUP) {
                         presenter.queryGroupDetail(getContext(),conversation.mCore.getTargetId());
                     } else {
                         String userId = conversation.mCore.getTargetId();

+ 1 - 0
rong_im/common_im_ui/src/main/res/layout/layout_join_group_item.xml

@@ -2,6 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
+    android:layout_marginTop="10dp"
     android:layout_height="wrap_content">
 
     <androidx.constraintlayout.widget.ConstraintLayout

+ 16 - 1
rong_im/kit/src/main/java/io/rong/imkit/api/APIService.java

@@ -1,6 +1,15 @@
 package io.rong.imkit.api;
 
 
+import com.cooleshow.base.data.net.BaseResponse;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.rong.imkit.model.GroupInfoBean;
+import retrofit2.http.POST;
+import retrofit2.http.Path;
+
+import static com.cooleshow.base.common.BaseConstant.STUDENT_GROUP;
+
 public interface APIService {
 //
 //
@@ -25,5 +34,11 @@ public interface APIService {
 //    @GET
 //    @Headers("User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)")
 //    Observable<ResponseBody> downloadFileWithFixedUrl(@Url String url);
-
+    /**
+     * 查询群详情-学生
+     *
+     * @returnClassListAdapter
+     */
+    @POST(STUDENT_GROUP + "imGroup/getDetail/{groupId}")
+    Observable<BaseResponse<GroupInfoBean>> queryStuGroupDetail(@Path("groupId") String groupId);
 }

+ 116 - 0
rong_im/kit/src/main/java/io/rong/imkit/conversation/RongConversationActivity.java

@@ -1,5 +1,6 @@
 package io.rong.imkit.conversation;
 
+import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.KeyEvent;
@@ -9,18 +10,35 @@ import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.data.net.ApiException;
+import com.cooleshow.base.data.net.BaseResponse;
+import com.cooleshow.base.data.net.RetrofitFactory;
 import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.LogUtils;
+import com.cooleshow.base.widgets.dialog.CommonDialog;
 
 import java.util.List;
 import java.util.Locale;
 
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.IMCenter;
 import io.rong.imkit.R;
+import io.rong.imkit.RongIM;
 import io.rong.imkit.activity.RongBaseActivity;
+import io.rong.imkit.api.APIService;
+import io.rong.imkit.model.GroupInfoBean;
 import io.rong.imkit.model.TypingInfo;
 import io.rong.imkit.userinfo.RongUserInfoManager;
 import io.rong.imkit.userinfo.db.model.User;
 import io.rong.imkit.utils.RouteUtils;
 import io.rong.imkit.widget.TitleBar;
+import io.rong.imlib.RongIMClient;
 import io.rong.imlib.model.Conversation;
 import io.rong.imlib.model.Group;
 import io.rong.imlib.model.UserInfo;
@@ -174,6 +192,12 @@ public class RongConversationActivity extends RongBaseActivity {
     }
 
     @Override
+    protected void onResume() {
+        super.onResume();
+        queryGroupInfo();
+    }
+
+    @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (KeyEvent.KEYCODE_BACK == event.getKeyCode()) {
             if (mConversationFragment != null && !mConversationFragment.onBackPressed()) {
@@ -182,4 +206,96 @@ public class RongConversationActivity extends RongBaseActivity {
         }
         return false;
     }
+
+
+    private void queryGroupInfo() {
+        if (BaseApplication.Companion.isTeacherClient()) {
+            return;
+        }
+        if (TextUtils.isEmpty(mTargetId)) {
+            return;
+        }
+        if (!mConversationType.equals(Conversation.ConversationType.GROUP)) {
+            return;
+        }
+        LogUtils.i("pq", "queryGroupInfo");
+        RetrofitFactory.Companion.getInstance()
+                .create(APIService.class)
+                .queryStuGroupDetail(mTargetId)
+                .subscribeOn(Schedulers.newThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new io.reactivex.rxjava3.core.Observer<BaseResponse<GroupInfoBean>>() {
+                    @Override
+                    public void onSubscribe(@NonNull Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(@NonNull BaseResponse<GroupInfoBean> rongIMGroupInfoBaseResponse) {
+                        int responseCode = rongIMGroupInfoBaseResponse.getErrorCode();
+                        if (responseCode == 200) {
+                            if (rongIMGroupInfoBaseResponse.getData() != null) {
+                                GroupInfoBean data = rongIMGroupInfoBaseResponse.getData();
+                                RongIM.getInstance().refreshGroupInfoCache(new Group(data.getId(), data.getName(), Uri.parse(TextUtils.isEmpty(data.getImg()) ? "" : data.getImg())));
+                            }
+                        } else {
+                            if (responseCode == 204) {
+                                //群不存在,提示
+                                showGroupNotExitDialog();
+                            }
+                        }
+
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        e.printStackTrace();
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    private void showGroupNotExitDialog() {
+        CommonDialog commonDialog = new CommonDialog(this);
+        commonDialog.show();
+        commonDialog.setCancelable(false);
+        commonDialog.setCanceledOnTouchOutside(false);
+        commonDialog.setTitle("提示");
+        commonDialog.setContent("当前群组已被解散,是否删除聊天记录?");
+        commonDialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (commonDialog != null) {
+                    commonDialog.dismiss();
+                }
+                delLocalConversation(mTargetId);
+            }
+        });
+        commonDialog.setOnCancelClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (commonDialog != null) {
+                    commonDialog.dismiss();
+                }
+            }
+        });
+    }
+
+    public void delLocalConversation(String targetId) {
+        IMCenter.getInstance().removeConversation(Conversation.ConversationType.GROUP, targetId, new RongIMClient.ResultCallback<Boolean>() {
+            @Override
+            public void onSuccess(Boolean aBoolean) {
+                finish();
+            }
+
+            @Override
+            public void onError(RongIMClient.ErrorCode e) {
+                LogUtils.i("pq", "errorMsg:" + e.msg + "\n" + "errorCode:" + e.code);
+            }
+        });
+    }
 }

+ 139 - 0
rong_im/kit/src/main/java/io/rong/imkit/model/GroupInfoBean.java

@@ -0,0 +1,139 @@
+package io.rong.imkit.model;
+
+/**
+ * Author by pq, Date on 2022/7/26.
+ */
+public class GroupInfoBean {
+    /*
+    "autoPassFlag": true,
+     "createBy": 0,
+     "createTime": "",
+     "existFlag": true,
+     "hasWaitAuditFlag": true,
+     "id": "",
+     "img": "",
+     "introduce": "",
+     "memberNum": 0,
+     "memo": "",
+     "name": "",
+     "type": "",
+     "updateTime": ""
+  */
+    private boolean autoPassFlag;
+    private long createBy;
+    private String createTime;
+    private boolean existFlag;
+    private boolean hasWaitAuditFlag;
+    private String id;
+    private String img;
+    private String introduce;
+    private String memberNum;
+    private String memo;
+    private String name;
+    private String type;
+    private String updateTime;
+
+    public boolean isAutoPassFlag() {
+        return autoPassFlag;
+    }
+
+    public void setAutoPassFlag(boolean autoPassFlag) {
+        this.autoPassFlag = autoPassFlag;
+    }
+
+    public long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(long createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public boolean isExistFlag() {
+        return existFlag;
+    }
+
+    public void setExistFlag(boolean existFlag) {
+        this.existFlag = existFlag;
+    }
+
+    public boolean isHasWaitAuditFlag() {
+        return hasWaitAuditFlag;
+    }
+
+    public void setHasWaitAuditFlag(boolean hasWaitAuditFlag) {
+        this.hasWaitAuditFlag = hasWaitAuditFlag;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getMemberNum() {
+        return memberNum;
+    }
+
+    public void setMemberNum(String memberNum) {
+        this.memberNum = memberNum;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 0 - 1
student/src/main/java/com/cooleshow/student/App.java

@@ -17,7 +17,6 @@ import com.cooleshow.base.utils.ProcessUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.live_teaching.im.IMManager;
-import com.jaygoo.widget.BuildConfig;
 import com.rong.io.live.message.RCChatJoinRoomMessage;
 import com.rong.io.live.message.RCChatModeMessage;
 import com.rong.io.live.message.RCChatRoomCloseMessage;