1.个人主页增加家族展示

2.公会主页增加家族长和家族公会列表
This commit is contained in:
huangjian
2020-11-19 20:43:33 +08:00
parent bdbb8f05c2
commit 146ab9f0be
23 changed files with 1205 additions and 200 deletions

View File

@@ -998,6 +998,9 @@
<activity
android:name=".module_hall.hall.activity.IncomeStatisticsActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.ClanIncomeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.HallNameSettingActivity"
android:screenOrientation="portrait" />

View File

@@ -1,10 +1,11 @@
package com.yinyuan.doudou.pay.activity
package com.yizhuan.erban.pay.activity
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.yinyuan.doudou.pay.activity.GiveGoldSearchActivity
import com.yinyuan.doudou.pay.adapter.LatelyGiveAdapter
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseActivity

View File

@@ -1,4 +1,4 @@
package com.yinyuan.doudou.pay.activity
package com.yizhuan.erban.pay.activity
import android.annotation.SuppressLint
import android.content.Context
@@ -9,7 +9,6 @@ import android.text.TextWatcher
import com.jungly.gridpasswordview.GridPasswordView
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseActivity
import com.yizhuan.erban.pay.activity.GiveGoldSuccessActivity
import com.yizhuan.erban.pay.password.GiveGoldPassWordFragment
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.DemoCache

View File

