diff --git a/app/src/main/java/com/chwl/app/home/fragment/MeFragment.kt b/app/src/main/java/com/chwl/app/home/fragment/MeFragment.kt index b24e970d8..57f3edffa 100644 --- a/app/src/main/java/com/chwl/app/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/chwl/app/home/fragment/MeFragment.kt @@ -24,13 +24,16 @@ import com.chwl.app.home.MeViewModel import com.chwl.app.home.activity.AssociationActivity import com.chwl.app.home.adapter.MeCenterAdapter import com.chwl.app.home.helper.OpenRoomHelper +import com.chwl.app.module_hall.HallDataManager import com.chwl.app.module_hall.hall.activity.ModuleClanActivity import com.chwl.app.module_hall.hall.activity.ModuleHallActivity +import com.chwl.app.support.FragmentVisibleStateHelper import com.chwl.app.ui.im.RouterHandler import com.chwl.app.ui.pay.ChargeActivity import com.chwl.app.ui.relation.AttentionListActivity import com.chwl.app.ui.relation.FansListActivity import com.chwl.app.ui.utils.ImageLoadUtils +import com.chwl.app.ui.webview.CommonWebViewActivity import com.chwl.app.view.GenderAgeTextView import com.chwl.app.vip.VipMainActivity import com.chwl.app.vip.VipViewModel @@ -40,8 +43,9 @@ import com.chwl.core.initial.InitialModel import com.chwl.core.level.UserLevelVo import com.chwl.core.manager.IMNetEaseManager import com.chwl.core.manager.RelationShipEvent -import com.chwl.core.module_hall.hall.HallModel import com.chwl.core.module_hall.hall.bean.ClanAndHallInfo +import com.chwl.core.module_hall.hall.bean.H5FamilyInfo +import com.chwl.core.module_hall.hall.bean.UserClanInfo import com.chwl.core.pay.PayModel import com.chwl.core.pay.event.GetWalletInfoEvent import com.chwl.core.pay.event.UpdateWalletInfoEvent @@ -130,6 +134,11 @@ class MeFragment : BaseFragment(), View.OnClickListener { vipViewModel.myVipInfoLiveData.observe(viewLifecycleOwner) { loadVipInfo(it) } + + FragmentVisibleStateHelper(this) { + onVisibleChanged(it) + } + } private fun setCenterData(list: List?) { @@ -253,17 +262,28 @@ class MeFragment : BaseFragment(), View.OnClickListener { private fun setWalletInfo() { } - @SuppressLint("CheckResult") @Subscribe(threadMode = ThreadMode.MAIN) fun onLoginUserInfoUpdateEvent(event: LoginUserInfoUpdateEvent?) { setUserData() vipViewModel.getVipPageInfo() meViewModel.refreshData() - HallModel.get().getUserHallAndClan(AuthModel.get().currentUid) - .subscribe { clanAndHallInfo: ClanAndHallInfo? -> - this.updateHallInfo( - clanAndHallInfo - ) + } + + @SuppressLint("CheckResult") + private fun reloadClanInfo(){ + HallDataManager.get().requestUserClanInfo(AuthModel.get().currentUid).compose(bindToLifecycle()) + .subscribe { info: UserClanInfo? -> + val clanHallInfo = info?.asClanHall() + if (clanHallInfo != null) { + this.updateHallInfo(clanHallInfo) + } else { + val familyInfo = info?.asFamily() + if (familyInfo != null) { + this.updateHallInfo(familyInfo) + } else { + this.updateHallInfo(null) + } + } } } @@ -291,6 +311,20 @@ class MeFragment : BaseFragment(), View.OnClickListener { } } + private fun updateHallInfo(familyInfo: H5FamilyInfo) { + if (familyInfo.familyId != null && familyInfo.familyId != 0L) { + mBinding.ivGuild.setImageResource(R.drawable.me_bg_my_guild) + mBinding.ivGuild.singleClick { + CommonWebViewActivity.start(context, familyInfo.getFullMyFamilyUrl()) + } + } else { + mBinding.ivGuild.setImageResource(R.drawable.me_bg_guild) + mBinding.ivGuild.singleClick { + CommonWebViewActivity.start(context, familyInfo.getFullFamilyListUrl()) + } + } + } + @Subscribe(threadMode = ThreadMode.MAIN) fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) { setWalletInfo() @@ -365,4 +399,10 @@ class MeFragment : BaseFragment(), View.OnClickListener { private fun loadVipInfo(data: VipInfo?) { } + + private fun onVisibleChanged(isVisible: Boolean) { + if (isVisible) { + reloadClanInfo() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java b/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java index d4eba66a1..45342bdc7 100644 --- a/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java +++ b/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java @@ -6,6 +6,8 @@ import android.content.Context; import com.chwl.app.decoration.view.DecorationStoreActivity; import com.chwl.app.earn.activity.EarnRecordActivity; import com.chwl.app.pay.activity.GiveGoldActivity; +import com.chwl.core.module_hall.hall.bean.H5FamilyInfo; +import com.chwl.core.module_hall.hall.bean.UserClanInfo; import com.trello.rxlifecycle3.components.support.RxAppCompatActivity; import com.chwl.app.R; import com.chwl.app.UIHelper; @@ -237,12 +239,25 @@ public class RouterHandler { break; case RouterType.MODULE_CLAN: //公会或房间主页 - if (HallDataManager.get().isHasClan()) { - ModuleClanActivity.start(context); - } else if (HallDataManager.get().hasLiveHall()) { - ModuleHallActivity.start(context); + UserClanInfo info = HallDataManager.get().getUserClanInfo(); + H5FamilyInfo familyInfo = null; + if (info != null) { + familyInfo = info.asFamily(); + } + if (familyInfo != null) { + if (familyInfo.getFamilyId() != null && familyInfo.getFamilyId() > 0) { + CommonWebViewActivity.start(context, familyInfo.getFullMyFamilyUrl()); + } else { + CommonWebViewActivity.start(context, familyInfo.getFullFamilyListUrl()); + } } else { - SingleToastUtil.showToast(ResUtil.getString(R.string.ui_im_routerhandler_06)); + if (HallDataManager.get().isHasClan()) { + ModuleClanActivity.start(context); + } else if (HallDataManager.get().hasLiveHall()) { + ModuleHallActivity.start(context); + } else { + SingleToastUtil.showToast(ResUtil.getString(R.string.ui_im_routerhandler_06)); + } } break; // case RouterType.PATRIARCH_MODE: diff --git a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt index 569e07f09..4c7b48832 100644 --- a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt @@ -13,7 +13,6 @@ import com.chwl.app.base.BaseViewBindingActivity import com.chwl.app.common.widget.dialog.DialogManager.OkCancelDialogListener import com.chwl.app.databinding.ActivitySettingBinding import com.chwl.app.notify.RoomNotifyManager -import com.chwl.app.public_chat.ui.message.PublicChatRoomMessageActivity import com.chwl.app.ui.im.avtivity.BlackListManageActivity import com.chwl.app.ui.language.LanguageActivity import com.chwl.app.ui.login.BindPhoneActivity @@ -223,7 +222,7 @@ class SettingActivity : BaseViewBindingActivity(), View. private fun debug() { // CommonWebViewActivity.start(this,"https://api.molistar.xyz/molistar/activity/2024-invitationFission/index.html") - PublicChatRoomMessageActivity.start(this) +// PublicChatRoomMessageActivity.start(this) // MyDecorationActivity.start(this,0) } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/ui/user/fragment/UserInfoInfoFragment.kt b/app/src/main/java/com/chwl/app/ui/user/fragment/UserInfoInfoFragment.kt index 54d1e6d52..b68052979 100644 --- a/app/src/main/java/com/chwl/app/ui/user/fragment/UserInfoInfoFragment.kt +++ b/app/src/main/java/com/chwl/app/ui/user/fragment/UserInfoInfoFragment.kt @@ -9,9 +9,13 @@ import com.chwl.app.databinding.FragmentUserinfoUserinfoBinding import com.chwl.app.module_hall.hall.activity.ModuleClanActivity import com.chwl.app.module_hall.hall.activity.ModuleHallActivity import com.chwl.app.ui.user.viewmodel.UserInfoViewModel +import com.chwl.app.ui.webview.CommonWebViewActivity +import com.chwl.core.UriProvider import com.chwl.core.auth.AuthModel +import com.chwl.core.family.bean.FamilyInfo import com.chwl.core.module_hall.hall.bean.ClanAndHallInfo import com.chwl.core.module_hall.hall.bean.ClanInfo +import com.chwl.core.module_hall.hall.bean.H5FamilyInfo import com.chwl.core.module_hall.hall.bean.HallInfo import com.chwl.core.user.UserInfoUiMgr import com.chwl.core.user.bean.UserDetailInfo @@ -25,8 +29,16 @@ class UserInfoInfoFragment : BaseViewBindingFragment 0L) { + binding.llAssociation.visibility = View.VISIBLE + } else { + binding.llAssociation.visibility = View.GONE + } + } + } + + binding.tvJoinRoom.visibility = View.GONE + if ((familyInfo.familyId ?: 0) > 0L) { + binding.tvAssociation.text = familyInfo.familyName + } else { + binding.llAssociation.visibility = View.GONE + } + binding.tvAssociation.setOnClickListener { + CommonWebViewActivity.start(context, familyInfo.getFullMyFamilyUrl()) + } + + } // /** // * 动态列表 // * diff --git a/app/src/main/java/com/chwl/app/ui/user/viewmodel/UserInfoViewModel.kt b/app/src/main/java/com/chwl/app/ui/user/viewmodel/UserInfoViewModel.kt index d0367cd00..dc1c1f519 100644 --- a/app/src/main/java/com/chwl/app/ui/user/viewmodel/UserInfoViewModel.kt +++ b/app/src/main/java/com/chwl/app/ui/user/viewmodel/UserInfoViewModel.kt @@ -4,8 +4,10 @@ import android.annotation.SuppressLint import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import com.chwl.app.module_hall.HallDataManager import com.chwl.core.module_hall.hall.HallModel import com.chwl.core.module_hall.hall.bean.ClanAndHallInfo +import com.chwl.core.module_hall.hall.bean.UserClanInfo import com.chwl.core.user.UserInfoUiMgr import com.chwl.core.user.UserModel import com.chwl.core.user.bean.UserDetailInfo @@ -28,8 +30,7 @@ class UserInfoViewModel : ViewModel() { private val _userInfoDetailData = MutableLiveData() val userInfoDetailData: LiveData = _userInfoDetailData - private val _hallData = MutableLiveData() - val hallData: LiveData = _hallData + val userClanData = MutableLiveData() private val disposable: CompositeDisposable by lazy { CompositeDisposable() @@ -65,10 +66,10 @@ class UserInfoViewModel : ViewModel() { @SuppressLint("CheckResult") fun getUserHallAndClan() { - val subscribe = HallModel.get().getUserHallAndClan(userId) + val subscribe = HallDataManager.get().requestUserClanInfo(userId) .toFlowable() .subscribe( - { data -> data?.let { _hallData.value = data } }, + { data -> data?.let { userClanData.value = data } }, { th -> th.printStackTrace() th.message?.toast() diff --git a/app/src/module_labour_union/java/com/chwl/app/module_hall/HallDataManager.java b/app/src/module_labour_union/java/com/chwl/app/module_hall/HallDataManager.java index 97175ff3c..44db656cb 100644 --- a/app/src/module_labour_union/java/com/chwl/app/module_hall/HallDataManager.java +++ b/app/src/module_labour_union/java/com/chwl/app/module_hall/HallDataManager.java @@ -8,6 +8,8 @@ import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer; +import com.chwl.core.im.custom.bean.User; +import com.chwl.core.module_hall.hall.bean.UserClanInfo; import com.netease.nim.uikit.api.NimUIKit; import com.chwl.app.module_hall.im.msgholder.HallMsgViewHolder; import com.chwl.core.auth.AuthModel; @@ -28,12 +30,18 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import io.reactivex.Single; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; + /** * Created by lvzebiao on 2019/1/7. */ public class HallDataManager { + private UserClanInfo userClanInfo; + private HallInfo hallInfo; /** * 模厅名字 @@ -146,10 +154,26 @@ public class HallDataManager { liveHallExist.observe(owner, observer); } + public Single requestUserClanInfo(long uid){ + return HallModel.get().getUserClanInfo(uid).map( + info -> { + if (uid == AuthModel.get().getCurrentUid()) { + userClanInfo = info; + ClanAndHallInfo clanAndHallInfo = info.asClanHall(); + if (clanAndHallInfo != null) { + updateHallInfo(userClanInfo.getClan()); + } else { + updateHallInfo(new ClanAndHallInfo()); + } + } + return info; + } + ); + } + @SuppressLint("CheckResult") public void updateHallInfo() { - HallModel.get().getUserHallAndClan(AuthModel.get().getCurrentUid()) - .subscribe(this::updateHallInfo); + requestUserClanInfo(AuthModel.get().getCurrentUid()).subscribe(info -> {}); } public void updateHallInfo(ClanAndHallInfo clanAndHallInfo) { @@ -228,6 +252,10 @@ public class HallDataManager { return hallInfo == null ? 0 : hallInfo.getOwnerUid(); } + public UserClanInfo getUserClanInfo() { + return userClanInfo; + } + public String getOwnerNick() { return hallInfo == null ? "" : hallInfo.getOwnerNick(); } diff --git a/core/src/main/java/com/chwl/core/UriProvider.java b/core/src/main/java/com/chwl/core/UriProvider.java index 276cdbeba..5061578c9 100644 --- a/core/src/main/java/com/chwl/core/UriProvider.java +++ b/core/src/main/java/com/chwl/core/UriProvider.java @@ -302,4 +302,15 @@ public class UriProvider { public static String getLuckyGiftRule(int giftID) { return JAVA_WEB_URL.concat("/molistar/modules/rule/luckyGiftRule.html?giftID=" + giftID); } + + public static String toFullUrl(String shortUrl) { + if (shortUrl == null) { + return null; + } + if (shortUrl.startsWith("http")) { + return shortUrl; + } else { + return JAVA_WEB_URL.concat(shortUrl); + } + } } diff --git a/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/HallModel.java b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/HallModel.java index d1ca84f8a..11dca8a82 100644 --- a/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/HallModel.java +++ b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/HallModel.java @@ -18,6 +18,7 @@ import com.chwl.core.module_hall.hall.bean.OptionInfo; import com.chwl.core.module_hall.hall.bean.OwnerHallInfo; import com.chwl.core.module_hall.hall.bean.SuperAdminHall; import com.chwl.core.module_hall.hall.bean.SuperAdminInfo; +import com.chwl.core.module_hall.hall.bean.UserClanInfo; import com.chwl.core.module_hall.hall.event.UserHallUpdateEvent; import com.chwl.core.user.UserModel; import com.chwl.core.user.bean.UserInfo; @@ -313,6 +314,11 @@ public class HallModel extends BaseModel implements IHallModel { .compose(RxHelper.handleCommon()); } + public Single getUserClanInfo(long uid) { + return api.getUserClanInfo(uid) + .compose(RxHelper.handleCommon()); + } + @Override public Single> getSuperAdminHallList(long clanId, long uid) { return api.getSuperAdminHallList(clanId, uid) @@ -514,18 +520,18 @@ public class HallModel extends BaseModel implements IHallModel { @Query("page") int page, @Query("pageSize") int pageSize); - /** - * 获取用户家族信息 - */ - @GET("/clan/getUserClanInfo") - Single> getUserClanInfo(@Query("uid") long uid); - /** * 获取用户家族和公会信息 */ @GET("/clan/getUserHallAndClan") Single> getUserHallAndClan(@Query("uid") long uid); + /** + * 获取用户家族和公会信息 + */ + @GET("/user/getUserClanInfo") + Single> getUserClanInfo(@Query("uid") long uid); + /** * 获取设置超管可以管理的房间列表 */ diff --git a/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/H5FamilyInfo.kt b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/H5FamilyInfo.kt new file mode 100644 index 000000000..1c50875ba --- /dev/null +++ b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/H5FamilyInfo.kt @@ -0,0 +1,21 @@ +package com.chwl.core.module_hall.hall.bean + +import androidx.annotation.Keep +import com.chwl.core.UriProvider +import java.io.Serializable + +@Keep +class H5FamilyInfo : Serializable { + val familyId: Long? = null + val familyName: String? = null + val familyListUrl: String? = null + val myFamilyUrl: String? = null + + fun getFullFamilyListUrl(): String? { + return UriProvider.toFullUrl(familyListUrl) + } + + fun getFullMyFamilyUrl(): String? { + return UriProvider.toFullUrl(myFamilyUrl) + } +} \ No newline at end of file diff --git a/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/UserClanInfo.java b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/UserClanInfo.java new file mode 100644 index 000000000..7c927cc33 --- /dev/null +++ b/core/src/model_labour_union/java/com/chwl/core/module_hall/hall/bean/UserClanInfo.java @@ -0,0 +1,29 @@ +package com.chwl.core.module_hall.hall.bean; + +import androidx.annotation.Keep; + +import java.io.Serializable; + +import lombok.Data; + +@Keep +@Data +public class UserClanInfo implements Serializable { + private ClanAndHallInfo clan; + private H5FamilyInfo family; + private String clanMode; + + public ClanAndHallInfo asClanHall() { + if (clanMode != null && clanMode.equals("clan_hall")) { + return clan; + } + return null; + } + + public H5FamilyInfo asFamily() { + if (clanMode != null && clanMode.equals("family")) { + return family; + } + return null; + } +}