From 66d2df5fc34cbb57904fe4eb701fac3c75edab86 Mon Sep 17 00:00:00 2001 From: huangjian Date: Wed, 1 Sep 2021 19:02:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=B6=85=E7=AE=A1=E6=8E=A5=E5=8F=A3=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E5=92=8C=E5=AE=B6=E6=97=8F=E5=85=AC=E4=BC=9AUI?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yizhuan/erban/ui/utils/RVDelegate.java | 2 +- .../activity/HallNameSettingActivity.java | 19 +++-- .../hall/activity/ModuleClanActivity.java | 9 +- .../hall/activity/ModuleHallActivity.java | 79 +++++------------- .../hall/activity/SuperAdminAddActivity.kt | 29 +++++-- .../hall/activity/SuperAdminManageActivity.kt | 70 ++++++++++++++++ .../hall/adapter/GroupMemberListAdapter.java | 3 + .../hall/adapter/ManageRoomAdapter.kt | 11 ++- .../hall/adapter/ManageSuperAdminAdapter.kt | 8 +- .../res/drawable-xhdpi/bg_message_popup.png | Bin 0 -> 1510 bytes .../drawable-xhdpi/ic_hall_member_more.png | Bin 402 -> 807 bytes .../res/drawable-xhdpi/ic_hall_setting.png | Bin 1735 -> 976 bytes .../drawable-xxhdpi/bg_clan_super_admin.png | Bin 0 -> 15985 bytes .../res/drawable/shape_admin_bottom_bg.xml | 10 +++ .../res/layout/activity_module_clan.xml | 8 ++ .../res/layout/activity_module_hall.xml | 28 ++++--- .../res/layout/activity_super_admin_add.xml | 2 +- .../layout/activity_super_admin_manege.xml | 8 ++ .../layout/activity_super_admin_room_set.xml | 8 ++ .../res/layout/item_manage_super_admin.xml | 8 +- .../res/layout/item_search_admin.xml | 6 +- .../res/layout/popup_admin_more.xml | 32 +++++++ .../module_hall/hall/HallModel.java | 37 +++++++- .../module_hall/hall/IHallModel.java | 6 ++ .../hall/bean/ClanAndHallInfo.java | 1 + .../module_hall/hall/bean/RoleType.java | 25 ++++-- .../module_hall/hall/bean/SuperAdminInfo.kt | 3 +- .../nim/uikit/common/util/sys/ScreenUtil.java | 10 ++- 28 files changed, 311 insertions(+), 111 deletions(-) create mode 100644 app/src/module_labour_union/res/drawable-xhdpi/bg_message_popup.png create mode 100644 app/src/module_labour_union/res/drawable-xxhdpi/bg_clan_super_admin.png create mode 100644 app/src/module_labour_union/res/drawable/shape_admin_bottom_bg.xml create mode 100644 app/src/module_labour_union/res/layout/popup_admin_more.xml diff --git a/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java b/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java index 029de17a9..7c1e65b62 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java +++ b/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java @@ -63,7 +63,7 @@ public class RVDelegate { public void setNewData(List data) { adapter.setNewData(data); - if (emptyView != null && ListUtils.isListEmpty(data)) { + if (emptyView != null && adapter.getEmptyView() == null) { adapter.setEmptyView(emptyView); } adapter.disableLoadMoreIfNotFullPage(); diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/HallNameSettingActivity.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/HallNameSettingActivity.java index cd3a07252..c67eec0c6 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/HallNameSettingActivity.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/HallNameSettingActivity.java @@ -3,6 +3,7 @@ package com.yizhuan.erban.module_hall.hall.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import androidx.core.content.ContextCompat; import android.text.TextUtils; @@ -29,7 +30,9 @@ public class HallNameSettingActivity extends BaseMvpActivity MAX_HALL_NAME_LIMIT) { - SingleToastUtil.showToastShort("公会名不能超过15个字"); + SingleToastUtil.showToastShort("房间名不能超过15个字"); return; } diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleClanActivity.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleClanActivity.java index dcf7ba639..a2465c6b0 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleClanActivity.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleClanActivity.java @@ -81,6 +81,7 @@ public class ModuleClanActivity extends BaseActivity implements View.OnClickList binding.ivBack.setOnClickListener(this); binding.tvHallAdmin.setOnClickListener(this); binding.tvHallIncome.setOnClickListener(this); + binding.ivHallMemberSearch.setOnClickListener(this); otherUid = getIntent().getLongExtra(KEY_OTHER_UID, AuthModel.get().getCurrentUid()); isSelfClan = otherUid == AuthModel.get().getCurrentUid(); binding.recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -129,6 +130,9 @@ public class ModuleClanActivity extends BaseActivity implements View.OnClickList if (isSelfClan) { HallDataManager.get().updateHallInfo(clanAndHallInfo); } + if ((HallDataManager.get().isManager() && isSelfClan) || clanAndHallInfo.isManageHall()) { + binding.ivHallMemberSearch.setVisibility(View.VISIBLE); + } clanInfo = clanAndHallInfo.getClan(); if (clanInfo != null && clanInfo.getId() != 0) { binding.clClan.setVisibility(View.VISIBLE); @@ -248,11 +252,14 @@ public class ModuleClanActivity extends BaseActivity implements View.OnClickList break; case R.id.tv_hall_admin: if (clanInfo != null) { - SuperAdminManageActivity.start(this,clanInfo.getId()); + SuperAdminManageActivity.start(this, clanInfo.getId()); } else { toast("数据加载中,请稍后..."); } break; + case R.id.iv_hall_member_search: + MemberSearchActivity.start(this); + break; } } diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleHallActivity.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleHallActivity.java index ea63711fe..0356aca0d 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleHallActivity.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ModuleHallActivity.java @@ -69,7 +69,7 @@ public class ModuleHallActivity extends BaseMvpActivity loadMembers(false), binding.recyclerView); binding.recyclerView.setAdapter(mGroupMemberListAdapter); setTvCount(0); - if (HallDataManager.get().isManager() && isSelfHall) { - getMvpPresenter().getHallAuths(); - } else { - binding.ivHallMemberSearch.setVisibility(View.GONE); - } EventBus.getDefault().register(this); binding.nsvHall.setNestedScrollingEnabled(false); initClanAndHall(); - setMoreOption(HallDataManager.get().isManager() && isSelfHall); + } @SuppressLint({"CheckResult", "SetTextI18n"}) @@ -147,16 +142,11 @@ public class ModuleHallActivity extends BaseMvpActivity { HallInfo hallInfo = clanAndHallInfo.getHall(); - ClanInfo clanInfo = clanAndHallInfo.getClan(); - /* if (clanInfo != null && clanInfo.getId() != 0) { - binding.tvOwnerClan.setVisibility(View.VISIBLE); - binding.tvOwnerClan.setOnClickListener(v -> ModuleClanActivity.start(context,otherUid)); - }*/ - setSettingOption(HallDataManager.get().getRoleType() != RoleType.OWNER || !isSelfHall); + setSettingOption((HallDataManager.get().isManager() && isSelfHall) || clanAndHallInfo.isManageHall()); if (hallInfo != null && hallInfo.getHallId() != 0) { binding.clHall.setVisibility(View.VISIBLE); binding.clHall.setOnClickListener(v -> UserInfoActivity.Companion.start(context, hallInfo.getOwnerUid())); - binding.tvHallId.setText("公会ID:" + hallInfo.getHallId() + ""); + binding.tvHallId.setText("房间ID:" + hallInfo.getOwnerErbanNo()); binding.tvTitle.setText(hallInfo.getHallName()); GlideApp.with(binding.ivHallAvatar.getContext()) @@ -184,21 +174,19 @@ public class ModuleHallActivity extends BaseMvpActivity authInfoList = new ArrayList<>(); - AuthInfo authInfo = new AuthInfo(); - authInfo.setCode("hall_name_set"); - authInfo.setName("设置房间名"); - authInfo.setStatus(1); - authInfoList.add(authInfo); - - HallMenuDialog dialog = new HallMenuDialog(this, attachView, authInfoList, false); - dialog.setOnMenuClickListener(this::jumpCode); - - dialog.show(); - } - - private void showExitHallDialog(View attachView) { - List authInfoList = new ArrayList<>(); - AuthInfo authInfo = new AuthInfo(); - authInfo.setCode(AuthInfo.AUTH_APPLY_HALL_EXIT); - authInfo.setName("退出房间"); - authInfo.setStatus(1); - authInfoList.add(authInfo); - - HallMenuDialog dialog = new HallMenuDialog(this, attachView, authInfoList, false); - dialog.setOnMenuClickListener(this::jumpCode); - - dialog.show(); - } - private void jumpCode(String code) { switch (code) { case AuthInfo.AUTH_APPLY_HALL_EXIT: diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/SuperAdminAddActivity.kt b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/SuperAdminAddActivity.kt index b917e25fc..0590f7e28 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/SuperAdminAddActivity.kt +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/SuperAdminAddActivity.kt @@ -1,5 +1,6 @@ package com.yizhuan.erban.module_hall.hall.activity +import android.annotation.SuppressLint import android.content.Context import android.content.Intent import androidx.recyclerview.widget.LinearLayoutManager @@ -29,7 +30,7 @@ class SuperAdminAddActivity : BaseViewBindingActivity private val clanId by lazy { intent.getLongExtra("clanId", 0) } - + private var searchId = 0L override fun init() { rvDelegate = RVDelegate.Builder() @@ -52,13 +53,8 @@ class SuperAdminAddActivity : BaseViewBindingActivity() { @@ -28,6 +39,8 @@ class SuperAdminManageActivity : BaseViewBindingActivity + if (view.id == R.id.iv_more) { + showManagePopup(view, adminAdapter.getItem(position), position) + } + } + } + @SuppressLint("CheckResult") + override fun onResume() { + super.onResume() + HallModel.get().getClanSuperAdminList(clanId) + .compose(bindToLifecycle()) + .subscribe({ + rvDelegate.setNewData(it) + }, { + rvDelegate.loadErr(true) + }) + } + + private fun showManagePopup(parent: View?, superAdminInfo: SuperAdminInfo?, position: Int) { + if (parent == null || superAdminInfo == null) return + + val contentView: View + if (!this::popupWindow.isInitialized) { + contentView = + LayoutInflater.from(this).inflate(R.layout.popup_admin_more, null) + popupWindow = + PopupWindow(contentView, ScreenUtil.dip2px(100f), ScreenUtil.dip2px(63f)) + popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + popupWindow.isFocusable = true + } else { + contentView = popupWindow.contentView + } + contentView.findViewById(R.id.tv_set_room).setOnClickListener { + SuperAdminRoomSetActivity.start(this, clanId, superAdminInfo.uid) + popupWindow.dismiss() + } + contentView.findViewById(R.id.tv_remove).setOnClickListener { + popupWindow.dismiss() + HallModel.get().removeSuperAdmin(superAdminInfo.uid) + .compose(bindToLifecycle()) + .subscribe({ + adminAdapter.remove(position) + }, { + it.message.toast() + }) + } + val vLoc = IntArray(2) + parent.getLocationInWindow(vLoc) + popupWindow.showAsDropDown( + parent, + 0, + 0, + Gravity.END + ) + } + + override fun needSteepStateBar() = true override fun setStatusBar() { diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/adapter/GroupMemberListAdapter.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/adapter/GroupMemberListAdapter.java index 2b5952dd2..88ee77fa8 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/adapter/GroupMemberListAdapter.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/adapter/GroupMemberListAdapter.java @@ -74,6 +74,9 @@ public class GroupMemberListAdapter extends BaseQuickAdapter(R.layout.item_manage_super_admin) { override fun convert(helper: BaseViewHolder, item: SuperAdminInfo) { - ImageLoadUtils.loadAvatar("", helper.getView(R.id.iv_avatar)) + ImageLoadUtils.loadAvatar(item.avatar, helper.getView(R.id.iv_avatar)) + + helper.setText(R.id.tv_nickname,item.nick) + .setText(R.id.tv_id,"音游号:${item.erbanNo}") + .addOnClickListener(R.id.iv_more) val rvRoom = helper.getView(R.id.rv_room) if (rvRoom.adapter == null) { @@ -32,6 +36,6 @@ class ManageSuperAdminAdapter : .setAdapter(ManageRoomAdapter()) .build() } - (rvRoom.adapter as BaseQuickAdapter<*, *>).setNewData(ArrayList()) + (rvRoom.adapter as BaseQuickAdapter).setNewData(item.roomList) } } \ No newline at end of file diff --git a/app/src/module_labour_union/res/drawable-xhdpi/bg_message_popup.png b/app/src/module_labour_union/res/drawable-xhdpi/bg_message_popup.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c47bad0263b4a41d4749b82ae9030473809918 GIT binary patch literal 1510 zcmeAS@N?(olHy`uVBq!ia0vp^CxEz)gAGU~o{swlq!^2X+?^QKos)UVz`(k|)5S5Q zBJS<P#w|(6zMLQf>UZQ+TkQ@R4j-onPfjjfe*5jSWi##5(%z?fHYrSAb8NFF z%dWe>F8UqM+x6RcH&d{Rk3X2QJlSl|Oe-|lvGLj7xc3vo zUccZ^vs1o0f0ICmYC*L@MD3~7tLiS_)jyh6D9cpE;w7oq%Mw}sUHr?d%Mwf*S-dpo zSL~1fpZ3f>dGQWDMq8$(Q{L~nAFoq&HIt{Yf@$duTb9n}K1~LUEP`_VuRgK}sLV6u zJj5d4Qem^|xUj>7ieoAq!VUrtKdzATXK;KZIa$Gn!LjA|;wl?Pmd^B1jkp4*zh8lo zX%{dY%dKar3p|Kl!*asqg^+{5-M1O@92gvh6oeOgGdPxPUtGz=$l}@H)1t@7a`A58 zGfrR(Fd7NMbvjHK)rd22KCD{xe&_FrEjmgH3a$&Ld^-L@{K>SLb0=i^MRGh5*kLR5 zWYx^QlP0@!u`J=J0cM}tZC5|}FU<-TW8!3)mG)!R`LnjyXU?_#w0HMe)f6E{MowUU z@VB?YjDps>Z)#7Fnt)PH;%DklD9q>({4S_p?aWu3EM4!Mo?en>rf~ga~Ua zt=X}0 zKM&kZXRa=gVhVO$Ao6?blxKI(o|V?#-Q8R7SoXiL?%$V(GiQFwUV3BFZrkiIIrGow zLTZ&yIV31Cr5-<1Z?1jcthcuC`@81Vw{O4x{(asb;oOMKS+#4p9svt(22WQ%mvv4F FO#mina+v@C literal 0 HcmV?d00001 diff --git a/app/src/module_labour_union/res/drawable-xhdpi/ic_hall_member_more.png b/app/src/module_labour_union/res/drawable-xhdpi/ic_hall_member_more.png index ad8ad0393fff69c82f2e2b3f07c35b5435ea10d7..5e2df9b539db76c5919acfa1ace91666ed70a668 100644 GIT binary patch literal 807 zcmV+?1K9kDP)Px%;Ymb6RA@u(Sifr&K@@(oyJSTR6Uf~r(SU(;3ThEJX6_(cSP1?HRu+LsDlwpq z7zDiAW(e%_kL+{)kO=tS4kivH4oG$&nL?5clukeR4&?KzClIwf0Q5Dt3s-72f5f&2 zD$=ct2q1J|Zf-}8Jsm+PMm#updAA8j-mrw}zGBA-8Lh{g(IJ)cE5$^p{DCWda!RI#C8$0 zM5%SQBLX;IK4h9lZUR7N7X({|5&}iU+6_tvKS~Ptn$>k&c`Ys=paDX z9RTbNS!i9;^r=iH^(KgSoHB2t{0p66fLj_bRwTYqQU zLu+B`g%S`3s8x*PlqUdi8US{_*13pqUG#7zsvWxk5dqopM1X7uW%CmUWIHIEpEw}f lLD~Go0oe}9=I?t4egkaLNkI3Djcxz{002ovPDHLkV1m7LQ=9+* literal 402 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 diff --git a/app/src/module_labour_union/res/drawable-xxhdpi/bg_clan_super_admin.png b/app/src/module_labour_union/res/drawable-xxhdpi/bg_clan_super_admin.png new file mode 100644 index 0000000000000000000000000000000000000000..3963772c5c0063ec043d1e1ae3569263e2141411 GIT binary patch literal 15985 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

p1^SM)cVA4&=%7M)>O7d#(=EM2e@^dMm zxN!A(bc|8g^~A;ZX}}%65_`5(A$f2N`kxZ#JPY_sr?2aTIxXC~h3m={(^xQp3-Ah> zv{>FnK#LL|1!%7w4xBka1+CcnmwwAwz0Lb;i9?QvM@WiOc`D3g-qZ>G-Qu2$Pf&GU z5yv3L#v;aokL@V0R@1xHAP^Ztdr4Tg-R=q$@oMI3A}P{&x>x6P*mYfLIJ%S^r>6|) z+0%$!JA}2um2PwTnXyPaD#Dd*;Ruvr#__{DD7Mpsd#%{?d!_RlSxDS(OR?$K3XHk5 zGq$g21Rrszo&nTK#J`_) z419$2=}l>FS-uTwCb%*QJc0N4>jTj--iU3RYVh!l!h7X#&$3L|e6z#Ra|D53h0rP)zl z;W0);#hD@7T)^#?8jYD>s+;;lKof_xOK0@L z$z$U^nB*SC<&A^CytfB$XKITwa4cwZI4i?A)3#L*)mGb4UMjK}8ZMUj&PL46>V?kT z%vkZ+A-uStNV#X>n*-4?!GvuatMTylx$Y&Nv_&*!Zf~4E$q}UE|Cjpt^%DGV<|g+N zPabJOj@cX%SNz`rIRBsIx-wYvH1=#!AWx_Y?*O>4IYjF35g7y}r9hRB%m#6-0Mo2< z3F4qtYXzSAma!tw`;&!*LJTFgL9?gox8`UwlzD#5^Dy{pp0odqHDmZtO`p&|B0vj* zUwqN#{ON}Zy!`AwufaD7osG!I>W$9bHQ>%KR2J33w~ulH_mS(icpRium0-%;J~;jS zE{Y5ItN#`|`QZvK*QJ#MIPdm83fVuuUW}LT*yN!X>lUZ((>z zU^@-~S)$0gmdo$HHT(Lxx@F%uF&t+N(@t?Mq}$)ySA1QL=bzZ)JoP&r5G94nEqoim}PflcxPZ_p{u; zYOwNKHJVGG6e$4QwTBt^KG6@6(FVN!WC^}}W3MvbWACZJ^&G++_V&V^_GES)m5pSBvrTjKAE|a5N8~Pv9CQ)YsTyt!pHs)eo=;tH>wW zTb0<`U=NmgI!##2CmX<`Ds<2?dc6^P(^-VG2dO*ZR~vz4-}zqAC-qeie8SAOZ69Oa z`*s|v(3b)7k%Xw7rW=$Ga%LyEw#n4qM%;B%M}&uw5*?PakUjFtp7#+uQc2McK3F4T`41vxx+Ud|wDLikeN}+==mDx<_|vbeu>8%6hBi`}5fdfh znycb)>~RsOu9orKvidXtH6Dw7_SK6I>6lsfDXr@ zDk%76tg%@QljzJ$4)4%Oev~A-u{G*~2~XFIF@&K#RU7XMD;Qt8;*J}>iw1zc355GE zmJ~CaP#JE1+Je$beP)3phSpJ*)4y^?!fQ5Wcmyt+6b-Y9uzjZ$k3M+_rH6z$tzkJM zvypMp#hox_Oso>iTClwyPcPYn;+?KQ8fVRfM#>poH>W2~9iyH&^Ve75@jJJow$hGA zKN^aTolV%jp$d;&qi*XCXNP0wxcb2qoPJSPMaRuJb(NQzx9*E*>7Fslb5<=c!pqaw z`_T#nE<3J)aBx>`Q0pViKU+9wgE2_NiY}`ukGxY+-OgWZn*vB8mnZ0@mM%DsaM{Uf zF_1rZ0gJz4pD_u_R;H_YHU1dFlrs&ATlkOdG9G{5g6di=6w$4GkiG)A&VcU-5!3-P zp@W3GZs~{~U5$z>__>$MuVyfM47lvdIGl7!v_fL;rdmAx_--8BC(Ll( z=xJEa=-#JN(Px0FjfohBuU_AakDf2aBX1w=1n#`6g>-CKcIlc2Q*heF-B5YZisxsj zRsv5`os!V6z3=q5j&}lg`K|u7qthSGf&nr895;9RG$>ONP|d(COUuTKz7arc<(!Qi zK)7Kf6q~KE)y{a$BdSaPI{K|v`?rY4y>GG+J>p1lG(7c*1*pSAu!C^`?*XlL3c>2XsSn7ouqA!WxaL(vR2{Z5Nj(#cO3T}Q|Rf#9&3DZ==()6nJ z!@Z8d;~xxx2u~D;E)iEyU17t^^9pe39lccGuCKzptJG~>wKKb7Y_EPeRROLz?bkR` zz#AM9TtA48Q&k`#aRUXeunH9XR))R8%#nCr0)pVugHM7ek7q&Bv5NnV;5HXsyWRJ5!n@K0*u7U9}%f1ED`@Y&48hOBqgYJ z^=2EM`cO-?(E!u1_Luh(N#Q2OCFezB+*wfyCbkz?F!$ko4Yy`D3F=-MCLzIy^!pOg zt%q4j4S(;|{rLRtgRt531vEU0X)t5(@iDmLvHr?)KVQBF!zUyt>Ekt3>d9SL8WiAO zvECIIp$quA@`3(1^&%~**=LWhWDQbW}4JKHC7iwwfVgYlS&X1j&fvAVPf* z!874TKuA|n3`B%EMuh`mCe^B-A9WVS;&um}2JhHSQJ$ zU0_OsTCcKT;tUY6v@gC~inV{#DqF7r_KCwHkq~b{R3xEeM*|E7phK(y z5s?z2A|)ky%U~dw&8l%-9MT+P-);+@d|(%LZLM|hu;Z+pBV+cHX-GXL8oPJYV&N^h zs5oH3>61F+;@f*7JW@>o5=A|>{8EO(O;yg#1ia*7n1 zE*jEV}|M7!;cy0bpC9^^75T~5i8RMrWAwDq- zMvrPTLKm()WKj|mEB1;EQI%$qtst@%RA-1HdYw)a{l|<>Fe^2^#QontQ=n8+Y;3gQ z!Y z!ZgN8?w0_o_5i(on*q*=Z2{khFlxwy;$X?=a{alp*F|(QIWXv zqQ>(;>*{3DvrWlf5VZ|N%8jV!wJom>b+vZIIUoXP1ZWQKwV+^YE&8NH;JTTKO6-BC zK=bP2VyyW1pz~1WaAb@)zcVhIk*t90^#wce!#jI*4h|rxe*}&l6_2CO=!E#haEQpQ zKuRJt^^GjGcD$9o2|q7yJle|%T%!a_ogH?q#zRx{`}(~p!T=E!CPvF7F6Xl>U$v}a z;%fb~8UR;x*IC;MBP8(W%~cshiBKUK6$zn*$%>k|N&t>q8n}B3w#yXOa4YQEk&rnx z62hFdA>W2&Z&u@=VtduMLvl2jb4lRHFv8qB<6#xmR2V3)u%oI{O(p;A({kl!B6d`1 zpkrs)ZL;FE62A7T3bj72o0ULY5JJ5fb3r^V{C78$9 z;!Mil{*3BUEB-s}Pi*{pzh4qpY$0DS+K$z)75Ov0&ujkk!m$u3>MaCrjbxL?Csh5i z!m}HX?~3G$ZP!YW7PTbEyun*Fu)VsB?G4O89-b+o8;?H0gqj-0_rKLO^uN0WU~7el z-6Xfpu&>K#@KwjaGvK>H%>o(_=C>?$B&)#Z zQ@F~`JoV}F32%72#3yh?4+ujYZUbR9z%8q};0R0fkx9@1B%a=*1|}-alAr^oVp(Va zNWC*cFYUcJDct7LS0UF$VR^>y`pk6D90Z;V$KepsXI^;n#Ai#>h90#RA*&7F%-~9i zk!5X84+!yIqV%ZEg!7pBr4|L@=sVhYD(E%Vh0Lib*`UK>e! zlz8&lNLriIchl;o>GU3P*1R~`whvmRN#ADJF>Pt(c})g4_^07B)A+^KyU?dPfF5wybRIpPr3M0@884T`at7X1nb~ z7!30W80O18ELMYK%XSB!L(lYgYj&@h;8G9tZe3SedV{w0z8Xn4lCG`~@^Qu+=#wH9 z0P3nTI@>e3EFo^{ine3u)90PhUk+VfORH~?0`J+hIzTwI^~)7EF7s+Tc&^!CShM8N zIKQjp`6qEbIH0(P2{(ZGCK23EfM&1J=ZAUe=nIF>K4#Pruos}ED6d+&6qf{Ap1fsc^Uqtv zDH6$}iKG+2d?GPYz-(@)*EzOASG;ShZq3dt1`kVuU!4>kUN;X_!4Ve`K+Obqb;UFI z$5A22du@k*8fckeA>yqB`qj?7hS~h}(-mWUg + + + + \ No newline at end of file diff --git a/app/src/module_labour_union/res/layout/activity_module_clan.xml b/app/src/module_labour_union/res/layout/activity_module_clan.xml index c040a0195..ae2c568ef 100644 --- a/app/src/module_labour_union/res/layout/activity_module_clan.xml +++ b/app/src/module_labour_union/res/layout/activity_module_clan.xml @@ -209,6 +209,14 @@ android:textColor="@color/text_normal_c6c6e9" android:textSize="15dp" /> + + diff --git a/app/src/module_labour_union/res/layout/activity_module_hall.xml b/app/src/module_labour_union/res/layout/activity_module_hall.xml index 739e15bab..5d15d632f 100644 --- a/app/src/module_labour_union/res/layout/activity_module_hall.xml +++ b/app/src/module_labour_union/res/layout/activity_module_hall.xml @@ -104,8 +104,7 @@ android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/cl_hall" tools:itemCount="1" - tools:listitem="@layout/item_tab_small" - tools:visibility="visible" /> + tools:listitem="@layout/item_tab_small" /> + android:src="@drawable/ic_hall_member_search" + android:visibility="gone" /> - @@ -219,14 +221,14 @@ android:visibility="gone" /> diff --git a/app/src/module_labour_union/res/layout/activity_super_admin_add.xml b/app/src/module_labour_union/res/layout/activity_super_admin_add.xml index e03e81d0a..99c9d2e29 100644 --- a/app/src/module_labour_union/res/layout/activity_super_admin_add.xml +++ b/app/src/module_labour_union/res/layout/activity_super_admin_add.xml @@ -46,7 +46,7 @@ android:layout_weight="1" android:background="@null" android:hint="请输入公会成员音游号" - android:inputType="text" + android:inputType="number" android:maxLength="20" android:maxLines="1" android:text="" diff --git a/app/src/module_labour_union/res/layout/activity_super_admin_manege.xml b/app/src/module_labour_union/res/layout/activity_super_admin_manege.xml index eb0a475b8..b965dfede 100644 --- a/app/src/module_labour_union/res/layout/activity_super_admin_manege.xml +++ b/app/src/module_labour_union/res/layout/activity_super_admin_manege.xml @@ -16,9 +16,17 @@ android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="0dp" + android:clipToPadding="false" + android:paddingBottom="65dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/title_bar" /> + + + + + app:layout_constraintTop_toBottomOf="@id/iv_avatar" /> diff --git a/app/src/module_labour_union/res/layout/item_search_admin.xml b/app/src/module_labour_union/res/layout/item_search_admin.xml index 83126b656..e35e7df68 100644 --- a/app/src/module_labour_union/res/layout/item_search_admin.xml +++ b/app/src/module_labour_union/res/layout/item_search_admin.xml @@ -52,14 +52,16 @@ diff --git a/app/src/module_labour_union/res/layout/popup_admin_more.xml b/app/src/module_labour_union/res/layout/popup_admin_more.xml new file mode 100644 index 000000000..cf45ee51d --- /dev/null +++ b/app/src/module_labour_union/res/layout/popup_admin_more.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/HallModel.java b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/HallModel.java index fa6b3b028..e8b50a994 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/HallModel.java +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/HallModel.java @@ -301,13 +301,30 @@ public class HallModel extends BaseModel implements IHallModel { .compose(RxHelper.handleCommon()); } - @Override public Single setSuperAdmin(String roomUids ,long uid) { return api.setSuperAdmin(roomUids,uid) .compose(RxHelper.handleStringData()); } + @Override + public Single> getRoomSuperAdminList(long roomUid) { + return api.getRoomSuperAdminList(roomUid) + .compose(RxHelper.handleCommon()); + } + + @Override + public Single> getClanSuperAdminList(long clanId) { + return api.getClanSuperAdminList(clanId) + .compose(RxHelper.handleCommon()); + } + + @Override + public Single removeSuperAdmin(long uid) { + return api.removeSuperAdmin(uid) + .compose(RxHelper.handleStringData()); + } + private interface Api { /** @@ -477,6 +494,12 @@ public class HallModel extends BaseModel implements IHallModel { @GET("/hall/superManager/search") Single> searchSuperAdminInfo(@Query("erbanNo") long erbanNo); + /** + * 移除超管 + */ + @GET("/hall/superManager/remove") + Single> removeSuperAdmin(@Query("targetUid") long targetUid); + /** * 设置超管信息 * @param roomUids 设置的房间uid,都会隔开 @@ -486,5 +509,17 @@ public class HallModel extends BaseModel implements IHallModel { @POST("/hall/superManager/setSuperManage") Single> setSuperAdmin(@Field("roomUids") String roomUids,@Field("uid") long uid); + /** + * 获取房间超管信息 + */ + @GET("/hall/superManager/listSuperManageInClan") + Single>> getClanSuperAdminList(@Query("clanId") long clanId); + + /** + * 获取公会超管信息 + */ + @GET("/hall/superManager/listSuperManageInRoom") + Single>> getRoomSuperAdminList(@Query("roomUid") long roomUid); + } } \ No newline at end of file diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/IHallModel.java b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/IHallModel.java index 1b8e07bd2..e96214abb 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/IHallModel.java +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/IHallModel.java @@ -81,4 +81,10 @@ public interface IHallModel { Single searchSuperAdminInfo(long erbanNo); Single setSuperAdmin(String roomUids ,long uid); + + Single> getRoomSuperAdminList(long roomUid); + + Single> getClanSuperAdminList(long clanId); + + Single removeSuperAdmin(long uid); } diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/ClanAndHallInfo.java b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/ClanAndHallInfo.java index ed08b6fb7..c39c10edb 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/ClanAndHallInfo.java +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/ClanAndHallInfo.java @@ -6,4 +6,5 @@ import lombok.Data; public class ClanAndHallInfo { private ClanInfo clan; private HallInfo hall; + private boolean manageHall; } diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/RoleType.java b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/RoleType.java index 9e6cd0927..f4e82066c 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/RoleType.java +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/RoleType.java @@ -6,14 +6,29 @@ package com.yizhuan.xchat_android_core.module_hall.hall.bean; */ public interface RoleType { - /**厅主*/ + /** + * 厅主 + */ int OWNER = 1; - /**高管*/ + /** + * 高管 + */ int ADMIN = 2; - /**普通成员*/ + /** + * 普通成员 + */ int NORMAL = 3; - /**族长*/ + /** + * 族长 + */ int CLAN_OWNER = 4; - /**族长,会长*/ + /** + * 族长,会长 + */ int CLAN_HALL_OWNER = 5; + /** + * 超管 + */ + int CLAN_SUPER_ADMIN = 6; + } diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/SuperAdminInfo.kt b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/SuperAdminInfo.kt index 40275ac8c..43883a24f 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/SuperAdminInfo.kt +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/SuperAdminInfo.kt @@ -6,5 +6,6 @@ data class SuperAdminInfo( val gender: Int = 0, var hasSet: Boolean = false, val nick: String? = null, - val uid: Long = 0 + val uid: Long = 0, + val roomList: List? = null ) \ No newline at end of file diff --git a/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ScreenUtil.java b/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ScreenUtil.java index 197cf2abb..6f9c6668d 100644 --- a/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ScreenUtil.java +++ b/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ScreenUtil.java @@ -34,18 +34,22 @@ public class ScreenUtil { } public static int dip2px(float dipValue) { + init(NimUIKit.getContext()); return (int) (dipValue * density + 0.5f); } public static int px2dip(float pxValue) { + init(NimUIKit.getContext()); return (int) (pxValue / density + 0.5f); } public static int sp2px(float spValue) { + init(NimUIKit.getContext()); return (int) (spValue * scaleDensity + 0.5f); } public static int getDialogWidth() { + init(NimUIKit.getContext()); dialogWidth = (int) (screenMin * RATIO); return dialogWidth; } @@ -68,6 +72,7 @@ public class ScreenUtil { } public static int getDisplayWidth() { + init(NimUIKit.getContext()); if (screenWidth == 0) { GetInfo(NimUIKit.getContext()); } @@ -75,6 +80,7 @@ public class ScreenUtil { } public static int getDisplayHeight() { + init(NimUIKit.getContext()); if (screenHeight == 0) { GetInfo(NimUIKit.getContext()); } @@ -88,8 +94,8 @@ public class ScreenUtil { DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics(); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; - screenMin = (screenWidth > screenHeight) ? screenHeight : screenWidth; - screenMax = (screenWidth < screenHeight) ? screenHeight : screenWidth; + screenMin = Math.min(screenWidth, screenHeight); + screenMax = Math.max(screenWidth, screenHeight); density = dm.density; scaleDensity = dm.scaledDensity; xdpi = dm.xdpi;