Commit 5176e97e authored by yinjiacheng's avatar yinjiacheng

fix SHQBD-228 商户管理中心下拉刷新优化

parent 92ca0ce7
......@@ -15,85 +15,84 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
* description: 商户服务adapter
*/
class MerchantServiceFunctionAdapter @JvmOverloads constructor(
val context: Context,
data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null
val context: Context,
data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null
) :
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
companion object {
// 是否显示标识
private const val FUNCTION_SHOW = 1
}
companion object {
// 是否显示标识
private const val FUNCTION_SHOW = 1
}
/**
* 数据源
*/
private val serviceData by lazy { ArrayList<GetConfigListBean.Function>() }
/**
* 数据源
*/
private val serviceData by lazy { ArrayList<GetConfigListBean.Function>() }
private lateinit var viewBinding: ItemMerchantServiceFunctionBinding
private lateinit var viewBinding: ItemMerchantServiceFunctionBinding
init {
// 将不显示的数据去除
data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
init {
// 将不显示的数据去除
data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
}
}
/**
* 更新数据 将不显示的数据去除
*/
fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let {
serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
/**
* 更新数据 将不显示的数据去除
*/
fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let {
serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from(
parent.context
), parent, false
)
return MerchantServiceViewHolder(viewBinding.root, viewBinding)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from(
parent.context
), parent, false
)
return MerchantServiceViewHolder(viewBinding.root, viewBinding)
}
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position]
if (data.show != FUNCTION_SHOW) return
if (data.icon_url.isNotEmpty()) {
Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
} else {
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position]
if (data.icon_url.isNotEmpty()) {
Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
} else {
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
}
override fun getItemCount(): Int {
return serviceData.size
}
override fun getItemCount(): Int {
return serviceData.size
}
class MerchantServiceViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding
) :
RecyclerView.ViewHolder(itemView)
class MerchantServiceViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding
) :
RecyclerView.ViewHolder(itemView)
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
}
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
}
}
\ No newline at end of file
}
......@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
init {
// 将不显示的数据去除
data?.let {
it.forEach { menuItem ->
if (menuItem.show == GROUP_SHOW) {
groupData.add(menuItem)
it.forEach { item ->
if (item.show == GROUP_SHOW) {
groupData.add(item)
}
}
}
}
/**
* 刷新数据
*/
fun updateData(data: List<GetConfigListBean.Item>?) {
groupData.clear()
data?.let {
it.forEach { item ->
if (item.show == GROUP_SHOW) {
groupData.add(item)
}
}
}
notifyDataSetChanged()
}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
......@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
parent,
false
)
return MerchantServiceGroupViewHolder(viewBinding.root, viewBinding)
val holder = MerchantServiceGroupViewHolder(viewBinding.root, viewBinding)
// ViewHolder禁止复用
holder.setIsRecyclable(false)
return holder
}
override fun onBindViewHolder(holder: MerchantServiceGroupViewHolder, position: Int) {
val data = groupData[position]
if (data.show != GROUP_SHOW) return
holder.viewBinding.tvTitle.text = data.group_name
viewBinding.rvService.layoutManager =
GridLayoutManager(context, 4)
viewBinding.rvService.layoutManager = GridLayoutManager(context, 4)
viewBinding.rvService.adapter = MerchantServiceFunctionAdapter(context, data.functions, listener)
}
......
......@@ -66,7 +66,7 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
/**
* 当前配置数据
*/
private lateinit var curConfigData: GetConfigListBean.Response
private val curConfigData by lazy { ArrayList<GetConfigListBean.Item>() }
/**
* 功能-页面表
......@@ -102,6 +102,11 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
// 本期需求无资产功能 仅做UI展示
viewBind.avMerchantAsset.setMerchantAssetData("8856.88", "675.00")
// 服务列表展示
viewBind.rvServiceGroup.layoutManager = LinearLayoutManager(this)
viewBind.rvServiceGroup.addItemDecoration(MerchantServiceGroupAdapter.MerchantServiceGroupItemDecorator())
viewBind.rvServiceGroup.adapter = MerchantServiceGroupAdapter(this, null, this)
}
private fun initListener() {
......@@ -134,7 +139,9 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
// 展示底部浮窗
showMerchantCenterBottomHint(data)
// 生成当前生活号状态下的功能集
if (this::curConfigData.isInitialized) generateFunctionPermissionMap(curConfigData, data.tag.tag_key)
generateFunctionPermissionMap(curConfigData)
// 过滤商户服务数据
filterMerchantServiceData(curConfigData)
}
/**
......@@ -166,25 +173,23 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
* 生成FunctionId和XPage页面节点映射
* todo Activity传参
*/
private fun generateFunctionPageMap(data: GetConfigListBean.Response) {
private fun generateFunctionPageMap(data: List<GetConfigListBean.Item>) {
// 我要发布-优惠券
functionPageMap[data.merchant_manager_center.items[0].functions[0].function_id] = null
functionPageMap[data[0].functions[0].function_id] = null
// 我要发布-招聘
functionPageMap[data.merchant_manager_center.items[0].functions[1].function_id] = null
functionPageMap[data[0].functions[1].function_id] = null
// 管理服务-权限管理
functionPageMap[data.merchant_manager_center.items[1].functions[0].function_id] = null
functionPageMap[data[1].functions[0].function_id] = null
// 管理服务-人员管理
functionPageMap[data.merchant_manager_center.items[1].functions[1].function_id] =
XRouterPathConstants.PERSONAL_MY_STAFF
functionPageMap[data[1].functions[1].function_id] = XRouterPathConstants.PERSONAL_MY_STAFF
// 其他服务-优惠券管理
functionPageMap[data.merchant_manager_center.items[2].functions[0].function_id] = null
functionPageMap[data[2].functions[0].function_id] = null
// 其他服务-职位管理
functionPageMap[data.merchant_manager_center.items[2].functions[1].function_id] = null
functionPageMap[data[2].functions[1].function_id] = null
// 其他服务-门店管理
functionPageMap[data.merchant_manager_center.items[2].functions[2].function_id] = null
functionPageMap[data[2].functions[2].function_id] = null
// 其他服务-系统设置
functionPageMap[data.merchant_manager_center.items[2].functions[3].function_id] =
XRouterPathConstants.SYSTEM_SETTING
functionPageMap[data[2].functions[3].function_id] = XRouterPathConstants.SYSTEM_SETTING
}
/**
......@@ -192,61 +197,61 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
* @param tagKey 生活号认证类型/状态
* todo 优化逻辑
*/
private fun generateFunctionPermissionMap(data: GetConfigListBean.Response, tagKey: Int) {
if (data.merchant_manager_center.items.isEmpty()) return
private fun generateFunctionPermissionMap(data: List<GetConfigListBean.Item>) {
if (data.isEmpty()) return
functionPermissionList.clear()
when (tagKey) {
when (curLifeAccount.tag.tag_key) {
Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> {
// 普通企业认证
// 所有服务都可用
functionPermissionList.add(data.merchant_manager_center.items[0].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[2].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[0].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[1].functions[0].function_id)
functionPermissionList.add(data[1].functions[1].function_id)
functionPermissionList.add(data[2].functions[0].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[2].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> {
// 个体工商户认证
// 所有服务都可用
functionPermissionList.add(data.merchant_manager_center.items[0].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[2].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[0].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[1].functions[0].function_id)
functionPermissionList.add(data[1].functions[1].function_id)
functionPermissionList.add(data[2].functions[0].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[2].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> {
// 个人认证
// 我要发布-招聘 其他服务-职位管理 其他服务-系统设置
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_NOT_AUTH -> {
// 未认证
// 我要发布-招聘 其他服务-职位管理 其他服务-系统设置
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_AUDIT_UNDER -> {
// 审核中
// 我要发布-招聘 其他服务-职位管理 其他服务-系统设置
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_AUTH_REJECT -> {
// 认证驳回
// 我要发布-招聘 其他服务-职位管理 其他服务-系统设置
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
functionPermissionList.add(data[0].functions[1].function_id)
functionPermissionList.add(data[2].functions[1].function_id)
functionPermissionList.add(data[2].functions[3].function_id)
}
}
}
......@@ -255,34 +260,33 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
* 过滤商户服务数据
* 目前处理个人认证下不展示管理服务
*/
private fun filterMerchantServiceData(data: GetConfigListBean.Response) {
data.merchant_manager_center.items.let {
private fun filterMerchantServiceData(data: List<GetConfigListBean.Item>) {
val result = ArrayList<GetConfigListBean.Item>(data.size)
data.let {
(it as ArrayList<GetConfigListBean.Item>).iterator().apply {
while (hasNext()) {
val groupId = next().group_id
if (groupId == Constant.MERCHANT_SERVICE_GROUP_MANAGEMENT) {
val group = next()
if (group.group_id == Constant.MERCHANT_SERVICE_GROUP_MANAGEMENT) {
// 个人认证或企业员工不展示管理服务
if (curLifeAccount.tag.tag_key == Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH || curLifeAccount.role_type == Constant.TYPE_ROLE_ORDINARY) {
remove()
continue
}
}
result.add(group)
}
}
}
(viewBind.rvServiceGroup.adapter as MerchantServiceGroupAdapter).updateData(result)
}
override fun getConfigListSuccess(result: GetConfigListBean.Response?) {
result?.let {
curConfigData = it
generateFunctionPageMap(it)
generateFunctionPermissionMap(it, curLifeAccount.tag.tag_key)
filterMerchantServiceData(it)
// 备份配置数据
curConfigData.addAll(it.merchant_manager_center.items)
generateFunctionPageMap(it.merchant_manager_center.items)
generateFunctionPermissionMap(it.merchant_manager_center.items)
filterMerchantServiceData(it.merchant_manager_center.items)
}
viewBind.rvServiceGroup.layoutManager =
LinearLayoutManager(this)
viewBind.rvServiceGroup.addItemDecoration(MerchantServiceGroupAdapter.MerchantServiceGroupItemDecorator())
viewBind.rvServiceGroup.adapter =
MerchantServiceGroupAdapter(this, result?.merchant_manager_center?.items, this)
}
override fun getConfigListFailure(message: String?) {
......@@ -292,7 +296,7 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
override fun onLifeAccountSelect(data: LifeAccountItemBean.Response) {
// 用户切换主体 更新当前生活号信息
curLifeAccount = data
viewBind.lvLifeAccountLabel.setLifeAccountData(data)
viewBind.rlRefresh.autoRefresh()
}
override fun onEnterLifeAccountInfo(lifeAccountId: String) {
......@@ -482,6 +486,10 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
refreshMerchantCenterData(it)
}
}
result?.let {
// 切换主体入口是否展示判断
viewBind.bvTopBar.setActionVisibility(it.size > 1)
}
}
override fun getLifeAccountListFailure(message: String?) {
......
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