From e286d4dcd20278467452c53efc395d75543efb54 Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Wed, 9 Nov 2022 20:23:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=8E=A8=E9=80=81=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/AssociationFragment.kt | 24 ++++++++++ .../home/activity/AssociationActivity.kt | 1 + app/src/main/res/values/strings.xml | 1 + .../hall/activity/ModuleHallActivity.java | 16 +++++++ .../im/msgholder/ClanMsgViewHolder.java | 20 +++++++- .../res/layout/dialog_custom_time_picker.xml | 46 ++++++++++++++++++- .../layout/layout_clan_msg_view_holder.xml | 29 ++++++++++++ .../module_hall/hall/HallModel.java | 25 ++++++++++ .../module_hall/hall/IHallModel.java | 5 ++ .../module_hall/hall/bean/AuthInfo.java | 3 ++ 10 files changed, 166 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/association/fragment/AssociationFragment.kt b/app/src/main/java/com/yizhuan/erban/association/fragment/AssociationFragment.kt index 377b3e9be..c4f3c0f41 100644 --- a/app/src/main/java/com/yizhuan/erban/association/fragment/AssociationFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/association/fragment/AssociationFragment.kt @@ -15,7 +15,10 @@ import com.yizhuan.erban.databinding.FragmentAssociationBinding import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity import com.yizhuan.erban.ui.utils.RVDelegate import com.yizhuan.xchat_android_core.association.ClanListInfo +import com.yizhuan.xchat_android_core.module_hall.hall.HallModel import com.yizhuan.xchat_android_core.utils.Logger +import com.yizhuan.xchat_android_core.utils.net.BeanObserver +import com.yizhuan.xchat_android_core.utils.net.RxHelper import com.yizhuan.xchat_android_library.utils.ResUtil @@ -44,6 +47,27 @@ class AssociationFragment : BaseViewBindingFragment( ModuleClanActivity.start(context, info.clanElderUid) } } + associationAdapter.setOnItemChildClickListener { adapter, view, position -> + val bean = associationAdapter.getItem(position) + bean?.let { + dialogManager.showProgressDialog(context) + HallModel.get().applyJoinClan(it.clanId.toLong()) + .compose(RxHelper.bindFragment(this)) + .subscribe(object : BeanObserver() { + override fun onErrorMsg(error: String) { + dialogManager.dismissDialog() + toast(error) + } + + override fun onSuccess(s: String) { + dialogManager.dismissDialog() + it.applyBtnStatus = 2 + associationAdapter.notifyItemChanged(position) + toast(s) + } + }) + } + } rvDelegate = RVDelegate.Builder() .setLayoutManager(LinearLayoutManager(context)) .setRecyclerView(binding.recyclerView) diff --git a/app/src/main/java/com/yizhuan/erban/home/activity/AssociationActivity.kt b/app/src/main/java/com/yizhuan/erban/home/activity/AssociationActivity.kt index 39da39af3..de6e93863 100644 --- a/app/src/main/java/com/yizhuan/erban/home/activity/AssociationActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/home/activity/AssociationActivity.kt @@ -23,6 +23,7 @@ import com.yizhuan.xchat_android_library.utils.ResUtil class AssociationActivity : BaseViewBindingActivity() { companion object { + @JvmStatic fun start(context: Context) { val intent = Intent(context, AssociationActivity::class.java) context.startActivity(intent) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a38ef66fe..fc6e999ff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4949,5 +4949,6 @@ + 加入公會 \ No newline at end of file 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 2990e153c..209e87166 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 @@ -19,6 +19,7 @@ import com.yizhuan.erban.base.BaseMvpActivity; import com.yizhuan.erban.common.widget.dialog.DialogManager; import com.yizhuan.erban.databinding.ActivityModuleHallBinding; import com.yizhuan.erban.friend.action.AbstractSelectFriendAction; +import com.yizhuan.erban.home.activity.AssociationActivity; import com.yizhuan.erban.module_hall.HallDataManager; import com.yizhuan.erban.module_hall.hall.adapter.GroupMemberListAdapter; import com.yizhuan.erban.module_hall.hall.presenter.ModuleHallPresenter; @@ -28,6 +29,7 @@ import com.yizhuan.erban.ui.widget.ButtonItem; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.module_hall.hall.HallModel; import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo; +import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo; import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo; import com.yizhuan.xchat_android_core.module_hall.hall.bean.MemberInfo; import com.yizhuan.xchat_android_core.module_hall.hall.bean.RoleType; @@ -66,6 +68,7 @@ public class ModuleHallActivity extends BaseMvpActivity { HallInfo hallInfo = clanAndHallInfo.getHall(); + clanInfo = clanAndHallInfo.getClan(); setManegeOption((HallDataManager.get().isManager() && isSelfHall) || clanAndHallInfo.isManageHall()); //高管是没有修改公会名称权限的,只有房主和超管才有 setSettingOption((HallDataManager.get().getRoleType() == RoleType.OWNER && isSelfHall) || clanAndHallInfo.isManageHall()); @@ -372,6 +376,14 @@ public class ModuleHallActivity extends BaseMvpActivity authInfoList) { if (authInfoList != null && authInfoList.size() > 0) { List list_adapter = new ArrayList<>(); + if (hallInfo != null) { + if (hallInfo.getRoleType() == 1 && clanInfo != null && clanInfo.getElderUid() > 0) { + ButtonItem item = new ButtonItem(getString(R.string.join_clan), () -> { + jumpCode(AuthInfo.AUTH_MEMBER_JOIN_CLAN); + }); + list_adapter.add(item); + } + } for (AuthInfo authInfo : authInfoList) { if (authInfo.getCode().equals(AuthInfo.AUTH_APPLY_HALL_EXIT)) { continue; @@ -392,6 +404,10 @@ public class ModuleHallActivity extends BaseMvpActivity - + android:orientation="horizontal" + android:background="@color/timepicker_toolbar_bg" + android:paddingTop="@dimen/dp_20" + android:paddingStart="@dimen/dp_5" + android:paddingEnd="@dimen/dp_5" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + \ 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 9f9fa025d..ba2027285 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 @@ -110,6 +110,23 @@ public class HallModel extends BaseModel implements IHallModel { }); } + /** + * 申请加入公会 + */ + @Override + public Single applyJoinClan(long clanId) { + return api.applyClan(AuthModel.get().getCurrentUid(), clanId) + .compose(RxHelper.handleSchedulers()) + .compose(RxHelper.handleException()) + .flatMap(result -> { + if (result.isSuccess()) { + return Single.just(ResUtil.getString(R.string.module_hall_hall_hallmodel_02)); + } + return Single.error(new Throwable(RxHelper.getValidMessage(result))); + }); + } + + /** * 模厅审核 */ @@ -346,6 +363,14 @@ public class HallModel extends BaseModel implements IHallModel { Single> applyHall(@Field("uid") long uid, @Field("hallId") long hallId); + /** + * 申请加入公会 + */ + @FormUrlEncoded + @POST("/clan/apply") + Single> applyClan(@Field("uid") long uid, + @Field("clanId") long clanId); + /** * 模厅审核 * 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 fcb4dac9b..734e4df0f 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 @@ -30,6 +30,11 @@ public interface IHallModel { */ Single applyJoinHall(long hallId); + /** + * 申请加入公会 + */ + Single applyJoinClan(long clanId); + /** * 模厅审核 */ diff --git a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/AuthInfo.java b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/AuthInfo.java index 2bf8cb9d4..0d662971e 100644 --- a/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/AuthInfo.java +++ b/core/src/model_labour_union/java/com/yizhuan/xchat_android_core/module_hall/hall/bean/AuthInfo.java @@ -8,6 +8,8 @@ import lombok.Data; @Data public class AuthInfo implements Serializable { + /**加入公会*/ + public final static String AUTH_MEMBER_JOIN_CLAN = "member_join_clan"; /**添加成员,同意成员加入*/ public final static String AUTH_MEMBER_JOIN_MANAGER = "member_join_manager"; /**移除成员,同意成员退出*/ @@ -29,6 +31,7 @@ public class AuthInfo implements Serializable { /**表示能够处理的权限,为了兼容版本问题,过滤新版可能出现的新权限*/ public static List canHandleAuth() { List list = new ArrayList<>(); + list.add(AUTH_MEMBER_JOIN_CLAN); list.add(AUTH_MEMBER_JOIN_MANAGER); list.add(AUTH_MEMBER_EXIT_MANAGER); list.add(AUTH_HALL_MANAGER_SET);