Commit 8a2c8103 authored by shiyuelong's avatar shiyuelong
parents d433b07c 4f3304e1
...@@ -3,7 +3,7 @@ package com.yidian.common.http ...@@ -3,7 +3,7 @@ package com.yidian.common.http
import com.yidian.common.BuildConfig import com.yidian.common.BuildConfig
class URLs { class URLs {
companion object{ companion object {
val BASE_URL: String val BASE_URL: String
private const val BASE_URL_DEBUG = "http://bp-dev.go2yd.com" private const val BASE_URL_DEBUG = "http://bp-dev.go2yd.com"
...@@ -11,9 +11,9 @@ class URLs { ...@@ -11,9 +11,9 @@ class URLs {
private const val BASE_URL_PRO = "http://bp-dev.go2yd.com" private const val BASE_URL_PRO = "http://bp-dev.go2yd.com"
init { init {
BASE_URL = if (BuildConfig.ENV_DEBUG){ BASE_URL = if (BuildConfig.ENV_DEBUG) {
BASE_URL_DEBUG BASE_URL_DEBUG
}else{ } else {
BASE_URL_PRO BASE_URL_PRO
} }
} }
...@@ -44,5 +44,6 @@ class URLs { ...@@ -44,5 +44,6 @@ class URLs {
const val authIndividualBusinessIdentityCommit = "/merchant/enterprise/employed" const val authIndividualBusinessIdentityCommit = "/merchant/enterprise/employed"
const val authEnterpriseLiveIdentity = "/merchant/enterprise/live" const val authEnterpriseLiveIdentity = "/merchant/enterprise/live"
const val authIndividualBusinessComplete = "/merchant/enterprise/employed_complate" const val authIndividualBusinessComplete = "/merchant/enterprise/employed_complate"
const val getConfigList = "/config/switch/list"
} }
} }
\ No newline at end of file
...@@ -6,47 +6,63 @@ import android.view.View ...@@ -6,47 +6,63 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.yidian.shenghuoquan.newscontent.bean.MerchantServiceBean import com.yidian.shenghuoquan.newscontent.databinding.ItemMerchantServiceFunctionBinding
import com.yidian.shenghuoquan.newscontent.databinding.ItemMerchantServiceBinding import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
/** /**
* author: yinjiacheng * author: yinjiacheng
* date: 6/9/21 10:36 AM * date: 6/9/21 10:36 AM
* description: 商户服务adapter * description: 商户服务adapter
*/ */
class MerchantServiceAdapter @JvmOverloads constructor( class MerchantServiceFunctionAdapter @JvmOverloads constructor(
val context: Context, val context: Context,
data: ArrayList<MerchantServiceBean>? = null, data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null val listener: OnItemClickListener? = null
) : ) :
RecyclerView.Adapter<MerchantServiceAdapter.MerchantServiceViewHolder>() { RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
companion object {
// 是否显示标识
private const val FUNCTION_SHOW = 1
}
/** /**
* 数据源 * 数据源
*/ */
private val serviceData by lazy { ArrayList<MerchantServiceBean>() } private val serviceData by lazy { ArrayList<GetConfigListBean.Function>() }
private lateinit var viewBinding: ItemMerchantServiceBinding private lateinit var viewBinding: ItemMerchantServiceFunctionBinding
init { init {
// 将不显示的数据去除
data?.let { data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it) serviceData.addAll(it)
} }
} }
/** /**
* 更换数据 * 更新数据 将不显示的数据去除
*/ */
fun updateData(data: ArrayList<MerchantServiceBean>?) { fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let { data?.let {
serviceData.clear() serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it) serviceData.addAll(it)
notifyDataSetChanged() notifyDataSetChanged()
} }
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceBinding.inflate( viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from( LayoutInflater.from(
parent.context parent.context
), parent, false ), parent, false
...@@ -56,10 +72,13 @@ class MerchantServiceAdapter @JvmOverloads constructor( ...@@ -56,10 +72,13 @@ class MerchantServiceAdapter @JvmOverloads constructor(
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position] val data = serviceData[position]
if (!data.iconUrl.isNullOrEmpty()) { if (data.show != FUNCTION_SHOW) return
Glide.with(context).load(data.iconUrl).into(viewBinding.ivService) 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.name holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) } holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
} }
...@@ -67,11 +86,14 @@ class MerchantServiceAdapter @JvmOverloads constructor( ...@@ -67,11 +86,14 @@ class MerchantServiceAdapter @JvmOverloads constructor(
return serviceData.size return serviceData.size
} }
class MerchantServiceViewHolder(itemView: View, val viewBinding: ItemMerchantServiceBinding) : class MerchantServiceViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding
) :
RecyclerView.ViewHolder(itemView) RecyclerView.ViewHolder(itemView)
interface OnItemClickListener { interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: MerchantServiceBean) fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
} }
} }
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.adapter
import android.content.Context
import android.graphics.Rect
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.yidian.shenghuoquan.newscontent.databinding.ItemMerchantServiceGroupBinding
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
import com.yidian.utils.DensityUtil
/**
* author: yinjiacheng
* date: 6/11/21 10:21 AM
* description: 商户服务分组adapter
*/
class MerchantServiceGroupAdapter @JvmOverloads constructor(
val context: Context,
data: List<GetConfigListBean.Item>? = null
) :
RecyclerView.Adapter<MerchantServiceGroupAdapter.MerchantServiceGroupViewHolder>() {
companion object {
// 是否显示标识
private const val GROUP_SHOW = 1
}
private lateinit var viewBinding: ItemMerchantServiceGroupBinding
/**
* 数据源
*/
private val groupData by lazy {
ArrayList<GetConfigListBean.Item>()
}
init {
// 将不显示的数据去除
data?.let {
(it as ArrayList<GetConfigListBean.Item>).iterator().apply {
while (hasNext()) {
if (next().show != GROUP_SHOW) remove()
}
}
groupData.addAll(it)
}
}
/**
* 更换数据 将不显示的数据去除
*/
fun updateData(data: List<GetConfigListBean.Item>?) {
data?.let {
groupData.clear()
(it as ArrayList<GetConfigListBean.Item>).iterator().apply {
while (hasNext()) {
if (next().show != GROUP_SHOW) remove()
}
}
groupData.addAll(it)
notifyDataSetChanged()
}
}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): MerchantServiceGroupViewHolder {
viewBinding =
ItemMerchantServiceGroupBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
return MerchantServiceGroupViewHolder(viewBinding.root, viewBinding)
}
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.adapter = MerchantServiceFunctionAdapter(context, data.functions)
}
override fun getItemCount(): Int {
return groupData.size
}
class MerchantServiceGroupViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceGroupBinding
) : RecyclerView.ViewHolder(itemView)
class MerchantServiceGroupItemDecorator : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
outRect.bottom = DensityUtil.dp2px(10f)
}
}
}
\ No newline at end of file
...@@ -430,23 +430,42 @@ class ApiService { ...@@ -430,23 +430,42 @@ class ApiService {
}) })
} }
// 407 生活号名检查与修改 // 407 生活号名检查与修改接口
fun createLifeAccount(callback:ICreateLifeAccountCallback, requestParams: HashMap<String, String?>){ fun createLifeAccount(apiCallback: ICreateLifeAccountCallback, requestParams: HashMap<String, String?>){
val timeStamp = System.currentTimeMillis() val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp) val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp) val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
ServiceFactory.getInstance().createService(CommonService::class.java) ServiceFactory.getInstance().createService(CommonService::class.java)
.createLifeAccount(publicParamsMap, privateParamsMap) .createLifeAccount(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers()) .compose(TransformUtil.defaultSchedulers())
.subscribe(object :HttpResultSubscriber<Any?>(){ .subscribe(object : HttpResultSubscriber<Any?>(){
override fun onSuccess(result: HttpResult<Any?>?) { override fun onSuccess(result: HttpResult<Any?>?) {
callback.createLifeAccountCallback(true) apiCallback.createLifeAccountCallback(true)
} }
override fun onFailer(result: HttpResult<Any?>?) { override fun onFailer(result: HttpResult<Any?>?) {
callback.createLifeAccountCallback(false) apiCallback.createLifeAccountCallback(false)
} }
}) })
} }
// 521 管理中心开关接口
fun getConfigList(apiCallback: IGetConfigListCallback) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
ServiceFactory.getInstance().createService(CommonService::class.java)
.getConfigList(publicParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<GetConfigListBean.Response>() {
override fun onSuccess(result: HttpResult<GetConfigListBean.Response>?) {
apiCallback.getConfigListSuccess(result?.result)
}
override fun onFailer(result: HttpResult<GetConfigListBean.Response>?) {
apiCallback.getConfigListFailure(result?.reason)
}
})
}
} }
} }
...@@ -88,4 +88,7 @@ interface CommonService { ...@@ -88,4 +88,7 @@ interface CommonService {
@GET(URLs.authIndividualBusinessComplete) @GET(URLs.authIndividualBusinessComplete)
fun authIndividualBusinessComplete(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>) : Observable<HttpResult<Any?>> fun authIndividualBusinessComplete(@QueryMap commonParams: Map<String, String>, @QueryMap requestParams: Map<String, String?>) : Observable<HttpResult<Any?>>
@GET(URLs.getConfigList)
fun getConfigList(@QueryMap commonParams: Map<String, String>) : Observable<HttpResult<Any?>>
} }
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.http.callback
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
/**
* author: yinjiacheng
* date: 6/11/21 1:29 AM
* description: API /config/switch/list
*/
interface IGetConfigListCallback {
fun getConfigListSuccess(result: GetConfigListBean.Response?)
fun getConfigListFailure(message: String?)
}
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.http.httpbean
/**
* author: yinjiacheng
* date: 6/11/21 1:25 AM
* description: API /config/switch/list
*/
class GetConfigListBean {
data class Response(val merchant_manager_center: MerchantManagerCenter)
data class MerchantManagerCenter(
val disable_text: String,
val disable_url: String,
val items: List<Item>,
val show: Int
)
data class Item(
val functions: List<Function>,
val group_id: Int,
val group_name: String,
val show: Int
)
data class Function(
val function_id: Int,
val function_name: String,
val icon_url: String,
val link_url: String,
val show: Int
)
}
package com.yidian.shenghuoquan.newscontent.ui.center package com.yidian.shenghuoquan.newscontent.ui.center
import android.os.Bundle import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.MerchantServiceBean 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.callback.IGetConfigListCallback
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
/** /**
...@@ -38,29 +42,26 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>() { ...@@ -38,29 +42,26 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>() {
) )
// 本期需求无资产功能 仅做UI展示 // 本期需求无资产功能 仅做UI展示
viewBind.avMerchantAsset.setMerchantAssetData(8856.88, 675.00) viewBind.avMerchantAsset.setMerchantAssetData(8856.88, 675.00)
//Test
viewBind.svMerchantServicePublish.setTargetGroupServiceData( // Test
"我要发布", arrayListOf( ApiService.getConfigList(object : IGetConfigListCallback {
MerchantServiceBean(101, "优惠券", 11, "我要发布", "", ""), override fun getConfigListSuccess(result: GetConfigListBean.Response?) {
MerchantServiceBean(102, "招聘", 11, "我要发布", "", "") viewBind.rvServiceGroup.layoutManager =
) LinearLayoutManager(this@MerchantCenterActivity)
) viewBind.rvServiceGroup.addItemDecoration(MerchantServiceGroupAdapter.MerchantServiceGroupItemDecorator())
viewBind.svMerchantServiceManagement.setTargetGroupServiceData( viewBind.rvServiceGroup.adapter = MerchantServiceGroupAdapter(
"管理服务", arrayListOf( this@MerchantCenterActivity,
MerchantServiceBean(103, "权限管理", 12, "管理服务", "", ""), result?.merchant_manager_center?.items
MerchantServiceBean(104, "人员管理", 12, "管理服务", "", "")
)
)
viewBind.svMerchantServiceOther.setTargetGroupServiceData(
"其他服务", arrayListOf(
MerchantServiceBean(105, "优惠券管理", 13, "其他服务", "", ""),
MerchantServiceBean(106, "职位招聘", 13, "其他服务", "", ""),
MerchantServiceBean(107, "门店管理", 13, "其他服务", "", ""),
MerchantServiceBean(108, "系统设置", 13, "其他服务", "", "")
)
) )
} }
override fun getConfigListFailure(message: String?) {
}
})
}
private fun initListener() { private fun initListener() {
} }
......
package com.yidian.shenghuoquan.newscontent.widget
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.GridLayoutManager
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.MerchantServiceAdapter
import com.yidian.shenghuoquan.newscontent.bean.MerchantServiceBean
import com.yidian.shenghuoquan.newscontent.databinding.ViewMerchantServiceBinding
/**
* author: yinjiacheng
* date: 6/9/21 12:16 AM
* description: 商户服务
*/
class MerchantServiceView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : ConstraintLayout(context, attrs, defStyle) {
private val viewBinding = ViewMerchantServiceBinding.bind(
View.inflate(
getContext(),
R.layout.view_merchant_service,
this
)
)
init {
initRecyclerView()
}
/**
* 设置当前分组数据
*/
fun setTargetGroupServiceData(groupName: String, data: ArrayList<MerchantServiceBean>?) {
viewBinding.tvTitle.text = groupName
((viewBinding.rvService.adapter) as MerchantServiceAdapter).updateData(data)
}
private fun initRecyclerView() {
viewBinding.rvService.layoutManager =
GridLayoutManager(context, 4)
viewBinding.rvService.adapter = MerchantServiceAdapter(context)
}
}
\ No newline at end of file
...@@ -38,45 +38,14 @@ ...@@ -38,45 +38,14 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lv_life_account_label" /> app:layout_constraintTop_toBottomOf="@id/lv_life_account_label" />
<androidx.core.widget.NestedScrollView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/sv_merchant_service" android:id="@+id/rv_service_group"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:paddingStart="15dp" android:paddingStart="15dp"
android:paddingEnd="15dp" android:paddingEnd="15dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/av_merchant_asset"> app:layout_constraintTop_toBottomOf="@id/av_merchant_asset" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.yidian.shenghuoquan.newscontent.widget.MerchantServiceView
android:id="@+id/sv_merchant_service_publish"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.newscontent.widget.MerchantServiceView
android:id="@+id/sv_merchant_service_management"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sv_merchant_service_publish" />
<com.yidian.shenghuoquan.newscontent.widget.MerchantServiceView
android:id="@+id/sv_merchant_service_other"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sv_merchant_service_management" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
android:id="@+id/iv_content" android:id="@+id/iv_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
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="match_parent"
android:foreground="@mipmap/bg_merchant_asset" android:foreground="@mipmap/bg_merchant_asset"
android:background="@drawable/shape_bg_merchant_center_card" android:background="@drawable/shape_bg_merchant_center_card"
android:padding="19dp"> android:padding="19dp">
......
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