From 809c923c2c1ad639aab9a7cb20f1e00969f2e130 Mon Sep 17 00:00:00 2001
From: wushaocheng <15876365887@163.com>
Date: Thu, 3 Nov 2022 20:45:35 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E8=B5=A0=E7=A4=BC=E7=89=A9=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 4 +
.../erban/common/CommonPagerAdapter.kt | 14 +
.../yizhuan/erban/home/fragment/MeFragment.kt | 33 +-
.../com/yizhuan/erban/pay/GiveGoldModel.kt | 39 +-
.../erban/pay/activity/GiveGoldActivity.kt | 8 +-
.../pay/activity/GiveGoldDetailActivity.kt | 115 +++++
.../pay/activity/GiveGoldToUserActivity.kt | 480 +++++++++++-------
.../pay/adapter/GiveDiamondDetailAdapter.kt | 23 +
.../erban/pay/adapter/GiveGiftAdapter.java | 34 ++
.../pay/adapter/GiveGiftDetailAdapter.kt | 24 +
.../erban/pay/fragment/GiveDiamondFragment.kt | 75 +++
.../erban/pay/fragment/GiveGiftFragment.kt | 76 +++
.../erban/ui/user/UserInfoGiftFragment.java | 2 -
.../widget/viewpager/NoScrollViewPager.java | 46 ++
app/src/main/res/color/color_donation_btn.xml | 9 +
.../drawable-xhdpi/donation_arrow_right.webp | Bin 0 -> 962 bytes
.../ic_give_diamond_detail.webp | Bin 0 -> 5970 bytes
.../res/drawable-xhdpi/me_clean_diamond.webp | Bin 2966 -> 2984 bytes
.../res/drawable/bg_common_disable_select.xml | 9 +
.../main/res/drawable/bg_common_select.xml | 5 +
.../res/drawable/bg_common_select_normal.xml | 13 +
app/src/main/res/drawable/bg_f3f5fa_r4.xml | 6 +
.../res/drawable/bg_give_gift_bg_selector.xml | 5 +
.../bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml | 32 ++
.../res/layout/activity_give_gold_to_user.xml | 194 +++++--
.../main/res/layout/fragment_give_diamond.xml | 22 +
.../main/res/layout/fragment_give_gift.xml | 22 +
app/src/main/res/layout/fragment_me.xml | 2 +-
.../res/layout/item_give_diamond_detail.xml | 57 +++
app/src/main/res/layout/item_give_gift.xml | 55 ++
.../main/res/layout/item_give_gift_detail.xml | 44 ++
app/src/main/res/layout/item_lately_give.xml | 9 +
app/src/main/res/values/colors.xml | 1 +
app/src/main/res/values/strings.xml | 12 +
.../res/layout/activity_give_gold.xml | 6 +-
.../res/layout/activity_give_gold_detail.xml | 32 ++
.../home/model/HomeModel.kt | 40 ++
.../gift/bean/GiftInfo.java | 2 +
.../initial/bean/InitInfo.java | 7 +
.../user/bean/DiamondGiveHistoryInfo.java | 12 +-
nim_uikit/res/values/colors.xml | 1 +
41 files changed, 1322 insertions(+), 248 deletions(-)
create mode 100644 app/src/main/java/com/yizhuan/erban/common/CommonPagerAdapter.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt
create mode 100644 app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java
create mode 100644 app/src/main/res/color/color_donation_btn.xml
create mode 100644 app/src/main/res/drawable-xhdpi/donation_arrow_right.webp
create mode 100644 app/src/main/res/drawable-xhdpi/ic_give_diamond_detail.webp
create mode 100644 app/src/main/res/drawable/bg_common_disable_select.xml
create mode 100644 app/src/main/res/drawable/bg_common_select.xml
create mode 100644 app/src/main/res/drawable/bg_common_select_normal.xml
create mode 100644 app/src/main/res/drawable/bg_f3f5fa_r4.xml
create mode 100644 app/src/main/res/drawable/bg_give_gift_bg_selector.xml
create mode 100644 app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml
create mode 100644 app/src/main/res/layout/fragment_give_diamond.xml
create mode 100644 app/src/main/res/layout/fragment_give_gift.xml
create mode 100644 app/src/main/res/layout/item_give_diamond_detail.xml
create mode 100644 app/src/main/res/layout/item_give_gift.xml
create mode 100644 app/src/main/res/layout/item_give_gift_detail.xml
create mode 100644 app/src/module_community/res/layout/activity_give_gold_detail.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a23e7b20f..99da8afaa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -857,6 +857,10 @@
android:name=".pay.activity.GiveGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
+
) :FragmentPagerAdapter(fm,
+ BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){
+ override fun getCount()=list.size
+
+ override fun getItem(position: Int)=list[position]
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
index e57817fe8..c7ecca48b 100644
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
@@ -233,22 +233,25 @@ class MeFragment : BaseFragment(), View.OnClickListener {
mBinding.tvConstellation.text = star
setUserLevel(it.userLevelVo)
setWalletInfo()
- }
- val initInfo = InitialModel.get().cacheInitInfo
- val list = initInfo?.giveDiamondErbanNoList
- if (list?.contains(mUserInfo?.erbanNo ?: 0L) == true) {
- mBinding.tvMyRoomRight.visibility = View.GONE
- mBinding.tvMyRoom.visibility = View.VISIBLE
- mBinding.tvEarnRight.visibility = View.GONE
- mBinding.tvEarn.visibility = View.VISIBLE
- mBinding.llCleanDiamonds.visibility = View.VISIBLE
- } else {
- mBinding.tvMyRoomRight.visibility = View.VISIBLE
- mBinding.tvMyRoom.visibility = View.GONE
- mBinding.tvEarnRight.visibility = View.VISIBLE
- mBinding.tvEarn.visibility = View.GONE
- mBinding.llCleanDiamonds.visibility = View.GONE
+ val initInfo = InitialModel.get().cacheInitInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = it.userLevelVo.experLevelSeq
+ if (diamondList?.contains(it.erbanNo) == true || giftList?.contains(it.erbanNo) == true
+ || levelSep > (initInfo?.giveDiamondExperLevel ?: 0) || levelSep > (initInfo?.giveGiftExperLevel ?: 0)) {
+ mBinding.tvMyRoomRight.visibility = View.GONE
+ mBinding.tvMyRoom.visibility = View.VISIBLE
+ mBinding.tvEarnRight.visibility = View.GONE
+ mBinding.tvEarn.visibility = View.VISIBLE
+ mBinding.llCleanDiamonds.visibility = View.VISIBLE
+ } else {
+ mBinding.tvMyRoomRight.visibility = View.VISIBLE
+ mBinding.tvMyRoom.visibility = View.GONE
+ mBinding.tvEarnRight.visibility = View.VISIBLE
+ mBinding.tvEarn.visibility = View.GONE
+ mBinding.llCleanDiamonds.visibility = View.GONE
+ }
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt b/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
index 9455f32d4..dc0fe10e5 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
@@ -11,12 +11,20 @@ import com.yizhuan.xchat_android_core.utils.toast
class GiveGoldModel : BaseViewModel() {
private val _diamondGiveHistoryLiveData = MutableLiveData?>()
- val diamondGiveHistoryLiveData: MutableLiveData?> = _diamondGiveHistoryLiveData
+ val diamondGiveHistoryLiveData: MutableLiveData?> =
+ _diamondGiveHistoryLiveData
private val _searchUserLiveData = MutableLiveData()
val searchUserLiveData: MutableLiveData = _searchUserLiveData
- fun getDiamondListInfo(pageNum:Int, pageSize: Int) {
+ private val _giveGiftLiveData = MutableLiveData()
+ val giveGiftLiveData: MutableLiveData = _giveGiftLiveData
+
+ private val _giveDetailLiveData = MutableLiveData?>()
+ val giveDetailLiveData: MutableLiveData?> =
+ _giveDetailLiveData
+
+ fun getDiamondListInfo(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
_diamondGiveHistoryLiveData.value = ListResult.failed(pageNum)
@@ -28,7 +36,7 @@ class GiveGoldModel : BaseViewModel() {
)
}
- fun getSearchUserInfo(erbanNo:Long) {
+ fun getSearchUserInfo(erbanNo: Long) {
safeLaunch(
true,
onError = {
@@ -41,4 +49,29 @@ class GiveGoldModel : BaseViewModel() {
)
}
+ fun giveGift(toUid: Long, giftId: Int, giftNum: Int) {
+ safeLaunch(
+ true,
+ onError = {
+ it.message.toast()
+ _giveGiftLiveData.value = null
+ },
+ block = {
+ _giveGiftLiveData.value = HomeModel.giveGift(toUid, giftId, giftNum)
+ }
+ )
+ }
+
+ fun giveDetailInfo(uid: Long, type: Int, pageNum: Int, pageSize: Int) {
+ safeLaunch(
+ onError = {
+ _giveDetailLiveData.value = ListResult.failed(pageNum)
+ },
+ block = {
+ val result = HomeModel.getGiveDetail(uid, type, pageNum, pageSize)
+ _giveDetailLiveData.value = ListResult.success(result, pageNum)
+ }
+ )
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
index a92d6c12e..82d79e6d7 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
@@ -17,6 +17,7 @@ import com.yizhuan.erban.databinding.ActivityGiveGoldBinding
import com.yizhuan.erban.pay.GiveGoldModel
import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.gift.GiftModel
import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
@@ -40,7 +41,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
}
override fun init() {
- initTitleBar(ResUtil.getString(R.string.me_clean_diamond))
+ initTitleBar(ResUtil.getString(R.string.me_donation))
binding.etSearch.setOnEditorActionListener(OnEditorActionListener { v, actionId, event -> //以下方法防止两次发送请求
if (actionId == EditorInfo.IME_ACTION_SEARCH && event != null || event != null && event.keyCode == KeyEvent.KEYCODE_ENTER) {
if (event.action == KeyEvent.ACTION_UP) { //发送请求
@@ -80,9 +81,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
.setRecyclerView(binding.recyclerView)
.build()
mAdapter.setOnItemClickListener { _, _, position ->
- mAdapter.getItem(position)?.let {
- GiveGoldToUserActivity.start(this, it)
- }
+ mAdapter.getItem(position)?.targetUid?.let { GiveGoldDetailActivity.start(this, it) }
}
mAdapter.setOnLoadMoreListener({
loadData(false)
@@ -102,6 +101,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
if (it) dialogManager.showProgressDialog(this)
else dialogManager.dismissDialog()
}
+ GiftModel.get().knapList
}
override fun onResume() {
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt
new file mode 100644
index 000000000..89c0c0bb2
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt
@@ -0,0 +1,115 @@
+package com.yizhuan.erban.pay.activity
+
+import android.content.Context
+import android.content.Intent
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import androidx.viewpager.widget.ViewPager
+import com.netease.nim.uikit.StatusBarUtil
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityGiveGoldDetailBinding
+import com.yizhuan.erban.pay.fragment.GiveDiamondFragment
+import com.yizhuan.erban.pay.fragment.GiveGiftFragment
+import com.yizhuan.erban.ui.user.adapter.CommonWrapIndicatorAdapter
+import com.yizhuan.erban.ui.user.adapter.UserInfoPagerAdapter
+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.initial.InitialModel
+import com.yizhuan.xchat_android_core.user.UserModel
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+/**
+ * 轉贈鉆石頁面
+ */
+class GiveGoldDetailActivity : BaseViewBindingActivity() {
+
+ companion object {
+ fun start(context: Context, uid: Long) {
+ val intent = Intent(context, GiveGoldDetailActivity::class.java)
+ intent.putExtra("uid", uid)
+ context.startActivity(intent)
+ }
+ }
+
+ override fun init() {
+ initTitleBar(ResUtil.getString(R.string.me_donation_detail))
+ initDetail()
+ }
+
+ /**
+ * 轉贈詳情
+ */
+ private fun initDetail() {
+ val uid = intent.extras?.getLong("uid", 0L) ?: 0L
+
+ val initInfo = InitialModel.get().cacheInitInfo
+ val userInfo = UserModel.get().cacheLoginUserInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = userInfo?.userLevelVo?.experLevelSeq ?: 0
+
+ val viewPager: ViewPager = binding.viewPagerDetail
+ val magicIndicator: MagicIndicator = binding.magicIndicator
+ val fragmentList: MutableList = ArrayList()
+ val pagerAdapter = UserInfoPagerAdapter(supportFragmentManager, fragmentList)
+ val tagList: MutableList = ArrayList()
+ if (diamondList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveDiamondExperLevel
+ ?: 0)
+ ) {
+ tagList.add(getString(R.string.diamond))
+ fragmentList.add(GiveDiamondFragment.newInstance(uid))
+ }
+ if (giftList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveGiftExperLevel
+ ?: 0)
+ ) {
+ tagList.add(getString(R.string.gift_action))
+ fragmentList.add(GiveGiftFragment.newInstance(uid))
+ }
+ if (tagList.size == 0) {
+ return
+ }else if(tagList.size == 1){
+ binding.magicIndicator.visibility = View.GONE
+ }
+ val commonNavigator = CommonNavigator(context)
+ commonNavigator.isAdjustMode = true//自我调节位置,实现自我平分
+ val magicIndicatorAdapter = CommonWrapIndicatorAdapter(context, tagList)
+ magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
+ viewPager.currentItem = position
+ }
+ commonNavigator.adapter = magicIndicatorAdapter
+ magicIndicator.navigator = commonNavigator
+ commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
+ viewPager.adapter = pagerAdapter
+ ViewPagerHelper.bind(magicIndicator, viewPager)
+ viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+ }
+
+ override fun onPageSelected(position: Int) {
+ viewPager.requestLayout()
+ }
+
+ override fun onPageScrollStateChanged(state: Int) {}
+ })
+
+ }
+
+ override fun setStatusBar() {
+ super.setStatusBar()
+ StatusBarUtil.transparencyBar(this)
+ StatusBarUtil.StatusBarLightMode(this)
+ }
+
+ override fun needSteepStateBar(): Boolean {
+ return true
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
index 4d2b5011a..6e3449922 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
@@ -3,39 +3,51 @@ package com.yizhuan.erban.pay.activity
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
-import android.os.Bundle
import android.text.Editable
import android.text.InputFilter
import android.text.InputFilter.LengthFilter
import android.text.TextWatcher
+import android.util.SparseArray
+import android.view.View
+import android.view.ViewGroup
+import androidx.activity.viewModels
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.PagerAdapter
+import com.chad.library.adapter.base.BaseQuickAdapter
import com.jungly.gridpasswordview.GridPasswordView
import com.netease.nim.uikit.StatusBarUtil
import com.yizhuan.erban.R
-import com.yizhuan.erban.base.BaseActivity
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityGiveGoldToUserBinding
+import com.yizhuan.erban.miniworld.listener.DoubleClickCheckListener
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.adapter.GiveGiftAdapter
import com.yizhuan.erban.pay.password.GiveGoldPassWordFragment
import com.yizhuan.erban.ui.setting.ModifyPwdActivity
import com.yizhuan.erban.ui.utils.ImageLoadUtils
+import com.yizhuan.erban.ui.widget.OnPageSelectedListener
import com.yizhuan.erban.ui.widget.dialog.CommonTipDialog
import com.yizhuan.erban.ui.widget.dialog.GiveDiamondTipDialog
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
+import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration
import com.yizhuan.xchat_android_core.DemoCache
+import com.yizhuan.xchat_android_core.gift.GiftModel
+import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
+import com.yizhuan.xchat_android_core.initial.InitialModel
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.user.UserModel
-import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
import com.yizhuan.xchat_android_core.user.bean.SearchUserInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
import kotlinx.android.synthetic.main.activity_give_gold_to_user.*
-class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChangedListener,
+class GiveGoldToUserActivity : BaseViewBindingActivity(),
+ GridPasswordView.OnPasswordChangedListener,
TextWatcher {
- companion object {
- @JvmStatic
- fun start(context: Context, user: DiamondGiveHistoryInfo) {
- val intent = Intent(context, GiveGoldToUserActivity::class.java)
- intent.putExtra("user", user)
- context.startActivity(intent)
- }
+ private val giveGoldModel: GiveGoldModel by viewModels()
+ companion object {
@JvmStatic
fun start(context: Context, searchUser: SearchUserInfo) {
val intent = Intent(context, GiveGoldToUserActivity::class.java)
@@ -44,17 +56,13 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
}
}
- private var userInfo: DiamondGiveHistoryInfo? = null
private var searchUserInfo: SearchUserInfo? = null
private var passWordFragment: GiveGoldPassWordFragment? = null
+ private var selectGiftPos = -1
+ private var giftAllCount = -1
+ private var giftId = -1
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_give_gold_to_user)
- userInfo = intent.getSerializableExtra("user") as DiamondGiveHistoryInfo?
- searchUserInfo = intent.getSerializableExtra("searchUser") as SearchUserInfo?
- init()
- }
+ private var centerIndex = 0
override fun setStatusBar() {
super.setStatusBar()
@@ -66,153 +74,278 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
return true
}
- @SuppressLint("SetTextI18n")
- private fun init() {
- initTitleBar(ResUtil.getString(R.string.me_clean_diamond))
+ override fun init() {
+ initTitleBar(ResUtil.getString(R.string.donation_to))
+ searchUserInfo = intent.getSerializableExtra("searchUser") as SearchUserInfo?
+ searchUserInfo?.apply {
+ binding.tvId.text = "ID:${erbanNo}"
+ binding.tvNickname.text = nick
+ ImageLoadUtils.loadAvatar(context, avatar, binding.ivAvatar)
+ }
+ val initInfo = InitialModel.get().cacheInitInfo
+ val userInfo = UserModel.get().cacheLoginUserInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = userInfo?.userLevelVo?.experLevelSeq ?: 0
+ if (diamondList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveDiamondExperLevel
+ ?: 0)
+ ) {
+ binding.tvGiftTab.visibility = View.VISIBLE
+ } else {
+ binding.tvGiftTab.visibility = View.GONE
+ }
+ if (giftList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveGiftExperLevel
+ ?: 0)
+ ) {
+ binding.tvGiftTab.visibility = View.VISIBLE
+ } else {
+ binding.tvGiftTab.visibility = View.GONE
+ }
+ binding.viewPagerEntrance.addOnPageChangeListener(object : OnPageSelectedListener() {
+ override fun onPageSelected(position: Int) {
+ centerIndex = position
+ binding.magicIndicatorEntrance.setSelectedPage(position)
+ }
+ })
+ initDiamond()
+ initGift()
+ initListener()
+ giveGoldModel.loadingLiveData.observe(this) {
+ if (it) dialogManager.showProgressDialog(this)
+ else dialogManager.dismissDialog()
+ }
+ giveGoldModel.giveGiftLiveData.observe(this) {
+ it?.let {
+ toast(getString(R.string.gift_give_success))
+ finish()
+ }
+ }
+ }
+
+ private fun initListener() {
+ binding.tvSure.setOnClickListener {
+ val initInfo = DemoCache.readInitInfo()
+ if (binding.groupDiamond.visibility == View.VISIBLE) {
+ searchUserInfo?.apply {
+ val gold = binding.mEditGold.text.toString().toInt()
+ if (gold <= 0) {
+ toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
+ return@setOnClickListener
+ }
+ UserModel.get().cacheLoginUserInfo?.let {
+ if (!it.isBindPaymentPwd) {
+ val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
+ tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
+ tipDialog.setOkText(getString(R.string.to_setting))
+ tipDialog.setOnActionListener(
+ object : CommonTipDialog.OnActionListener {
+ override fun onOk() {
+ ModifyPwdActivity.start(
+ this@GiveGoldToUserActivity,
+ ModifyPwdActivity.PAY_PWD
+ )
+ }
+ }
+ )
+ tipDialog.show()
+ } else {
+ val rateGold = initInfo.giveDiamondRate * 100
+ val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
+ tipDialog.setTvDiamond(gold.toString())
+ tipDialog.setTipMsg(getString(R.string.give_gold_to_user, nick))
+ if (rateGold == 0.0) {
+ tipDialog.setTipMessageGone(true)
+ } else {
+ tipDialog.setTvSeCharge("${rateGold.toInt()}%")
+ val goldNew = gold + (gold * initInfo.giveDiamondRate)
+ tipDialog.setTvConsumeDiamond(
+ getString(
+ R.string.consume_diamond_num,
+ goldNew.toString()
+ )
+ )
+ }
+ tipDialog.setOnActionListener(
+ object : GiveDiamondTipDialog.OnActionListener {
+ override fun onOk() {
+ GiveGoldPassWordFragment.newInstance(
+ supportFragmentManager,
+ gold.toString(),
+ nick,
+ ""
+ )
+ .apply {
+ passWordFragment = this
+ setListener(this@GiveGoldToUserActivity)
+ }
+ }
+ }
+ )
+ tipDialog.show()
+ }
+ } ?: run {
+ toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
+ return@setOnClickListener
+ }
+ }
+ } else {//赠送礼物
+ searchUserInfo?.apply {
+ val giftNum = binding.editGift.text.toString().toInt()
+ if (selectGiftPos < 0) {
+ toast(ResUtil.getString(R.string.please_select_gift))
+ return@setOnClickListener
+ } else if (giftNum == 0) {
+ toast(ResUtil.getString(R.string.please_enter_gift_num))
+ return@setOnClickListener
+ } else if (giftNum > giftAllCount) {
+ toast(ResUtil.getString(R.string.gift_num_fail))
+ return@setOnClickListener
+ }
+ giveGoldModel.giveGift(uid, giftId, giftNum)
+ }
+ }
+ }
+ }
+
+ private fun initDiamond() {
+ if (binding.tvGiftTab.visibility == View.VISIBLE) {
+ binding.tvGiftTab.isSelected = false
+ binding.groupGift.visibility = View.GONE
+ }
val initInfo = DemoCache.readInitInfo()
val length = initInfo.giveDiamondOnceLimitNum.toInt().toString().length
- mEditGold.text.filters = arrayOf(LengthFilter(length))
- userInfo?.apply {
- tvId.text = "ID:${targetErbanNo}"
- tvNickname.text = targetNick
- ImageLoadUtils.loadAvatar(context, targetAvatar, ivAvatar)
-
- tvSure.setOnClickListener {
- val gold = mEditGold.text.toString().toInt()
- if (gold <= 0) {
- toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
- return@setOnClickListener
- }
- UserModel.get().cacheLoginUserInfo?.let {
- if (!it.isBindPaymentPwd) {
- val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
- tipDialog.setOkText(getString(R.string.to_setting))
- tipDialog.setOnActionListener(
- object : CommonTipDialog.OnActionListener {
- override fun onOk() {
- ModifyPwdActivity.start(
- this@GiveGoldToUserActivity,
- ModifyPwdActivity.PAY_PWD
- )
- }
- }
- )
- tipDialog.show()
- } else {
- val rateGold = initInfo.giveDiamondRate * 100
- val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTvDiamond(gold.toString())
- tipDialog.setTipMsg(getString(R.string.give_gold_to_user, targetNick))
- if (rateGold == 0.0) {
- tipDialog.setTipMessageGone(true)
- } else {
- tipDialog.setTvSeCharge("${rateGold.toInt()}%")
- val goldNew = gold + (gold * initInfo.giveDiamondRate)
- tipDialog.setTvConsumeDiamond(
- getString(
- R.string.consume_diamond_num,
- goldNew.toString()
- )
- )
- }
- tipDialog.setOnActionListener(
- object : GiveDiamondTipDialog.OnActionListener {
- override fun onOk() {
- GiveGoldPassWordFragment.newInstance(
- supportFragmentManager,
- gold.toString(),
- targetNick,
- ""
- )
- .apply {
- passWordFragment = this
- setListener(this@GiveGoldToUserActivity)
- }
- }
- }
- )
- tipDialog.show()
- }
- } ?: run {
- toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
- return@setOnClickListener
- }
- }
- }
- searchUserInfo?.apply {
- tvId.text = "ID:${erbanNo}"
- tvNickname.text = nick
- ImageLoadUtils.loadAvatar(context, avatar, ivAvatar)
-
- tvSure.setOnClickListener {
- val gold = mEditGold.text.toString().toInt()
- if (gold <= 0) {
- toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
- return@setOnClickListener
- }
- UserModel.get().cacheLoginUserInfo?.let {
- if (!it.isBindPaymentPwd) {
- val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
- tipDialog.setOkText(getString(R.string.to_setting))
- tipDialog.setOnActionListener(
- object : CommonTipDialog.OnActionListener {
- override fun onOk() {
- ModifyPwdActivity.start(
- this@GiveGoldToUserActivity,
- ModifyPwdActivity.PAY_PWD
- )
- }
- }
- )
- tipDialog.show()
- } else {
- val rateGold = initInfo.giveDiamondRate * 100
- val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTvDiamond(gold.toString())
- tipDialog.setTipMsg(getString(R.string.give_gold_to_user, nick))
- if (rateGold == 0.0) {
- tipDialog.setTipMessageGone(true)
- } else {
- tipDialog.setTvSeCharge("${rateGold.toInt()}%")
- val goldNew = gold + (gold * initInfo.giveDiamondRate)
- tipDialog.setTvConsumeDiamond(
- getString(
- R.string.consume_diamond_num,
- goldNew.toString()
- )
- )
- }
- tipDialog.setOnActionListener(
- object : GiveDiamondTipDialog.OnActionListener {
- override fun onOk() {
- GiveGoldPassWordFragment.newInstance(
- supportFragmentManager,
- gold.toString(),
- nick,
- ""
- )
- .apply {
- passWordFragment = this
- setListener(this@GiveGoldToUserActivity)
- }
- }
- }
- )
- tipDialog.show()
- }
- } ?: run {
- toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
- return@setOnClickListener
- }
- }
- }
- mTvDiamond.text = getString(
+ binding.mEditGold.text.filters = arrayOf(LengthFilter(length))
+ binding.mTvDiamond.text = getString(
R.string.my_diamond,
PayModel.get().currentWalletInfo?.diamondNum?.toString() ?: "0"
)
- mEditGold.addTextChangedListener(this)
+ binding.mEditGold.addTextChangedListener(this)
+ binding.tvDiamondTab.isSelected = true
+ binding.tvDiamondTab.setOnClickListener {
+ if (binding.tvGiftTab.visibility == View.VISIBLE) {
+ binding.tvGiftTab.isSelected = false
+ binding.groupGift.visibility = View.GONE
+ binding.tvDiamondTab.isSelected = true
+ binding.groupDiamond.visibility = View.VISIBLE
+ }
+ }
+ }
+
+ private fun initGift() {
+ val giftList = GiftModel.get().knapList
+ if (binding.tvDiamondTab.visibility == View.GONE) {
+ binding.tvGiftTab.isSelected = true
+ binding.tvSure.isEnabled = true
+ }
+// giftList.map { it.isSelected = false }
+ val list = transformList(giftList, 8)
+ binding.magicIndicatorEntrance.initIndicator(list.size)
+ binding.magicIndicatorEntrance.setSelectedPage(centerIndex)
+ binding.magicIndicatorEntrance.visibility =
+ if (list.size > 1) View.VISIBLE else View.INVISIBLE
+ binding.viewPagerEntrance.adapter = object : PagerAdapter() {
+ var cacheItemView = SparseArray()
+ override fun getCount(): Int {
+ return list.size
+ }
+
+ override fun isViewFromObject(view: View, `object`: Any): Boolean {
+ return view == `object`
+ }
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val recyclerView: RecyclerView
+ val giveGiftAdapter: GiveGiftAdapter
+ if (cacheItemView[position] == null) {
+ recyclerView = RecyclerView(context)
+ var lp = recyclerView.layoutParams
+ if (lp == null) {
+ lp = ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ }
+ recyclerView.layoutParams = lp
+ recyclerView.layoutManager = GridLayoutManager(context, 4)
+ recyclerView.addItemDecoration(
+ GridSpacingItemNewDecoration(
+ UIUtil.dip2px(
+ context,
+ 18.0
+ ), UIUtil.dip2px(context, 10.0), true
+ )
+ )
+ giveGiftAdapter = GiveGiftAdapter()
+ giveGiftAdapter.onItemClickListener = object : DoubleClickCheckListener() {
+ override fun onItemClickSingle(
+ adapter: BaseQuickAdapter<*, *>?,
+ view: View,
+ position: Int
+ ) {
+ val oldBean = giveGiftAdapter.getItem(selectGiftPos)
+ oldBean?.isSelected = false
+ giveGiftAdapter.notifyItemChanged(selectGiftPos)
+ val bean = giveGiftAdapter.getItem(position)
+ bean?.isSelected = true
+ giveGiftAdapter.notifyItemChanged(position)
+ selectGiftPos = position
+ giftAllCount = giveGiftAdapter.getItem(position)?.count ?: -1
+ giftId = giveGiftAdapter.getItem(position)?.giftId ?: -1
+ }
+ }
+ recyclerView.adapter = giveGiftAdapter
+ } else {
+ recyclerView = cacheItemView[position]
+ giveGiftAdapter = recyclerView.adapter as GiveGiftAdapter
+ }
+ giveGiftAdapter.setNewData(list[position])
+ container.addView(recyclerView)
+ return recyclerView
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+ val recyclerView = cacheItemView[position]
+ container.removeView(recyclerView)
+ }
+ }
+ binding.viewPagerEntrance.setCurrentItem(centerIndex, false)
+ binding.editGift.addTextChangedListener(this)
+ binding.tvGiftTab.setOnClickListener {
+ if (binding.tvDiamondTab.visibility == View.VISIBLE) {
+ binding.tvDiamondTab.isSelected = false
+ binding.groupDiamond.visibility = View.GONE
+ binding.tvGiftTab.isSelected = true
+ binding.groupGift.visibility = View.VISIBLE
+ binding.tvSure.isEnabled = true
+ }
+ }
+ binding.tvAll.setOnClickListener {
+ if (giftAllCount != -1)
+ binding.editGift.setText(giftAllCount)
+ }
+ }
+
+ private fun transformList(
+ data: List,
+ pageSize: Int
+ ): List> {
+ val result: MutableList> = ArrayList()
+ if (data.isEmpty()) {
+ return result
+ }
+ for (i in data.toTypedArray().indices) {
+ var page: MutableList? = null
+ if (i % pageSize == 0) {
+ page = ArrayList()
+ result.add(page)
+ } else {
+ if (result.size > 0) {
+ page = result[result.size - 1]
+ }
+ }
+ page?.add(data[i])
+ }
+ return result
}
@SuppressLint("CheckResult")
@@ -223,23 +356,6 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
override fun onTextChanged(psw: String) {
val password = passWordFragment?.password?.password ?: ""
if (password.length == 6) {
- userInfo?.apply {
- dialogManager.showProgressDialog(context)
- PayModel.get()
- .giveGold(targetUid, mEditGold.text.toString(), DESAndBase64(password))
- .compose(bindToLifecycle())
- .doOnError {
- toast(it.message)
- passWordFragment?.password?.clearPassword()
- dialogManager.dismissDialog()
- }
- .subscribe { _ ->
- passWordFragment?.dismissAllowingStateLoss()
- dialogManager.dismissDialog()
- toast(getString(R.string.layout_activity_give_gold_success_01))
- finish()
- }
- }
searchUserInfo?.apply {
dialogManager.showProgressDialog(context)
PayModel.get().giveGold(uid, mEditGold.text.toString(), DESAndBase64(password))
@@ -266,13 +382,7 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- if (s.isNullOrBlank()) {
- mEditGold.textSize = 15f
- tvSure.isEnabled = false
- } else {
- mEditGold.textSize = 35f
- tvSure.isEnabled = true
- }
+ binding.tvSure.isEnabled = !s.isNullOrBlank()
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt
new file mode 100644
index 000000000..42b212eab
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt
@@ -0,0 +1,23 @@
+package com.yizhuan.erban.pay.adapter
+
+import android.annotation.SuppressLint
+import android.widget.TextView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.TimeUtils
+
+
+class GiveDiamondDetailAdapter :
+ BaseQuickAdapter(R.layout.item_give_diamond_detail) {
+
+ @SuppressLint("SetTextI18n")
+ override fun convert(helper: BaseViewHolder, item: DiamondGiveHistoryInfo) {
+ helper.getView(R.id.tv_number).text = item.diamondNum.toString()
+ helper.getView(R.id.tv_pay_diamond).text =
+ mContext.getString(R.string.all_pay_diamond, item.realDiamondNum.toString())
+ helper.setText(R.id.tv_date, TimeUtils.getDateTimeString(item.createTime,"yyyy-MM-dd HH:mm:ss"))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java
new file mode 100644
index 000000000..e85909d6c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java
@@ -0,0 +1,34 @@
+package com.yizhuan.erban.pay.adapter;
+
+
+import android.widget.ImageView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.yizhuan.erban.R;
+import com.yizhuan.erban.ui.utils.ImageLoadUtils;
+import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
+
+/**
+ * 赠送礼物
+ */
+public class GiveGiftAdapter extends BaseQuickAdapter {
+
+
+ public GiveGiftAdapter() {
+ super(R.layout.item_give_gift);
+ }
+
+ @Override
+ protected void convert(BaseViewHolder helper, GiftInfo item) {
+ if (item == null) {
+ return;
+ }
+ helper.setText(R.id.tvName, item.getGiftName())
+ .setText(R.id.tvNum, "x" + item.getCount());
+ ImageView giftPic = helper.itemView.findViewById(R.id.ivGift);
+ ImageLoadUtils.loadImage(mContext, item.getGiftUrl(), giftPic);
+ helper.getView(R.id.viewBg).setSelected(item.isSelected);
+ }
+
+}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt
new file mode 100644
index 000000000..17d36b5c4
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt
@@ -0,0 +1,24 @@
+package com.yizhuan.erban.pay.adapter
+
+import android.annotation.SuppressLint
+import android.widget.TextView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.erban.ui.utils.ImageLoadUtils
+import com.yizhuan.erban.utils.TimeUiUtils
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.TimeUtils
+
+
+class GiveGiftDetailAdapter :
+ BaseQuickAdapter(R.layout.item_give_gift_detail) {
+
+ @SuppressLint("SetTextI18n")
+ override fun convert(helper: BaseViewHolder, item: DiamondGiveHistoryInfo) {
+ helper.getView(R.id.tv_gift_name).text = "${item.giftName}x${item.giftNum}"
+ ImageLoadUtils.loadAvatar(mContext, item.giftUrl, helper.getView(R.id.iv_avatar))
+ helper.setText(R.id.tv_date, TimeUtils.getDateTimeString(item.createTime,"yyyy-MM-dd HH:mm:ss"))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt
new file mode 100644
index 000000000..7834f6a66
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt
@@ -0,0 +1,75 @@
+package com.yizhuan.erban.pay.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import androidx.fragment.app.viewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseViewBindingFragment
+import com.yizhuan.erban.common.EmptyViewHelper
+import com.yizhuan.erban.databinding.FragmentGiveDiamondBinding
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.activity.GiveGoldDetailActivity
+import com.yizhuan.erban.pay.adapter.GiveDiamondDetailAdapter
+import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+class GiveDiamondFragment : BaseViewBindingFragment() {
+
+ private var pageNum: Int = 1
+ private val pageSize = 20
+ private lateinit var mAdapter: GiveDiamondDetailAdapter
+ private lateinit var rvDelegate: RVDelegate
+
+ private val giveGoldModel: GiveGoldModel by viewModels()
+
+ private var uid: Long = 0L
+
+ companion object {
+ fun newInstance(uid: Long): GiveDiamondFragment {
+ val args = Bundle()
+ args.putLong("uid", uid)
+ val fragment = GiveDiamondFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun init() {
+ uid = arguments?.getLong("uid") ?: 0L
+ mAdapter = GiveDiamondDetailAdapter()
+ rvDelegate = RVDelegate.Builder()
+ .setAdapter(mAdapter)
+ .setLayoutManager(LinearLayoutManager(context))
+ .setPageSize(20)
+ .setEmptyView(
+ EmptyViewHelper.createEmptyView(
+ context,
+ ResUtil.getString(R.string.me_give_gold_empty)
+ )
+ )
+ .setRefreshLayout(binding.refreshLayout)
+ .setRecyclerView(binding.recyclerView)
+ .build()
+ mAdapter.setOnLoadMoreListener({
+ loadData(false)
+ }, binding.recyclerView)
+ binding.refreshLayout.setOnRefreshListener {
+ loadData(true)
+ }
+ giveGoldModel.giveDetailLiveData.observe(this) {
+ rvDelegate.loadData(it)
+ }
+ loadData(true)
+ }
+
+ @SuppressLint("CheckResult")
+ fun loadData(isRefresh: Boolean) {
+ binding.refreshLayout.isRefreshing = isRefresh
+ pageNum = if (isRefresh) 1 else (pageNum + 1)
+ giveGoldModel.giveDetailInfo(uid, 0, pageNum, pageSize)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt
new file mode 100644
index 000000000..101df8fcf
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt
@@ -0,0 +1,76 @@
+package com.yizhuan.erban.pay.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import androidx.fragment.app.viewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseViewBindingFragment
+import com.yizhuan.erban.common.EmptyViewHelper
+import com.yizhuan.erban.databinding.FragmentGiveDiamondBinding
+import com.yizhuan.erban.databinding.FragmentGiveGiftBinding
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.activity.GiveGoldDetailActivity
+import com.yizhuan.erban.pay.adapter.GiveGiftDetailAdapter
+import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+class GiveGiftFragment : BaseViewBindingFragment() {
+
+ private var pageNum: Int = 1
+ private val pageSize = 20
+ private lateinit var mAdapter: GiveGiftDetailAdapter
+ private lateinit var rvDelegate: RVDelegate
+
+ private val giveGoldModel: GiveGoldModel by viewModels()
+
+ private var uid: Long = 0L
+
+ companion object {
+ fun newInstance(uid: Long): GiveGiftFragment {
+ val args = Bundle()
+ args.putLong("uid", uid)
+ val fragment = GiveGiftFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun init() {
+ uid = arguments?.getLong("uid") ?: 0L
+ mAdapter = GiveGiftDetailAdapter()
+ rvDelegate = RVDelegate.Builder()
+ .setAdapter(mAdapter)
+ .setLayoutManager(LinearLayoutManager(context))
+ .setPageSize(20)
+ .setEmptyView(
+ EmptyViewHelper.createEmptyView(
+ context,
+ ResUtil.getString(R.string.me_give_gold_empty)
+ )
+ )
+ .setRefreshLayout(binding.refreshLayout)
+ .setRecyclerView(binding.recyclerView)
+ .build()
+ mAdapter.setOnLoadMoreListener({
+ loadData(false)
+ }, binding.recyclerView)
+ binding.refreshLayout.setOnRefreshListener {
+ loadData(true)
+ }
+ giveGoldModel.giveDetailLiveData.observe(this) {
+ rvDelegate.loadData(it)
+ }
+ loadData(true)
+ }
+
+ @SuppressLint("CheckResult")
+ fun loadData(isRefresh: Boolean) {
+ binding.refreshLayout.isRefreshing = isRefresh
+ pageNum = if (isRefresh) 1 else (pageNum + 1)
+ giveGoldModel.giveDetailInfo(uid, 1, pageNum, pageSize)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
index 1448b2e16..ac052fa47 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
@@ -16,8 +16,6 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingFragment;
import com.yizhuan.erban.databinding.FragmentUserInfoGiftBinding;
import com.yizhuan.erban.ui.user.adapter.UserGiftAdapter;
-import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
-import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration;
import com.yizhuan.xchat_android_core.bean.UserInfoItem;
import com.yizhuan.xchat_android_core.user.UserInfoUiMgr;
import com.yizhuan.xchat_android_core.user.UserModel;
diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java b/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java
new file mode 100644
index 000000000..cec2f1add
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java
@@ -0,0 +1,46 @@
+package com.yizhuan.erban.ui.widget.viewpager;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.viewpager.widget.ViewPager;
+
+public class NoScrollViewPager extends ViewPager {
+ // false 禁止ViewPager左右滑动。
+ // true 普通ViewPager
+ private boolean isScroll = false;
+
+ public NoScrollViewPager(@NonNull Context context) {
+ this(context, null);
+ }
+ public NoScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+ public void setScrollable(boolean isScroll) {
+ this.isScroll = isScroll;
+ }
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ if (!isScroll){
+ // 不允许拦截事件就返回false
+ return isScroll;
+ }else {
+ // 正常ViewPager处理拦截事件就请求父类普通ViewPager中的onInterceptTouchEvent()
+ return super.onInterceptTouchEvent(ev);
+ }
+ }
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (!isScroll){
+ // 不允许消费事件就返回false.
+ return isScroll;
+ }else {
+ // 正常ViewPager消耗事件就请求父类普通ViewPager中的onTouchEvent.
+ return super.onTouchEvent(ev);
+ }
+ }
+}
+
diff --git a/app/src/main/res/color/color_donation_btn.xml b/app/src/main/res/color/color_donation_btn.xml
new file mode 100644
index 000000000..178adef94
--- /dev/null
+++ b/app/src/main/res/color/color_donation_btn.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xhdpi/donation_arrow_right.webp b/app/src/main/res/drawable-xhdpi/donation_arrow_right.webp
new file mode 100644
index 0000000000000000000000000000000000000000..ca7a8a5bab5d6e9ae4495896cdaef0201eae26c7
GIT binary patch
literal 962
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp b/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp
index 53d67e83df8bc230203f6817b72397d19c52ad43..b09b928bd47c9080c46c693af6def400ee016856 100644
GIT binary patch
delta 2391
zcmV-d38?m#7pNBnQb|Teps@u#0)Ju&001vbz!DG*bs?hv0qWYer){L?lgr#D!^}LB
zCbQQb#-8y09iGB4Gea4|`mR{A8p8p|l5AUbo3*c)!5n53gg!I%3?gMcnVCh;7UMm#
zt!+CV=YGFGD#o_L+O~q}97&I-`&~AZLAh-kgL-WL`M(#cEC2|aH+Prp+ChLnpiMKG
zTXnbSmdNyFZ^R{cm%QY@-8qmXHEvX*qT3TJu*4I9Bme*a00000fbt{1o+@ZHUc=TA
z0I3kuLLdc^fgOJckOKcIc>;Yfo_*^iF*=#q5W+8g@NDKr>IN5fM9fB1k_`X=0Dw#r
zkRqlfVuVz50>t#Ao*as|V`hG8P;s>f&6gLyvr1k6l$dsbqyYc`0002UeyB>aL8F6<
z{K;-=aCv3Toji8k@EPK0B!;V1b`@v>004m83Lt4>^p}4-{+&i*xO!w(d7FgTNsk1L
z_qKp?0059{0ccX$?Va>UaC}^`mnb{QI|Jp$dt1GtH$!DtV<|vZ+0`#EerLG}rLKP}
zF(dcRQrAD_o+_qY06;Oan09UEM(U;p6<2`4g&he$HQ(n9F6;x{+n;g#lZ+K`M_2&`it%0E~A`4(iQ3
zH89@K{i%)oZ=3l)tn+v%t@tbeK+G{QtbZ~4*d$s7WGCC1VSm@Z=tlC~N}xbs3IPP5
z6LqbX`bDdd{jG$tNh!c?YQmq54?0m7z+(XbK!5_VQTXNa%P01=qb5exvU)vh#a^qW
zJ^+;f003f2CA@Yqr4sGvg6})8l)Dii{;qwa0>Ggpc{-70Kej)Z3tP;EZL)b`tAC|l
zE9G8&p#0wWsvo+Qa<5XaRjC)2g=}Sq{aOD30{|gWM*>p-5D1t8fdBvn0ssKSJl;4=
zAz%UlfZ@-2uOqjcO%5xim#)kEvGtzfiS?PNxp6*@N{Fe%N?yB%^JD9sGiL`y-Y<3f
zyVk26Ta?|-XvdcPUF&tA9hVl&Dt~XKG{8EA0RTV%g$V=Cz5Z2Pb*gkQ#v2!p
zlJ<9Fy3Y0dQ>T@3KL7~lS$`ZzwDJ>E{p8@Q8JQJYFZ>sR7@ZV4)LI7+c^@n5#it&>
zHok~$)?eFr$Hk+J{oOD?3|-VpM7~H!8GS
zzHfc<^h=JF$Cv|P%&@Yae(CgM^AiLBz<9^i{SF5@QBEG#E^8!b_}ks7dvaKAY+531
z62r0E^`3ry#Iw|%1%JEk@@@N*Ctq@0w(>mrlJkB0GchIRbG>PEA}fli#0`#&yd
zBxeMfN@2ayW0Rh3r~bKkve*6kZO!;R01^OD82qjLb?1ZS?|)fd-pCJ{eX0Wh0JhU(
z?*2Njk(d?)9G(k2d7_n1bvI>l
zR4yYIHv3du3<1^8rcAILDvQX(_
zWhEIv1pKmZ#ML0_P`gd$2du-buv#PSL9LT@Dxpf}j@(L~V*(fx)gbL~D3?FK5(6lJN`Mek02Rcb5@HsJ#HR*~YLIs1AtIL}+RZwv_pRB}
z{fmiOBkkB-Oit&~6Sr&C8fg!zUDT;qq5km&!K;fGwMNRxo3(N~+@8Ey>t-YAeytlQ
zPouH7^1psJ8%ZZ`*2(dteCm3G8~cYXeS0KX@qgTIrFq1u>kV=}c3(W*p|W?x($|N)
z!=pD%zBs0~W);o+wj;
JimM{Tt^p21geL$1
delta 2370
zcmV-I3BC5H7nTw$O4gp9e)x?
zfq&ph#e-P(RitXI#FjAor3;?%dZ49L*pp(SDhdGr007`sfGnU&Oc($V^U+L(67A4j
znxAJ~%|fGev;lOeoOC@4gy#Iq+H=~*
zvR0rrDD9o7Y4uP!>#^lPRnEH7m2WyUQ`el+BlC;R)HP>j6>C2LkPj7W|9CynGC$9{
z0+b4SGI`c)=P4ETBtU5^6%z#j@}gp*N?U0&^>=sUW!X7PGxc|ii2wlkQ5i82l?Hhd
zl?Gz!@+4yFfbu*^x;W`S^ySKtfgOK&S}joB!GOr7rE(1S{#UP#P&qIV0HCly0DuC4
z6#xkU0Du8N0F(-!C8x7h+EZmR^>}$HTvjHakqzM*u*9
zu!c!kP_a_M0CXyodWXJRv$tB|DxGhes0|tFYli^<01z+`02t;z3jzSJFs6UQq~4(~
zR`0JOHu$wx9MwDYLnsFb04Nal&Cy8acMt$j(WkXM^(?G^;ExqY3wgD6Wy0UlPiDGO
z#7ZT^P(iFzLaYEPAy!sHCB#Z40Ahuqfv|=Kj5fOs_jFl&Udp3|f$h)O2h))St5669
zu>(XX1qcOz;s^tP!U6yQC~AKu5Ml=iLx2<(fKUnmqQC#QwR@|~y~yTo^uHrtG}4
zXn#gO+w^^-O2^Na^bPzn))=6ISwfY;ET;-$s9<`C9V!C=D?
ztjuP@80ziP-~Zo=<2h2>Opx+<_ND1?93Yf3i)r<<0BparS&}FCJN(V&?;9=rnnqn>|7s8lk>(zDs-UStE*
z{!iD6lU}T!(@dfq+yA!4{5%h!TzLE+{O-fTeY0>jlBmSbF8-6COw+Dd%t%OJW!4S=
zn2M4B06?|v(~6Uxub`=J002NMNeTmn6#xVPDHE{_VBso_BV7jm
z`FXCv-cE7wi2r|AJ9hNw3n<>Vtla
zzZJ@1qD-_^t!M)XO2dLYPr6&Sd|%_$%6;`L%#FHcg7*t|{T}^n-QEfSK(+1HiW8n}
zozh4nikF!VzpS_5Zyo>uFjgP%bn~oE#exwA%JA61S!{pW@nws0;gU{DmoEF??(uT<
zuE{JS5d-1f;vK(7KUuf8lF{eu7wrD9&w@N3000o-hPBa%5@E#LNI{G*M(Rxu-uH2Xc=IjLQ-
zB)eNsioNf5Sbka}iacKQ@TLU4b3wQ|Fc@%J|VS_1$WY4&@tb4)w5
zB(nsiVef}smYy^G5dPix%Uy=1H&i^z5alu6
z_0-c^_jWHBs|R(*BQ_m*b-=3Q*|NyhDjk2f(@*N%xpv-IBM2)HZuS!8Gyrwug+#1YAI;-D0#o>g0WFi(`jXRMd*wYYZs
zq@nJ9PW#N08teAwiCzdY*UR^gx_alN!JahqJ?dzBP9r_0V
zsC2x}KCZRqu!4tL5Rm01z+Ac8qPKs)Tkk-ZxffHd-(RR)Wb#o~0;=3*x)XNgNvVTx
zxAQ^=JgImP6VB0_mWl_l?C0sNO)UE=Qh5>;sah+sCFUbP1qd-8wN_$FnEldBh7v$5
zH=-gb%zgp1LvyKAq)zfuumSyThvpIhFh9?_YNSJJVn%WzDv6s4W34qY+e%(syZI<^
z0cW+=#H{Hjlzz41kw%r1&O_l1coZ9bcB!)3&c2Oni`iQkn4NB+a?Zc3y}0I?^;NOa
oXVpCIrm4kdIgv`@3AI?OgH
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_common_select.xml b/app/src/main/res/drawable/bg_common_select.xml
new file mode 100644
index 000000000..1bbd455f7
--- /dev/null
+++ b/app/src/main/res/drawable/bg_common_select.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_common_select_normal.xml b/app/src/main/res/drawable/bg_common_select_normal.xml
new file mode 100644
index 000000000..f61e22366
--- /dev/null
+++ b/app/src/main/res/drawable/bg_common_select_normal.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_f3f5fa_r4.xml b/app/src/main/res/drawable/bg_f3f5fa_r4.xml
new file mode 100644
index 000000000..611da8e08
--- /dev/null
+++ b/app/src/main/res/drawable/bg_f3f5fa_r4.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_give_gift_bg_selector.xml b/app/src/main/res/drawable/bg_give_gift_bg_selector.xml
new file mode 100644
index 000000000..e3ad5977e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_give_gift_bg_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml b/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml
new file mode 100644
index 000000000..92b1a4ba6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml
@@ -0,0 +1,32 @@
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_give_gold_to_user.xml b/app/src/main/res/layout/activity_give_gold_to_user.xml
index 8f82d422e..01d6d7d42 100644
--- a/app/src/main/res/layout/activity_give_gold_to_user.xml
+++ b/app/src/main/res/layout/activity_give_gold_to_user.xml
@@ -18,9 +18,9 @@
android:id="@+id/ivAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
+ android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:src="@drawable/default_avatar"
- android:layout_marginStart="@dimen/dp_15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_bar" />
@@ -28,76 +28,104 @@
android:id="@+id/tvNickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_8"
- tools:text="@string/layout_activity_give_gold_to_user_01"
android:textColor="#ff333333"
android:textSize="16sp"
- android:layout_marginStart="@dimen/dp_10"
app:layout_constraintStart_toEndOf="@+id/ivAvatar"
- app:layout_constraintTop_toTopOf="@+id/ivAvatar"/>
+ app:layout_constraintTop_toTopOf="@+id/ivAvatar"
+ tools:text="@string/layout_activity_give_gold_to_user_01" />
+ tools:text="ID:123456" />
-
+ app:layout_constraintTop_toBottomOf="@+id/ivAvatar">
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/llTab" />
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/mIvDiamond" />
+
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/mEditGold" />
@@ -119,25 +147,123 @@
android:textSize="13sp" />
+ android:layout_height="wrap_content"
+ android:src="@drawable/icon_diamond" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tvAll" />
diff --git a/app/src/main/res/layout/fragment_give_diamond.xml b/app/src/main/res/layout/fragment_give_diamond.xml
new file mode 100644
index 000000000..a3d92b162
--- /dev/null
+++ b/app/src/main/res/layout/fragment_give_diamond.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_give_gift.xml b/app/src/main/res/layout/fragment_give_gift.xml
new file mode 100644
index 000000000..a3d92b162
--- /dev/null
+++ b/app/src/main/res/layout/fragment_give_gift.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml
index d3ea02a25..53367e288 100644
--- a/app/src/main/res/layout/fragment_me.xml
+++ b/app/src/main/res/layout/fragment_me.xml
@@ -651,7 +651,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
- android:text="@string/me_clean_diamond"
+ android:text="@string/me_donation"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_14" />
diff --git a/app/src/main/res/layout/item_give_diamond_detail.xml b/app/src/main/res/layout/item_give_diamond_detail.xml
new file mode 100644
index 000000000..b16e25710
--- /dev/null
+++ b/app/src/main/res/layout/item_give_diamond_detail.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_give_gift.xml b/app/src/main/res/layout/item_give_gift.xml
new file mode 100644
index 000000000..1196be618
--- /dev/null
+++ b/app/src/main/res/layout/item_give_gift.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_give_gift_detail.xml b/app/src/main/res/layout/item_give_gift_detail.xml
new file mode 100644
index 000000000..1d67326b0
--- /dev/null
+++ b/app/src/main/res/layout/item_give_gift_detail.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_lately_give.xml b/app/src/main/res/layout/item_lately_give.xml
index 0e2e6d9d2..fec02e9ca 100644
--- a/app/src/main/res/layout/item_lately_give.xml
+++ b/app/src/main/res/layout/item_lately_give.xml
@@ -42,4 +42,13 @@
app:layout_constraintTop_toBottomOf="@id/tv_nickname"
tools:text="ID:123456" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d925164e7..b304b3929 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -626,5 +626,6 @@
#4cFFFFFF
#67D7D7
#92F9E8
+ #E6E6F0
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dca802ac5..30047ddd9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -167,6 +167,7 @@
你還沒有關註任何Peko好友哦! \n快去添加關註吧!
搜索昵稱或ID
+ 搜索用戶ID
在線中…
客服
@@ -967,7 +968,10 @@
我的房間
收益記錄
轉贈鉆石
+ 轉贈禮物
我的轉贈
+ 轉贈至
+ 轉贈明細
請聯系客服處理
@@ -4927,5 +4931,13 @@
%s鉆
向%s轉贈
已複製
+ 轉贈記錄
+ 數量
+ 全部
+ 請先選擇禮物
+ 請輸入禮物數量
+ 禮物數量有誤,請重新輸入
+ 轉贈成功
+ 總支出%s鉆
\ No newline at end of file
diff --git a/app/src/module_community/res/layout/activity_give_gold.xml b/app/src/module_community/res/layout/activity_give_gold.xml
index 1da847824..8e22ac916 100644
--- a/app/src/module_community/res/layout/activity_give_gold.xml
+++ b/app/src/module_community/res/layout/activity_give_gold.xml
@@ -36,7 +36,7 @@
android:gravity="center_vertical"
android:imeOptions="actionSearch"
android:singleLine="true"
- android:hint="@string/search_hint"
+ android:hint="@string/search_user_id"
android:paddingStart="@dimen/dp_15"
android:paddingEnd="@dimen/dp_15"
android:textColor="@color/color_1F1A4E"
@@ -67,7 +67,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_25"
- android:text="@string/layout_activity_give_gold_01"
+ android:text="@string/donation_record"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
@@ -95,6 +95,8 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
index ea8f67b60..6f6c9b969 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
@@ -113,6 +113,21 @@ object HomeModel : BaseModel() {
api.getSearchUser(erbanNo)
}
+ suspend fun giveGift(toUid: Long, giftId: Int, giftNum: Int): String? =
+ launchRequest {
+ api.giveGift(toUid, giftId, giftNum)
+ }
+
+ suspend fun getGiveDetail(
+ uid: Long,
+ type: Int,
+ page: Int,
+ pageSize: Int
+ ): List? =
+ launchRequest {
+ api.getGiveDetail(uid, type, page, pageSize)
+ }
+
suspend fun getHotRoom(): List? =
launchRequest {
api.getHotRoom()
@@ -427,6 +442,31 @@ object HomeModel : BaseModel() {
@Query("erbanNo") erbanNo: Long?
): ServiceResult
+ /**
+ * 贈送禮物
+ *
+ * @return
+ */
+ @POST("/user/diamond/giveGift")
+ suspend fun giveGift(
+ @Query("toUid") toUid: Long?,
+ @Query("giftId") giftId: Int?,
+ @Query("giftNum") giftNum: Int?
+ ): ServiceResult
+
+ /**
+ * 轉贈詳情
+ *
+ * @return
+ */
+ @GET("/user/diamond/giveRecordVoByType")
+ suspend fun getGiveDetail(
+ @Query("toUid") toUid: Long?,
+ @Query("type") type: Int?,
+ @Query("pageNum") pageNum: Int?,
+ @Query("pageSize") pageSize: Int?
+ ): ServiceResult>
+
}
}
\ No newline at end of file
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
index 9dcefe974..57002cf17 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
@@ -46,6 +46,8 @@ public class GiftInfo implements Serializable {
@SerializedName("nobleName")
private String nobleName;
+ public boolean isSelected;
+
/**
* 是否全服通知
*/
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
index 4b2e951f0..abdfcce2d 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
@@ -27,6 +27,7 @@ public class InitInfo implements Serializable {
private NobleResourceComponent nobleResource;
private List monsters;
+ /** 转赠钻石白名单 */
private List giveDiamondErbanNoList;
/** 每日转赠钻石总额限制 */
private Long giveDiamondDailyNum;
@@ -34,6 +35,12 @@ public class InitInfo implements Serializable {
private Long giveDiamondOnceLimitNum;
/** 转赠手续费率 */
private Double giveDiamondRate;
+ /** 转赠钻石财富等级 */
+ private Integer giveDiamondExperLevel;
+ /** 转赠礼物白名单 */
+ private List giveGiftErbanNoList;
+ /** 转赠礼物财富等级 */
+ private Integer giveGiftExperLevel;
private double exchangeGoldRate;// 钻石兑换钻石比率
private double exchangeRate;// 钻石兑换钻石比率
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
index 89713259c..e55d3bb67 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
@@ -16,7 +16,15 @@ public class DiamondGiveHistoryInfo implements Serializable {
private Long diamondNum;//转赠给对方的数量
private Double realDiamondNum;//转赠实际支出的数量,包含手续费
- private String createTime;//创建时间
- private String updateTime;//更新时间
+ private Long createTime;//创建时间
+ private Long updateTime;//更新时间
+
+ private int type;//转赠类型: 0转赠钻石 1转赠礼物
+ private Integer giftId;//转赠礼物id
+ private Integer giftNum;//转赠礼物数
+ private String giftUrl;//轉贈禮物url
+ private String giftName;//轉贈禮物名字
+ private Long giftGoldNum;//转赠礼物单价
+ private Long totalGiftGoldNum;//转赠礼物总价值
}
diff --git a/nim_uikit/res/values/colors.xml b/nim_uikit/res/values/colors.xml
index 8035150c8..92a781bcb 100644
--- a/nim_uikit/res/values/colors.xml
+++ b/nim_uikit/res/values/colors.xml
@@ -70,6 +70,7 @@
#248DFA
#FAFAFA
#B3B3B3
+ #B3B3C3
#FFBC52
#BAB0FF
#2A2A39