feat:恢复粉丝团功能
This commit is contained in:
@@ -889,6 +889,16 @@
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinedActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
@@ -2,10 +2,12 @@ package com.chwl.app.avroom.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.avroom.adapter.OnMicroItemClickListener
|
||||
import com.chwl.app.avroom.adapter.SingleAnchorMicroViewAdapter
|
||||
@@ -20,9 +22,16 @@ import com.chwl.app.avroom.singleroompk.SingleRoomPkForceFinishDialog
|
||||
import com.chwl.app.avroom.singleroompk.SingleRoomPkReceivedDialog
|
||||
import com.chwl.app.avroom.view.ISingleRoomView
|
||||
import com.chwl.app.databinding.FragmentSingleRoomBinding
|
||||
import com.chwl.app.fansteam.FansTeamJoinActivity
|
||||
import com.chwl.app.fansteam.FansTeamJoinedActivity
|
||||
import com.chwl.app.fansteam.FansTeamViewModel
|
||||
import com.chwl.app.music.widget.MusicPlayerView
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.auth.AuthModel
|
||||
import com.chwl.core.fansteam.bean.FansTeamInitInfo
|
||||
import com.chwl.core.im.custom.bean.FansTeamMsgAttachment
|
||||
import com.chwl.core.im.custom.bean.RequestUpmicAttachment
|
||||
import com.chwl.core.im.custom.bean.RoomPKAttachment
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
@@ -54,6 +63,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
private lateinit var gameBinding: FragmentSingleRoomBinding
|
||||
private lateinit var upMicDialog: RequestUpMicDialog
|
||||
|
||||
private val fansTeamViewModel: FansTeamViewModel by viewModels()
|
||||
override fun getRootLayoutId(): Int {
|
||||
return R.layout.fragment_single_room
|
||||
}
|
||||
@@ -75,6 +85,13 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
UriProvider.getSingleRoomHourRankUrl(AvRoomDataManager.get().roomUid)
|
||||
)
|
||||
}
|
||||
fansTeamViewModel.loadFansTeamInitInfo()
|
||||
|
||||
fansTeamViewModel.fansTeamInitInfoLiveData.observe(viewLifecycleOwner) {
|
||||
it?.let {
|
||||
updateFansTeamInfo(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onReceiveRoomEvent(roomEvent: RoomEvent?) {
|
||||
@@ -100,9 +117,82 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
gameBinding.microView.adapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
RoomEvent.FANS_TEAM_OPEN_SUCCESS,
|
||||
RoomEvent.FANS_TEAM_OPEN_FAILED,
|
||||
RoomEvent.FANS_TEAM_JOIN,
|
||||
RoomEvent.FANS_TEAM_EXIT -> {
|
||||
(roomEvent.chatRoomMessage?.attachment as? FansTeamMsgAttachment)?.fansTeamMsgInfo?.let {
|
||||
val currFansTeamInitInfo = fansTeamViewModel.fansTeamInitInfoLiveData.value
|
||||
updateFansTeamInfo(
|
||||
FansTeamInitInfo(
|
||||
it.count,
|
||||
currFansTeamInitInfo?.fansLevelSeq ?: 1,
|
||||
roomEvent.event != RoomEvent.FANS_TEAM_OPEN_FAILED,
|
||||
if (AuthModel.get().currentUid == it.uid) {
|
||||
roomEvent.event == RoomEvent.FANS_TEAM_JOIN
|
||||
} else {
|
||||
currFansTeamInitInfo?.isAnchorFans ?: false
|
||||
},
|
||||
AvRoomDataManager.get().isRoomOwner,
|
||||
roomEvent.event == RoomEvent.FANS_TEAM_OPEN_FAILED
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun updateFansTeamInfo(initInfo: FansTeamInitInfo) {
|
||||
var clickListener: View.OnClickListener? = null
|
||||
if (initInfo.hasFansTeamCurrentRoom) {
|
||||
if (AvRoomDataManager.get().isRoomOwner) {
|
||||
gameBinding.flFansTeamJoinTip.isVisible = false
|
||||
gameBinding.tvFansTeamOpt.isVisible = true
|
||||
gameBinding.tvFansTeamOpt.text = "粉絲團(${initInfo.anchorFansNum})"
|
||||
clickListener = View.OnClickListener {
|
||||
DialogWebViewActivity.start(
|
||||
requireContext(),
|
||||
UriProvider.getFansTeamMyFansUrl(AvRoomDataManager.get().roomUid)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (initInfo.isAnchorFans) {
|
||||
gameBinding.flFansTeamJoinTip.isVisible = false
|
||||
gameBinding.tvFansTeamOpt.isVisible = true
|
||||
gameBinding.tvFansTeamOpt.text =
|
||||
"粉絲LV.${if (initInfo.fansLevelSeq == 0) 1 else initInfo.fansLevelSeq}"
|
||||
clickListener = View.OnClickListener {
|
||||
FansTeamJoinedActivity.start(requireContext())
|
||||
}
|
||||
} else {
|
||||
gameBinding.flFansTeamJoinTip.isVisible = true
|
||||
gameBinding.tvFansTeamOpt.isVisible = false
|
||||
clickListener = View.OnClickListener {
|
||||
FansTeamJoinActivity.start(requireContext())
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (AvRoomDataManager.get().isRoomOwner) {
|
||||
gameBinding.flFansTeamJoinTip.isVisible = false
|
||||
gameBinding.tvFansTeamOpt.isVisible = true
|
||||
gameBinding.tvFansTeamOpt.text = "開通粉絲團"
|
||||
clickListener = View.OnClickListener {
|
||||
CommonWebViewActivity.start(
|
||||
requireContext(),
|
||||
UriProvider.getFansTeamOpenUrl(AvRoomDataManager.get().roomUid)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
gameBinding.flFansTeamJoinTip.isVisible = false
|
||||
gameBinding.tvFansTeamOpt.isVisible = true
|
||||
gameBinding.tvFansTeamOpt.text = "TA暫未開通粉絲團"
|
||||
}
|
||||
}
|
||||
gameBinding.flFansTeam.setOnClickListener(clickListener)
|
||||
}
|
||||
|
||||
//顯示請求上麥彈窗
|
||||
private fun showInviteDialog(userInfo: UserInfo) {
|
||||
if (!this::upMicDialog.isInitialized) {
|
||||
@@ -121,6 +211,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
|
||||
|
||||
override fun onEnterRoom() {
|
||||
super.onEnterRoom()
|
||||
fansTeamViewModel.loadFansTeamInitInfo()
|
||||
}
|
||||
|
||||
override fun updateView() {
|
||||
|
108
app/src/main/java/com/chwl/app/fansteam/FansTeamJoinActivity.kt
Normal file
108
app/src/main/java/com/chwl/app/fansteam/FansTeamJoinActivity.kt
Normal file
@@ -0,0 +1,108 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.view.Gravity
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.viewModels
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingActivity
|
||||
import com.chwl.app.databinding.ActivityFansTeamJoinBinding
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.gift.GiftModel
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import com.chwl.core.utils.net.handleBeanData
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class FansTeamJoinActivity : BaseViewBindingActivity<ActivityFansTeamJoinBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun start(context: Context) {
|
||||
val starter = Intent(context, FansTeamJoinActivity::class.java)
|
||||
context.startActivity(starter)
|
||||
}
|
||||
}
|
||||
|
||||
private val fansTeamViewModel: FansTeamViewModel by viewModels()
|
||||
|
||||
@SuppressLint("CheckResult", "SetTextI18n")
|
||||
override fun init() {
|
||||
window.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
window.setGravity(Gravity.BOTTOM)
|
||||
|
||||
binding.ivHelp.setOnClickListener {
|
||||
DialogWebViewActivity.start(this, UriProvider.getFansTeamRuleUrl())
|
||||
}
|
||||
|
||||
binding.llRank.setOnClickListener {
|
||||
DialogWebViewActivity.start(
|
||||
this,
|
||||
UriProvider.getFansTeamRankUrl(AvRoomDataManager.get().roomUid)
|
||||
)
|
||||
}
|
||||
|
||||
fansTeamViewModel.loadTeamJoinInfo()
|
||||
|
||||
fansTeamViewModel.fansTeamJoinInfoLiveData.observe(this) {
|
||||
it?.let {
|
||||
binding.ivAvatar.load(it.anchorAvatar)
|
||||
binding.tvFansTeamName.text = it.anchorNick.subAndReplaceDot(7) + ResUtil.getString(R.string.erban_fansteam_fansteamjoinactivity_01)
|
||||
binding.tvFansTeamFansNum.text = "${it.teamNum}${getString(R.string.person)}"
|
||||
binding.ivRank0.load(it.avatarList.getOrNull(0))
|
||||
binding.ivRank1.load(it.avatarList.getOrNull(1))
|
||||
binding.ivRank2.load(it.avatarList.getOrNull(2))
|
||||
|
||||
it.privilegeConfigVos.find { configVo -> configVo.type == 1 }
|
||||
?.let { privilegeConfig ->
|
||||
binding.tvNameplateTitle.text = privilegeConfig.name
|
||||
binding.tvNameplateDesc.text = privilegeConfig.description
|
||||
binding.ivFansNameplate.load(privilegeConfig.icon)
|
||||
}
|
||||
|
||||
it.privilegeConfigVos.find { configVo -> configVo.type == 2 }
|
||||
?.let { privilegeConfig ->
|
||||
binding.tvGiftTitle.text = privilegeConfig.name
|
||||
binding.tvGiftDesc.text = privilegeConfig.description
|
||||
binding.ivFansGift.load(privilegeConfig.icon)
|
||||
}
|
||||
|
||||
it.privilegeConfigVos.find { configVo -> configVo.type == 3 }
|
||||
?.let { privilegeConfig ->
|
||||
binding.ivJoinLogo.load(privilegeConfig.icon)
|
||||
binding.tvJoin.text = privilegeConfig.name
|
||||
binding.bgJoin.setOnClickListener {
|
||||
privilegeConfig.giftVo?.let { giftInfo ->
|
||||
GiftModel.get().sendFansTeamGift(
|
||||
giftInfo.giftId,
|
||||
AvRoomDataManager.get().roomUid.toString(),
|
||||
)
|
||||
.compose(bindToLifecycle())
|
||||
.handleBeanData()
|
||||
.subscribe({
|
||||
"加入粉絲團成功!".toast()
|
||||
finish()
|
||||
}, { t ->
|
||||
t.message.toast()
|
||||
})
|
||||
|
||||
} ?: run {
|
||||
toast(R.string.avroom_firstcharge_selectpaytypedialog_01)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,134 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.PopupWindow
|
||||
import androidx.activity.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.ActivityFansTeamJoinedBinding
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity
|
||||
import com.chwl.core.UriProvider
|
||||
import com.chwl.core.fansteam.bean.FansTeamTaskInfo
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.utils.extension.subAndReplaceDot
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class FansTeamJoinedActivity : BaseViewBindingActivity<ActivityFansTeamJoinedBinding>() {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun start(context: Context) {
|
||||
val starter = Intent(context, FansTeamJoinedActivity::class.java)
|
||||
context.startActivity(starter)
|
||||
}
|
||||
}
|
||||
|
||||
private val fansTeamViewModel: FansTeamViewModel by viewModels()
|
||||
private lateinit var rvDelegate: RVDelegate<FansTeamTaskInfo>
|
||||
private lateinit var popupWindow: PopupWindow
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun init() {
|
||||
window.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
window.setGravity(Gravity.BOTTOM)
|
||||
|
||||
rvDelegate = RVDelegate.Builder<FansTeamTaskInfo>()
|
||||
.setLayoutManager(LinearLayoutManager(this))
|
||||
.setRecyclerView(binding.rvTask)
|
||||
.setAdapter(FansTeamTaskAdapter())
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextView(this, ResUtil.getString(R.string.erban_fansteam_fansteamjoinedactivity_01)))
|
||||
.build()
|
||||
|
||||
binding.llRank.setOnClickListener {
|
||||
DialogWebViewActivity.start(
|
||||
this,
|
||||
UriProvider.getFansTeamRankUrl(AvRoomDataManager.get().roomUid)
|
||||
)
|
||||
}
|
||||
|
||||
binding.ivHelp.setOnClickListener {
|
||||
showMorePopup(binding.ivHelp)
|
||||
}
|
||||
|
||||
fansTeamViewModel.loadTeamTaskInfo()
|
||||
|
||||
fansTeamViewModel.fansTeamJoinedInfoLiveData.observe(this) {
|
||||
it?.let {
|
||||
binding.ivAvatar.load(it.anchorAvatar)
|
||||
binding.tvFansTeamName.text = it.anchorNick.subAndReplaceDot(7) + ResUtil.getString(R.string.erban_fansteam_fansteamjoinedactivity_02)
|
||||
binding.tvFansTeamFansNum.text = "${it.teamNum}人"
|
||||
|
||||
binding.ivMeAvatar.load(it.memberAvatar)
|
||||
binding.tvValue.text = "親密值Lv.${it.levelSeq}"
|
||||
binding.tvCurrValue.text = "${it.levelExper}/${it.nextLevelExper}"
|
||||
binding.pbValue.max = it.nextLevelExper
|
||||
binding.pbValue.progress = it.levelExper
|
||||
|
||||
binding.ivRank0.load(it.avatarList.getOrNull(0))
|
||||
binding.ivRank1.load(it.avatarList.getOrNull(1))
|
||||
binding.ivRank2.load(it.avatarList.getOrNull(2))
|
||||
rvDelegate.setNewData(it.taskVos)
|
||||
}
|
||||
}
|
||||
|
||||
fansTeamViewModel.exitFansTeamLiveData.observe(this) {
|
||||
if (it == true) {
|
||||
"退出粉絲團成功!".toast()
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun showMorePopup(parent: View?) {
|
||||
if (parent == null) return
|
||||
|
||||
val contentView: View
|
||||
if (!this::popupWindow.isInitialized) {
|
||||
contentView =
|
||||
LayoutInflater.from(this).inflate(R.layout.popup_fans_team_more, null)
|
||||
popupWindow =
|
||||
PopupWindow(contentView, ScreenUtil.dip2px(124f), ScreenUtil.dip2px(98f))
|
||||
popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
popupWindow.isFocusable = true
|
||||
} else {
|
||||
contentView = popupWindow.contentView
|
||||
}
|
||||
contentView.findViewById<View>(R.id.tv_rule).setOnClickListener {
|
||||
DialogWebViewActivity.start(this, UriProvider.getFansTeamRuleUrl())
|
||||
popupWindow.dismiss()
|
||||
}
|
||||
contentView.findViewById<View>(R.id.tv_exit).setOnClickListener {
|
||||
dialogManager.showOkCancelDialog("退出後粉絲團後24小時內不能再次加入,確定退出嗎?", true) {
|
||||
popupWindow.dismiss()
|
||||
fansTeamViewModel.exitFansTeam()
|
||||
}
|
||||
|
||||
}
|
||||
popupWindow.showAsDropDown(
|
||||
parent,
|
||||
0,
|
||||
0,
|
||||
Gravity.END
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.activity.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.netease.nim.uikit.StatusBarUtil
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.base.BaseViewBindingActivity
|
||||
import com.chwl.app.common.EmptyViewHelper
|
||||
import com.chwl.app.databinding.ActivityFansTeamListBinding
|
||||
import com.chwl.app.ui.utils.RVDelegate
|
||||
import com.chwl.core.fansteam.bean.FansTeamInfo
|
||||
import com.chwl.library.annatation.ActLayoutRes
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
@ActLayoutRes(R.layout.activity_fans_team_list)
|
||||
class FansTeamListActivity : BaseViewBindingActivity<ActivityFansTeamListBinding>() {
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<FansTeamInfo>
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun start(context: Context) {
|
||||
val starter = Intent(context, FansTeamListActivity::class.java)
|
||||
context.startActivity(starter)
|
||||
}
|
||||
}
|
||||
|
||||
private var pageNum = 1
|
||||
private val pageSize = 20
|
||||
private val fansTeamViewModel: FansTeamViewModel by viewModels()
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
initTitleBar(ResUtil.getString(R.string.erban_fansteam_fansteamlistactivity_01))
|
||||
rvDelegate = RVDelegate.Builder<FansTeamInfo>()
|
||||
.setRefreshLayout(binding.swipeRefresh)
|
||||
.setLayoutManager(LinearLayoutManager(this))
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setAdapter(FansTeamListAdapter())
|
||||
.setPageSize(pageSize)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyTextView(this, ResUtil.getString(R.string.erban_fansteam_fansteamlistactivity_02)))
|
||||
.build()
|
||||
|
||||
binding.swipeRefresh.setOnRefreshListener {
|
||||
pageNum = 1
|
||||
fansTeamViewModel.loadJoinFansTeamList(pageNum, pageSize)
|
||||
}
|
||||
|
||||
rvDelegate.adapter.setOnLoadMoreListener({
|
||||
pageNum++
|
||||
fansTeamViewModel.loadJoinFansTeamList(pageNum, pageSize)
|
||||
}, binding.recyclerView)
|
||||
|
||||
fansTeamViewModel.loadJoinFansTeamList(pageNum, pageSize)
|
||||
fansTeamViewModel.joinFansTeamListLiveData.observe(this) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun needSteepStateBar() = true
|
||||
|
||||
override fun setStatusBar() {
|
||||
super.setStatusBar()
|
||||
StatusBarUtil.transparencyBar(this)
|
||||
StatusBarUtil.StatusBarLightMode(this)
|
||||
}
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.user.activity.UserInfoActivity
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils
|
||||
import com.chwl.core.fansteam.bean.FansTeamInfo
|
||||
|
||||
|
||||
class FansTeamListAdapter :
|
||||
BaseQuickAdapter<FansTeamInfo?, BaseViewHolder>(R.layout.item_fans_team_list) {
|
||||
override fun convert(helper: BaseViewHolder, item: FansTeamInfo?) {
|
||||
if (item == null) {
|
||||
return
|
||||
}
|
||||
|
||||
ImageLoadUtils.loadAvatar(
|
||||
mContext,
|
||||
item.anchorAvatar,
|
||||
helper.getView(R.id.iv_avatar)
|
||||
)
|
||||
|
||||
ImageLoadUtils.loadAvatar(
|
||||
mContext,
|
||||
item.icon,
|
||||
helper.getView(R.id.iv_nameplate)
|
||||
)
|
||||
helper.setText(R.id.tv_nickname, item.anchorNick)
|
||||
|
||||
helper.itemView.setOnClickListener {
|
||||
UserInfoActivity.Companion.start(mContext, item.teamUid)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import android.graphics.Color
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.graphics.toColorInt
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.ui.utils.load
|
||||
import com.chwl.core.fansteam.bean.FansTeamTaskInfo
|
||||
import com.chwl.library.utils.ResUtil
|
||||
|
||||
class FansTeamTaskAdapter :
|
||||
BaseQuickAdapter<FansTeamTaskInfo, BaseViewHolder>(R.layout.item_fans_team_task) {
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: FansTeamTaskInfo) {
|
||||
|
||||
helper.setText(R.id.tv_task_title, item.taskName)
|
||||
.setText(R.id.tv_task_desc, item.taskDesc)
|
||||
|
||||
val tvTaskStatus = helper.getView<TextView>(R.id.tv_task_status)
|
||||
tvTaskStatus.text = if (item.isFinished || item.awardVal == 0) {
|
||||
tvTaskStatus.setBackgroundResource(R.drawable.shape_f4f4f4_radius_4dp)
|
||||
tvTaskStatus.setTextColor("#FF999999".toColorInt())
|
||||
if (item.isFinished) ResUtil.getString(R.string.erban_fansteam_fansteamtaskadapter_01) else "${item.awardVal}/${item.totalNum}"
|
||||
} else {
|
||||
tvTaskStatus.setBackgroundResource(R.drawable.shape_ff4e7f_radius_4dp)
|
||||
tvTaskStatus.setTextColor(Color.WHITE)
|
||||
"${item.awardVal}/${item.totalNum}"
|
||||
}
|
||||
helper.getView<ImageView>(R.id.iv_task_logo).load(item.icon)
|
||||
}
|
||||
}
|
75
app/src/main/java/com/chwl/app/fansteam/FansTeamViewModel.kt
Normal file
75
app/src/main/java/com/chwl/app/fansteam/FansTeamViewModel.kt
Normal file
@@ -0,0 +1,75 @@
|
||||
package com.chwl.app.fansteam
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.fansteam.bean.FansTeamInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamInitInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamJoinInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamJoinedInfo
|
||||
import com.chwl.core.fansteam.FansTeamModel
|
||||
import com.chwl.core.bean.response.ListResult
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.utils.extension.toast
|
||||
|
||||
class FansTeamViewModel : BaseViewModel() {
|
||||
|
||||
private val _fansTeamJoinInfoLiveData = MutableLiveData<FansTeamJoinInfo>()
|
||||
val fansTeamJoinInfoLiveData: LiveData<FansTeamJoinInfo> = _fansTeamJoinInfoLiveData
|
||||
|
||||
private val _fansTeamInitInfoLiveData = MutableLiveData<FansTeamInitInfo>()
|
||||
val fansTeamInitInfoLiveData: LiveData<FansTeamInitInfo> = _fansTeamInitInfoLiveData
|
||||
|
||||
private val _fansTeamJoinedInfoLiveData = MutableLiveData<FansTeamJoinedInfo>()
|
||||
val fansTeamJoinedInfoLiveData: LiveData<FansTeamJoinedInfo> = _fansTeamJoinedInfoLiveData
|
||||
|
||||
private val _joinFansTeamListLiveData = MutableLiveData<ListResult<FansTeamInfo>>()
|
||||
val joinFansTeamListLiveData: LiveData<ListResult<FansTeamInfo>> = _joinFansTeamListLiveData
|
||||
|
||||
private val _exitFansTeamLiveData = MutableLiveData<Boolean>()
|
||||
val exitFansTeamLiveData: LiveData<Boolean> = _exitFansTeamLiveData
|
||||
|
||||
fun loadTeamJoinInfo() {
|
||||
safeLaunch {
|
||||
_fansTeamJoinInfoLiveData.value = FansTeamModel.getFansTeamJoinInfo()
|
||||
}
|
||||
}
|
||||
|
||||
fun loadTeamTaskInfo() {
|
||||
safeLaunch {
|
||||
_fansTeamJoinedInfoLiveData.value = FansTeamModel.getFansTeamTaskInfo()
|
||||
}
|
||||
}
|
||||
|
||||
fun loadFansTeamInitInfo() {
|
||||
if (AvRoomDataManager.get().roomUid == 0L) {
|
||||
return
|
||||
}
|
||||
safeLaunch {
|
||||
_fansTeamInitInfoLiveData.value = FansTeamModel.getFansTeamInitInfo()
|
||||
}
|
||||
}
|
||||
|
||||
fun exitFansTeam() {
|
||||
safeLaunch {
|
||||
FansTeamModel.outFansTeam()
|
||||
_exitFansTeamLiveData.value = true
|
||||
}
|
||||
}
|
||||
|
||||
fun loadJoinFansTeamList(pageNum: Int, pageSize: Int) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
it.message.toast()
|
||||
_joinFansTeamListLiveData.value = ListResult.failed(pageNum)
|
||||
},
|
||||
block = {
|
||||
_joinFansTeamListLiveData.value =
|
||||
ListResult.success(
|
||||
FansTeamModel.getJoinFansTeamList(pageNum, pageSize),
|
||||
pageNum
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
264
app/src/main/res/layout/activity_fans_team_join.xml
Normal file
264
app/src/main/res/layout/activity_fans_team_join.xml
Normal file
@@ -0,0 +1,264 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout 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="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="@drawable/fans_team_bg_join">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_help"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/fans_team_ic_help"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_avatar"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="36dp"
|
||||
android:src="@drawable/default_avatar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fans_team_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:textColor="#ff333333"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_avatar"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_avatar"
|
||||
tools:text="@string/layout_activity_fans_team_join_01" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fans_team_fans_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="@drawable/shape_white_20dp_round"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:textColor="#fffe3478"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_fans_team_name"
|
||||
tools:text="@string/layout_activity_fans_team_join_02" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_rank"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/shape_white_20dp_round"
|
||||
android:gravity="center"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingBottom="4dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_fans_team_name">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/fans_team_ic_fans" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_0"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_1"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_2"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_privilege"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:src="@drawable/fans_team_bg_privilege"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/iv_avatar" />
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_fans_nameplate"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:background="@drawable/shape_white_8dp_round"
|
||||
app:layout_constraintDimensionRatio="345:58"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/iv_privilege" />
|
||||
|
||||
<View
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
android:background="@drawable/shape_f4f4f4_radius_8dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintEnd_toEndOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintStart_toStartOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_fans_nameplate" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fans_nameplate"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:src="@drawable/default_cover"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bg_fans_nameplate"
|
||||
app:layout_constraintStart_toStartOf="@id/bg_fans_nameplate"
|
||||
app:layout_constraintTop_toTopOf="@id/bg_fans_nameplate" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_nameplate_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:textColor="#ff333333"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_nameplate_desc"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="@string/layout_activity_fans_team_join_03" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_nameplate_desc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#ff999999"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_fans_nameplate"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_nameplate_title"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_nameplate_title"
|
||||
tools:text="@string/layout_activity_fans_team_join_04" />
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_fans_gift"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:background="@drawable/shape_white_8dp_round"
|
||||
app:layout_constraintDimensionRatio="345:58"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bg_fans_nameplate" />
|
||||
|
||||
<View
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
android:background="@drawable/shape_f4f4f4_radius_8dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_fans_gift"
|
||||
app:layout_constraintEnd_toEndOf="@id/iv_fans_gift"
|
||||
app:layout_constraintStart_toStartOf="@id/iv_fans_gift"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_fans_gift" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fans_gift"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:src="@drawable/default_cover"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bg_fans_gift"
|
||||
app:layout_constraintStart_toStartOf="@id/bg_fans_gift"
|
||||
app:layout_constraintTop_toTopOf="@id/bg_fans_gift" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gift_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:textColor="#ff333333"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_gift_desc"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_fans_gift"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_fans_gift"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="@string/layout_activity_fans_team_join_05" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gift_desc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#ff999999"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_fans_gift"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_gift_title"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_gift_title"
|
||||
tools:text="@string/layout_activity_fans_team_join_06" />
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_join"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:background="@drawable/fans_team_bg_join_btn"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintDimensionRatio="345:48"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bg_fans_gift" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_join"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bg_join"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_join_logo"
|
||||
app:layout_constraintTop_toTopOf="@id/bg_join"
|
||||
tools:text="@string/layout_activity_fans_team_join_07" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_join_logo"
|
||||
android:layout_width="76dp"
|
||||
android:layout_height="75dp"
|
||||
android:layout_marginStart="15dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bg_join"
|
||||
app:layout_constraintStart_toStartOf="@id/bg_join"
|
||||
tools:src="@drawable/fans_team_ic_join_logo" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</FrameLayout>
|
193
app/src/main/res/layout/activity_fans_team_joined.xml
Normal file
193
app/src/main/res/layout/activity_fans_team_joined.xml
Normal file
@@ -0,0 +1,193 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout 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="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/fans_team_bg_joined"
|
||||
android:layout_gravity="bottom">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_help"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/fans_team_ic_more"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_avatar"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="36dp"
|
||||
android:src="@drawable/default_avatar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fans_team_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:textColor="#ff333333"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_avatar"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_avatar"
|
||||
tools:text="@string/layout_activity_fans_team_joined_01" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fans_team_fans_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="@drawable/shape_white_20dp_round"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:textColor="#fffe3478"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_fans_team_name"
|
||||
tools:text="@string/layout_activity_fans_team_joined_02" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_rank"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/shape_white_20dp_round"
|
||||
android:gravity="center"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingBottom="4dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_fans_team_name"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_fans_team_name">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/fans_team_ic_fans" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_0"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_1"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_rank_2"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@drawable/default_avatar" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_task_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:src="@drawable/fans_team_bg_task_title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/iv_avatar" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_task"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="200dp"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:overScrollMode="never"
|
||||
android:scrollbars="none"
|
||||
app:layout_constraintBottom_toTopOf="@id/view_me_info"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/iv_task_title" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view_me_info"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/white"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintDimensionRatio="375:88"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_me_avatar"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/default_avatar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/view_me_info" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_value"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:includeFontPadding="false"
|
||||
android:textColor="#ff333333"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_me_avatar"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_me_avatar"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="@string/layout_activity_fans_team_joined_03" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/pb_value"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:max="100"
|
||||
android:progress="50"
|
||||
android:progressDrawable="@drawable/fans_team_bg_pb"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_me_avatar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_value"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_curr_value"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:includeFontPadding="false"
|
||||
android:text="70/100"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/pb_value"
|
||||
app:layout_constraintEnd_toEndOf="@id/pb_value"
|
||||
app:layout_constraintStart_toStartOf="@id/pb_value"
|
||||
app:layout_constraintTop_toTopOf="@id/pb_value" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</FrameLayout>
|
35
app/src/main/res/layout/activity_fans_team_list.xml
Normal file
35
app/src/main/res/layout/activity_fans_team_list.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.chwl.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30" />
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:clipToPadding="false"
|
||||
android:paddingTop="10dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
</LinearLayout>
|
@@ -89,6 +89,64 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/layout_hour_rank" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fl_fans_team"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/layout_hour_rank"
|
||||
tools:visibility="visible">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fl_fans_team_join_tip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_fans_team_entrance"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="25dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginStart="8dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:text="@string/layout_fragment_single_room_02"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginStart="6dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/fans_team_ic_room_entrance" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fans_team_opt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:background="@drawable/bg_fans_team_entrance"
|
||||
android:drawableEnd="@drawable/fans_team_ic_room_love"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center"
|
||||
android:paddingStart="8dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:text="@string/layout_fragment_single_room_03"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<ViewStub
|
||||
android:id="@+id/vs_music_player"
|
||||
android:layout_width="0dp"
|
||||
|
50
app/src/main/res/layout/item_fans_team_list.xml
Normal file
50
app/src/main/res/layout/item_fans_team_list.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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:id="@+id/root_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="15dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="15dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
|
||||
<com.chwl.app.common.widget.CircleImageView
|
||||
android:id="@+id/iv_avatar"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_avatar"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_nickname"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:textColor="@color/color_333333"
|
||||
android:textSize="13sp"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/iv_avatar"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="@string/layout_item_fans_team_list_01" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_nameplate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="27dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
65
app/src/main/res/layout/item_fans_team_task.xml
Normal file
65
app/src/main/res/layout/item_fans_team_task.xml
Normal file
@@ -0,0 +1,65 @@
|
||||
<?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="match_parent"
|
||||
android:layout_height="58dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:background="@drawable/shape_white_8dp_round">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_task_logo"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:src="@drawable/default_cover"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_task_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:includeFontPadding="false"
|
||||
android:textColor="@color/color_333333"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_task_desc"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_task_logo"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_task_logo"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="@string/layout_item_fans_team_task_01" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_task_desc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:lines="1"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_task_logo"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_task_title"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_task_title"
|
||||
tools:text="@string/layout_item_fans_team_task_02" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_task_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:gravity="center"
|
||||
android:minWidth="48dp"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="0/20" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -262,5 +262,31 @@ public class UriProvider {
|
||||
public static String getRoomHourRankUrl(long roomUid) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/room_rank/hourRankLicense.html?roomUid=" + roomUid);
|
||||
}
|
||||
/**
|
||||
* 粉丝团规则
|
||||
*/
|
||||
public static String getFansTeamRuleUrl() {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/fans_club/rule.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 粉丝团排行
|
||||
*/
|
||||
public static String getFansTeamRankUrl(long roomUid) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/fans_club/fans_rank.html?roomUid=" + roomUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的粉丝团
|
||||
*/
|
||||
public static String getFansTeamMyFansUrl(long roomUid) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/fans_club/myfans.html?roomUid=" + roomUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开通粉丝团
|
||||
*/
|
||||
public static String getFansTeamOpenUrl(long roomUid) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/fans_club/nameplate.html?roomUid=" + roomUid);
|
||||
}
|
||||
}
|
||||
|
90
core/src/main/java/com/chwl/core/fansteam/FansTeamModel.kt
Normal file
90
core/src/main/java/com/chwl/core/fansteam/FansTeamModel.kt
Normal file
@@ -0,0 +1,90 @@
|
||||
package com.chwl.core.fansteam
|
||||
|
||||
import com.chwl.core.fansteam.bean.FansTeamInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamInitInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamJoinInfo
|
||||
import com.chwl.core.fansteam.bean.FansTeamJoinedInfo
|
||||
import com.chwl.core.base.BaseModel
|
||||
import com.chwl.core.bean.response.ServiceResult
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.utils.net.launchRequest
|
||||
import com.chwl.library.net.rxnet.RxNet
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Query
|
||||
|
||||
object FansTeamModel : BaseModel() {
|
||||
|
||||
private val api = RxNet.create(Api::class.java)
|
||||
|
||||
suspend fun getFansTeamJoinInfo(): FansTeamJoinInfo? =
|
||||
launchRequest {
|
||||
api.getFansTeamJoinInfo(AvRoomDataManager.get().roomUid)
|
||||
}
|
||||
|
||||
suspend fun getFansTeamTaskInfo(): FansTeamJoinedInfo? =
|
||||
launchRequest {
|
||||
api.getFansTeamTaskInfo(AvRoomDataManager.get().roomUid)
|
||||
}
|
||||
|
||||
suspend fun getFansTeamInitInfo(): FansTeamInitInfo? =
|
||||
launchRequest {
|
||||
api.getFansTeamInitInfo(AvRoomDataManager.get().roomUid)
|
||||
}
|
||||
|
||||
suspend fun outFansTeam(): String? =
|
||||
launchRequest {
|
||||
api.outFansTeam(AvRoomDataManager.get().roomUid)
|
||||
}
|
||||
|
||||
suspend fun getJoinFansTeamList(pageNum: Int, pageSize: Int): List<FansTeamInfo>? =
|
||||
launchRequest {
|
||||
api.getJoinFansTeamList(pageNum, pageSize)
|
||||
}
|
||||
|
||||
private interface Api {
|
||||
|
||||
/**
|
||||
* 加入粉丝团 --弹窗内容
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("anchorFansTeam/applyFansTeamPopInfoVo")
|
||||
suspend fun getFansTeamJoinInfo(@Query("teamUid") roomUid: Long): ServiceResult<FansTeamJoinInfo>
|
||||
|
||||
/**
|
||||
* 粉丝团任务列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("anchorFansTeam/getFansTaskInfo")
|
||||
suspend fun getFansTeamTaskInfo(@Query("teamUid") roomUid: Long): ServiceResult<FansTeamJoinedInfo>
|
||||
|
||||
/**
|
||||
* 进房初始化当前用户与房间粉丝团关系
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/anchorFansTeam/initInRoomFansTeam")
|
||||
suspend fun getFansTeamInitInfo(@Query("teamUid") roomUid: Long): ServiceResult<FansTeamInitInfo>
|
||||
|
||||
/**
|
||||
* 退出粉丝团
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/anchorFansTeam/outAnchorFansTeam")
|
||||
suspend fun outFansTeam(@Query("teamUid") roomUid: Long): ServiceResult<String>
|
||||
|
||||
/**
|
||||
* 我的粉丝团列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/anchorFansTeam/getJoinFansTeamList")
|
||||
suspend fun getJoinFansTeamList(
|
||||
@Query("page") page: Int,
|
||||
@Query("pageSize") pageSize: Int
|
||||
): ServiceResult<List<FansTeamInfo>>
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class FansTeamInfo(
|
||||
val anchorAvatar: String = "",
|
||||
val anchorNick: String = "",
|
||||
val icon: String = "",
|
||||
val teamUid: Long = 0
|
||||
)
|
@@ -0,0 +1,13 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class FansTeamInitInfo(
|
||||
val anchorFansNum: Int = 0,
|
||||
val fansLevelSeq: Int = 0,
|
||||
val hasFansTeamCurrentRoom: Boolean = false,
|
||||
val isAnchorFans: Boolean = false,
|
||||
val isCurrentRoomAnchor: Boolean = false,
|
||||
val isRedPop: Boolean = false
|
||||
)
|
@@ -0,0 +1,16 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class FansTeamJoinInfo(
|
||||
val anchorAvatar: String = "",
|
||||
val anchorNick: String = "",
|
||||
val avatarList: List<String> = listOf(),
|
||||
val isJoinLimit: Boolean = false,
|
||||
val privilegeConfigVos: List<PrivilegeConfigVo> = listOf(),
|
||||
val teamId: Int = 0,
|
||||
val teamNum: Int = 0,
|
||||
val teamUid: Int = 0,
|
||||
val taskVos: List<FansTeamTaskInfo>? = null
|
||||
)
|
@@ -0,0 +1,18 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class FansTeamJoinedInfo(
|
||||
val anchorAvatar: String = "",
|
||||
val anchorNick: String = "",
|
||||
val avatarList: List<String> = listOf(),
|
||||
val levelExper: Int = 0,
|
||||
val levelSeq: Int = 0,
|
||||
val memberAvatar: String = "",
|
||||
val memberUid: Int = 0,
|
||||
val nextLevelExper: Int = 0,
|
||||
val taskVos: List<FansTeamTaskInfo> = listOf(),
|
||||
val teamNum: Int = 0,
|
||||
val teamUid: Int = 0
|
||||
)
|
@@ -0,0 +1,15 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
@Keep
|
||||
data class FansTeamTaskInfo(
|
||||
val awardVal: Int = 0,
|
||||
val icon: String = "",
|
||||
val taskId: String = "",
|
||||
val isFinished: Boolean = false,
|
||||
val taskCode: String = "",
|
||||
val taskDesc: String = "",
|
||||
val taskName: String = "",
|
||||
val totalNum: Int = 0
|
||||
)
|
@@ -0,0 +1,18 @@
|
||||
package com.chwl.core.fansteam.bean
|
||||
|
||||
import androidx.annotation.Keep
|
||||
import com.chwl.core.gift.bean.GiftInfo
|
||||
@Keep
|
||||
data class PrivilegeConfigVo(
|
||||
val createTime: String = "",
|
||||
val description: String = "",
|
||||
val icon: String = "",
|
||||
val isShow: Int = 0,
|
||||
val name: String = "",
|
||||
val normalId: Int = 0,
|
||||
val privilegeId: Int = 0,
|
||||
val seq: Int = 0,
|
||||
val status: Int = 0,
|
||||
val type: Int = 0,//特权类型 1铭牌 2专属礼物 3入团礼物
|
||||
val giftVo: GiftInfo? = null
|
||||
)
|
Reference in New Issue
Block a user