@@ -18,6 +18,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.security.biometrics.service.build.V;
import com.jude.rollviewpager.hintview.TextHintView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
@@ -54,6 +55,7 @@ import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel;
import com.yizhuan.xchat_android_core.im.friend.IMFriendModel;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
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.praise.PraiseModel;
import com.yizhuan.xchat_android_core.praise.event.IsLikedEvent;
@@ -91,7 +93,7 @@ import java.util.Objects;
@ActLayoutRes(R.layout.activity_user_info)
public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBinding>
implements UserPhotoAdapter.ImageClickListener, ObservableScrollView.ScrollViewListener{
implements UserPhotoAdapter.ImageClickListener, ObservableScrollView.ScrollViewListener {
public static final int REQUEST_CODE_UPDATE_VOICE = 1;
@@ -148,6 +150,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
protected void onResume() {
super.onResume();
getUserInfoDetail();
initClanAndHall();
}
private void initAttentionView() {
@@ -191,10 +194,10 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
* 找到TA, 主态不展示
*/
private void setWhereVisible() {
mBinding.ivWhere.setVisibility(mRoomUid!=0 ? View.VISIBLE : View.GONE);
mBinding.ivWhere.setVisibility(mRoomUid != 0 ? View.VISIBLE : View.GONE);
}
private void getUserInfo(){
private void getUserInfo() {
UserModel.get().getUserInfoFromServer(userId)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<UserInfo>() {
@@ -212,8 +215,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
private void getUserInfoDetail(){
private void getUserInfoDetail() {
UserModel.get().getUserInfoDetail(userId)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<UserDetailInfo>() {
@@ -295,48 +297,74 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
mBinding.tvFansCount.setText(String.valueOf(userInfo.getFansNum()));
mBinding.tvErbanId.setText(getString(R.string.me_user_id, userInfo.getErbanNo()));
mBinding.ivGoodNumber.setVisibility(userInfo.isHasPrettyErbanNo()?View.VISIBLE:View.GONE);
mBinding.ivGoodNumber.setVisibility(userInfo.isHasPrettyErbanNo() ? View.VISIBLE : View.GONE);
//等级魅力值
setUserLevel(userInfo.getUserLevelVo());
//铭牌
setOfficialMask(userInfo.getNameplateWord(),userInfo.getNameplatePic());
setOfficialMask(userInfo.getNameplateWord(), userInfo.getNameplatePic());
if (AuthModel.get().getCurrentUid() != userInfo.getUid()) {
PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), userInfo.getUid()).subscribe();
}
//如果是主态没公会隐藏公会。客态公会一直显示如果hallId >0隐藏申请按钮
mBinding.llModuleHall.setVisibility(View.GONE);
if (userInfo.getHallId() > 0){
if (AuthModel.get().getCurrentUid() != userId && HallDataManager.get().getHallId() <= 0){
mBinding.tvApplyHall.setVisibility(View.VISIBLE);
}
HallModel.get().getHallInfo(userInfo.getUid(), userInfo.getHallId())
.compose(RxHelper.bindContext(context))
.subscribe(new BeanObserver<HallInfo>() {
@Override
public void onErrorMsg(String error) {
}
@Override
public void onSuccess(HallInfo hallInfo) {
mBinding.llModuleHall.setVisibility(View.VISIBLE);
mBinding.tvHallName.setText(hallInfo.getHallName());
mBinding.tvHallId.setText("公会ID"+hallInfo.getHallId());
mBinding.tvHallMemberNum.setText("公会人数:"+hallInfo.getMemberCount());
GlideApp.with(context)
.load(hallInfo.getOwnerAvatar())
.placeholder(R.drawable.default_avatar)
.into(mBinding.ivHallAvatar);
}
});
mBinding.tvApplyHall.setOnClickListener(v -> applyJoinHall(userInfo.getHallId()));
}
}
}
private void applyJoinHall(long hallId){
@SuppressLint({"CheckResult", "SetTextI18n"})
private void initClanAndHall() {
HallModel.get().getUserHallAndClan(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
.subscribe(clanAndHallInfo -> {
HallInfo hallInfo = clanAndHallInfo.getHall();
ClanInfo clanInfo = clanAndHallInfo.getClan();
boolean showApply = AuthModel.get().getCurrentUid() != userId && HallDataManager.get().getHallId() <= 0;
if (hallInfo != null && hallInfo.getHallId() > 0) {
mBinding.llModuleHall.setVisibility(View.VISIBLE);
mBinding.llHall.setVisibility(View.VISIBLE);
mBinding.tvHallId.setText("公会ID:" + hallInfo.getHallId() + "");
mBinding.tvHallName.setText(hallInfo.getHallName());
mBinding.tvHallMemberNum.setText("公会人数:" + hallInfo.getMemberCount());
GlideApp.with(this)
.load(hallInfo.getOwnerAvatar())
.placeholder(R.drawable.default_avatar)
.into(mBinding.ivHallAvatar);
if (clanInfo == null || clanInfo.getId() <= 0) {
//单独展示公会头要变大点
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) mBinding.ivHallAvatar.getLayoutParams();
layoutParams.width = ScreenUtil.dip2px(60);
layoutParams.height = ScreenUtil.dip2px(60);
mBinding.ivHallAvatar.setLayoutParams(layoutParams);
if (showApply) {
mBinding.tvApplyHall.setVisibility(View.VISIBLE);
mBinding.tvApplyHall.setOnClickListener(v -> applyJoinHall(hallInfo.getHallId()));
}
}
} else {
mBinding.llHall.setVisibility(View.GONE);
}
if (clanInfo != null && clanInfo.getId() > 0) {
mBinding.llModuleHall.setVisibility(View.VISIBLE);
mBinding.llHall.setVisibility(View.VISIBLE);
mBinding.tvClanId.setText("家族ID:" + clanInfo.getId());
mBinding.tvClanName.setText(clanInfo.getName());
mBinding.tvClanMemberNum.setText("家族人数:" +clanInfo.getClanMemberNum());
mBinding.tvClanHallNum.setText("公会数量:" + clanInfo.getClanHallNum());
GlideApp.with(this)
.load(clanInfo.getAvatar())
.placeholder(R.drawable.default_avatar)
.into(mBinding.ivClanAvatar);
if (showApply && hallInfo != null && hallInfo.getHallId() > 0) {
mBinding.tvApplyHall.setVisibility(View.VISIBLE);
mBinding.tvApplyHall.setOnClickListener(v -> applyJoinHall(hallInfo.getHallId()));
}
} else {
mBinding.llHall.setVisibility(View.GONE);
}
});
}
private void applyJoinHall(long hallId) {
HallModel.get().applyJoinHall(hallId)
.compose(RxHelper.bindActivity(UserInfoActivity.this))
.subscribe(new BeanObserver<String>() {
@@ -353,7 +381,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
private void initUserDetail(UserDetailInfo.DataBean info) {
if (info == null){
if (info == null) {
return;
}
initGiftList(info.getUserGiftWall());
@@ -365,6 +393,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
/**
* 礼物列表
*
* @param list
*/
private void initGiftList(List<UserDetailInfo.DataBean.UserGiftWallBean> list) {
@@ -384,13 +413,13 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
});
if (ListUtils.isListEmpty(list)){
if (ListUtils.isListEmpty(list)) {
UserDetailInfo.DataBean.UserGiftWallBean giftBean = new UserDetailInfo.DataBean.UserGiftWallBean();
giftBean.setItemType(0);
list.add(giftBean);
}
GiftAdapter giftAdapter= new GiftAdapter(this,list);
GiftAdapter giftAdapter = new GiftAdapter(this, list);
giftAdapter.setEnableLoadMore(false);
mBinding.rvGift.setAdapter(giftAdapter);
@@ -398,11 +427,12 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
/**
* 动态列表
*
* @param list
*/
private void initDynamicList(List<WorldDynamicBean> list) {
mBinding.rvDynamic.setLayoutManager(new LinearLayoutManager(this));
UserInfoDynamicAdapter dynamicAdapter = new UserInfoDynamicAdapter(this,identityState);
UserInfoDynamicAdapter dynamicAdapter = new UserInfoDynamicAdapter(this, identityState);
dynamicAdapter.setNewData(list);
dynamicAdapter.setEnableLoadMore(false);
dynamicAdapter.setOnItemChildClickListener((baseQuickAdapter, view, pos) -> {
@@ -423,7 +453,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
if (UserModel.get().isMyseft(bean.getUid()) ||
isThisWorldOwner(bean)) {
ButtonItem item = new ButtonItem("删除", () -> deleteDynamic(pos,dynamicAdapter));
ButtonItem item = new ButtonItem("删除", () -> deleteDynamic(pos, dynamicAdapter));
list_adapter.add(item);
}
getDialogManager().showCommonPopupDialog(list_adapter, "取消");
@@ -439,13 +469,13 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
/**
* 相册
*/
private void initPhoto(List<UserDetailInfo.DataBean.PrivatePhotoBean> list){
if (ListUtils.isListEmpty(list)){
private void initPhoto(List<UserDetailInfo.DataBean.PrivatePhotoBean> list) {
if (ListUtils.isListEmpty(list)) {
return;
}
TextHintView hintView = new TextHintView(this);
hintView.setBackground(getResources().getDrawable(R.drawable.bg_userinfo_photo_hintview));
hintView.setTextSize(SizeUtils.dp2px(this,4));
hintView.setTextSize(SizeUtils.dp2px(this, 4));
hintView.setTextColor(getResources().getColor(R.color.blue));
mBinding.rollView.setHintView(hintView);
UserInfoPhotoAdapter bannerAdapter = new UserInfoPhotoAdapter(list, this);
@@ -480,20 +510,20 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
private void initNestScrollView() {
mBinding.scrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
if (flag == 0 && oldScrollY > SizeUtils.dp2px(this,200)) {
if (flag == 0 && oldScrollY > SizeUtils.dp2px(this, 200)) {
//展开
flag = 1;
mBinding.ivUserBack.setImageResource(R.drawable.icon_user_back_black);
mBinding.tbUserInfo.setBackgroundColor(getResources().getColor(R.color.white));
setTitleVisible(true);
setEditButton(identityState,true);
setEditButton(identityState, true);
} else if (flag == 1 && oldScrollY <= 200) {
//合起来
flag = 0;
mBinding.ivUserBack.setImageResource(R.drawable.icon_user_back);
mBinding.tbUserInfo.setBackgroundColor(getResources().getColor(R.color.transparent));
setTitleVisible(false);
setEditButton(identityState,false);
setEditButton(identityState, false);
}
});
}
@@ -626,11 +656,11 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
break;
case R.id.tv_gift_detail:
startActivity(new Intent(this,UserGiftActivity.class));
startActivity(new Intent(this, UserGiftActivity.class));
break;
case R.id.iv_where:
if (mRoomUid != 0){
if (mRoomUid != 0) {
AVRoomActivity.start(this, mRoomUid);
}
break;
@@ -691,7 +721,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
if (tvOfficialMask != null && ivOfficialMask != null) {
tvOfficialMask.setText(name);
ImageLoadUtils.loadImage(this,icon,ivOfficialMask);
ImageLoadUtils.loadImage(this, icon, ivOfficialMask);
}
} else {
mBinding.inOfficialMask.setVisibility(View.GONE);
@@ -731,7 +761,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
return bean != null && bean.getWorldUid() == AuthModel.get().getCurrentUid();
}
private void deleteDynamic(int pos,UserInfoDynamicAdapter adapter) {
private void deleteDynamic(int pos, UserInfoDynamicAdapter adapter) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_WORLD_DELETE_MOMENTS,
"删除动态-区分-动态广场");
getDialogManager().showOkCancelWithTitleDialog("删除后不可恢复,确定删除该动态吗?",

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:color="#7154EE"
android:width="1dp" />
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:color="#FFA768"
android:width="1dp" />
</shape>

View File

@@ -233,19 +233,21 @@
android:paddingBottom="@dimen/dp_15">
<LinearLayout
android:id="@+id/ll_family"
android:id="@+id/ll_clan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical">
<ImageView
android:id="@+id/iv_family_avatar"
<com.yizhuan.erban.common.widget.RectRoundImageView
android:id="@+id/iv_clan_avatar"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_8"
android:src="@drawable/default_cover" />
android:src="@drawable/default_cover"
app:borderRadius="8dp"
app:type="round" />
<LinearLayout
android:layout_width="wrap_content"
@@ -253,7 +255,7 @@
android:orientation="vertical">
<TextView
android:id="@+id/tv_family_name"
android:id="@+id/tv_clan_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
@@ -263,10 +265,10 @@
tools:text="忘忧阁" />
<TextView
android:id="@+id/tv_family_id"
android:id="@+id/tv_clan_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_3"
android:ellipsize="end"
android:lines="1"
android:textColor="#9a9a9a"
@@ -274,10 +276,9 @@
tools:text="公会ID123456" />
<TextView
android:id="@+id/tv_family_member_num"
android:id="@+id/tv_clan_member_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_3"
android:ellipsize="end"
android:lines="1"
android:textColor="#9a9a9a"
@@ -285,10 +286,9 @@
tools:text="公会人数123" />
<TextView
android:id="@+id/tv_family_hall_num"
android:id="@+id/tv_clan_hall_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_3"
android:ellipsize="end"
android:lines="1"
android:textColor="#9a9a9a"
@@ -309,15 +309,18 @@
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
<com.yizhuan.erban.common.widget.RectRoundImageView
android:id="@+id/iv_hall_avatar"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_8"
android:src="@drawable/default_cover" />
android:src="@drawable/default_cover"
app:borderRadius="8dp"
app:type="round" />
<LinearLayout
android:layout_width="wrap_content"
@@ -349,7 +352,6 @@
android:id="@+id/tv_hall_member_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_3"
android:ellipsize="end"
android:lines="1"
android:textColor="#9a9a9a"

View File

@@ -3,11 +3,14 @@ package com.yizhuan.erban.module_hall;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import android.annotation.SuppressLint;
import android.text.TextUtils;
import com.netease.nim.uikit.api.NimUIKit;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.manager.event.HallInfoChangeEvent;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.event.UserHallUpdateEvent;
import com.yizhuan.xchat_android_core.module_hall.im.HallAttachment;
import com.yizhuan.erban.module_hall.im.msgholder.HallMsgViewHolder;
@@ -45,6 +48,11 @@ public class HallDataManager {
*/
private long lastHallId = -1;
private long clanId = 0;
/**家族信息*/
private MutableLiveData<ClanInfo> liveClanInfo;
private static final class Helper {
public static final HallDataManager INSTANCE = new HallDataManager();
}
@@ -101,6 +109,7 @@ public class HallDataManager {
}
}
lastHallId = newHallId;
clanId = userInfo.getClanId();
}
}
@@ -120,6 +129,10 @@ public class HallDataManager {
liveHallName.observe(owner, observer);
}
public void registerClanInfo(LifecycleOwner owner, Observer<ClanInfo> observer) {
liveClanInfo.observe(owner, observer);
}
public void registerHallID(LifecycleOwner owner, Observer<Long> observer) {
liveHallID.observe(owner, observer);
}
@@ -128,19 +141,23 @@ public class HallDataManager {
liveHallExist.observe(owner, observer);
}
@SuppressLint("CheckResult")
public void updateHallInfo() {
if (getHallId() <= 0) {
return;
}
HallModel.get().getHallInfo(AuthModel.get().getCurrentUid(), getHallId())
.subscribe(info -> {
hallInfo = info;
liveHallName.setValue(hallInfo.getHallName());
liveHallExist.setValue(hallInfo.getHallId() > 0);
liveHallID.setValue(hallInfo.getHallId());
});
.subscribe(this::updateHallInfo);
}
public void updateHallInfo(HallInfo info) {
hallInfo = info;
liveHallName.setValue(hallInfo.getHallName());
liveHallExist.setValue(hallInfo.getHallId() > 0);
liveHallID.setValue(hallInfo.getHallId());
}
public String getHallName() {
String hallName = liveHallName.getValue();
if (hallName == null) {

View File

@@ -0,0 +1,257 @@
package com.yizhuan.erban.module_hall.hall.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.jzxiang.pickerview.data.Type;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.erban.module_hall.hall.view.dialog.TimePickerDialog;
import com.yizhuan.erban.module_hall.hall.view.indicator.StatisticsIndicatorAdapter;
import com.yizhuan.erban.module_hall.income.ClanIncomeFragment;
import com.yizhuan.erban.module_hall.income.DayIncomeFragment;
import com.yizhuan.erban.module_hall.income.presenter.ClanIncomePresenter;
import com.yizhuan.erban.module_hall.income.presenter.IncomeStatisticsPresenter;
import com.yizhuan.erban.module_hall.income.view.IIncomeStatisticsView;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* 家族所有公会的收入统计
* Created by lvzebiao on 2018/12/27.
*/
@CreatePresenter(ClanIncomePresenter.class)
public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, ClanIncomePresenter>
implements IIncomeStatisticsView, TimePickerDialog.TimePickerListener, ClanIncomeFragment.DayIncomeFragmentListener {
private static final int TYPE_DAY = 0;
private static final int TYPE_WEEK = 1;
@BindView(R.id.view_pager)
ViewPager viewPager;
List<ClanIncomeFragment> list = new ArrayList<>();
@BindView(R.id.indicator)
MagicIndicator indicator;
@BindView(R.id.tv_month_day_start)
TextView tvMonthDayStart;
@BindView(R.id.tv_month_day_end)
TextView tvMonthDayEnd;
@BindView(R.id.tv_year)
TextView tvYear;
@BindView(R.id.tv_total)
TextView tvTotal;
public static void start(Context context) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.HALL_INCOME_CLICK, "收入统计入口", null);
Intent intent = new Intent(context, ClanIncomeActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_income_statistics);
ButterKnife.bind(this);
initTitleBar("收入统计");
initIndicator();
ClanIncomeFragment fragment = ClanIncomeFragment.getInstance(ClanIncomeFragment.TYPE_DAY);
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
fragment = ClanIncomeFragment.getInstance(ClanIncomeFragment.TYPE_WEEK);
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
viewPager.setAdapter(adapter);
// initDay();
}
private boolean mHasInit = false;
@Override
protected void onResume() {
super.onResume();
if (!mHasInit) {
mHasInit = true;
initDay();
}
}
/**
* 初始化当前日,周
*/
private void initDay() {
ClanIncomePresenter presenter = getMvpPresenter();
presenter.initCurrentDay();
String first = presenter.getmStartTimeStr();
String last = presenter.getmEndTimeStr();
getIncomeTotal(presenter.getDayFormat(), first, last);
}
private void initIndicator() {
List<String> tagList = new ArrayList<>();
tagList.add("每日统计");
tagList.add("每周统计");
StatisticsIndicatorAdapter adapter = new StatisticsIndicatorAdapter(tagList, 5);
adapter.setOnItemSelectListener(position -> viewPager.setCurrentItem(position));
CommonNavigator navigator = new CommonNavigator(this);
navigator.setAdapter(adapter);
navigator.setAdjustMode(true);
indicator.setNavigator(navigator);
ViewPagerHelper.bind(indicator, viewPager);
mCurrentType = TYPE_DAY;
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// 切换日,周
mCurrentType = position;
ClanIncomePresenter presenter = getMvpPresenter();
String day;
if (mCurrentType == TYPE_WEEK) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.HALL_INCOME_WEEKLY_CLICK, "切换每周统计", null);
day = presenter.getWeekChooseDayFormat();
} else
day = presenter.getDayFormat();
getIncomeTotal(day, presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
FragmentStatePagerAdapter adapter = new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
};
@OnClick({R.id.iv_date_arrow, R.id.ll_day_group})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.iv_date_arrow:
case R.id.ll_day_group:
ClanIncomePresenter presenter = getMvpPresenter();
boolean isWeek = mCurrentType == TYPE_WEEK;
TimePickerDialog.Builder builder = new TimePickerDialog.Builder()
.setType(Type.YEAR_MONTH_DAY)
.setTitleStringId("")
.setThemeColor(getResources().getColor(R.color.line_color))
.setWheelItemTextNormalColor(getResources().getColor(R.color
.timetimepicker_default_text_color))
.setWheelItemTextSelectorColor(getResources().getColor(R.color.black))
// 根据上一次选中时间初始化日期控件
.setCurrentMillseconds(isWeek ? presenter.getmWeekChooseDay() : presenter.getmDay())
.setmIsWeek(isWeek);
TimePickerDialog dialog = builder.build();
dialog.setmTimePickerListener(this);
dialog.show(getSupportFragmentManager(), "year_month_day");
break;
}
}
private int mCurrentType;
@Override
public void getTime(long chooseTime, String weekFirstDay, String weekLastDay) {
ClanIncomePresenter presenter = getMvpPresenter();
if (mCurrentType == TYPE_DAY) {
presenter.setmDayStr(chooseTime);
getIncomeTotal(presenter.getDayFormat(), "", "");
} else if (mCurrentType == TYPE_WEEK) {
presenter.setmWeekChooseDay(chooseTime);
presenter.setmStartTimeStr(weekFirstDay);
presenter.setmEndTimeStr(weekLastDay);
getIncomeTotal("", weekFirstDay, weekLastDay);
}
}
private void getIncomeTotal(String day, String weekFirstDay, String weekLastDay) {
if (mCurrentType == TYPE_DAY) {
String[] dayArray = day.split("-");
tvYear.setText(String.format(getString(R.string.format_year), dayArray[0]));
tvMonthDayEnd.setVisibility(View.GONE);
tvMonthDayStart.setText(String.format(getString(R.string.format_month_day), dayArray[1], dayArray[2]));
list.get(0).getIncomeTotal(day, "");
} else if (mCurrentType == TYPE_WEEK) {
String[] weekFirstArray = weekFirstDay.split("-");
String[] weekLastArray = weekLastDay.split("-");
tvYear.setText(String.format(getString(R.string.format_year), weekFirstArray[0]));
tvMonthDayEnd.setVisibility(View.VISIBLE);
tvMonthDayStart.setText(String.format(getString(R.string.format_month_day), weekFirstArray[1], weekFirstArray[2]));
tvMonthDayEnd.setText(String.format(getString(R.string.format_month_day), weekLastArray[1], weekLastArray[2]));
list.get(1).getIncomeTotal(weekFirstDay, weekLastDay);
}
}
@Override
public void setTotal(long total) {
tvTotal.setText(getMvpPresenter().setTotal(total));
}
}

View File

@@ -11,6 +11,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -27,10 +28,13 @@ import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.friend.action.AbstractSelectFriendAction;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.hall.adapter.GroupMemberListAdapter;
import com.yizhuan.erban.module_hall.hall.adapter.HallListAdapter;
import com.yizhuan.erban.module_hall.hall.adapter.OptionAdapter;
import com.yizhuan.erban.module_hall.hall.presenter.ModuleHallPresenter;
import com.yizhuan.erban.module_hall.hall.view.IModuleHallView;
import com.yizhuan.erban.module_hall.hall.view.dialog.HallMenuDialog;
import com.yizhuan.erban.ui.user.UserInfoActivity;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
@@ -38,6 +42,9 @@ import com.yizhuan.erban.ui.widget.recyclerview.decoration.SpacingDecoration;
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.ClanAndHallInfo;
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.OptionInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
@@ -54,6 +61,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
/**
@@ -65,42 +73,48 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
@BindView(R.id.rv_option)
RecyclerView mRvOption;
@BindView(R.id.rv_hall)
RecyclerView rvHall;
@BindView(R.id.ll_hall_list)
View llHallList;
@BindView(R.id.tv_clan_member_count)
TextView tvClanMemberCount;
@BindView(R.id.srl_group)
SwipeRefreshLayout mSrlGroup;
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
@BindView(R.id.tv_count)
TextView tvCount;
@BindView(R.id.iv_hall_member_more)
ImageView ivHallMemberMore;
@BindView(R.id.iv_hall_member_search)
ImageView ivHallMemberSearch;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.iv_setting)
ImageView ivSetting;
@BindView(R.id.tv_hall_id)
TextView tvHallId;
@BindView(R.id.tv_owner_uid)
@BindView(R.id.tv_hall_owner_uid)
TextView tvOwnerUid;
@BindView(R.id.tv_owner_name)
@BindView(R.id.tv_hall_owner_name)
TextView tvOwnerName;
@BindView(R.id.iv_avatar)
@BindView(R.id.iv_hall_avatar)
ImageView ivAvatar;
@BindView(R.id.cl_clan)
View clClan;
@BindView(R.id.cl_hall)
View clHall;
@BindView(R.id.tv_clan_id)
TextView tvClanId;
@BindView(R.id.tv_clan_owner_uid)
TextView tvClanOwnerUid;
@BindView(R.id.tv_clan_owner_name)
TextView tvClanOwnerName;
@BindView(R.id.iv_clan_avatar)
ImageView ivClanAvatar;
@BindView(R.id.iv_avatar_bg)
ImageView ivAvatarBg;
@BindView(R.id.nsv_hall)
NestedScrollView nsvHall;
@@ -109,10 +123,13 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
private GroupMemberListAdapter mGroupMemberListAdapter;
private List<AuthInfo> mAuthInfoList;
private HallListAdapter hallListAdapter;
private RVDelegate<HallInfo> rvDelegate;
@Nullable
private ClanInfo clanInfo;
private int page = 100;
private int pageSize = 100;
private final int pageSize = 20;
private boolean isLoading;
private long lastClickTime;
@@ -148,7 +165,6 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
page = 1;
loadMembers();
});
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mGroupMemberListAdapter = new GroupMemberListAdapter(this, null);
mGroupMemberListAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@@ -173,11 +189,79 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
recyclerView.setAdapter(mGroupMemberListAdapter);
setTvCount(0);
getMvpPresenter().getHallAuths();
getMvpPresenter().getHallMenusByUid(AuthModel.get().getCurrentUid());
getMvpPresenter().getHallInfo();
EventBus.getDefault().register(this);
nsvHall.setNestedScrollingEnabled(false);
initClanAndHall();
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void initClanAndHall() {
HallModel.get().getUserHallAndClan(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
.subscribe(clanAndHallInfo -> {
String bgUrl = "";
HallInfo hallInfo = clanAndHallInfo.getHall();
if (hallInfo != null && hallInfo.getHallId() != 0) {
HallDataManager.get().updateHallInfo(hallInfo);
clHall.setVisibility(View.VISIBLE);
clHall.setOnClickListener(v -> UserInfoActivity.Companion.start(context,hallInfo.getOwnerUid()));
bgUrl = hallInfo.getOwnerAvatar();
tvHallId.setText("公会ID:" + hallInfo.getHallId() + "");
tvOwnerUid.setText("66号:" + hallInfo.getOwnerErbanNo());
tvOwnerName.setText(hallInfo.getOwnerNick());
tvTitle.setText(hallInfo.getHallName());
GlideApp.with(ivAvatar.getContext())
.load(hallInfo.getOwnerAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivAvatar);
} else {
clHall.setVisibility(View.GONE);
}
clanInfo = clanAndHallInfo.getClan();
if (clanInfo != null && clanInfo.getId() != 0) {
clClan.setVisibility(View.VISIBLE);
clClan.setOnClickListener(v -> UserInfoActivity.Companion.start(context,clanInfo.getElderUid()));
bgUrl = clanInfo.getAvatar();
tvClanId.setText("家族ID:" + clanInfo.getId());
tvClanOwnerUid.setText("66号:" + clanInfo.getElderErbanNo());
tvClanOwnerName.setText(clanInfo.getElderName());
tvTitle.setText(clanInfo.getName());
GlideApp.with(ivClanAvatar.getContext())
.load(clanInfo.getAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivClanAvatar);
loadHallList();
} else {
clHall.setVisibility(View.GONE);
}
GlideApp.with(ivAvatarBg.getContext())
.load(bgUrl)
.placeholder(R.drawable.default_avatar)
.into(ivAvatarBg);
});
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void loadHallList() {
if (clanInfo == null) return;
HallModel.get().getClanHallList(clanInfo.getId())
.compose(bindToLifecycle())
.subscribe(hallInfos -> {
if (rvDelegate == null) {
rvDelegate = new RVDelegate.Builder<HallInfo>()
.setAdapter(hallListAdapter = new HallListAdapter())
.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false))
.setPageSize(20)
.setRecyclerView(rvHall)
.build();
}
llHallList.setVisibility(View.VISIBLE);
tvClanMemberCount.setText("公会列表(" + hallInfos.size() + ")");
rvDelegate.setNewData(hallInfos);
});
}
@Override
@@ -194,7 +278,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
});
isHallOwner = HallDataManager.get().getRole() == 1;
isHallAdmin = HallDataManager.get().getRole() == 2;
setSearchOption(isHallOwner,isHallAdmin);
setSearchOption(isHallOwner, isHallAdmin);
}
/**
@@ -205,16 +289,16 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
private void setSettingOption(boolean hasOption) {
if (hasOption) {
ivSetting.setVisibility(View.VISIBLE);
}else {
} else {
ivSetting.setVisibility(View.GONE);
}
}
private void setSearchOption(boolean hasOption,boolean isHallAdmin) {
private void setSearchOption(boolean hasOption, boolean isHallAdmin) {
if (hasOption || isHallAdmin) {
ivHallMemberSearch.setVisibility(View.VISIBLE);
ivHallMemberMore.setVisibility(View.VISIBLE);
}else {
} else {
ivHallMemberSearch.setVisibility(View.GONE);
ivHallMemberMore.setVisibility(View.GONE);
}
@@ -235,46 +319,48 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
mOptionAdapter = new OptionAdapter(this, tabList);
mRvOption.setAdapter(mOptionAdapter);
mOptionAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
List<OptionInfo> optionInfoList = mOptionAdapter.getData();
OptionInfo optionInfo = optionInfoList.get(position);
// code --> url --> 原生
if (OptionInfo.OPTION_LOOK_HALL_INCOME.equals(optionInfo.getCode())) {
if (!TextUtils.isEmpty(optionInfo.getUrl()))
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
else
IncomeStatisticsActivity.start(ModuleHallActivity.this);
} else if (OptionInfo.OPTION_HALL_BUILD.equals(optionInfo.getCode())) {
Log.i("option", "do nothing");
} else if (OptionInfo.OPTION_ADD_HALL_MEMBER_WITH_PWD.equals(optionInfo.getCode())) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HALL_ADDMEMBERS_CLICK,
"添加成员-面板");
HallSearchActivity.start(context, AbstractSelectFriendAction.TYPE_MODULE_HALL);
} else if (OptionInfo.OPTION_HALL_OWNER_ROOM_SERIAL.equals(optionInfo.getCode())) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HALL_HALLINCOME_CLICK,
"厅收入统计");
String url = optionInfo.getUrl();
if (!TextUtils.isEmpty(url))
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
mOptionAdapter.setOnItemChildClickListener((adapter, view, position) -> {
List<OptionInfo> optionInfoList = mOptionAdapter.getData();
OptionInfo optionInfo = optionInfoList.get(position);
// code --> url --> 原生
if (OptionInfo.OPTION_LOOK_HALL_INCOME.equals(optionInfo.getCode())) {
if (!TextUtils.isEmpty(optionInfo.getUrl())) {
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
} else {
toast("请更新到最新版本");
IncomeStatisticsActivity.start(ModuleHallActivity.this);
}
} else if (OptionInfo.OPTION_GUILD_INCOME.equals(optionInfo.getCode())) {
if (!TextUtils.isEmpty(optionInfo.getUrl())) {
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
} else {
ClanIncomeActivity.start(ModuleHallActivity.this);
}
} else if (OptionInfo.OPTION_HALL_BUILD.equals(optionInfo.getCode())) {
Log.i("option", "do nothing");
} else if (OptionInfo.OPTION_ADD_HALL_MEMBER_WITH_PWD.equals(optionInfo.getCode())) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HALL_ADDMEMBERS_CLICK,
"添加成员-面板");
HallSearchActivity.start(context, AbstractSelectFriendAction.TYPE_MODULE_HALL);
} else if (OptionInfo.OPTION_HALL_OWNER_ROOM_SERIAL.equals(optionInfo.getCode())) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HALL_HALLINCOME_CLICK,
"厅收入统计");
String url = optionInfo.getUrl();
if (!TextUtils.isEmpty(url))
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
} else {
toast("请更新到最新版本");
}
});
}
}
@Override
public void onReloadDate() {
super.onReloadDate();
@@ -283,6 +369,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
}
private long mTargetUid;
private void showRemoveDialog(long targetUid, int targetRoleType, String targetNick) {
mTargetUid = targetUid;
SpannableString spannableString = getMvpPresenter().getRemoveTips(this, targetRoleType, targetNick);
@@ -309,7 +396,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
@SuppressLint("CheckResult")
private void loadMembers() {
isLoading = true;
HallModel.get().getAllMembers(HallDataManager.get().getHallId(), page, pageSize)
HallModel.get().getClanAllMembers(AuthModel.get().getCurrentUid(), page, pageSize)
.compose(RxHelper.bindActivity(this))
.subscribe((listMemberInfo, throwable) -> {
mSrlGroup.setRefreshing(false);
@@ -334,22 +421,10 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
hideStatus();
if (page == 1) {
mGroupMemberListAdapter.setNewData(list);
tvHallId.setText("公会ID:"+list.get(0).getHallId()+"");
tvOwnerUid.setText("66号:"+list.get(0).getErbanNo());
tvOwnerName.setText(list.get(0).getNick());
GlideApp.with(ivAvatar.getContext())
.load(list.get(0).getAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivAvatar);
GlideApp.with(ivAvatarBg.getContext())
.load(list.get(0).getAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivAvatarBg);
} else {
mGroupMemberListAdapter.addData(list);
}
page ++;
page++;
}
}
});
@@ -357,6 +432,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
}
private int mCount;
private void setTvCount(int count) {
mCount = count;
tvCount.setText("成员列表(" + mCount + "人)");
@@ -437,7 +513,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
toast(message);
}
@OnClick({R.id.iv_hall_member_search,R.id.iv_hall_member_more,R.id.iv_back,R.id.iv_setting})
@OnClick({R.id.iv_hall_member_search, R.id.iv_hall_member_more, R.id.iv_back, R.id.iv_setting})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.iv_hall_member_search:
@@ -456,7 +532,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
finish();
break;
case R.id.iv_setting:
if (isHallOwner){
if (isHallOwner) {
showMenuDialog(view);
} else {
showExitHallDialog(view);
@@ -470,11 +546,11 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
List<ButtonItem> list_adapter = new ArrayList<>();
for (AuthInfo authInfo : authInfoList) {
if (authInfo.getCode().equals(AuthInfo.AUTH_APPLY_HALL_EXIT)){
if (authInfo.getCode().equals(AuthInfo.AUTH_APPLY_HALL_EXIT)) {
continue;
}
if (authInfo.isOwnAuth()) {
ButtonItem item = new ButtonItem(authInfo.getName(),() -> {
ButtonItem item = new ButtonItem(authInfo.getName(), () -> {
jumpCode(authInfo.getCode());
});
list_adapter.add(item);

View File

@@ -0,0 +1,20 @@
package com.yizhuan.erban.module_hall.hall.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo;
public class HallListAdapter extends BaseQuickAdapter<HallInfo, BaseViewHolder> {
public HallListAdapter() {
super(R.layout.item_hall);
}
@Override
protected void convert(BaseViewHolder helper, HallInfo item) {
ImageLoadUtils.loadRectImage(mContext,item.getOwnerAvatar(),helper.getView(R.id.iv_hall_avatar),R.drawable.default_cover, ScreenUtil.dip2px(8));
helper.setText(R.id.tv_hall_name,item.getHallName());
}
}

View File

@@ -53,10 +53,6 @@ public class ModuleHallPresenter extends BaseMvpPresenter<IModuleHallView>{
});
}
public void getHallInfo() {
HallDataManager.get().updateHallInfo();
}
/**
* 成员列表
*/

View File

@@ -0,0 +1,182 @@
package com.yizhuan.erban.module_hall.income;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.module_hall.income.adapter.IncomeAdapter;
import com.yizhuan.erban.module_hall.income.presenter.IncomePresenter;
import com.yizhuan.erban.module_hall.income.view.IIncomeView;
import com.yizhuan.xchat_android_core.module_hall.income.bean.IncomeInfo;
import com.yizhuan.xchat_android_core.module_hall.income.bean.IncomeTotalInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
/**
* 日收入统计
* Created by lvzebiao on 2018/12/27.
*/
@CreatePresenter(IncomePresenter.class)
public class ClanIncomeFragment extends BaseMvpFragment<IIncomeView, IncomePresenter> implements IIncomeView{
public static final int TYPE_DAY = 0;
public static final int TYPE_WEEK = 1;
public static final String FLAG_DAY_TYPE = "dayType";
private int mDayType;
private IncomeAdapter mIncomeAdapter;
private DayIncomeFragmentListener mDayIncomeFragmentListener;
Unbinder unbinder;
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
public static ClanIncomeFragment getInstance(int dayType) {
ClanIncomeFragment fragment = new ClanIncomeFragment();
Bundle bundle = new Bundle();
bundle.putInt(FLAG_DAY_TYPE, dayType);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onFindViews() {
mIncomeAdapter = new IncomeAdapter(mContext, null);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
mIncomeAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
List<IncomeInfo> incomeInfos = mIncomeAdapter.getData();
if (incomeInfos.size() > 0) {
IncomeInfo incomeInfo = incomeInfos.get(position);
if (mDayType == TYPE_WEEK)
IncomeDetailActivity.start(mContext, incomeInfo, mStartTimeStr, mEndTimeStr);
else
IncomeDetailActivity.start(mContext, incomeInfo, mStartTimeStr, "");
}
}
});
recyclerView.setAdapter(mIncomeAdapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
// if (newState == RecyclerView.SCROLL_STATE_IDLE) {
// if (isLoading || noMoreData) {
// return;
// }
// LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
// int lastfirst = manager.findLastVisibleItemPosition();
// int itemCount = mGroupMemberListAdapter.getItemCount();
// if (itemCount >= 2 && lastfirst >= itemCount - 2) {
// loadMembers();
// }
// }
}
});
}
@Override
public void onSetListener() {
}
@Override
public void initiate() {
}
public void getIncomeTotal(String startTimeStr, String endTimeStr) {
mStartTimeStr = startTimeStr;
mEndTimeStr = endTimeStr;
if (mDayType == TYPE_WEEK) {
getMvpPresenter().incomeTotal(startTimeStr, endTimeStr);
} else {
getMvpPresenter().incomeTotal(startTimeStr, "");
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
unbinder = ButterKnife.bind(this, mView);
return mView;
}
@Override
protected void onInitArguments(Bundle bundle) {
if (bundle != null) {
mDayType = bundle.getInt(FLAG_DAY_TYPE, 0);
}
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_day_income;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
private String mStartTimeStr = "";
private String mEndTimeStr = "";
private void setTotal(long total) {
if (mDayIncomeFragmentListener != null)
mDayIncomeFragmentListener.setTotal(total);
}
public void setmDayIncomeFragmentListener(DayIncomeFragmentListener mDayIncomeFragmentListener) {
this.mDayIncomeFragmentListener = mDayIncomeFragmentListener;
}
@Override
public void incomeTotalSuccess(IncomeTotalInfo incomeTotalInfo) {
hideStatus();
setTotal(incomeTotalInfo.getTotal());
if (incomeTotalInfo.getVos() != null) {
mIncomeAdapter.setNewData(incomeTotalInfo.getVos());
mIncomeAdapter.notifyDataSetChanged();
} else {
showNoData();
}
}
@Override
public void incomeTotalFail(String message) {
hideStatus();
showNoData();
setTotal(0);
mIncomeAdapter.setNewData(null);
mIncomeAdapter.notifyDataSetChanged();
}
public interface DayIncomeFragmentListener {
void setTotal(long total);
}
}

View File

@@ -0,0 +1,107 @@
package com.yizhuan.erban.module_hall.income.presenter;
import android.text.SpannableString;
import android.text.style.RelativeSizeSpan;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.module_hall.income.view.IIncomeStatisticsView;
import com.yizhuan.xchat_android_library.utils.TimeUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Calendar;
public class ClanIncomePresenter extends BaseMvpPresenter<IIncomeStatisticsView> {
private String mStartTimeStr;
private String mEndTimeStr;
/** 周范围内选中的日期 */
private long mWeekChooseDay;
/** 日范围内选中的日期 */
private long mDay;
public void initCurrentDay() {
mDay = mWeekChooseDay = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(mDay);
int curWeekDay = calendar.get(Calendar.DAY_OF_WEEK);
//周一的时间
long firstDayTime;
if (curWeekDay == 1) {//周日
firstDayTime = calendar.getTimeInMillis() - (TimeUtils.MILLIS_OF_A_DAY * (7 - curWeekDay));
} else {
firstDayTime = calendar.getTimeInMillis() - (TimeUtils.MILLIS_OF_A_DAY * (curWeekDay - 2));
}
//周日
long lastDayTime = firstDayTime + (TimeUtils.MILLIS_OF_A_DAY * 6);
mStartTimeStr = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT);
mEndTimeStr = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT);
}
public SpannableString setTotal(long total) {
SpannableString spannableString;
RelativeSizeSpan sizeSpan = new RelativeSizeSpan(0.5f);
if (total > 10000) {
double d = (double) total;
d = d / 10000;
BigDecimal df = new BigDecimal(d);
String str = df.setScale(2, RoundingMode.DOWN).toString() + "万钻石";
spannableString = new SpannableString(str);
spannableString.setSpan(sizeSpan, str.length() - 3, str.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
String str = String.valueOf(total) + "钻石";
spannableString = new SpannableString(str);
spannableString.setSpan(sizeSpan, str.length() - 2, str.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannableString;
}
public String getmStartTimeStr() {
return mStartTimeStr;
}
public void setmStartTimeStr(String mStartTimeStr) {
this.mStartTimeStr = mStartTimeStr;
}
public String getmEndTimeStr() {
return mEndTimeStr;
}
public void setmEndTimeStr(String mEndTimeStr) {
this.mEndTimeStr = mEndTimeStr;
}
public long getmDay() {
return mDay;
}
public void setmDayStr(long day) {
this.mDay = day;
}
public String getDayFormat() {
return TimeUtils.getDateTimeString(mDay, TimeUtils.DATE_FORMAT);
}
public long getmWeekChooseDay() {
return mWeekChooseDay;
}
public void setmWeekChooseDay(long weekChooseDay) {
this.mWeekChooseDay = weekChooseDay;
}
public String getWeekChooseDayFormat() {
return TimeUtils.getDateTimeString(mWeekChooseDay, TimeUtils.DATE_FORMAT);
}
}

View File

@@ -34,60 +34,231 @@
</FrameLayout>
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginStart="@dimen/dp_25"
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_clan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize"
android:src="@drawable/nim_avatar_default"
app:civ_border_color="@color/black"
app:civ_border_width="5dp"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintEnd_toStartOf="@id/cl_hall"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
<View
android:layout_width="66dp"
android:layout_height="66dp"
android:background="@drawable/shape_ffa768_stroke_1dp"
app:layout_constraintBottom_toBottomOf="@id/iv_clan_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_clan_avatar"
app:layout_constraintStart_toStartOf="@id/iv_clan_avatar"
app:layout_constraintTop_toTopOf="@id/iv_clan_avatar" />
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_clan_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="17dp"
android:layout_marginBottom="5dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.coorchice.library.SuperTextView
android:layout_width="35dp"
android:layout_height="15dp"
android:gravity="center"
android:text="族长"
android:textColor="#ffffffff"
android:textSize="11sp"
app:corner="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_clan_avatar"
app:layout_constraintStart_toStartOf="@id/iv_clan_avatar"
app:shaderEnable="true"
app:shaderEndColor="#FFBC59"
app:shaderMode="leftToRight"
app:shaderStartColor="#FF8F57" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_clan_avatar"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_clan_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxEms="6"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
tools:text="我是会长" />
<TextView
android:id="@+id/tv_clan_owner_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="66号:3979655" />
<TextView
android:id="@+id/tv_clan_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="公会ID:123456" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_hall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/cl_clan"
app:layout_constraintTop_toTopOf="parent">
<View
android:layout_width="66dp"
android:layout_height="66dp"
android:background="@drawable/shape_7154ee_stroke_1dp"
app:layout_constraintBottom_toBottomOf="@id/iv_hall_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_hall_avatar"
app:layout_constraintStart_toStartOf="@id/iv_hall_avatar"
app:layout_constraintTop_toTopOf="@id/iv_hall_avatar" />
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_hall_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginBottom="5dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.coorchice.library.SuperTextView
android:layout_width="35dp"
android:layout_height="15dp"
android:gravity="center"
android:text="会长"
android:textColor="#ffffffff"
android:textSize="11sp"
app:corner="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_hall_avatar"
app:layout_constraintStart_toStartOf="@id/iv_hall_avatar"
app:shaderEnable="true"
app:shaderEndColor="#6956F0"
app:shaderMode="leftToRight"
app:shaderStartColor="#987EF7" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/iv_hall_avatar"
app:layout_constraintStart_toEndOf="@id/iv_hall_avatar"
app:layout_constraintTop_toTopOf="@id/iv_hall_avatar">
<TextView
android:id="@+id/tv_hall_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxEms="6"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
tools:text="我是会我是会长长" />
<TextView
android:id="@+id/tv_hall_owner_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="66号:3979655" />
<TextView
android:id="@+id/tv_hall_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="公会ID:123456" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar">
<TextView
android:id="@+id/tv_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/sp_18"
tools:text="我是会长" />
<TextView
android:id="@+id/tv_owner_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="66号:3979655" />
<TextView
android:id="@+id/tv_hall_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="公会ID:123456" />
</LinearLayout>
app:barrierDirection="bottom"
app:constraint_referenced_ids="cl_clan,cl_hall" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_option"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toBottomOf="@id/iv_avatar" />
app:layout_constraintTop_toBottomOf="@id/barrier_top" />
<LinearLayout
android:id="@+id/ll_hall_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingBottom="17dp"
app:layout_constraintTop_toBottomOf="@id/rv_option">
<TextView
android:id="@+id/tv_clan_member_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:paddingStart="14dp"
android:paddingTop="10dp"
android:paddingEnd="14dp"
android:paddingBottom="10dp"
android:text="公会列表(8)"
android:textColor="@color/color_333333"
android:textSize="15dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_hall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_member_list"
@@ -98,9 +269,7 @@
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/rv_option"
>
app:layout_constraintTop_toBottomOf="@id/ll_hall_list">
<LinearLayout
android:layout_width="match_parent"

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp">
<ImageView
android:id="@+id/iv_hall_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/default_cover" />
<TextView
android:id="@+id/tv_hall_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="忘忧阁忘忧阁忘忧阁忘忧阁"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:textColor="#ff333333"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/iv_hall_avatar"
app:layout_constraintStart_toStartOf="@id/iv_hall_avatar"
app:layout_constraintTop_toBottomOf="@id/iv_hall_avatar" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
tools:context="com.yinyuan.doudou.pay.activity.GiveGoldToUserActivity">
tools:context=".pay.activity.GiveGoldToUserActivity">
<com.yizhuan.erban.base.TitleBar
android:id="@+id/title_bar"

View File

@@ -125,6 +125,13 @@ public class UserInfo implements Serializable {
*/
private long hallId;
/**
* 家族
*/
@Getter
@Setter
private long clanId;
/**
* 判断是否已经实名认证了
*/

View File

@@ -7,6 +7,8 @@ import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ApplyResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthListResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanAndHallInfo;
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.HallMenuByUidResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ListMemberInfo;
@@ -252,6 +254,26 @@ public class HallModel extends BaseModel implements IHallModel {
.compose(RxHelper.handleCommon(OwnerHallInfo::new));
}
@Override
public Single<List<HallInfo>> getClanHallList(long clanId) {
return api.getClanHallList(clanId)
.compose(RxHelper.handleCommon());
}
@Override
public Single<ListMemberInfo> getClanAllMembers(long uid, int page, int pageSize) {
return api.getClanAllMembers(uid, page, pageSize)
.compose(RxHelper.handleCommon(ListMemberInfo::new));
}
@Override
public Single<ClanAndHallInfo> getUserHallAndClan(long uid) {
return api.getUserHallAndClan(uid)
.compose(RxHelper.handleCommon());
}
private interface Api {
/**
* 申请加入模厅
@@ -372,5 +394,33 @@ public class HallModel extends BaseModel implements IHallModel {
@GET("/hall/getOwnerHallInfo")
Single<ServiceResult<OwnerHallInfo>> getOwnerHallInfo(@Query("uid") long uid,
@Query("targetUid") long targetUid);
/**
* 获取家族下的公会列表
*/
@GET("/clan/listHall")
Single<ServiceResult<List<HallInfo>>> getClanHallList(@Query("clanId") long clanId);
/**
* 获取家族下的成员列表
*/
@GET("/clan/listMember")
Single<ServiceResult<ListMemberInfo>> getClanAllMembers(@Query("uid") long uid,
@Query("page") int page,
@Query("pageSize") int pageSize);
/**
*
* 获取用户家族信息
*/
@GET("/clan/getUserClanInfo")
Single<ServiceResult<ClanInfo>> getUserClanInfo(@Query("uid") long uid);
/**
*
* 获取用户家族和公会信息
*/
@GET("/clan/getUserHallAndClan")
Single<ServiceResult<ClanAndHallInfo>> getUserHallAndClan(@Query("uid") long uid);
}
}

View File

@@ -2,6 +2,7 @@ package com.yizhuan.xchat_android_core.module_hall.hall;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanAndHallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.OptionInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ApplyResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo;
@@ -67,4 +68,9 @@ public interface IHallModel {
Single<OwnerHallInfo> getOwnerHallInfo(long targetUid);
Single<List<HallInfo>> getClanHallList(long clanId);
Single<ListMemberInfo> getClanAllMembers(long clanId, int page, int pageSize);
Single<ClanAndHallInfo> getUserHallAndClan(long uid);
}

View File

@@ -0,0 +1,9 @@
package com.yizhuan.xchat_android_core.module_hall.hall.bean;
import lombok.Data;
@Data
public class ClanAndHallInfo {
private ClanInfo clan;
private HallInfo hall;
}

View File

@@ -0,0 +1,19 @@
package com.yizhuan.xchat_android_core.module_hall.hall.bean;
import lombok.Data;
@Data
public class ClanInfo {
private String avatar;
private String clanHallNum;
private int clanMemberNum;
private int id;
private String name;
private long elderUid;
private String elderName;
private long elderErbanNo;
private int status;
private long ownerId;
private boolean userIsElder;
}

View File

@@ -20,6 +20,11 @@ public class HallInfo {
*/
private long ownerUid;
/**
* 厅主Id
*/
private long ownerErbanNo;
/**
* 厅人数
*/