From beb566b294b5d4be61d032560bd5874095b664f1 Mon Sep 17 00:00:00 2001
From: zlzw <583819556@qq.com>
Date: Sun, 25 Jun 2023 09:51:29 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=9F=E9=97=B4=E7=A6=81?=
=?UTF-8?q?=E8=A8=80=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/build.gradle | 4 +
common/src/main/res/values-en-rUS/string.xml | 2 +
common/src/main/res/values-zh-rHK/strings.xml | 4 +-
common/src/main/res/values-zh-rTW/strings.xml | 4 +-
common/src/main/res/values-zh/strings.xml | 4 +-
common/src/main/res/values/strings.xml | 2 +
.../yunbao/live/activity/LiveActivity.java | 9 ++-
.../live/dialog/LiveSettingSilenceDialog.java | 71 ++++++++++++++++++
.../live/dialog/LiveUserDialogFragment.java | 29 +++++++-
.../com/yunbao/live/http/LiveHttpUtil.java | 16 +++-
.../yunbao/live/socket/SocketRyChatUtil.java | 33 +++++++--
.../live/views/PortraitLiveManager.java | 4 +-
.../layout/dialog_live_setting_silence.xml | 74 +++++++++++++++++++
live/src/main/res/values-en/strings.xml | 2 +
live/src/main/res/values/strings.xml | 3 +-
15 files changed, 243 insertions(+), 18 deletions(-)
create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveSettingSilenceDialog.java
create mode 100644 live/src/main/res/layout/dialog_live_setting_silence.xml
diff --git a/common/build.gradle b/common/build.gradle
index 0b8ba7106..57d020310 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -191,4 +191,8 @@ dependencies {
api 'com.github.li-xiaojun:XPopup:2.9.1'
api 'com.github.shenbengit:PagerGridLayoutManager:1.1.7'
+ //选择器
+ api 'com.github.gzu-liyujiang.AndroidPicker:Common:4.1.11'
+ api 'com.github.gzu-liyujiang.AndroidPicker:WheelView:4.1.11'
+
}
diff --git a/common/src/main/res/values-en-rUS/string.xml b/common/src/main/res/values-en-rUS/string.xml
index 567557012..f1af38581 100644
--- a/common/src/main/res/values-en-rUS/string.xml
+++ b/common/src/main/res/values-en-rUS/string.xml
@@ -348,6 +348,7 @@
Kicked out of the room
Forbidden forever
Forbidden by this scene
+ Forbidden by %s min
Set as Administrator
Cancelled administrator
You\'ve been kicked out of the room
@@ -1194,4 +1195,5 @@ Limited ride And limited avatar frame
%S sent to %s
Over the maximum value
Insufficient balance, continue to recharge
+ Time limit gag
diff --git a/common/src/main/res/values-zh-rHK/strings.xml b/common/src/main/res/values-zh-rHK/strings.xml
index 2ff2a2d87..bee2faa9f 100644
--- a/common/src/main/res/values-zh-rHK/strings.xml
+++ b/common/src/main/res/values-zh-rHK/strings.xml
@@ -279,7 +279,7 @@
收入
都市未設定
禮物貢獻榜
- 踢人
+ 踢出房間
永久禁言
本場禁言
設為管理
@@ -292,6 +292,7 @@
被踢出房間
被永久禁言
被本場禁言
+ 被禁言%s分鐘
被設為管理員
被取消管理員
你已經被踢出房間
@@ -1189,4 +1190,5 @@
%S送给了%s
超过最大值
餘額不足,繼續充值
+ 期限禁言
diff --git a/common/src/main/res/values-zh-rTW/strings.xml b/common/src/main/res/values-zh-rTW/strings.xml
index 47e96ef43..dc2735243 100644
--- a/common/src/main/res/values-zh-rTW/strings.xml
+++ b/common/src/main/res/values-zh-rTW/strings.xml
@@ -279,7 +279,7 @@
收入
都市未設定
禮物貢獻榜
- 踢人
+ 踢出房間
永久禁言
本場禁言
設為管理
@@ -292,6 +292,7 @@
被踢出房間
被永久禁言
被本場禁言
+ 被禁言%s分鐘
被設為管理員
被取消管理員
你已經被踢出房間
@@ -1188,4 +1189,5 @@
%S送给了%s
超过最大值
餘額不足,繼續充值
+ 期限禁言
diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml
index d120b5b8a..0870f2363 100644
--- a/common/src/main/res/values-zh/strings.xml
+++ b/common/src/main/res/values-zh/strings.xml
@@ -279,7 +279,7 @@
收入
都市未設定
禮物貢獻榜
- 踢人
+ 踢出房間
永久禁言
本場禁言
設為管理
@@ -292,6 +292,7 @@
被踢出房間
被永久禁言
被本場禁言
+ 被禁言%s分鐘
被設為管理員
被取消管理員
你已經被踢出房間
@@ -1189,4 +1190,5 @@
%S送给了%s
超过最大值
餘額不足,繼續充值
+ 期限禁言
diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml
index 5dcfc909b..81850c6b9 100644
--- a/common/src/main/res/values/strings.xml
+++ b/common/src/main/res/values/strings.xml
@@ -348,6 +348,7 @@
Kicked out of the room
Forbidden forever
Forbidden by this scene
+ Forbidden by %s minute
Set as Administrator
Cancelled administrator
You\'ve been kicked out of the room
@@ -1195,4 +1196,5 @@ Limited ride And limited avatar frame
Create Vote Error
Over the maximum value
Insufficient balance, continue to recharge
+ Time limit gag
diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java
index a03991723..84dd06664 100644
--- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java
+++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java
@@ -320,7 +320,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
*/
@Override
public void onSendGift(LiveReceiveGiftBean bean, SendBlindGiftEvent event) {
- if (event == null) {
+ if (event == null) {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
@@ -1003,6 +1003,13 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
SocketRyChatUtil.sendShutUpMessage(mLiveUid, toUid, toName, type);
}
+ /**
+ * 期限禁言
+ */
+ public void setShutUp(String toUid, String toName, int type, int time) {
+ SocketRyChatUtil.sendShutUpMessage(mLiveUid, toUid, toName, type, time);
+ }
+
/**
* 设置或取消管理员消息
*/
diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveSettingSilenceDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveSettingSilenceDialog.java
new file mode 100644
index 000000000..290cb15f2
--- /dev/null
+++ b/live/src/main/java/com/yunbao/live/dialog/LiveSettingSilenceDialog.java
@@ -0,0 +1,71 @@
+package com.yunbao.live.dialog;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+import com.github.gzuliyujiang.wheelview.widget.WheelView;
+import com.lxj.xpopup.XPopup;
+import com.yunbao.common.dialog.AbsDialogPopupWindow;
+import com.yunbao.common.interfaces.OnItemClickListener;
+import com.yunbao.live.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LiveSettingSilenceDialog extends AbsDialogPopupWindow {
+ //https://github.com/gzu-liyujiang/AndroidPicker/blob/master/API.md#%E6%BB%9A%E8%BD%AE
+ private WheelView silenceList;
+ private OnItemClickListener itemClickListener;
+
+ public LiveSettingSilenceDialog(@NonNull Context context) {
+ super(context);
+ }
+
+ public LiveSettingSilenceDialog setItemClickListener(OnItemClickListener itemClickListener) {
+ this.itemClickListener = itemClickListener;
+ return this;
+ }
+
+ @Override
+ public void buildDialog(XPopup.Builder builder) {
+
+ }
+
+ @Override
+ public int bindLayoutId() {
+ return R.layout.dialog_live_setting_silence;
+ }
+
+ @Override
+ protected void onCreate() {
+ super.onCreate();
+ silenceList = findViewById(R.id.silenceList);
+ View submit = findViewById(R.id.submit);
+ View cancel = findViewById(R.id.cancel);
+ submit.setOnClickListener(v -> {
+ itemClickListener.onItemClick(silenceList.getCurrentPosition() + 1, silenceList.getCurrentPosition());
+ dismiss();
+ });
+ cancel.setOnClickListener(v -> {
+ dismiss();
+ });
+ initData();
+ }
+
+ void initData() {
+ List list = new ArrayList<>();
+ for (int i = 1; i < 61; i++) {
+ list.add(i + " " + getContext().getString(R.string.minute));
+ }
+ silenceList.setData(list);
+ silenceList.setCyclicEnabled(false);
+ silenceList.setIndicatorEnabled(false);
+ silenceList.setCurtainEnabled(true);
+ silenceList.setCurvedEnabled(true);
+ silenceList.setCurvedMaxAngle(45);
+ silenceList.setCurtainColor(Color.parseColor("#F4F4F4"));
+ }
+}
diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java
index 844af5d14..dc3c779cc 100644
--- a/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java
+++ b/live/src/main/java/com/yunbao/live/dialog/LiveUserDialogFragment.java
@@ -35,6 +35,7 @@ import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.interfaces.CommonCallback;
+import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.CommonIconUtil;
import com.yunbao.common.utils.DialogUitl;
@@ -703,6 +704,7 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
list.add(R.string.live_setting_kick);
// list.add(R.string.live_setting_gap);
list.add(R.string.live_setting_gap_2);
+ list.add(R.string.live_setting_gap_3);
break;
case SETTING_ACTION_SUP://设置 超管点主播
list.add(R.string.live_setting_close_live);
@@ -712,16 +714,18 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
case SETTING_ACTION_ANC_AUD://设置 主播点普通观众
list.add(R.string.live_setting_kick);
// list.add(R.string.live_setting_gap);
- list.add(R.string.live_setting_gap_2);
list.add(R.string.live_setting_admin);
list.add(R.string.live_setting_admin_list);
+ list.add(R.string.live_setting_gap_2);
+ list.add(R.string.live_setting_gap_3);
break;
case SETTING_ACTION_ANC_ADM://设置 主播点房间管理员
list.add(R.string.live_setting_kick);
// list.add(R.string.live_setting_gap);
- list.add(R.string.live_setting_gap_2);
- list.add(R.string.live_setting_admin_cancel);
list.add(R.string.live_setting_admin_list);
+ list.add(R.string.live_setting_admin_cancel);
+ list.add(R.string.live_setting_gap_2);
+ list.add(R.string.live_setting_gap_3);
break;
}
@@ -754,6 +758,8 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
} else if (tag == R.string.live_setting_close_live_2) {//禁用直播
closeLive2();
+ } else if (tag==R.string.live_setting_gap_3){
+ setShutUp3();
}
}
};
@@ -851,6 +857,23 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
dismiss();
LiveHttpUtil.superCloseRoom(mLiveUid, 1, mSuperCloseRoomCallback);
}
+ private void setShutUp3(){
+ new LiveSettingSilenceDialog(mContext)
+ .setItemClickListener((bean, position) -> {
+ LiveHttpUtil.setShutUp(mLiveUid, mStream, 1, mToUid, bean+"",new HttpCallback() {
+ @Override
+ public void onSuccess(int code, String msg, String[] info) {
+ if (code == 0) {
+ ((LiveActivity) mContext).setShutUp(mToUid, mToName, 2,bean);
+ dismiss();
+ } else {
+ ToastUtil.show(msg);
+ }
+ }
+ });
+ })
+ .showDialog();
+ }
/**
* 超管关闭直播间并禁用主播账户
diff --git a/live/src/main/java/com/yunbao/live/http/LiveHttpUtil.java b/live/src/main/java/com/yunbao/live/http/LiveHttpUtil.java
index 73e968a5a..12f269782 100644
--- a/live/src/main/java/com/yunbao/live/http/LiveHttpUtil.java
+++ b/live/src/main/java/com/yunbao/live/http/LiveHttpUtil.java
@@ -13,6 +13,7 @@ import com.yunbao.common.http.JsonBean;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.MD5Util;
+import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.VersionUtil;
import java.io.File;
@@ -285,17 +286,24 @@ public class LiveHttpUtil {
.execute(callback);
}
+ public static void setShutUp(String liveUid, String stream, int type, String touid, HttpCallback callback) {
+ setShutUp(liveUid, stream, type, touid, null, callback);
+ }
/**
* 主播或管理员禁言
+ * @param time 禁言时间 (分)
*/
- public static void setShutUp(String liveUid, String stream, int type, String touid, HttpCallback callback) {
- HttpClient.getInstance().get("Live.setShutUp", LiveHttpConsts.SET_SHUT_UP)
+ public static void setShutUp(String liveUid, String stream, int type, String touid, String time, HttpCallback callback) {
+ GetRequest request = HttpClient.getInstance().get("Live.setShutUp", LiveHttpConsts.SET_SHUT_UP)
.params("liveuid", liveUid)
.params("stream", stream)
.params("type", type)
- .params("touid", touid)
- .execute(callback);
+ .params("touid", touid);
+ if (!StringUtil.isEmpty(time)) {
+ request.params("minute", time);
+ }
+ request.execute(callback);
}
diff --git a/live/src/main/java/com/yunbao/live/socket/SocketRyChatUtil.java b/live/src/main/java/com/yunbao/live/socket/SocketRyChatUtil.java
index 6d1573c92..7cd18ff92 100644
--- a/live/src/main/java/com/yunbao/live/socket/SocketRyChatUtil.java
+++ b/live/src/main/java/com/yunbao/live/socket/SocketRyChatUtil.java
@@ -164,7 +164,7 @@ public class SocketRyChatUtil {
.param("medal_name", u.getMedalName())
.param("medal_level", u.getMedalLevel())
.param("good_num", u.getGoodnum())
- .param("ct",CommonAppContext.sInstance.getBaseContext().getString(R.string.live_lighted));
+ .param("ct", CommonAppContext.sInstance.getBaseContext().getString(R.string.live_lighted));
msg.create();
String targetId = "g" + mLiveUid;
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
@@ -355,7 +355,7 @@ public class SocketRyChatUtil {
.param("uid", u.getId())
.param("touid", toUid)
.param("toname", toName)
- .param("ct", toName +CommonAppContext.sInstance.getBaseContext().getString(R.string.live_kicked));
+ .param("ct", toName + CommonAppContext.sInstance.getBaseContext().getString(R.string.live_kicked));
msg.create();
String targetId = "g" + mLiveUid;
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
@@ -388,11 +388,33 @@ public class SocketRyChatUtil {
* 主播或管理员 禁言
*/
public static void sendShutUpMessage(String mLiveUid, String toUid, String toName, int type) {
+ sendShutUpMessage(mLiveUid, toUid, toName, type, 0);
+ }
+
+ /**
+ * 主播或管理员 禁言
+ *
+ * @param time 禁言时间 1~60
+ */
+ public static void sendShutUpMessage(String mLiveUid, String toUid, String toName, int type, int time) {
UserBean u = CommonAppConfig.getInstance().getUserBean();
if (u == null) {
return;
}
+ String ct = "";
+ switch (type) {
+ case 0:
+ ct = CommonAppContext.sInstance.getBaseContext().getString(R.string.live_shut);
+ break;
+ case 1:
+ ct = CommonAppContext.sInstance.getBaseContext().getString(R.string.live_shut_2);
+ break;
+ case 2:
+ ct = String.format(CommonAppContext.sInstance.getBaseContext().getString(R.string.live_shut_3),time+"");
+ break;
+ }
+
final SocketSendBean msg = new SocketSendBean()
.param("_method_", Constants.SOCKET_SHUT_UP)
.param("action", 1)
@@ -402,7 +424,8 @@ public class SocketRyChatUtil {
.param("uid", u.getId())
.param("touid", toUid)
.param("toname", toName)
- .param("ct", toName +CommonAppContext.sInstance.getBaseContext().getString(type == 0 ? R.string.live_shut : R.string.live_shut_2));
+ .param("time", time)
+ .param("ct", toName + ct);
msg.create();
String targetId = "g" + mLiveUid;
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
@@ -439,7 +462,7 @@ public class SocketRyChatUtil {
if (u == null) {
return;
}
- String s = action == 1 ?CommonAppContext.sInstance.getBaseContext().getString(R.string.live_set_admin) :CommonAppContext.sInstance.getBaseContext().getString(R.string.live_set_admin_cancel);
+ String s = action == 1 ? CommonAppContext.sInstance.getBaseContext().getString(R.string.live_set_admin) : CommonAppContext.sInstance.getBaseContext().getString(R.string.live_set_admin_cancel);
final SocketSendBean msg = new SocketSendBean()
.param("_method_", Constants.SOCKET_SET_ADMIN)
.param("action", action)
@@ -709,7 +732,7 @@ public class SocketRyChatUtil {
.param("msgtype", 0)
.param("uid", u.getId())
.param("uname", u.getUserNiceName())
- .param("ct",CommonAppContext.sInstance.getBaseContext().getString(R.string.red_pack_22)
+ .param("ct", CommonAppContext.sInstance.getBaseContext().getString(R.string.red_pack_22)
);
msg.create();
String targetId = "g" + mLiveUid;
diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java
index 2c7b5fd27..b805b5f1c 100644
--- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java
+++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java
@@ -1274,7 +1274,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
@Override
public void onShutUp(String touid, String content) {
-
+ if (!TextUtils.isEmpty(touid) && touid.equals(CommonAppConfig.getInstance().getUid())) {
+ DialogUitl.showSimpleTipDialog(mContext, content);
+ }
}
@Override
diff --git a/live/src/main/res/layout/dialog_live_setting_silence.xml b/live/src/main/res/layout/dialog_live_setting_silence.xml
new file mode 100644
index 000000000..359314c6c
--- /dev/null
+++ b/live/src/main/res/layout/dialog_live_setting_silence.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml
index a357af960..9bbb745b8 100644
--- a/live/src/main/res/values-en/strings.xml
+++ b/live/src/main/res/values-en/strings.xml
@@ -90,4 +90,6 @@
Think again
Letter
Please turn on at least one contact information
+ Minute
+ Please select
\ No newline at end of file
diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml
index 50e8ee84b..9496804d2 100644
--- a/live/src/main/res/values/strings.xml
+++ b/live/src/main/res/values/strings.xml
@@ -88,5 +88,6 @@
刪除
再想想
信件欄
-
+ 分鐘
+ 請選擇禁言時間