Commit 7340111b authored by yinjiacheng's avatar yinjiacheng

add 商户管理中心切换主体

parent 3af73e63
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<dimen name="sp14">14sp</dimen> <dimen name="sp14">14sp</dimen>
<dimen name="sp15">15sp</dimen> <dimen name="sp15">15sp</dimen>
<dimen name="sp16">16sp</dimen> <dimen name="sp16">16sp</dimen>
<dimen name="sp17">17sp</dimen>
<dimen name="sp18">18sp</dimen> <dimen name="sp18">18sp</dimen>
<dimen name="sp20">20sp</dimen> <dimen name="sp20">20sp</dimen>
<dimen name="sp23">23sp</dimen> <dimen name="sp23">23sp</dimen>
......
package com.yidian.shenghuoquan.newscontent.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ItemMerchantSwitchBinding
import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
/**
* author: yinjiacheng
* date: 6/16/21 12:02 AM
* description: 商户切换主体
*/
class MerchantSwitchAdapter(
private val curLifeAccountId: Long,
data: List<LifeAccountItemBean.Response>? = null,
val listener: OnItemClickListener? = null
) :
RecyclerView.Adapter<MerchantSwitchAdapter.MerchantSwitchViewHolder>() {
private val data by lazy {
data?.let {
ArrayList<LifeAccountItemBean.Response>(it)
} ?: ArrayList()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantSwitchViewHolder {
val viewBinding = ItemMerchantSwitchBinding.bind(
LayoutInflater.from(parent.context)
.inflate(R.layout.item_merchant_switch, parent, false)
)
return MerchantSwitchViewHolder(viewBinding.root, viewBinding)
}
override fun onBindViewHolder(holder: MerchantSwitchViewHolder, position: Int) {
val data = data[position] as LifeAccountItemBean.Response
holder.viewBinding.tvLifeAccountName.text = data.life_account_name
holder.viewBinding.tvLifeAccountStatus.apply {
when (data.life_account_auth_status) {
Constant.STATUS_AUTH_NOT -> {
// 未认证
setBackgroundResource(R.drawable.shape_life_account_status_unauth)
setTextColor(ContextCompat.getColor(context, R.color.color_333333))
text = resources.getString(R.string.not_auth)
}
Constant.STATUS_AUTH_FINISH -> {
// 已认证
setBackgroundResource(R.drawable.shape_life_account_status_auth)
setTextColor(ContextCompat.getColor(context, R.color.color_FF1852F1))
text = when (data.life_account_type) {
Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS -> resources.getString(R.string.individual_business)
Constant.TYPE_AUTH_COMMON_ENTERPRISE -> resources.getString(R.string.common_enterprise)
Constant.TYPE_AUTH_PERSONAL -> resources.getString(R.string.personal_auth)
else -> ""
}
}
}
when (data.enterprise_audit_status) {
Constant.STATUS_AUDIT_UNDER -> {
// 审核中
setBackgroundResource(R.drawable.shape_life_account_status_audit)
setTextColor(ContextCompat.getColor(context, R.color.color_FFF26E3D))
text = resources.getString(R.string.under_audit)
}
Constant.STATUS_AUDIT_REJECT -> {
// 审核驳回
setBackgroundResource(R.drawable.shape_life_account_status_reject)
setTextColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
text = resources.getString(R.string.auth_reject)
}
}
}
// 当前选中的生活号
holder.viewBinding.ivLifeAccountSelect.isVisible = data.life_account_id == curLifeAccountId
holder.viewBinding.root.setOnClickListener {
listener?.onItemClick(it, position, data)
}
}
override fun getItemCount(): Int {
return data.size
}
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: LifeAccountItemBean.Response)
}
class MerchantSwitchViewHolder(itemView: View, val viewBinding: ItemMerchantSwitchBinding) :
RecyclerView.ViewHolder(itemView)
}
\ No newline at end of file
...@@ -4,13 +4,13 @@ import java.io.Serializable ...@@ -4,13 +4,13 @@ import java.io.Serializable
class LifeAccountItemBean(var response: Response) { class LifeAccountItemBean(var response: Response) {
data class Response( data class Response(
var create_time: String?, var create_time: String,
var enterprise_audit_status: Int?, var enterprise_audit_status: Int,
var life_account_auth_status: Int?, var life_account_auth_status: Int,
var life_account_id: Long?, var life_account_id: Long,
var life_account_name: String?, var life_account_name: String,
var life_account_status: Int?, var life_account_status: Int,
var life_account_type: Int?, var life_account_type: Int,
var role_type: Int? var role_type: Int
) : Serializable ) : Serializable
} }
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.ui.center package com.yidian.shenghuoquan.newscontent.ui.center
import android.os.Bundle import android.os.Bundle
import android.view.View
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
...@@ -10,6 +11,7 @@ import com.yidian.shenghuoquan.newscontent.adapter.MerchantServiceGroupAdapter ...@@ -10,6 +11,7 @@ import com.yidian.shenghuoquan.newscontent.adapter.MerchantServiceGroupAdapter
import com.yidian.shenghuoquan.newscontent.databinding.ActivityMerchantCenterBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityMerchantCenterBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IGetConfigListCallback import com.yidian.shenghuoquan.newscontent.http.callback.IGetConfigListCallback
import com.yidian.shenghuoquan.newscontent.http.callback.IGetLifeAccountListCallback
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
...@@ -19,7 +21,8 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean ...@@ -19,7 +21,8 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
* description: 商户管理中心 * description: 商户管理中心
*/ */
class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(), class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
IGetConfigListCallback { IGetConfigListCallback, IGetLifeAccountListCallback, View.OnClickListener,
MerchantSwitchDialog.OnMerchantSwitchCallback {
companion object { companion object {
// 传递的生活号信息 // 传递的生活号信息
...@@ -51,13 +54,14 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(), ...@@ -51,13 +54,14 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
private fun initView() { private fun initView() {
viewBind.viewCommonHeader.tvTitle.text = resources.getString(R.string.management_center) viewBind.viewCommonHeader.tvTitle.text = resources.getString(R.string.management_center)
viewBind.viewCommonHeader.ivBack.isVisible = false
// 本期需求无资产功能 仅做UI展示 // 本期需求无资产功能 仅做UI展示
viewBind.avMerchantAsset.setMerchantAssetData(8856.88, 675.00) viewBind.avMerchantAsset.setMerchantAssetData(8856.88, 675.00)
} }
private fun initListener() { private fun initListener() {
viewBind.tvSwitch.setOnClickListener(this)
} }
private fun initData() { private fun initData() {
...@@ -65,9 +69,10 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(), ...@@ -65,9 +69,10 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
it as HashMap<*, *> it as HashMap<*, *>
} }
// 切换主体入口判断 // 切换主体入口判断
viewBind.tvSwitch.isVisible = params?.get(EXTRA_IS_MULTI) as Boolean viewBind.tvSwitch.isVisible = params?.get(EXTRA_IS_MULTI)?.let { it as Boolean } ?: false
curLifeAccount = curLifeAccount =
params[EXTRA_LIFE_ACCOUNT_INFO]?.let { it as LifeAccountItemBean.Response } ?: return params?.get(EXTRA_LIFE_ACCOUNT_INFO)?.let { it as LifeAccountItemBean.Response }
?: return
// 设置当前生活号信息 // 设置当前生活号信息
viewBind.lvLifeAccountLabel.setLifeAccountData(curLifeAccount) viewBind.lvLifeAccountLabel.setLifeAccountData(curLifeAccount)
...@@ -88,4 +93,26 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(), ...@@ -88,4 +93,26 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
override fun getConfigListFailure(message: String?) { override fun getConfigListFailure(message: String?) {
} }
override fun getLifeAccountListSuccess(result: ArrayList<LifeAccountItemBean.Response>?) {
// 生活号列表请求成功 弹出切换主体弹窗
result?.let { MerchantSwitchDialog(this, curLifeAccount.life_account_id, it, this).show() }
}
override fun getLifeAccountListFailure(message: String?) {
}
override fun onClick(v: View?) {
if (v?.id == R.id.tv_switch) {
// 切换主体 请求生活号列表接口
ApiService.getLifeAccountList(this)
}
}
override fun onLifeAccountSelect(data: LifeAccountItemBean.Response) {
// 用户切换主体 更新当前生活号信息
curLifeAccount = data
viewBind.lvLifeAccountLabel.setLifeAccountData(data)
}
} }
package com.yidian.shenghuoquan.newscontent.ui.center
import android.content.Context
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.common.base.BaseDialog
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.MerchantSwitchAdapter
import com.yidian.shenghuoquan.newscontent.databinding.DialogMerchantSwitchBinding
import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
import com.yidian.utils.DensityUtil
/**
* author: yinjiacheng
* date: 6/15/21 11:33 PM
* description: 商户管理中心-切换主体
*/
class MerchantSwitchDialog(
context: Context,
private val curLifeAccountId: Long,
val data: List<LifeAccountItemBean.Response>,
val callback: OnMerchantSwitchCallback? = null
) : BaseDialog<DialogMerchantSwitchBinding>(context, R.style.merchant_switch_dialog),
MerchantSwitchAdapter.OnItemClickListener, View.OnClickListener {
override fun createViewBinding(): DialogMerchantSwitchBinding {
return DialogMerchantSwitchBinding.inflate(layoutInflater)
}
override fun initView() {
viewBinding.rvLifeAccount.layoutManager = LinearLayoutManager(context)
viewBinding.rvLifeAccount.adapter = MerchantSwitchAdapter(curLifeAccountId, data, this)
}
override fun initListener() {
viewBinding.root.setOnClickListener(this)
}
override fun onItemClick(view: View, position: Int, data: LifeAccountItemBean.Response) {
// 选择某个生活号 弹窗消失
callback?.onLifeAccountSelect(data)
dismiss()
}
override fun show() {
super.show()
window?.setGravity(Gravity.TOP)
val params = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = DensityUtil.getScreenHeight() - DensityUtil.dp2px(42f)
params?.y = DensityUtil.dp2px(42f)
window?.attributes = params
}
override fun onClick(v: View?) {
dismiss()
}
interface OnMerchantSwitchCallback {
/**
* 选择某个生活号
* @param data 生活号信息
*/
fun onLifeAccountSelect(data: LifeAccountItemBean.Response)
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_FFFFFFFF" />
<corners
android:bottomLeftRadius="12dp"
android:bottomRightRadius="12dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
\ No newline at end of file
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#66000000">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_life_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_bg_merchant_switch"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp19"
android:paddingTop="@dimen/dp17"
android:paddingEnd="@dimen/dp19"
android:paddingBottom="@dimen/dp17">
<TextView
android:id="@+id/tv_life_account_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxWidth="@dimen/dp214"
android:maxLines="2"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_life_account_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp6"
android:background="@drawable/shape_life_account_status_unauth"
android:includeFontPadding="false"
android:paddingStart="@dimen/dp8"
android:paddingTop="@dimen/dp2"
android:paddingEnd="@dimen/dp8"
android:paddingBottom="@dimen/dp2"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_life_account_name"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_life_account_select"
android:layout_width="@dimen/dp23"
android:layout_height="@dimen/dp23"
android:src="@drawable/icon_life_account_select"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -3,21 +3,21 @@ ...@@ -3,21 +3,21 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="19dp" android:paddingStart="@dimen/dp19"
android:paddingTop="17dp" android:paddingTop="@dimen/dp17"
android:paddingEnd="12dp" android:paddingEnd="@dimen/dp12"
android:paddingBottom="17dp"> android:paddingBottom="@dimen/dp17">
<TextView <TextView
android:id="@+id/tv_life_account_name" android:id="@+id/tv_life_account_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxWidth="265dp"
android:ellipsize="end" android:ellipsize="end"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxWidth="@dimen/dp217"
android:maxLines="2" android:maxLines="2"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="17sp" android:textSize="@dimen/sp17"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -26,24 +26,24 @@ ...@@ -26,24 +26,24 @@
android:id="@+id/tv_life_account_status" android:id="@+id/tv_life_account_status"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="@dimen/dp8"
android:layout_marginEnd="12dp" android:layout_marginEnd="@dimen/dp8"
android:background="@drawable/shape_life_account_status_unauth" android:background="@drawable/shape_life_account_status_unauth"
android:includeFontPadding="false" android:includeFontPadding="false"
android:paddingStart="8dp" android:paddingStart="@dimen/dp8"
android:paddingTop="2dp" android:paddingTop="@dimen/dp2"
android:paddingEnd="8dp" android:paddingEnd="@dimen/dp8"
android:paddingBottom="2dp" android:paddingBottom="@dimen/dp2"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="12sp" android:textSize="@dimen/sp12"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_life_account_name" app:layout_constraintStart_toEndOf="@id/tv_life_account_name"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ImageView
android:id="@+id/iv_life_account_detail" android:id="@+id/iv_life_account_detail"
android:layout_width="23dp" android:layout_width="@dimen/dp23"
android:layout_height="23dp" android:layout_height="@dimen/dp23"
android:src="@mipmap/icon_next" android:src="@mipmap/icon_next"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -169,5 +169,12 @@ ...@@ -169,5 +169,12 @@
<item name="android:windowIsFloating">true</item> <item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item> <item name="android:backgroundDimEnabled">false</item>
</style> </style>
<style name="merchant_switch_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment