From ac07463f785f24a8c5123ac5488dc40172334ee5 Mon Sep 17 00:00:00 2001 From: eggmanQQQ2 <3671373519@qq.com> Date: Mon, 7 Jul 2025 10:34:22 +0800 Subject: [PATCH] feat: app-module_super_admin --- .../app/sadmin/RoomSAdminManagerActivity.java | 172 ++++++++++++++++++ .../sadmin/utils/SaAttachmentToMsgUtil.java | 89 +++++++++ .../app/sadmin/utils/SuperAdminUiHelper.java | 7 + .../drawable-xhdpi/icon_sa_close_room.webp | Bin 0 -> 977 bytes .../icon_sa_remove_room_limit.webp | Bin 0 -> 825 bytes .../selector_radiobutton_gender_female.xml | 7 + .../layout/activity_room_s_admin_manager.xml | 116 ++++++++++++ .../res/layout/item_speedy_message.xml | 13 ++ .../res/values-ar/strings.xml | 8 + .../res/values-zh-rTW/strings.xml | 8 + .../module_super_admin/res/values/strings.xml | 8 + 11 files changed, 428 insertions(+) create mode 100644 app/src/module_super_admin/java/com/chwl/app/sadmin/RoomSAdminManagerActivity.java create mode 100644 app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SaAttachmentToMsgUtil.java create mode 100644 app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SuperAdminUiHelper.java create mode 100644 app/src/module_super_admin/res/drawable-xhdpi/icon_sa_close_room.webp create mode 100644 app/src/module_super_admin/res/drawable-xhdpi/icon_sa_remove_room_limit.webp create mode 100644 app/src/module_super_admin/res/drawable-xhdpi/selector_radiobutton_gender_female.xml create mode 100644 app/src/module_super_admin/res/layout/activity_room_s_admin_manager.xml create mode 100644 app/src/module_super_admin/res/layout/item_speedy_message.xml create mode 100644 app/src/module_super_admin/res/values-ar/strings.xml create mode 100644 app/src/module_super_admin/res/values-zh-rTW/strings.xml create mode 100644 app/src/module_super_admin/res/values/strings.xml diff --git a/app/src/module_super_admin/java/com/chwl/app/sadmin/RoomSAdminManagerActivity.java b/app/src/module_super_admin/java/com/chwl/app/sadmin/RoomSAdminManagerActivity.java new file mode 100644 index 0000000..d44ad23 --- /dev/null +++ b/app/src/module_super_admin/java/com/chwl/app/sadmin/RoomSAdminManagerActivity.java @@ -0,0 +1,172 @@ +package com.chwl.app.sadmin; + +import android.content.Context; +import android.content.Intent; +import android.view.View; + +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; +import com.trello.rxlifecycle3.android.ActivityEvent; +import com.chwl.app.R; +import com.chwl.app.avroom.activity.RoomBlackListActivity; +import com.chwl.app.base.BaseViewBindingActivity; +import com.chwl.app.common.widget.dialog.DialogManager; +import com.chwl.app.databinding.ActivityRoomSAdminManagerBinding; +import com.chwl.core.base.CancelNoToastException; +import com.chwl.core.kick.KickModel; +import com.chwl.core.manager.AvRoomDataManager; +import com.chwl.core.manager.IMNetEaseManager; +import com.chwl.core.room.bean.RoomInfo; +import com.chwl.core.room.model.AvRoomModel; +import com.chwl.core.super_admin.model.ISuperAdminModel; +import com.chwl.core.super_admin.model.SuperAdminModel; +import com.chwl.core.super_admin.util.SaAttachmentFactory; +import com.chwl.core.utils.net.DontWarnObserver; +import com.chwl.library.net.rxnet.callback.CallBack; +import com.chwl.library.utils.ResUtil; + +import io.reactivex.Single; +import io.reactivex.SingleOnSubscribe; + +/** + * 房间超管管理界面 + * create by lvzebiao @2019/8/26 + */ +public class RoomSAdminManagerActivity extends BaseViewBindingActivity{ + + private ISuperAdminModel model = new SuperAdminModel(); + + private boolean isOpting = false; + + public static void start(Context context) { + context.startActivity(new Intent(context, RoomSAdminManagerActivity.class)); + } + + @Override + public void init() { + initTitleBar(R.string.sa_label_room_super_a_manager); + initListener(); + + binding.switchHideRoom.setOn(AvRoomDataManager.get().isHideRoom()); + //解除房间设置 + binding.stvOpRemoveRoomLimit.setVisibility( + (AvRoomDataManager.get().isCpRoomLock() || AvRoomDataManager.get().isRoomLock()) ? + View.VISIBLE : View.GONE); + } + + private void initListener() { + binding.stvOpBlackList.setOnClickListener(view -> RoomBlackListActivity.start(context)); + binding.stvOpRemoveRoomLimit.setOnClickListener(view -> handleRoomPwd()); + binding.stvOpCloseRoom.setOnClickListener(view -> handleRoomClose()); + binding.viewClickHideRoom.setOnClickListener(view -> handleHideRoom(!AvRoomDataManager.get().isHideRoom())); + } + + private void handleHideRoom(boolean isHide) { + if (isOpting) { + return; + } + isOpting = true; + Single.create((SingleOnSubscribe) e -> { + if (isHide) { + getDialogManager().showOkCancelWithTitleDialog( + ResUtil.getString(R.string.erban_sadmin_roomsadminmanageractivity_01), + new DialogManager.OkCancelDialogListener() { + @Override + public void onOk() { + model.roomOperate(SuperAdminModel.HIDE_ROOM) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(); + e.onSuccess("next"); + } + + @Override + public void onCancel() { + e.onError(new CancelNoToastException()); + } + }); + } else { + e.onSuccess("next"); + } + }) + .flatMap(s -> model.hideRoom(isHide ? 1 : 0)) + .subscribe(new DontWarnObserver() { + + @Override + public void acceptThrowable(String s, Throwable throwable) { + super.acceptThrowable(s, throwable); + if (throwable != null) { + if (!(throwable instanceof CancelNoToastException)) { + toast(throwable.getMessage()); + } + } else { + binding.switchHideRoom.setOn(isHide); + } + isOpting = false; + } + }); + } + + private void handleRoomPwd() { + RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; + if (roomInfo == null) { + return; + } + model.roomOperate(SuperAdminModel.REMOVE_ROOM_LIMIT) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(); + model.removeLimit() + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(new DontWarnObserver() { + @Override + public void accept(String s, String error) { + super.accept(s, error); + if (error != null) { + toast(error); + return; + } + binding.stvOpRemoveRoomLimit.setVisibility(View.GONE); + ChatRoomMessage msg; + if (AvRoomDataManager.get().isCpRoom()) { + msg = SaAttachmentFactory.createRemoveLimitChatRoomMessage(); + } else { + msg = SaAttachmentFactory.createRemoveRoomPwdChatRoomMessage(); + } + IMNetEaseManager.get().sendChatRoomMessage(msg, false) + .doOnSuccess(chatRoomMessage -> + KickModel.get().onSendRoomMessageSuccess(chatRoomMessage)) + .subscribe(); + finish(); + } + }); + } + + private void handleRoomClose() { + model.roomOperate(SuperAdminModel.CLOSE_ROOM) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe(); + getDialogManager().showOkCancelWithTitleDialog( + ResUtil.getString(R.string.erban_sadmin_roomsadminmanageractivity_02), + new DialogManager.OkCancelDialogListener() { + @Override + public void onOk() { + AvRoomModel.get().quitRoomForOurService(AvRoomDataManager.get().getRoomUid(), + new CallBack() { + @Override + public void onSuccess(String data) { + finish(); + } + + @Override + public void onFail(int code, String error) { + toast(error); + } + }); + } + + @Override + public void onCancel() { + + } + }); + } + +} diff --git a/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SaAttachmentToMsgUtil.java b/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SaAttachmentToMsgUtil.java new file mode 100644 index 0000000..777a69a --- /dev/null +++ b/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SaAttachmentToMsgUtil.java @@ -0,0 +1,89 @@ +package com.chwl.app.sadmin.utils; + +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.widget.TextView; + +import com.chwl.app.R; +import com.chwl.app.ui.widget.TextSpannableBuilder; +import com.chwl.core.im.custom.bean.CustomAttachment; +import com.chwl.core.manager.AvRoomDataManager; +import com.chwl.core.super_admin.attachment.SuperAdminOpAttachment; +import com.chwl.core.super_admin.bean.SaOpInfo; +import com.chwl.library.utils.ResUtil; + +/** + * 超管自定义消息 to 公屏消息 + * create by lvzebiao @2019/8/21 + */ +public class SaAttachmentToMsgUtil { + + public static CharSequence formatSuperAdminInfo(CustomAttachment attachment, TextView tvContent, + int greyColor, int roomTipColor) { + if (!(attachment instanceof SuperAdminOpAttachment)) { + return null; + } + SuperAdminOpAttachment opAttachment = (SuperAdminOpAttachment) attachment; + SaOpInfo info = opAttachment.getInfo(); + if (info == null) { + return null; + } + String opName = null; + TextSpannableBuilder text = new TextSpannableBuilder(tvContent); + text.append(AvRoomDataManager.get().isSuperAdmin(info.getHandleUid()) ? "" : ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_01), new ForegroundColorSpan(greyColor)); + switch (opAttachment.getSecond()) { + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_DOWN_MIC: + if (!TextUtils.isEmpty(info.getTargetNick())) { + text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor)); + } + opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_02); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_MUTE_MIC: + opName = getMicString(info.getMicNumber()) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_03); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_LOCK_MIC: + opName = getMicString(info.getMicNumber()) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_04); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_MARK_BLACK: + if (!TextUtils.isEmpty(info.getTargetNick())) { + text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor)); + } + opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_05); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_OUT_ROOM: + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_OUT_ADMIN: + if (!TextUtils.isEmpty(info.getTargetNick())) { + text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor)); + } + opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_06); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_REMOVE_CP_ROOM_LIMIT: + opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_07); + break; + case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_REMOVE_ROOM_PWD: + opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_08); + break; + default: + return null; + } + if (!TextUtils.isEmpty(opName)) { + text.append(opName, new ForegroundColorSpan(greyColor)); + } + return text.build(); + } + + private static String getMicString(int micNumber) { + String micString; + if (AvRoomDataManager.get().isHomeParty()) { + if (micNumber == -1) { + micString = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_09); + } else { + micString = (micNumber + 1) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_010); + } + } else { + micString = (micNumber + 2) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_010); + } + return micString; + } + +} diff --git a/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SuperAdminUiHelper.java b/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SuperAdminUiHelper.java new file mode 100644 index 0000000..dca4940 --- /dev/null +++ b/app/src/module_super_admin/java/com/chwl/app/sadmin/utils/SuperAdminUiHelper.java @@ -0,0 +1,7 @@ +package com.chwl.app.sadmin.utils; + +/** + * create by lvzebiao @2019/8/26 + */ +public class SuperAdminUiHelper { +} diff --git a/app/src/module_super_admin/res/drawable-xhdpi/icon_sa_close_room.webp b/app/src/module_super_admin/res/drawable-xhdpi/icon_sa_close_room.webp new file mode 100644 index 0000000000000000000000000000000000000000..d7a9fa26680e484636999a0a0e9280b3b0933dc6 GIT binary patch literal 977 zcmV;?11|hhNk&Gb0{{S5MM6+kP&il$0000G0000h001ih06|PpNWlRB00BqBxRE3$ z)SSihBL7?=h=|BV72?=9TZ-a!gs02k^0lbxnn~C3B9!11s=rm1314FL}-#6;D=cF<*wyga?ZNNzmTa3?F;TJYR;Ej7<@$(s;dSw znYJTiOcH}aTo3%nBw5V72V`$$NYZ>8DK~P)Z#9x+fDcV?(Gb{}_Us1Qo~5|?UMK;6 zLZ=dJk9G7i-WhnB?A<4D4(VXHXn~}+lL0f z?NR^|gAeZNbC{rjgp0ky-S_W@UNKDn761TNP&gpG0RRAy3jmz~Dl7mj06u{>kw>K? zA)z%|tx%v4326Wk4!;uLK~$#Ie7^tOc`5vV{HOhIaF67F);GhySq6n(;0}P*Ae-9p z?0RH`%{H45N%j9-r*yd9yKq!>bA`d;b!$ zk1A<&w>Z&&ynADZ?nq3#@PFi7mw&TLdTXM4#u{V4^0X7CZggO5$vh-X9**6V()?Yo z-sJ7y{sGzlU|d}5gC%XG*H6(MPx@cME+~jgyZ(y0dty@_7_Yv#)Kq#25y_S!o5x4^ zJJuW(QAl&@o`@D@TyN@EQvj2M1V2%XXp~5%3OZh?hTPr%^ap9^7PFTN_8VF{&qqgv zZm}h1-y$HSfB*mrWHDnlH8VIlH8Ny5HZ(LbG%z(~Wi&W4VK-$oVlXl=ARsLYb*#!@ literal 0 HcmV?d00001 diff --git a/app/src/module_super_admin/res/drawable-xhdpi/icon_sa_remove_room_limit.webp b/app/src/module_super_admin/res/drawable-xhdpi/icon_sa_remove_room_limit.webp new file mode 100644 index 0000000000000000000000000000000000000000..ca7aea195913af3bf270c87cb9c30979938d0df2 GIT binary patch literal 825 zcmV-91IGMPNk&Et0{{S5MM6+kP&il$0000G0000h001ih06|PpNGAaR009@mux%U1 zxu>t+eT#^=N+D8p@lJJC6L)(U+MK$rkCj>mwbC;Gkca>*+qO+dC$?>;7~9F}f3xzg zik}hvp8)w|XNKGBWz$c)5FS5xdK(3;g=Q#z25r3nZ~1Vf_yLS80mQpJIUXk^F99s{c-nKKglE}>34A0HA24y@011%< z9NdY+(S-@T$5ZbxaiNT7*#+r6>xmOmot#dSia4Te;0iHQF*xeXp=GKKbDbt!n^6U@o9NBz1JDEYHDP~S`g7f(mwXt`-5q0nA+Z8qEbUm<H4Eds=8L zUo9M-$H{+sC}w2%!njZC-hp~9c8PG`Hw=v+O*muCam`O_IyD%}7j!lD5cZ|s;QK}C zzN|GSl6_Dy&>`f4Ux;F-nVJrRvx6VQrQh(w;}*M{+Q9RA#ypM=urVL@vTt$c<@ipz zv{$`A + + + + + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/layout/activity_room_s_admin_manager.xml b/app/src/module_super_admin/res/layout/activity_room_s_admin_manager.xml new file mode 100644 index 0000000..4fe2660 --- /dev/null +++ b/app/src/module_super_admin/res/layout/activity_room_s_admin_manager.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/layout/item_speedy_message.xml b/app/src/module_super_admin/res/layout/item_speedy_message.xml new file mode 100644 index 0000000..f6a2282 --- /dev/null +++ b/app/src/module_super_admin/res/layout/item_speedy_message.xml @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/app/src/module_super_admin/res/values-ar/strings.xml b/app/src/module_super_admin/res/values-ar/strings.xml new file mode 100644 index 0000000..e2883bb --- /dev/null +++ b/app/src/module_super_admin/res/values-ar/strings.xml @@ -0,0 +1,8 @@ + + + النظام اكتشف انتهاك مشتبه به، لقد تمت إزالتك من الميكروفون + النظام اكتشف انتهاك مشتبه به، لقد تمت إضافتك إلى قائمة الحظر + النظام اكتشف انتهاك مشتبه به، لقد تم طردك من الغرفة + الإدارة الرسمية + إخفاء الغرفة + \ No newline at end of file diff --git a/app/src/module_super_admin/res/values-zh-rTW/strings.xml b/app/src/module_super_admin/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000..75f4500 --- /dev/null +++ b/app/src/module_super_admin/res/values-zh-rTW/strings.xml @@ -0,0 +1,8 @@ + + + 系統檢測涉嫌違規,你被抱下麥 + 系統檢測涉嫌違規,你已被加入黑名單 + 系統檢測涉嫌違規,你被請出房間 + 官方管理 + 隱藏房間 + \ No newline at end of file diff --git a/app/src/module_super_admin/res/values/strings.xml b/app/src/module_super_admin/res/values/strings.xml new file mode 100644 index 0000000..b7792a9 --- /dev/null +++ b/app/src/module_super_admin/res/values/strings.xml @@ -0,0 +1,8 @@ + + + System detected suspected violation, you have been removed from the mic + System detected suspected violation, you have been added to the blacklist + System detected suspected violation, you have been kicked out of the room + Official Management + Hide Room +