Commit c2a7eda4 authored by shiyl's avatar shiyl

Merge branch 'dev' into dev_7.2

# Conflicts:
#	Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/center/MerchantCenterActivity.kt
parents 66222f61 3efd3177
...@@ -82,4 +82,10 @@ dependencies { ...@@ -82,4 +82,10 @@ dependencies {
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper //https://github.com/CymChad/BaseRecyclerViewAdapterHelper
api "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4" api "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4"
implementation ('com.yidian.android:CommonComponent:0.0.88'){
exclude(group: 'com.yidian.android', module: 'NetworkImageLib')
}
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
} }
\ No newline at end of file
...@@ -2,11 +2,40 @@ package com.yidian.common ...@@ -2,11 +2,40 @@ package com.yidian.common
import android.app.Activity import android.app.Activity
import android.app.Application import android.app.Application
import com.scwang.smart.refresh.footer.ClassicsFooter
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.constant.SpinnerStyle
open class YdBaseApplication: Application(){ open class YdBaseApplication : Application() {
companion object{ companion object {
lateinit var context: Application lateinit var context: Application
var activityList = ArrayList<Activity>() var activityList = ArrayList<Activity>()
}
override fun onCreate() {
super.onCreate()
initSmartRefreshLayout()
}
/**
* 设置刷新 默认的header和footer
*/
private fun initSmartRefreshLayout() {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout ->
layout.setPrimaryColorsId(android.R.color.transparent)//全局设置主题颜色
ClassicsHeader(context) //指定为经典Header,默认是 贝塞尔雷达Header
}
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreator { context, layout ->
layout.setEnableLoadMoreWhenContentNotFull(true) //内容不满一页时候启用加载更多
val footer = ClassicsFooter(context)
footer.setBackgroundResource(android.R.color.transparent)
footer.setDrawableSize(20f)
footer.spinnerStyle = SpinnerStyle.FixedBehind //设置为固定在背后模式
footer //指定为经典Footer,默认是 BallPulseFooter
} }
}
} }
\ No newline at end of file
...@@ -101,4 +101,4 @@ class HttpParamsUtils{ ...@@ -101,4 +101,4 @@ class HttpParamsUtils{
return SecretUtil.sign(sb.toString()) return SecretUtil.sign(sb.toString())
} }
} }
} }
\ No newline at end of file
...@@ -79,4 +79,9 @@ dependencies { ...@@ -79,4 +79,9 @@ dependencies {
implementation(name: 'meglive_still', ext: 'aar') implementation(name: 'meglive_still', ext: 'aar')
implementation project(':idcard_quality') implementation project(':idcard_quality')
implementation files('libs/ks3-androidsdk-1.4.9.jar') implementation files('libs/ks3-androidsdk-1.4.9.jar')
implementation ('com.yidian.android:CommonComponent:0.0.88'){
exclude(group: 'com.yidian.android', module: 'NetworkImageLib')
}
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
{ {
"category": "农林畜牧", "category": "农林畜牧",
"list": [ "list": [
"养殖/繁", "养殖/繁",
"农民", "农民",
"农业种植", "农业种植",
"花匠" "花匠"
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
"list": [ "list": [
"出租车", "出租车",
"专职司机", "专职司机",
"物运输", "物运输",
"汽车租赁", "汽车租赁",
"代驾" "代驾"
] ]
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
] ]
}, },
{ {
"category": "房销售", "category": "房销售",
"list": [ "list": [
"房屋中介", "房屋中介",
"房产顾问", "房产顾问",
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
] ]
}, },
{ {
"category": "生制造", "category": "生制造",
"list": [ "list": [
"汽车制造", "汽车制造",
"数控车床", "数控车床",
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
"电焊工", "电焊工",
"纺织制造", "纺织制造",
"农业生产", "农业生产",
"视频加工", "食品加工",
"手工制造" "手工制造"
] ]
}, },
......
...@@ -41,7 +41,7 @@ class LifeAccountIdentityAdapter(val context: Context) : ...@@ -41,7 +41,7 @@ class LifeAccountIdentityAdapter(val context: Context) :
holder.itemView.tv_life_identity.setBackgroundResource(R.drawable.bg_item_manager_selected_on) holder.itemView.tv_life_identity.setBackgroundResource(R.drawable.bg_item_manager_selected_on)
holder.itemView.tv_life_identity.setTextColor(ContextCompat.getColor(context, R.color.color_FFFFFFFF)) holder.itemView.tv_life_identity.setTextColor(ContextCompat.getColor(context, R.color.color_FFFFFFFF))
} else { } else {
holder.itemView.tv_life_identity.text = "普通管理员" holder.itemView.tv_life_identity.text = "普通员工"
holder.itemView.tv_life_identity.setBackgroundResource(R.drawable.bg_item_manager_selected_off) holder.itemView.tv_life_identity.setBackgroundResource(R.drawable.bg_item_manager_selected_off)
holder.itemView.tv_life_identity.setTextColor(ContextCompat.getColor(context, R.color.color_FFEAAF35)) holder.itemView.tv_life_identity.setTextColor(ContextCompat.getColor(context, R.color.color_FFEAAF35))
} }
......
...@@ -15,85 +15,84 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean ...@@ -15,85 +15,84 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
* description: 商户服务adapter * description: 商户服务adapter
*/ */
class MerchantServiceFunctionAdapter @JvmOverloads constructor( class MerchantServiceFunctionAdapter @JvmOverloads constructor(
val context: Context, val context: Context,
data: List<GetConfigListBean.Function>? = null, data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null val listener: OnItemClickListener? = null
) : ) :
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() { RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
companion object { companion object {
// 是否显示标识 // 是否显示标识
private const val FUNCTION_SHOW = 1 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 { init {
// 将不显示的数据去除 // 将不显示的数据去除
data?.let { data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply { (it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) { while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove() if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
} }
}
serviceData.addAll(it)
} }
}
/** /**
* 更新数据 将不显示的数据去除 * 更新数据 将不显示的数据去除
*/ */
fun updateData(data: List<GetConfigListBean.Function>?) { fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let { data?.let {
serviceData.clear() serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply { (it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) { while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove() if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
} }
}
serviceData.addAll(it)
notifyDataSetChanged()
} }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate( viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from( LayoutInflater.from(
parent.context parent.context
), parent, false ), parent, false
) )
return MerchantServiceViewHolder(viewBinding.root, viewBinding) return MerchantServiceViewHolder(viewBinding.root, viewBinding)
} }
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position] val data = serviceData[position]
if (data.show != FUNCTION_SHOW) return if (data.icon_url.isNotEmpty()) {
if (data.icon_url.isNotEmpty()) { Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
Glide.with(context).load(data.icon_url).into(viewBinding.ivService) } else {
} else { // TODO: 6/11/21 显示本地icon
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
} }
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
}
override fun getItemCount(): Int { override fun getItemCount(): Int {
return serviceData.size return serviceData.size
} }
class MerchantServiceViewHolder( class MerchantServiceViewHolder(
itemView: View, itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding val viewBinding: ItemMerchantServiceFunctionBinding
) : ) :
RecyclerView.ViewHolder(itemView) RecyclerView.ViewHolder(itemView)
interface OnItemClickListener { interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function) fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
} }
} }
\ No newline at end of file
...@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor( ...@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
init { init {
// 将不显示的数据去除 // 将不显示的数据去除
data?.let { data?.let {
it.forEach { menuItem -> it.forEach { item ->
if (menuItem.show == GROUP_SHOW) { if (item.show == GROUP_SHOW) {
groupData.add(menuItem) 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( override fun onCreateViewHolder(
parent: ViewGroup, parent: ViewGroup,
viewType: Int viewType: Int
...@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor( ...@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
parent, parent,
false 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) { override fun onBindViewHolder(holder: MerchantServiceGroupViewHolder, position: Int) {
val data = groupData[position] val data = groupData[position]
if (data.show != GROUP_SHOW) return
holder.viewBinding.tvTitle.text = data.group_name holder.viewBinding.tvTitle.text = data.group_name
viewBinding.rvService.layoutManager = viewBinding.rvService.layoutManager = GridLayoutManager(context, 4)
GridLayoutManager(context, 4)
viewBinding.rvService.adapter = MerchantServiceFunctionAdapter(context, data.functions, listener) viewBinding.rvService.adapter = MerchantServiceFunctionAdapter(context, data.functions, listener)
} }
......
...@@ -17,79 +17,80 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean ...@@ -17,79 +17,80 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
* description: 商户切换主体 * description: 商户切换主体
*/ */
class MerchantSwitchAdapter( class MerchantSwitchAdapter(
private val curLifeAccountId: String, private val curLifeAccountId: String,
data: List<LifeAccountItemBean.Response>? = null, data: List<LifeAccountItemBean.Response>? = null,
val listener: OnItemClickListener? = null val listener: OnItemClickListener? = null
) : ) :
RecyclerView.Adapter<MerchantSwitchAdapter.MerchantSwitchViewHolder>() { RecyclerView.Adapter<MerchantSwitchAdapter.MerchantSwitchViewHolder>() {
private val data by lazy { private val data by lazy {
data?.let { data?.let {
ArrayList<LifeAccountItemBean.Response>(it) ArrayList<LifeAccountItemBean.Response>(it)
} ?: ArrayList() } ?: ArrayList()
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantSwitchViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantSwitchViewHolder {
val viewBinding = ItemMerchantSwitchBinding.bind( val viewBinding = ItemMerchantSwitchBinding.bind(
LayoutInflater.from(parent.context) LayoutInflater.from(parent.context)
.inflate(R.layout.item_merchant_switch, parent, false) .inflate(R.layout.item_merchant_switch, parent, false)
) )
return MerchantSwitchViewHolder(viewBinding.root, viewBinding) return MerchantSwitchViewHolder(viewBinding.root, viewBinding)
} }
override fun onBindViewHolder(holder: MerchantSwitchViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantSwitchViewHolder, position: Int) {
val data = data[position] as LifeAccountItemBean.Response val data = data[position] as LifeAccountItemBean.Response
holder.viewBinding.tvLifeAccountName.text = data.life_account_name holder.viewBinding.tvLifeAccountName.text = data.life_account_name
holder.viewBinding.tvLifeAccountStatus.apply { holder.viewBinding.tvLifeAccountStatus.apply {
when (data.life_account_auth_status) { when (data.life_account_auth_status) {
Constant.STATUS_AUTH_NOT -> { Constant.STATUS_AUTH_NOT -> {
// 未认证 // 未认证
setBackgroundResource(R.drawable.shape_life_account_status_unauth) setBackgroundResource(R.drawable.shape_life_account_status_unauth)
setTextColor(ContextCompat.getColor(context, R.color.color_333333)) setTextColor(ContextCompat.getColor(context, R.color.color_333333))
text = resources.getString(R.string.not_auth) text = resources.getString(R.string.not_auth)
} }
Constant.STATUS_AUTH_FINISH -> { Constant.STATUS_AUTH_FINISH -> {
// 已认证 // 已认证
setBackgroundResource(R.drawable.shape_life_account_status_auth) setBackgroundResource(R.drawable.shape_life_account_status_auth)
setTextColor(ContextCompat.getColor(context, R.color.color_FF1852F1)) setTextColor(ContextCompat.getColor(context, R.color.color_FF1852F1))
text = when (data.life_account_type) { text = when (data.tag.tag_key) {
Constant.TYPE_LIFE_ACCOUNT_PERSONAL -> resources.getString(R.string.personal_auth) Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> resources.getString(R.string.common_enterprise)
Constant.TYPE_LIFE_ACCOUNT_ENTERPRISE -> resources.getString(R.string.enterprise_auth) Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> resources.getString(R.string.individual_business)
else -> "" Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> resources.getString(R.string.personal_auth)
} else -> ""
} }
} }
when (data.enterprise_audit_status) { }
Constant.STATUS_AUDIT_UNDER -> { 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)) setBackgroundResource(R.drawable.shape_life_account_status_audit)
text = resources.getString(R.string.under_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)
}
}
} }
// 当前选中的生活号 Constant.STATUS_AUDIT_REJECT -> {
holder.viewBinding.ivLifeAccountSelect.isVisible = data.life_account_id == curLifeAccountId // 审核驳回
holder.viewBinding.root.setOnClickListener { setBackgroundResource(R.drawable.shape_life_account_status_reject)
listener?.onItemClick(it, position, data) setTextColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
text = resources.getString(R.string.auth_reject)
} }
}
} }
// 当前选中的生活号
override fun getItemCount(): Int { holder.viewBinding.ivLifeAccountSelect.isVisible = data.life_account_id == curLifeAccountId
return data.size holder.viewBinding.root.setOnClickListener {
listener?.onItemClick(it, position, data)
} }
}
interface OnItemClickListener { override fun getItemCount(): Int {
fun onItemClick(view: View, position: Int, data: LifeAccountItemBean.Response) return data.size
} }
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: LifeAccountItemBean.Response)
}
class MerchantSwitchViewHolder(itemView: View, val viewBinding: ItemMerchantSwitchBinding) : class MerchantSwitchViewHolder(itemView: View, val viewBinding: ItemMerchantSwitchBinding) :
RecyclerView.ViewHolder(itemView) RecyclerView.ViewHolder(itemView)
} }
\ No newline at end of file
...@@ -38,7 +38,6 @@ import com.yidian.common.XRouterPathConstants.Companion.TRANSACTION_LIST ...@@ -38,7 +38,6 @@ import com.yidian.common.XRouterPathConstants.Companion.TRANSACTION_LIST
import com.yidian.common.XRouterPathConstants.Companion.VERIFY_IDENTITY import com.yidian.common.XRouterPathConstants.Companion.VERIFY_IDENTITY
import com.yidian.common.XRouterPathConstants.Companion.WITHDRAW import com.yidian.common.XRouterPathConstants.Companion.WITHDRAW
import com.yidian.common.YdBaseApplication import com.yidian.common.YdBaseApplication
import com.yidian.news.YdImageLoader
import com.yidian.news.util.ProcessUtil import com.yidian.news.util.ProcessUtil
import com.yidian.nightmode.util.NightModeUtil import com.yidian.nightmode.util.NightModeUtil
import com.yidian.shenghuoquan.newscontent.personnel.ui.* import com.yidian.shenghuoquan.newscontent.personnel.ui.*
...@@ -69,7 +68,6 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -69,7 +68,6 @@ class NewsContentApplication : YdBaseApplication() {
initService() initService()
NightModeUtil.setContext(this) NightModeUtil.setContext(this)
DensityUtil.init(this) DensityUtil.init(this)
YdImageLoader.init(this)
} }
} }
...@@ -106,8 +104,7 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -106,8 +104,7 @@ class NewsContentApplication : YdBaseApplication() {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap) intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
} }
intent.setClass(context, LoginLifeCircleActivity::class.java) intent.setClass(context, LoginLifeCircleActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
// intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent) context.startActivity(intent)
} }
}), }),
...@@ -385,7 +382,7 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -385,7 +382,7 @@ class NewsContentApplication : YdBaseApplication() {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap) intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
} }
intent.setClass(context, MerchantCenterActivity::class.java) intent.setClass(context, MerchantCenterActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent) context.startActivity(intent)
} }
}), }),
......
...@@ -42,6 +42,10 @@ object Constant { ...@@ -42,6 +42,10 @@ object Constant {
const val LIFE_ACCOUNT_TAG_AUDIT_UNDER = 5 // 审核中 const val LIFE_ACCOUNT_TAG_AUDIT_UNDER = 5 // 审核中
const val LIFE_ACCOUNT_TAG_AUTH_REJECT = 6 // 认证驳回 const val LIFE_ACCOUNT_TAG_AUTH_REJECT = 6 // 认证驳回
// 生活号角色
const val TYPE_ROLE_ADMIN = 1 // 超级管理员
const val TYPE_ROLE_ORDINARY = 2 // 非管理员
// 身份证、营业执照上传方式 // 身份证、营业执照上传方式
const val ITEM_TAKE_PHOTO = "拍照" const val ITEM_TAKE_PHOTO = "拍照"
const val ITEM_OPEN_ALBUM = "相册" const val ITEM_OPEN_ALBUM = "相册"
...@@ -82,4 +86,12 @@ object Constant { ...@@ -82,4 +86,12 @@ object Constant {
// 服务端标识 // 服务端标识
const val ALIVE_DETECT_SUCCESS = 1 // 活体检测成功 const val ALIVE_DETECT_SUCCESS = 1 // 活体检测成功
const val ALIVE_DETECT_FAIL = 2 // 活体检测未检测或失败 const val ALIVE_DETECT_FAIL = 2 // 活体检测未检测或失败
// 商户管理中心服务组id
const val MERCHANT_SERVICE_GROUP_PUBLISH = 1 // 我要发布
const val MERCHANT_SERVICE_GROUP_MANAGEMENT = 2 // 管理服务
const val MERCHANT_SERVICE_GROUP_OTHER = 3 // 其他服务
// 各输入场景最大长度显示
const val MAX_LENGTH_LIFE_ACCOUNT_NAME = 24 // 生活号名称
} }
...@@ -7,24 +7,24 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean ...@@ -7,24 +7,24 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
*/ */
class AuthEnterpriseLegalIdentityCommitBean { class AuthEnterpriseLegalIdentityCommitBean {
data class Request( data class Request(
val record_id: Long, val record_id: Long,
val front_img: String, val front_img: String,
val bak_img: String, val bak_img: String,
val front_completeness: Int, val front_completeness: Int,
val bak_completeness: Int, val bak_completeness: Int,
val idcard_number: String, val idcard_number: String,
val gender: String?, val gender: String?,
val name: String, val name: String,
val address: String?, val address: String?,
val nationality: String?, val nationality: String?,
val valid_date_start: String?, val valid_date_start: String?,
val valid_date_end: String?, val valid_date_end: String?,
val issued_by: String?, val issued_by: String?,
val life_account_id: Long?, val life_account_id: Long?,
val mobile: String, val mobile: String,
) )
data class Response(val life_account_id: String) data class Response(val life_account_id: String, val name: String, val code: String, val legal_person: String, val legal_id_card: String)
} }
\ No newline at end of file
...@@ -7,8 +7,8 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean ...@@ -7,8 +7,8 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
*/ */
class AuthIndividualBusinessCompleteBean { class AuthIndividualBusinessCompleteBean {
data class Request(val record_id: Long) data class Request(val record_id: Long)
data class Response(val life_account_id: String) data class Response(val life_account_id: String, val name: String, val code: String, val legal_person: String, val legal_id_card: String)
} }
\ No newline at end of file
...@@ -6,6 +6,15 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean ...@@ -6,6 +6,15 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
* description: API /merchant/auth/complete * description: API /merchant/auth/complete
*/ */
class AuthPersonalCompleteBean(val request: Request) { class AuthPersonalCompleteBean(val request: Request) {
data class Request(val mobile: String, val life_account_id: Long?)
data class Response(val life_account_id: String) data class Request(val mobile: String, val life_account_id: Long?)
}
\ No newline at end of file data class Response(
val life_account_id: String,
val occupation: String,
val full_name: String,
val id_card: String,
val life_account_name: String
)
}
...@@ -9,27 +9,34 @@ import java.io.Serializable ...@@ -9,27 +9,34 @@ import java.io.Serializable
*/ */
class GetLifeAccountInfoByIdBean { class GetLifeAccountInfoByIdBean {
data class Request(val life_account_id: Long) data class Request(val life_account_id: Long)
data class Response( data class Response(
val audit_status: Int, val audit_status: Int,
val create_time: String, val code: String,
val enterprise_auth_record_id: Int, val create_time: String,
val id_card: String, val enterprise_auth_record_id: Int,
val id_type: Int, val id_card: String,
val legal_person: String, val id_type: Int,
val life_account_admin_id: Long, val legal_person: String,
val life_account_auth_status: Int, val life_account_admin_id: Long,
val life_account_id: String, val life_account_auth_status: Int,
val life_account_name: String, val life_account_id: String,
val life_account_status: Int, val life_account_name: String,
val life_account_type: Int, val life_account_status: Int,
val merchant_id: Int, val life_account_type: Int,
val occupation: String, val merchant_id: Int,
val update_time: String, val mobile: String,
val code: String, val name: String,
val name: String, val role_type: Int,
val mobile: String, val tag: Tag,
) : Serializable val update_time: String,
val occupation: String
) : Serializable
} data class Tag(
\ No newline at end of file val tag_key: Int,
val tag_text: String
) : Serializable
}
package com.yidian.shenghuoquan.newscontent.ui package com.yidian.shenghuoquan.newscontent.ui
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
import com.yidian.common.HawkConfig import com.yidian.common.HawkConfig
...@@ -39,8 +40,8 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC ...@@ -39,8 +40,8 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC
ApiService.getLifeAccountList(this) ApiService.getLifeAccountList(this)
} else { } else {
// 未登录 跳转登录 // 未登录 跳转登录
XPageManager.push(XRouterPathConstants.LOGIN_LIFE_CIRCLE, null) // 此处没有使用XPage打开页面 原因:不能设置flag
XPageManager.pop(null) startActivity(Intent(this, LoginLifeCircleActivity::class.java))
finish() finish()
} }
} }
......
...@@ -53,7 +53,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -53,7 +53,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
} }
private fun initView() { private fun initView() {
Hawk.put(HawkConfig.LoginStatus, false) cleanLocalStorage()
setLoginButtonStatus(false) setLoginButtonStatus(false)
mCountDownTimerUtils = CountDownTimerUtils(viewBind.tvGetCode, 60000, 1000) mCountDownTimerUtils = CountDownTimerUtils(viewBind.tvGetCode, 60000, 1000)
} }
...@@ -151,6 +151,16 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -151,6 +151,16 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
} }
} }
/**
* 清理本地保存的数据
*/
private fun cleanLocalStorage() {
// 登录状态
Hawk.put(HawkConfig.LoginStatus, false)
// 生活号id
Hawk.delete(HawkConfig.LifeAccountId)
}
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
mCountDownTimerUtils.cancel() mCountDownTimerUtils.cancel()
...@@ -202,7 +212,10 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -202,7 +212,10 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
Hawk.put(HawkConfig.Mobile, loginResponse?.mobile) Hawk.put(HawkConfig.Mobile, loginResponse?.mobile)
Hawk.put(HawkConfig.Nickname, loginResponse?.nick_name) Hawk.put(HawkConfig.Nickname, loginResponse?.nick_name)
Hawk.put(HawkConfig.Avatar, loginResponse?.avatar) Hawk.put(HawkConfig.Avatar, loginResponse?.avatar)
ApiService.getLifeAccountList(this) if (t?.code == 0) {
// 登录成功后请求生活号列表接口
ApiService.getLifeAccountList(this)
}
} }
} }
...@@ -19,39 +19,26 @@ object LifeAccountAuthDataManager { ...@@ -19,39 +19,26 @@ object LifeAccountAuthDataManager {
val merchantAuthData by lazy { LifeAccountMerchantAuthData() } val merchantAuthData by lazy { LifeAccountMerchantAuthData() }
/** /**
* 将身份证OCR结果填入 * 将身份证人像面OCR结果填入
*/ */
fun generatePersonalAuthData(data: GetIDCardOCRBean.Response) { fun generateIDCardPortraitFaceData(data: GetIDCardOCRBean.Response) {
if (data.posit.completeness != -1) { personalAuthData.idCardPortraitFaceCompleteness = data.posit.completeness
personalAuthData.idCardPortraitFaceCompleteness = data.posit.completeness personalAuthData.idCardNum = data.posit.idcard_number
} personalAuthData.gender = data.posit.gender
if (data.back.completeness != -1) { personalAuthData.realName = data.posit.name
personalAuthData.idCardNationalEmblemFaceCompleteness = data.back.completeness personalAuthData.address = data.posit.address
} personalAuthData.nationality = data.posit.nationality
if (data.posit.idcard_number.isNotEmpty()) {
personalAuthData.idCardNum = data.posit.idcard_number }
}
if (data.posit.gender.isNotEmpty()) { /**
personalAuthData.gender = data.posit.gender * 将身份证国徽面OCR结果填入
} */
if (data.posit.name.isNotEmpty()) { fun generateIDCardNationEmblemFaceData(data: GetIDCardOCRBean.Response) {
personalAuthData.realName = data.posit.name personalAuthData.idCardNationalEmblemFaceCompleteness = data.back.completeness
} personalAuthData.validDateStart = data.back.valid_date_start
if (data.posit.address.isNotEmpty()) { personalAuthData.validDateEnd = data.back.valid_date_end
personalAuthData.address = data.posit.address personalAuthData.issuedBy = data.back.issued_by
}
if (data.posit.nationality.isNotEmpty()) {
personalAuthData.nationality = data.posit.nationality
}
if (data.back.valid_date_start.isNotEmpty()) {
personalAuthData.validDateStart = data.back.valid_date_start
}
if (data.back.valid_date_end.isNotEmpty()) {
personalAuthData.validDateEnd = data.back.valid_date_end
}
if (data.back.issued_by.isNotEmpty()) {
personalAuthData.issuedBy = data.back.issued_by
}
} }
/** /**
......
...@@ -78,8 +78,14 @@ class LifeAccountBusinessLicenseAuthFragment : ...@@ -78,8 +78,14 @@ class LifeAccountBusinessLicenseAuthFragment :
private fun initView() { private fun initView() {
// 输入过滤 // 输入过滤
// 企业名称限制40汉字
viewBinding.evRegistrationName.setInputFilters(InputFilterUtil.getRegistrationNameFilter(), InputFilter.LengthFilter(40)) viewBinding.evRegistrationName.setInputFilters(InputFilterUtil.getRegistrationNameFilter(), InputFilter.LengthFilter(40))
viewBinding.evRegistrationCode.setInputFilters(InputFilterUtil.getRegistrationCodeFilter(), InputFilter.LengthFilter(18)) // 统一信用代码限制18位数字+大小写英文字母 小写字母自动转换大写字母
viewBinding.evRegistrationCode.setInputFilters(
InputFilterUtil.getRegistrationCodeFilter(),
InputFilter.LengthFilter(18),
InputFilter.AllCaps()
)
} }
......
...@@ -3,7 +3,7 @@ package com.yidian.shenghuoquan.newscontent.ui.auth ...@@ -3,7 +3,7 @@ package com.yidian.shenghuoquan.newscontent.ui.auth
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.text.Editable
import android.text.InputFilter import androidx.core.content.ContextCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
import com.yidian.common.HawkConfig import com.yidian.common.HawkConfig
...@@ -12,6 +12,7 @@ import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_CREATE ...@@ -12,6 +12,7 @@ import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_CREATE
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.ICreateLifeAccountCallback import com.yidian.shenghuoquan.newscontent.bean.ICreateLifeAccountCallback
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountCreateBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountCreateBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil
...@@ -21,7 +22,7 @@ import com.yidian.utils.ToastUtil ...@@ -21,7 +22,7 @@ import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>(), class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>(),
ICreateLifeAccountCallback { ICreateLifeAccountCallback, InputFilterUtil.OnLengthFilterCallback {
companion object { companion object {
private const val TAG = "LifeAccountCreate" private const val TAG = "LifeAccountCreate"
const val LIFE_ACCOUNT_ID = "life_account_id" const val LIFE_ACCOUNT_ID = "life_account_id"
...@@ -36,10 +37,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding> ...@@ -36,10 +37,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
return LIFE_ACCOUNT_CREATE return LIFE_ACCOUNT_CREATE
} }
/**
* 生活号名称长度限制
*/
private val lifeAccountNameMaxLength = 40
private var lifeAccountId: String? = null private var lifeAccountId: String? = null
private var lifeAccountName: String? = null private var lifeAccountName: String? = null
...@@ -74,7 +71,7 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding> ...@@ -74,7 +71,7 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
} }
}) })
// 设置输入过滤规则 // 设置输入过滤规则
viewBind.etAccount.filters = arrayOf(InputFilterUtil.getLifeAccountNameFilter(), InputFilter.LengthFilter(lifeAccountNameMaxLength + 1)) viewBind.etAccount.filters = arrayOf(InputFilterUtil.getLengthFilter(Constant.MAX_LENGTH_LIFE_ACCOUNT_NAME, this))
viewBind.btnCreateAccount.setOnClickListener { viewBind.btnCreateAccount.setOnClickListener {
createLifeAccount() createLifeAccount()
} }
...@@ -110,14 +107,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding> ...@@ -110,14 +107,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
viewBind.btnCreateAccount.isEnabled = false viewBind.btnCreateAccount.isEnabled = false
viewBind.tvErrorTips.isVisible = false viewBind.tvErrorTips.isVisible = false
viewBind.vDivider.setBackgroundResource(R.color.divider_white) viewBind.vDivider.setBackgroundResource(R.color.divider_white)
return
}
if (s.length > lifeAccountNameMaxLength) {
viewBind.btnCreateAccount.alpha = 0.32f
viewBind.btnCreateAccount.isEnabled = false
viewBind.tvErrorTips.isVisible = true
viewBind.etAccount.setTextColor(resources.getColor(R.color.red_account_tips))
viewBind.vDivider.setBackgroundResource(R.color.red_account_tips)
} else { } else {
viewBind.btnCreateAccount.alpha = 1f viewBind.btnCreateAccount.alpha = 1f
viewBind.btnCreateAccount.isEnabled = true viewBind.btnCreateAccount.isEnabled = true
...@@ -137,9 +126,17 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding> ...@@ -137,9 +126,17 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
Pair(LifeAccountCreateCompleteActivity.EXTRA_LIFE_ACCOUNT_ID, lifeAccountId) Pair(LifeAccountCreateCompleteActivity.EXTRA_LIFE_ACCOUNT_ID, lifeAccountId)
) )
) )
XPageManager.pop(null)
} else { } else {
ToastUtil.showToast(this, "生活号创建失败") ToastUtil.showToast(this, "生活号创建失败")
} }
} }
override fun onLengthOverrun(maxLength: Int) {
// 输入长度超限 展示错误提示
viewBind.tvErrorTips.isVisible = true
viewBind.etAccount.setTextColor(ContextCompat.getColor(this, R.color.red_account_tips))
viewBind.vDivider.setBackgroundResource(R.color.red_account_tips)
}
} }
...@@ -96,4 +96,8 @@ class LifeAccountCreateCompleteActivity : BaseActivity<ActivityLifeAccountCreate ...@@ -96,4 +96,8 @@ class LifeAccountCreateCompleteActivity : BaseActivity<ActivityLifeAccountCreate
} }
} }
override fun onBackPressed() {
// 禁止back event
}
} }
package com.yidian.shenghuoquan.newscontent.ui.auth package com.yidian.shenghuoquan.newscontent.ui.auth
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.View import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
...@@ -44,6 +43,9 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -44,6 +43,9 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
// 认证数据 // 认证数据
const val EXTRA_AUTH_DATA = "authData" const val EXTRA_AUTH_DATA = "authData"
// 是否审核驳回后修改认证
const val EXTRA_IS_AUTH_MODIFY = "isAuthModify"
} }
private val fragmentList: ArrayList<Fragment> by lazy { private val fragmentList: ArrayList<Fragment> by lazy {
...@@ -80,6 +82,22 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -80,6 +82,22 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
} }
} }
/**
* 是否为认证驳回修改情况
*/
private val isAuthModify by lazy {
intent.getSerializableExtra(XRouterPathConstants.ParamsKey)?.let {
(it as HashMap<*, *>)[EXTRA_IS_AUTH_MODIFY]?.let { bool ->
bool as Boolean
} ?: false
} ?: false
}
/**
* 上一次选择的商户类型
*/
private var lastSelectedMerchantType: String? = null
override fun createViewBinding(): ActivityLifeAccountEnterpriseAuthBinding { override fun createViewBinding(): ActivityLifeAccountEnterpriseAuthBinding {
return ActivityLifeAccountEnterpriseAuthBinding.inflate(layoutInflater) return ActivityLifeAccountEnterpriseAuthBinding.inflate(layoutInflater)
} }
...@@ -150,13 +168,14 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -150,13 +168,14 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
// 如果有已存在的认证流程则还原进度 // 如果有已存在的认证流程则还原进度
authData?.let { LifeAccountAuthDataManager.generateMerchantAuthData(it) } authData?.let { LifeAccountAuthDataManager.generateMerchantAuthData(it) }
authData?.data_type?.let { authData?.data_type?.let {
viewBind.svMerchantType.setContentResult( // 商户类型
if (it == Constant.TYPE_INDIVIDUAL_BUSINESS) { val type = if (it == Constant.TYPE_INDIVIDUAL_BUSINESS) {
Constant.ITEM_INDIVIDUAL_BUSINESSES Constant.ITEM_INDIVIDUAL_BUSINESSES
} else { } else {
Constant.ITEM_COMMON_ENTERPRISE Constant.ITEM_COMMON_ENTERPRISE
} }
) viewBind.svMerchantType.setContentResult(type)
lastSelectedMerchantType = type
} }
val bundle = Bundle() val bundle = Bundle()
bundle.putSerializable(LifeAccountBusinessLicenseAuthFragment.EXTRA_AUTH_DATA, authData) bundle.putSerializable(LifeAccountBusinessLicenseAuthFragment.EXTRA_AUTH_DATA, authData)
...@@ -238,17 +257,24 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -238,17 +257,24 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
} }
override fun onItemClick(view: View, position: Int, data: BottomSelectBean) { override fun onItemClick(view: View, position: Int, data: BottomSelectBean) {
if (viewBind.svMerchantType.getCurSelectItem().isNotEmpty()) { // 未修改商户类型不清空营业执照信息
// 更换商户类型,清空营业执照图片、清空注册名称和注册码 if (lastSelectedMerchantType == data.item) {
(fragmentList[0] as LifeAccountBusinessLicenseAuthFragment).clearBusinessLicenseInfo() return
} else {
// 回显选择的商户类型
viewBind.svMerchantType.setContentResult(data.item)
// 保存选择的商户类型
LifeAccountAuthDataManager.merchantAuthData.merchantType =
if (data.item == Constant.ITEM_INDIVIDUAL_BUSINESSES) Constant.TYPE_INDIVIDUAL_BUSINESS else Constant.TYPE_COMMON_ENTERPRISE
// 第一次选择商户类型不清空营业执照信息
if (lastSelectedMerchantType != null) {
// 更换商户类型,清空营业执照图片、清空注册名称和注册码
(fragmentList[0] as LifeAccountBusinessLicenseAuthFragment).clearBusinessLicenseInfo()
}
// 检查下一步条件
checkNextCondition()
lastSelectedMerchantType = data.item
} }
// 回显选择的商户类型
viewBind.svMerchantType.setContentResult(data.item)
// 保存选择的商户类型
LifeAccountAuthDataManager.merchantAuthData.merchantType =
if (data.item == Constant.ITEM_INDIVIDUAL_BUSINESSES) Constant.TYPE_INDIVIDUAL_BUSINESS else Constant.TYPE_COMMON_ENTERPRISE
// 检查下一步条件
checkNextCondition()
} }
override fun authBusinessLicenseCommitSuccess(result: AuthBusinessLicenseCommitBean.Response?) { override fun authBusinessLicenseCommitSuccess(result: AuthBusinessLicenseCommitBean.Response?) {
...@@ -279,28 +305,15 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -279,28 +305,15 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
XPageManager.push( XPageManager.push(
XRouterPathConstants.LIFE_ACCOUNT_ENTERPRISE_AUTH_COMPLETE, XRouterPathConstants.LIFE_ACCOUNT_ENTERPRISE_AUTH_COMPLETE,
hashMapOf( hashMapOf(
Pair( Pair(LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_NAME, result?.name),
LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_NAME, Pair(LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_CODE, result?.code),
LifeAccountAuthDataManager.merchantAuthData.registrationName Pair(LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NAME, result?.legal_person),
), Pair(LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NUM, result?.legal_id_card),
Pair( Pair(LifeAccountEnterpriseAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID, result?.life_account_id),
LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_CODE, Pair(LifeAccountEnterpriseAuthCompleteActivity.EXTRA_IS_AUTH_MODIFY, isAuthModify)
LifeAccountAuthDataManager.merchantAuthData.registrationCode
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NAME,
LifeAccountAuthDataManager.personalAuthData.realName
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NUM,
LifeAccountAuthDataManager.personalAuthData.idCardNum
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID,
result?.life_account_id
)
) )
) )
XPageManager.pop(null)
} }
override fun authEnterpriseLegalIdentityCommitFailure(message: String?) { override fun authEnterpriseLegalIdentityCommitFailure(message: String?) {
...@@ -314,28 +327,15 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -314,28 +327,15 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
XPageManager.push( XPageManager.push(
XRouterPathConstants.LIFE_ACCOUNT_ENTERPRISE_AUTH_COMPLETE, XRouterPathConstants.LIFE_ACCOUNT_ENTERPRISE_AUTH_COMPLETE,
hashMapOf( hashMapOf(
Pair( Pair(LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_NAME, result?.name),
LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_NAME, Pair(LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_CODE, result?.code),
LifeAccountAuthDataManager.merchantAuthData.registrationName Pair(LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NAME, result?.legal_person),
), Pair(LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NUM, result?.legal_id_card),
Pair( Pair(LifeAccountEnterpriseAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID, result?.life_account_id),
LifeAccountEnterpriseAuthCompleteActivity.REGISTRATION_CODE, Pair(LifeAccountEnterpriseAuthCompleteActivity.EXTRA_IS_AUTH_MODIFY, isAuthModify)
LifeAccountAuthDataManager.merchantAuthData.registrationCode
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NAME,
LifeAccountAuthDataManager.personalAuthData.realName
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.ID_CARD_NUM,
LifeAccountAuthDataManager.personalAuthData.idCardNum
),
Pair(
LifeAccountEnterpriseAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID,
result?.life_account_id
)
) )
) )
XPageManager.pop(null)
} }
override fun authIndividualBusinessCompleteFailure(message: String?) { override fun authIndividualBusinessCompleteFailure(message: String?) {
...@@ -358,4 +358,20 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp ...@@ -358,4 +358,20 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
} }
} }
override fun onBackPressed() {
// 返回上一步/上一页
if (viewBind.pvAuthProcess.curProcess == 0) {
// 当前是第一个fragment 则退出当前activity
XPageManager.pop(null)
} else {
viewBind.pvAuthProcess.setProcess(--viewBind.pvAuthProcess.curProcess)
if (viewBind.pvAuthProcess.curProcess == 0) {
viewBind.svMerchantType.enableSelect(true)
}
// 回退fragment
switchFragment(fragmentList[viewBind.pvAuthProcess.curProcess])
checkNextCondition()
}
}
} }
...@@ -5,7 +5,6 @@ import android.view.View ...@@ -5,7 +5,6 @@ import android.view.View
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.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountEnterpriseAuthCompleteBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountEnterpriseAuthCompleteBinding
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
...@@ -24,6 +23,9 @@ class LifeAccountEnterpriseAuthCompleteActivity : ...@@ -24,6 +23,9 @@ class LifeAccountEnterpriseAuthCompleteActivity :
const val ID_CARD_NAME = "idCardName" const val ID_CARD_NAME = "idCardName"
const val ID_CARD_NUM = "idCardNum" const val ID_CARD_NUM = "idCardNum"
const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id" const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id"
// 是否审核驳回后修改认证
const val EXTRA_IS_AUTH_MODIFY = "isAuthModify"
} }
/** /**
...@@ -64,10 +66,9 @@ class LifeAccountEnterpriseAuthCompleteActivity : ...@@ -64,10 +66,9 @@ class LifeAccountEnterpriseAuthCompleteActivity :
-1, -1,
-1, -1,
params?.get(REGISTRATION_NAME)?.let { it as String }, params?.get(REGISTRATION_NAME)?.let { it as String },
params?.get(REGISTRATION_CODE) params?.get(REGISTRATION_CODE)?.let { it as String },
?.let { it as String },
params?.get(ID_CARD_NAME)?.let { it as String }, params?.get(ID_CARD_NAME)?.let { it as String },
SensitiveInfoUtil.idCardNumEncrypt(params?.get(ID_CARD_NUM)?.let { it as String } ?: "") params?.get(ID_CARD_NUM)?.let { it as String }
) )
} }
...@@ -85,4 +86,8 @@ class LifeAccountEnterpriseAuthCompleteActivity : ...@@ -85,4 +86,8 @@ class LifeAccountEnterpriseAuthCompleteActivity :
) )
} }
} }
override fun onBackPressed() {
// 禁止back event
}
} }
...@@ -50,9 +50,8 @@ import java.io.File ...@@ -50,9 +50,8 @@ import java.io.File
* description: 生活号身份证认证 * description: 生活号身份证认证
*/ */
class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuthBinding>(), class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuthBinding>(),
View.OnClickListener, BottomSelectAdapter.OnItemClickListener<BottomSelectBean>, View.OnClickListener, BottomSelectAdapter.OnItemClickListener<BottomSelectBean>, AuthPersonalGetTokenCallback,
IGetIDCardOCRCallback, AuthPersonalGetTokenCallback, IdentifyIdOcrVerifyCallback, PreCallback, IdentifyIdOcrVerifyCallback, PreCallback, DetectCallback, KS3Core.OnKS3TaskListener, IAuthPersonalCheckCallback,
DetectCallback, KS3Core.OnKS3TaskListener, IAuthPersonalCheckCallback,
IAuthLiveIdentityCallback, LifeAccountAuthImageView.OnLifeAccountAuthImageViewCallback, IAuthLiveIdentityCallback, LifeAccountAuthImageView.OnLifeAccountAuthImageViewCallback,
LifeAccountAuthIdentityInfoEditView.OnLifeAccountAuthIdentityInfoEditViewCallback, LifeAccountAuthIdentityInfoEditView.OnLifeAccountAuthIdentityInfoEditViewCallback,
IAuthIndividualBusinessIdentityCommitCallback, IAuthEnterpriseLiveIdentityCallback, IAuthIndividualBusinessIdentityCommitCallback, IAuthEnterpriseLiveIdentityCallback,
...@@ -142,7 +141,8 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -142,7 +141,8 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
(authType == Constant.TYPE_AUTH_PERSONAL) or (authType == Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS) (authType == Constant.TYPE_AUTH_PERSONAL) or (authType == Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS)
// 输入过滤 // 输入过滤
viewBinding.evRealName.setInputFilters(InputFilterUtil.getRealNameFilter(), InputFilter.LengthFilter(40)) viewBinding.evRealName.setInputFilters(InputFilterUtil.getRealNameFilter(), InputFilter.LengthFilter(40))
viewBinding.evIdCardNumber.setInputFilters(InputFilterUtil.getIDCardNumberFilter(), InputFilter.LengthFilter(18)) // 身份证号码输入限制18位字符,数字+大小写x 小写x自动转大写X
viewBinding.evIdCardNumber.setInputFilters(InputFilterUtil.getIDCardNumberFilter(), InputFilter.LengthFilter(18), InputFilter.AllCaps())
viewBinding.evMobile.setInputFilters(InputFilterUtil.getPhoneNumberFilter(), InputFilter.LengthFilter(11)) viewBinding.evMobile.setInputFilters(InputFilterUtil.getPhoneNumberFilter(), InputFilter.LengthFilter(11))
} }
...@@ -480,14 +480,55 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -480,14 +480,55 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
private fun startIDCardOCR(face: Int, objectKey: String?, bucket: String?) { private fun startIDCardOCR(face: Int, objectKey: String?, bucket: String?) {
if (face == Constant.ID_CARD_PORTRAIT_FACE) { if (face == Constant.ID_CARD_PORTRAIT_FACE) {
ApiService.getIDCardOCR( ApiService.getIDCardOCR(
this, hashMapOf( object : IGetIDCardOCRCallback {
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
result?.let { LifeAccountAuthDataManager.generateIDCardPortraitFaceData(it) }
// 回显OCR结果
viewBinding.evRealName.fillEditContent(result?.posit?.name)
viewBinding.evIdCardNumber.fillEditContent(result?.posit?.idcard_number)
// 此时身份证人像面已上传并OCR识别完成 删除本地临时存储文件
File(cachePath + Constant.FILE_PATH_ID_CARD_PORTRAIT_FACE).apply {
if (exists()) delete()
}
// 检查下一步条件
if (authType == Constant.TYPE_AUTH_PERSONAL) {
(activity as LifeAccountPersonalAuthActivity).checkNextCondition()
} else {
(activity as LifeAccountEnterpriseAuthActivity).checkNextCondition()
}
}
override fun getIDCardOCRFailure(message: String?) {
}
}, hashMapOf(
Pair("posit_image_objectid", objectKey), Pair("posit_image_objectid", objectKey),
Pair("posit_bucket", bucket) Pair("posit_bucket", bucket)
) )
) )
} else { } else {
ApiService.getIDCardOCR( ApiService.getIDCardOCR(
this, hashMapOf( object : IGetIDCardOCRCallback {
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
result?.let { LifeAccountAuthDataManager.generateIDCardNationEmblemFaceData(it) }
// 此时身份证国徽面已上传并OCR识别完成 删除本地临时存储文件
File(cachePath + Constant.FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE).apply {
if (exists()) delete()
}
// 检查下一步条件
if (authType == Constant.TYPE_AUTH_PERSONAL) {
(activity as LifeAccountPersonalAuthActivity).checkNextCondition()
} else {
(activity as LifeAccountEnterpriseAuthActivity).checkNextCondition()
}
}
override fun getIDCardOCRFailure(message: String?) {
}
}, hashMapOf(
Pair("back_image_objectid", objectKey), Pair("back_image_objectid", objectKey),
Pair("back_bucket", bucket) Pair("back_bucket", bucket)
) )
...@@ -495,24 +536,6 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -495,24 +536,6 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
} }
} }
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
result?.let { LifeAccountAuthDataManager.generatePersonalAuthData(it) }
// 回显OCR结果
viewBinding.evRealName.fillEditContent(result?.posit?.name)
viewBinding.evIdCardNumber.fillEditContent(result?.posit?.idcard_number)
// 此时身份证已上传并OCR识别完成 删除本地临时存储文件
File(cachePath + Constant.FILE_PATH_ID_CARD_PORTRAIT_FACE).apply {
if (exists()) delete()
}
File(cachePath + Constant.FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE).apply {
if (exists()) delete()
}
}
override fun getIDCardOCRFailure(message: String?) {
}
override fun getTokenSuccess(t: HttpResult<AuthPersonalGetTokenBean.Response?>?) { override fun getTokenSuccess(t: HttpResult<AuthPersonalGetTokenBean.Response?>?) {
LifeAccountAuthDataManager.personalAuthData.liveDetectBizToken = t?.result?.biz_token LifeAccountAuthDataManager.personalAuthData.liveDetectBizToken = t?.result?.biz_token
megLiveManager.preDetect( megLiveManager.preDetect(
......
package com.yidian.shenghuoquan.newscontent.ui.auth package com.yidian.shenghuoquan.newscontent.ui.auth
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.View import android.view.View
import android.widget.CompoundButton import android.widget.CompoundButton
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
...@@ -11,7 +10,6 @@ import com.yidian.common.XEventConfig ...@@ -11,7 +10,6 @@ import com.yidian.common.XEventConfig
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.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountPersonalAuthBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountPersonalAuthBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IAuthPersonalCompleteCallback import com.yidian.shenghuoquan.newscontent.http.callback.IAuthPersonalCompleteCallback
...@@ -37,6 +35,7 @@ class LifeAccountPersonalAuthActivity : ...@@ -37,6 +35,7 @@ class LifeAccountPersonalAuthActivity :
companion object { companion object {
// 认证数据 // 认证数据
const val EXTRA_AUTH_DATA = "authData" const val EXTRA_AUTH_DATA = "authData"
const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id"
} }
/** /**
...@@ -55,6 +54,17 @@ class LifeAccountPersonalAuthActivity : ...@@ -55,6 +54,17 @@ class LifeAccountPersonalAuthActivity :
} }
} }
/**
* 个人未认证的生活号升级传入
*/
private val lifeAccountId by lazy {
intent.getSerializableExtra(XRouterPathConstants.ParamsKey)?.let { params ->
(params as HashMap<*, *>)[EXTRA_LIFE_ACCOUNT_ID]?.let {
it as String
}
}
}
override fun createViewBinding(): ActivityLifeAccountPersonalAuthBinding { override fun createViewBinding(): ActivityLifeAccountPersonalAuthBinding {
return ActivityLifeAccountPersonalAuthBinding.inflate(layoutInflater) return ActivityLifeAccountPersonalAuthBinding.inflate(layoutInflater)
} }
...@@ -123,9 +133,8 @@ class LifeAccountPersonalAuthActivity : ...@@ -123,9 +133,8 @@ class LifeAccountPersonalAuthActivity :
XPageManager.push(XRouterPathConstants.CHOOSE_CAREER, null) XPageManager.push(XRouterPathConstants.CHOOSE_CAREER, null)
} }
R.id.btn_next -> { R.id.btn_next -> {
// TODO: 6/21/21 未认证生活号进行个人认证 传参life_account_id
// 个人认证 完成认证 // 个人认证 完成认证
ApiService.authComplete(this, hashMapOf()) ApiService.authComplete(this, lifeAccountId?.let { hashMapOf(Pair(EXTRA_LIFE_ACCOUNT_ID, it)) } ?: hashMapOf())
} }
R.id.tv_privacy_certification -> { R.id.tv_privacy_certification -> {
...@@ -155,26 +164,12 @@ class LifeAccountPersonalAuthActivity : ...@@ -155,26 +164,12 @@ class LifeAccountPersonalAuthActivity :
XPageManager.push( XPageManager.push(
XRouterPathConstants.LIFE_ACCOUNT_PERSONAL_AUTH_COMPLETE, XRouterPathConstants.LIFE_ACCOUNT_PERSONAL_AUTH_COMPLETE,
hashMapOf( hashMapOf(
Pair( Pair(LifeAccountPersonalAuthCompleteActivity.OCCUPATION, result?.occupation),
LifeAccountPersonalAuthCompleteActivity.OCCUPATION, Pair(LifeAccountPersonalAuthCompleteActivity.PHONE_NUM, Hawk.get(HawkConfig.Mobile, "")),
LifeAccountAuthDataManager.personalAuthData.occupation Pair(LifeAccountPersonalAuthCompleteActivity.REAL_NAME, result?.full_name),
), Pair(LifeAccountPersonalAuthCompleteActivity.ID_CARD_NUM, result?.id_card),
Pair( Pair(LifeAccountPersonalAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID, result?.life_account_id),
LifeAccountPersonalAuthCompleteActivity.PHONE_NUM, Pair(LifeAccountPersonalAuthCompleteActivity.LIFE_ACCOUNT_NAME, result?.life_account_name)
Hawk.get(HawkConfig.Mobile, "")
),
Pair(
LifeAccountPersonalAuthCompleteActivity.REAL_NAME,
LifeAccountAuthDataManager.personalAuthData.realName
),
Pair(
LifeAccountPersonalAuthCompleteActivity.ID_CARD_NUM,
LifeAccountAuthDataManager.personalAuthData.idCardNum
),
Pair(
LifeAccountPersonalAuthCompleteActivity.EXTRA_LIFE_ACCOUNT_ID,
result?.life_account_id
)
) )
) )
XPageManager.pop(null) XPageManager.pop(null)
......
...@@ -21,6 +21,7 @@ class LifeAccountPersonalAuthCompleteActivity : ...@@ -21,6 +21,7 @@ class LifeAccountPersonalAuthCompleteActivity :
BaseActivity<ActivityLifeAccountPersonalAuthCompleteBinding>(), IGetLifeAccountListCallback, View.OnClickListener { BaseActivity<ActivityLifeAccountPersonalAuthCompleteBinding>(), IGetLifeAccountListCallback, View.OnClickListener {
companion object { companion object {
const val LIFE_ACCOUNT_NAME = "lifeAccountName"
const val OCCUPATION = "occupation" const val OCCUPATION = "occupation"
const val REAL_NAME = "realName" const val REAL_NAME = "realName"
const val ID_CARD_NUM = "idCardNum" const val ID_CARD_NUM = "idCardNum"
...@@ -58,6 +59,7 @@ class LifeAccountPersonalAuthCompleteActivity : ...@@ -58,6 +59,7 @@ class LifeAccountPersonalAuthCompleteActivity :
private fun initData() { private fun initData() {
viewBind.ivPersonAuthInfo.fillAuthInfo( viewBind.ivPersonAuthInfo.fillAuthInfo(
params?.get(LIFE_ACCOUNT_NAME)?.let { it as String },
params?.get(OCCUPATION)?.let { it as String }, params?.get(OCCUPATION)?.let { it as String },
params?.get(REAL_NAME)?.let { it as String }, params?.get(REAL_NAME)?.let { it as String },
params?.get(ID_CARD_NUM)?.let { it as String }, params?.get(ID_CARD_NUM)?.let { it as String },
...@@ -107,4 +109,8 @@ class LifeAccountPersonalAuthCompleteActivity : ...@@ -107,4 +109,8 @@ class LifeAccountPersonalAuthCompleteActivity :
) )
} }
} }
override fun onBackPressed() {
// 禁止back event
}
} }
package com.yidian.shenghuoquan.newscontent.ui.center package com.yidian.shenghuoquan.newscontent.ui.center
import android.os.Bundle import android.os.Bundle
import android.text.InputFilter
import com.yidian.common.XEventConfig import com.yidian.common.XEventConfig
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.ICreateLifeAccountCallback import com.yidian.shenghuoquan.newscontent.bean.ICreateLifeAccountCallback
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountModifyNameBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountModifyNameBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil
...@@ -24,7 +24,7 @@ import com.yidian.xpage.XPageManager ...@@ -24,7 +24,7 @@ import com.yidian.xpage.XPageManager
class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyNameBinding>(), class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyNameBinding>(),
CommonTopBarView.OnCommonTopBarActionCallback, CommonTopBarView.OnCommonTopBarActionCallback,
LifeAccountAuthIdentityInfoEditView.OnLifeAccountAuthIdentityInfoEditViewCallback, LifeAccountAuthIdentityInfoEditView.OnLifeAccountAuthIdentityInfoEditViewCallback,
ICreateLifeAccountCallback { ICreateLifeAccountCallback, InputFilterUtil.OnLengthFilterCallback {
companion object { companion object {
const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id" const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id"
...@@ -50,8 +50,10 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName ...@@ -50,8 +50,10 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName
} }
private fun initView() { private fun initView() {
// 只允许输入中文并且最长20汉字 // 默认保存按钮不可用
viewBind.evLifeAccountName.setInputFilters(InputFilterUtil.getLifeAccountNameFilter(), InputFilter.LengthFilter(40)) viewBind.bvTopBar.setActionEnable(false)
// 生活号名称长度限制24个字符
viewBind.evLifeAccountName.setInputFilters(InputFilterUtil.getLengthFilter(Constant.MAX_LENGTH_LIFE_ACCOUNT_NAME, this))
} }
private fun initListener() { private fun initListener() {
...@@ -83,11 +85,11 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName ...@@ -83,11 +85,11 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName
} }
override fun onTextClear(from: LifeAccountAuthIdentityInfoEditView) { override fun onTextClear(from: LifeAccountAuthIdentityInfoEditView) {
viewBind.bvTopBar.setActionEnable(false)
} }
override fun onTextChange(from: LifeAccountAuthIdentityInfoEditView, text: String) { override fun onTextChange(from: LifeAccountAuthIdentityInfoEditView, text: String) {
viewBind.bvTopBar.setActionEnable(true)
} }
override fun createLifeAccountCallback(result: Boolean) { override fun createLifeAccountCallback(result: Boolean) {
...@@ -100,4 +102,9 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName ...@@ -100,4 +102,9 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName
viewBind.evLifeAccountName.showErrorTips(resources.getString(R.string.life_account_name_already_exist)) viewBind.evLifeAccountName.showErrorTips(resources.getString(R.string.life_account_name_already_exist))
} }
} }
override fun onLengthOverrun(maxLength: Int) {
// 输入长度超限 展示错误提示
viewBind.evLifeAccountName.showErrorTips(resources.getString(R.string.life_account_name_overrun_error_tips))
}
} }
...@@ -17,70 +17,71 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetLifeAccountInfoByIdB ...@@ -17,70 +17,71 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetLifeAccountInfoByIdB
*/ */
class MerchantAuthInfoActivity : BaseActivity<ActivityMerchantAuthInfoBinding>() { class MerchantAuthInfoActivity : BaseActivity<ActivityMerchantAuthInfoBinding>() {
companion object { companion object {
const val EXTRA_LIFE_ACCOUNT_INFO = "life_account_info" const val EXTRA_LIFE_ACCOUNT_INFO = "life_account_info"
} }
/** /**
* 生活号详情 * 生活号详情
*/ */
private val lifeAccountInfo by lazy { private val lifeAccountInfo by lazy {
intent.getSerializableExtra(XRouterPathConstants.ParamsKey)?.let { params -> intent.getSerializableExtra(XRouterPathConstants.ParamsKey)?.let { params ->
(params as HashMap<*, *>)[EXTRA_LIFE_ACCOUNT_INFO]?.let { (params as HashMap<*, *>)[EXTRA_LIFE_ACCOUNT_INFO]?.let {
it as GetLifeAccountInfoByIdBean.Response it as GetLifeAccountInfoByIdBean.Response
} }
}
} }
}
override fun createViewBinding(): ActivityMerchantAuthInfoBinding { override fun createViewBinding(): ActivityMerchantAuthInfoBinding {
return ActivityMerchantAuthInfoBinding.inflate(layoutInflater) return ActivityMerchantAuthInfoBinding.inflate(layoutInflater)
} }
override fun getXPageName(): String { override fun getXPageName(): String {
return XRouterPathConstants.MERCHANT_AUTH_INFO return XRouterPathConstants.MERCHANT_AUTH_INFO
} }
override fun init(savedInstanceState: Bundle?) { override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState) super.init(savedInstanceState)
initData() initData()
} }
private fun initData() { private fun initData() {
when (lifeAccountInfo?.id_type) { when (lifeAccountInfo?.id_type) {
Constant.TYPE_AUTH_PERSONAL -> { Constant.TYPE_AUTH_PERSONAL -> {
// 个人认证 // 个人认证
viewBind.ivPersonAuthInfo.isVisible = true viewBind.ivPersonAuthInfo.isVisible = true
viewBind.ivPersonAuthInfo.fillAuthInfo( viewBind.ivPersonAuthInfo.fillAuthInfo(
lifeAccountInfo?.occupation, lifeAccountInfo?.life_account_name,
lifeAccountInfo?.legal_person, lifeAccountInfo?.occupation,
lifeAccountInfo?.id_card, lifeAccountInfo?.legal_person,
Hawk.get(HawkConfig.Mobile) lifeAccountInfo?.id_card,
) Hawk.get(HawkConfig.Mobile)
} )
Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS -> { }
// 个人工商户认证 Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS -> {
viewBind.ivEnterpriseAuthInfo.isVisible = true // 个人工商户认证
viewBind.ivEnterpriseAuthInfo.fillAuthInfo( viewBind.ivEnterpriseAuthInfo.isVisible = true
lifeAccountInfo?.id_type, viewBind.ivEnterpriseAuthInfo.fillAuthInfo(
lifeAccountInfo?.audit_status, lifeAccountInfo?.id_type,
lifeAccountInfo?.name, lifeAccountInfo?.audit_status,
lifeAccountInfo?.code, lifeAccountInfo?.name,
lifeAccountInfo?.legal_person, lifeAccountInfo?.code,
lifeAccountInfo?.id_card lifeAccountInfo?.legal_person,
) lifeAccountInfo?.id_card
} )
Constant.TYPE_AUTH_COMMON_ENTERPRISE -> { }
// 普通企业认证 Constant.TYPE_AUTH_COMMON_ENTERPRISE -> {
viewBind.ivEnterpriseAuthInfo.isVisible = true // 普通企业认证
viewBind.ivEnterpriseAuthInfo.fillAuthInfo( viewBind.ivEnterpriseAuthInfo.isVisible = true
lifeAccountInfo?.id_type, viewBind.ivEnterpriseAuthInfo.fillAuthInfo(
lifeAccountInfo?.audit_status, lifeAccountInfo?.id_type,
lifeAccountInfo?.name, lifeAccountInfo?.audit_status,
lifeAccountInfo?.code, lifeAccountInfo?.name,
lifeAccountInfo?.legal_person, lifeAccountInfo?.code,
lifeAccountInfo?.id_card lifeAccountInfo?.legal_person,
) lifeAccountInfo?.id_card
} )
} }
} }
} }
\ No newline at end of file }
...@@ -12,7 +12,7 @@ import com.yidian.shenghuoquan.newscontent.http.ApiService ...@@ -12,7 +12,7 @@ import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IAuthMerchantCheckCallback import com.yidian.shenghuoquan.newscontent.http.callback.IAuthMerchantCheckCallback
import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthMerchantCheckBean import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthMerchantCheckBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetLifeAccountInfoByIdBean import com.yidian.shenghuoquan.newscontent.http.httpbean.GetLifeAccountInfoByIdBean
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountAuthDataManager import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountAuthActivity
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActivity import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActivity
import com.yidian.shenghuoquan.newscontent.widget.MerchantInfoView import com.yidian.shenghuoquan.newscontent.widget.MerchantInfoView
import com.yidian.xarc.xevent.XBaseEvent import com.yidian.xarc.xevent.XBaseEvent
...@@ -84,7 +84,10 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha ...@@ -84,7 +84,10 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha
private fun initData() { private fun initData() {
// 生活号名称 // 生活号名称
viewBind.ivLifeAccountName.fillContent(lifeAccountInfo?.life_account_name) viewBind.ivLifeAccountName.fillContent(lifeAccountInfo?.life_account_name)
viewBind.ivLifeAccountName.showDetailEntry() if (lifeAccountInfo?.audit_status != Constant.STATUS_AUDIT_UNDER && lifeAccountInfo?.role_type != Constant.TYPE_ROLE_ORDINARY) {
// 审核中和企业员工不允许修改生活号名称
viewBind.ivLifeAccountName.showDetailEntry()
}
// 生活号认证信息 // 生活号认证信息
// 审核状态 // 审核状态
if (lifeAccountInfo?.audit_status == Constant.STATUS_AUDIT_REJECT) { if (lifeAccountInfo?.audit_status == Constant.STATUS_AUDIT_REJECT) {
...@@ -100,24 +103,25 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha ...@@ -100,24 +103,25 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha
viewBind.ivLifeAccountAuth.showAuthEntry(MerchantInfoView.LifeAccountAuthStatus.NOT_AUTH) viewBind.ivLifeAccountAuth.showAuthEntry(MerchantInfoView.LifeAccountAuthStatus.NOT_AUTH)
return return
} }
if (lifeAccountInfo?.role_type != Constant.TYPE_ROLE_ORDINARY) {
// 企业员工不允许查看认证信息
viewBind.ivLifeAccountAuth.showDetailEntry()
}
// 认证类型 // 认证类型
when (lifeAccountInfo?.id_type) { when (lifeAccountInfo?.id_type) {
Constant.TYPE_AUTH_PERSONAL -> { Constant.TYPE_AUTH_PERSONAL -> {
// 个人认证 // 个人认证
viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.personal_auth)) viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.personal_auth))
viewBind.ivLifeAccountAuth.showDetailEntry()
viewBind.ivLifeAccountAuthUpgrade.isVisible = true viewBind.ivLifeAccountAuthUpgrade.isVisible = true
viewBind.ivLifeAccountAuthUpgrade.showAuthEntry(MerchantInfoView.LifeAccountAuthStatus.UPGRADE_AUTH) viewBind.ivLifeAccountAuthUpgrade.showAuthEntry(MerchantInfoView.LifeAccountAuthStatus.UPGRADE_AUTH)
} }
Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS -> { Constant.TYPE_AUTH_INDIVIDUAL_BUSINESS -> {
// 个体工商户认证 // 个体工商户认证
viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.individual_business)) viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.individual_business))
viewBind.ivLifeAccountAuth.showDetailEntry()
} }
Constant.TYPE_AUTH_COMMON_ENTERPRISE -> { Constant.TYPE_AUTH_COMMON_ENTERPRISE -> {
// 普通企业认证 // 普通企业认证
viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.common_enterprise)) viewBind.ivLifeAccountAuth.fillContent(resources.getString(R.string.common_enterprise))
viewBind.ivLifeAccountAuth.showDetailEntry()
} }
} }
} }
...@@ -151,11 +155,14 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha ...@@ -151,11 +155,14 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha
override fun onEnterAuth(from: MerchantInfoView) { override fun onEnterAuth(from: MerchantInfoView) {
// 认证或认证升级或修改认证 // 认证或认证升级或修改认证
if (from == viewBind.ivLifeAccountAuth) { if (from == viewBind.ivLifeAccountAuth) {
if (lifeAccountInfo?.life_account_auth_status == Constant.STATUS_AUTH_NOT) { if (lifeAccountInfo?.life_account_type == Constant.TYPE_LIFE_ACCOUNT_PERSONAL
&& lifeAccountInfo?.life_account_auth_status == Constant.STATUS_AUTH_NOT
&& lifeAccountInfo?.audit_status == 0
) {
// 未认证 进入认证流程首页 此处需要传参from控制认证流程首页返回按钮显示 // 未认证 进入认证流程首页 此处需要传参from控制认证流程首页返回按钮显示
XPageManager.push( XPageManager.push(
XRouterPathConstants.LIFE_ACCOUNT_AUTH, XRouterPathConstants.LIFE_ACCOUNT_AUTH,
hashMapOf(Pair("from", "auth")) hashMapOf(Pair(LifeAccountAuthActivity.EXTRA_PAGE_FROM, LifeAccountAuthActivity.FROM_AUTH))
) )
} else if (lifeAccountInfo?.audit_status == Constant.STATUS_AUDIT_REJECT) { } else if (lifeAccountInfo?.audit_status == Constant.STATUS_AUDIT_REJECT) {
// 认证驳回 请求企业认证信息 此处为升级认证情况 需要传入生活号id // 认证驳回 请求企业认证信息 此处为升级认证情况 需要传入生活号id
...@@ -191,7 +198,9 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha ...@@ -191,7 +198,9 @@ class MerchantInfoActivity : BaseActivity<ActivityMerchantInfoBinding>(), Mercha
Pair( Pair(
LifeAccountEnterpriseAuthActivity.EXTRA_LIFE_ACCOUNT_ID, LifeAccountEnterpriseAuthActivity.EXTRA_LIFE_ACCOUNT_ID,
lifeAccountInfo?.life_account_id lifeAccountInfo?.life_account_id
), Pair(LifeAccountEnterpriseAuthActivity.EXTRA_AUTH_DATA, result) ),
Pair(LifeAccountEnterpriseAuthActivity.EXTRA_AUTH_DATA, result),
Pair(LifeAccountEnterpriseAuthActivity.EXTRA_IS_AUTH_MODIFY, lifeAccountInfo?.audit_status == Constant.STATUS_AUDIT_REJECT)
) )
) )
} }
......
...@@ -15,90 +15,90 @@ import com.yidian.utils.DensityUtil ...@@ -15,90 +15,90 @@ import com.yidian.utils.DensityUtil
* description: 商户管理中心底部提示弹窗 * description: 商户管理中心底部提示弹窗
*/ */
class MerchantCenterBottomHintDialog( class MerchantCenterBottomHintDialog(
context: Context, context: Context,
val type: Int, val type: Int,
val callback: OnMerchantCenterBottomHintCallback? = null val callback: OnMerchantCenterBottomHintCallback? = null
) : ) :
BaseDialog<DialogMerchantCenterBottomHintBinding>( BaseDialog<DialogMerchantCenterBottomHintBinding>(
context, context,
R.style.merchant_center_bottom_hint_dialog R.style.merchant_center_bottom_hint_dialog
), ),
View.OnClickListener { View.OnClickListener {
companion object { companion object {
// 认证升级 // 认证升级
const val TYPE_AUTH_UPGRADE = 1 const val TYPE_AUTH_UPGRADE = 1
// 认证驳回 // 认证驳回
const val TYPE_AUTH_REJECT = 2 const val TYPE_AUTH_REJECT = 2
} }
override fun createViewBinding(): DialogMerchantCenterBottomHintBinding { override fun createViewBinding(): DialogMerchantCenterBottomHintBinding {
return DialogMerchantCenterBottomHintBinding.inflate(layoutInflater) return DialogMerchantCenterBottomHintBinding.inflate(layoutInflater)
} }
override fun initView() { override fun initView() {
when (type) { when (type) {
TYPE_AUTH_UPGRADE -> { TYPE_AUTH_UPGRADE -> {
viewBinding.root.setBackgroundResource(R.drawable.shape_bg_bottom_hint) viewBinding.root.setBackgroundResource(R.drawable.shape_bg_bottom_hint)
viewBinding.tvContent.text = viewBinding.tvContent.text =
context.resources.getString(R.string.upgrade_auth) context.resources.getString(R.string.upgrade_auth)
viewBinding.tvSubContent.text = viewBinding.tvSubContent.text =
context.resources.getString(R.string.auth_merchant_description) context.resources.getString(R.string.auth_merchant_description)
viewBinding.tvNext.setBackgroundResource(R.drawable.shape_bg_common_btn) viewBinding.tvNext.setBackgroundResource(R.drawable.shape_bg_common_btn)
viewBinding.tvNext.setTextColor(context.resources.getColor(R.color.color_FFFFFFFF)) viewBinding.tvNext.setTextColor(context.resources.getColor(R.color.color_FFFFFFFF))
viewBinding.tvNext.text = context.resources.getString(R.string.immediate_upgrade) viewBinding.tvNext.text = context.resources.getString(R.string.immediate_upgrade)
} }
TYPE_AUTH_REJECT -> { TYPE_AUTH_REJECT -> {
viewBinding.root.setBackgroundResource(R.drawable.shape_bg_bottom_warn) viewBinding.root.setBackgroundResource(R.drawable.shape_bg_bottom_warn)
viewBinding.tvContent.text = viewBinding.tvContent.text =
context.resources.getString(R.string.auth_apply_reject) context.resources.getString(R.string.auth_apply_reject)
viewBinding.tvSubContent.text = viewBinding.tvSubContent.text =
context.resources.getString(R.string.apply_auth_merchant_description) context.resources.getString(R.string.apply_auth_merchant_description)
viewBinding.tvNext.setBackgroundResource(R.drawable.shape_bg_modify_auth_btn) viewBinding.tvNext.setBackgroundResource(R.drawable.shape_bg_modify_auth_btn)
viewBinding.tvNext.setTextColor(context.resources.getColor(R.color.color_FFFF3A3A)) viewBinding.tvNext.setTextColor(context.resources.getColor(R.color.color_FFFF3A3A))
viewBinding.tvNext.text = context.resources.getString(R.string.modify_auth) viewBinding.tvNext.text = context.resources.getString(R.string.modify_auth)
} }
}
} }
}
override fun initListener() { override fun initListener() {
viewBinding.tvNext.setOnClickListener(this) viewBinding.tvNext.setOnClickListener(this)
} }
override fun show() { override fun show() {
super.show() super.show()
window?.setGravity(Gravity.BOTTOM) window?.setGravity(Gravity.BOTTOM)
val params = window?.attributes val params = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = DensityUtil.dp2px(84f) params?.height = DensityUtil.dp2px(84f)
window?.attributes = params window?.attributes = params
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.tv_next) { if (v?.id == R.id.tv_next) {
when (type) { when (type) {
TYPE_AUTH_UPGRADE -> { TYPE_AUTH_UPGRADE -> {
// 升级企业认证 // 升级认证
callback?.onUpgradeEnterpriseAuth() callback?.onUpgradeAuth()
} }
TYPE_AUTH_REJECT -> { TYPE_AUTH_REJECT -> {
// 修改企业认证 // 修改企业认证
callback?.onModifyEnterpriseAuth() callback?.onModifyEnterpriseAuth()
}
}
} }
}
} }
}
interface OnMerchantCenterBottomHintCallback { interface OnMerchantCenterBottomHintCallback {
/** /**
* 升级企业认证 * 由未认证升级认证
*/ */
fun onUpgradeEnterpriseAuth() fun onUpgradeAuth()
/** /**
* 修改企业认证 * 修改企业认证
*/ */
fun onModifyEnterpriseAuth() fun onModifyEnterpriseAuth()
} }
} }
\ No newline at end of file
...@@ -9,82 +9,93 @@ import java.util.regex.Pattern ...@@ -9,82 +9,93 @@ import java.util.regex.Pattern
* date: 6/15/21 1:59 AM * date: 6/15/21 1:59 AM
* description: 输入过滤 * description: 输入过滤
*/ */
object InputFilterUtil { class InputFilterUtil {
/** companion object {
* 真实姓名过滤 /**
* 汉字 + · * 真实姓名过滤
*/ * 汉字 + ·
fun getRealNameFilter(): InputFilter { */
return InputFilter { source, _, _, _, _, _ -> fun getRealNameFilter(): InputFilter {
val pattern = Pattern.compile("[\\u4E00-\\u9FFF|·]+") return InputFilter { source, _, _, _, _, _ ->
val matcher = pattern.matcher(source.toString()) val pattern = Pattern.compile("[\\u4E00-\\u9FFF|·]+")
if (!matcher.matches()) return@InputFilter "" val matcher = pattern.matcher(source.toString())
return@InputFilter null if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
} }
}
/** /**
* 身份证号过滤 * 身份证号过滤
* 数字 + X * 数字 + 大小写x
*/ */
fun getIDCardNumberFilter(): InputFilter { fun getIDCardNumberFilter(): InputFilter {
return InputFilter { source, _, _, _, _, _ -> return InputFilter { source, _, _, _, _, _ ->
val pattern = Pattern.compile("[0-9|X]+") val pattern = Pattern.compile("[0-9Xx]+")
val matcher = pattern.matcher(source.toString()) val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter "" if (!matcher.matches()) return@InputFilter ""
return@InputFilter null return@InputFilter null
}
} }
}
/** /**
* 手机号过滤 * 手机号过滤
* 数字 * 数字
*/ */
fun getPhoneNumberFilter(): InputFilter { fun getPhoneNumberFilter(): InputFilter {
return InputFilter { source, _, _, _, _, _ -> return InputFilter { source, _, _, _, _, _ ->
val pattern = Pattern.compile("[0-9]+") val pattern = Pattern.compile("[0-9]+")
val matcher = pattern.matcher(source.toString()) val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter "" if (!matcher.matches()) return@InputFilter ""
return@InputFilter null return@InputFilter null
}
} }
}
/** /**
* 公司注册名过滤 * 公司注册名过滤
* 汉字 * 汉字
*/ */
fun getRegistrationNameFilter(): InputFilter { fun getRegistrationNameFilter(): InputFilter {
return InputFilter { source, _, _, _, _, _ -> return InputFilter { source, _, _, _, _, _ ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+") val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+")
val matcher = pattern.matcher(source.toString()) val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter "" if (!matcher.matches()) return@InputFilter ""
return@InputFilter null return@InputFilter null
}
} }
}
/** /**
* 统一社会信用代码过滤 * 统一社会信用代码过滤
* 数字 + 大写字母 * 数字 + 大小写字母
*/ */
fun getRegistrationCodeFilter(): InputFilter { fun getRegistrationCodeFilter(): InputFilter {
return InputFilter { source, _, _, _, _, _ -> return InputFilter { source, _, _, _, _, _ ->
val pattern = Pattern.compile("[0-9A-Z]+") val pattern = Pattern.compile("[0-9A-Za-z]+")
val matcher = pattern.matcher(source.toString()) val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter "" if (!matcher.matches()) return@InputFilter ""
return@InputFilter null return@InputFilter null
}
} }
}
/** /**
* 生活号名称过滤 * 带回调的输入长度过滤
*/ */
fun getLifeAccountNameFilter(): InputFilter { fun getLengthFilter(maxLength: Int, callback: OnLengthFilterCallback?): InputFilter {
return InputFilter { source, _, _, _, _, _ -> return InputFilter { _, _, end, _, dstart, _ ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+") if (dstart + end >= maxLength + 1) {
val matcher = pattern.matcher(source.toString()) callback?.onLengthOverrun(maxLength)
if (!matcher.matches()) return@InputFilter "" return@InputFilter ""
return@InputFilter null }
return@InputFilter null
}
} }
} }
interface OnLengthFilterCallback {
/**
* 长度超限
* @param maxLength 最大长度
*/
fun onLengthOverrun(maxLength: Int)
}
} }
...@@ -12,18 +12,8 @@ object SensitiveInfoUtil { ...@@ -12,18 +12,8 @@ object SensitiveInfoUtil {
* 身份证号码出生日期脱敏 * 身份证号码出生日期脱敏
*/ */
fun idCardNumEncrypt(content: String): String { fun idCardNumEncrypt(content: String): String {
val rule = "(\\d{6})\\d{8}(\\d{4})" if (content.isBlank()) return content
return content.replace(rule.toRegex(), "$1********$2") return content.replace(("(\\d{6})\\d{8}(\\d{4})").toRegex(), "$1********$2")
}
/**
* 身份证号前三后四脱敏
*/
fun idCardPartEncrypt(content: String): String {
if (content.isBlank() || content.length < 18) {
return content
}
return content.replace(("(?<=\\w{3})\\w(?=\\w{4})").toRegex(), "*");
} }
/** /**
......
...@@ -68,6 +68,14 @@ class CommonTopBarView @JvmOverloads constructor( ...@@ -68,6 +68,14 @@ class CommonTopBarView @JvmOverloads constructor(
viewBinding.tvAction.isVisible = isVisible viewBinding.tvAction.isVisible = isVisible
} }
/**
* 设置操作按钮是否可用
*/
fun setActionEnable(isEnable: Boolean) {
viewBinding.tvAction.isEnabled = isEnable
viewBinding.tvAction.alpha = if (isEnable) 1f else 0.4f
}
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.iv_back) { if (v?.id == R.id.iv_back) {
// 若没有设置返回点击回调则默认pop // 若没有设置返回点击回调则默认pop
......
...@@ -58,6 +58,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor( ...@@ -58,6 +58,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
fun showErrorTips(tips: String) { fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.isVisible = true viewBinding.tvErrorTips.isVisible = true
viewBinding.tvErrorTips.text = tips viewBinding.tvErrorTips.text = tips
highLightEditContent()
} }
/** /**
...@@ -66,6 +67,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor( ...@@ -66,6 +67,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
private fun dismissErrorTips() { private fun dismissErrorTips() {
viewBinding.tvErrorTips.isVisible = false viewBinding.tvErrorTips.isVisible = false
viewBinding.tvErrorTips.text = "" viewBinding.tvErrorTips.text = ""
cancelHighLightEditContent()
} }
/** /**
......
...@@ -37,7 +37,7 @@ class LifeAccountLabelView @JvmOverloads constructor( ...@@ -37,7 +37,7 @@ class LifeAccountLabelView @JvmOverloads constructor(
private var callback: OnLifeAccountLabelCallback? = null private var callback: OnLifeAccountLabelCallback? = null
init { init {
viewBinding.ivLifeAccountDetail.setOnClickListener(this) setOnClickListener(this)
} }
/** /**
...@@ -60,9 +60,10 @@ class LifeAccountLabelView @JvmOverloads constructor( ...@@ -60,9 +60,10 @@ class LifeAccountLabelView @JvmOverloads constructor(
// 已认证 // 已认证
setBackgroundResource(R.drawable.shape_life_account_status_auth) setBackgroundResource(R.drawable.shape_life_account_status_auth)
setTextColor(ContextCompat.getColor(context, R.color.color_FF1852F1)) setTextColor(ContextCompat.getColor(context, R.color.color_FF1852F1))
text = when (data.life_account_type) { text = when (data.tag.tag_key) {
Constant.TYPE_LIFE_ACCOUNT_PERSONAL -> resources.getString(R.string.personal_auth) Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> resources.getString(R.string.common_enterprise)
Constant.TYPE_LIFE_ACCOUNT_ENTERPRISE -> resources.getString(R.string.enterprise_auth) Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> resources.getString(R.string.individual_business)
Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> resources.getString(R.string.personal_auth)
else -> "" else -> ""
} }
} }
...@@ -93,10 +94,8 @@ class LifeAccountLabelView @JvmOverloads constructor( ...@@ -93,10 +94,8 @@ class LifeAccountLabelView @JvmOverloads constructor(
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.iv_life_account_detail) { // 跳转生活号基本信息
// 跳转生活号基本信息 callback?.onEnterLifeAccountInfo(curLifeAccount.life_account_id)
callback?.onEnterLifeAccountInfo(curLifeAccount.life_account_id)
}
} }
fun setOnLifeAccountLabelCallback(callback: OnLifeAccountLabelCallback) { fun setOnLifeAccountLabelCallback(callback: OnLifeAccountLabelCallback) {
......
...@@ -6,6 +6,7 @@ import android.view.View ...@@ -6,6 +6,7 @@ import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountPersonalAuthInfoBinding import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountPersonalAuthInfoBinding
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
/** /**
* author: yinjiacheng * author: yinjiacheng
...@@ -13,32 +14,34 @@ import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountPersonalAu ...@@ -13,32 +14,34 @@ import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountPersonalAu
* description: 商户管理中心-基本信息-生活号个人认证信息 * description: 商户管理中心-基本信息-生活号个人认证信息
*/ */
class LifeAccountPersonalAuthInfoView @JvmOverloads constructor( class LifeAccountPersonalAuthInfoView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyle: Int = 0 defStyle: Int = 0
) : ConstraintLayout(context, attrs, defStyle) { ) : ConstraintLayout(context, attrs, defStyle) {
private val viewBinding by lazy { private val viewBinding by lazy {
ViewLifeAccountPersonalAuthInfoBinding.bind( ViewLifeAccountPersonalAuthInfoBinding.bind(
View.inflate( View.inflate(
getContext(), getContext(),
R.layout.view_life_account_personal_auth_info, R.layout.view_life_account_personal_auth_info,
this this
) )
) )
} }
/** /**
* 填充认证信息 * 填充认证信息
* @param occupation 职业 * @param lifeAccountName 生活号名称
* @param realName 真实姓名 * @param occupation 职业
* @param idCardNo 身份证号 * @param realName 真实姓名
* @param phoneNo 手机号 * @param idCardNo 身份证号
*/ * @param phoneNo 手机号
fun fillAuthInfo(occupation: String?, realName: String?, idCardNo: String?, phoneNo: String?) { */
viewBinding.tvContentOccupationLabel.text = occupation fun fillAuthInfo(lifeAccountName: String?, occupation: String?, realName: String?, idCardNo: String?, phoneNo: String?) {
viewBinding.tvContentRealName.text = realName viewBinding.tvLifeAccountName.text = lifeAccountName
viewBinding.tvContentIdCardNo.text = idCardNo viewBinding.tvContentOccupationLabel.text = occupation
viewBinding.tvContentPhoneNo.text = phoneNo viewBinding.tvContentRealName.text = realName
} viewBinding.tvContentIdCardNo.text = idCardNo?.let { SensitiveInfoUtil.idCardNumEncrypt(it) }
} viewBinding.tvContentPhoneNo.text = phoneNo?.let { SensitiveInfoUtil.mobileEncrypt(it) }
\ No newline at end of file }
}
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
android:id="@+id/tv_upgrade_life_account" android:id="@+id/tv_upgrade_life_account"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="29dp" android:layout_marginStart="25dp"
android:layout_marginTop="29dp" android:layout_marginTop="29dp"
android:includeFontPadding="false" android:includeFontPadding="false"
android:text="@string/join_life_circle_and_upgrade_to_life_account" android:text="@string/join_life_circle_and_upgrade_to_life_account"
...@@ -27,21 +27,25 @@ ...@@ -27,21 +27,25 @@
<com.yidian.nightmode.widget.YdTextView <com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_provide_services" android:id="@+id/tv_provide_services"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:includeFontPadding="false" android:includeFontPadding="false"
android:text="@string/provide_more_and_better_services" android:text="@string/provide_more_and_better_services"
android:textColor="#FF333333" android:textColor="#FF333333"
android:textSize="27sp" android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="@id/tv_upgrade_life_account" app:layout_constraintStart_toStartOf="@id/tv_upgrade_life_account"
app:layout_constraintTop_toBottomOf="@id/tv_upgrade_life_account" /> app:layout_constraintTop_toBottomOf="@id/tv_upgrade_life_account" />
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthCardView <com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthCardView
android:id="@+id/view_personal_auth" android:id="@+id/view_personal_auth"
android:layout_width="322dp" android:layout_width="match_parent"
android:layout_height="144dp" android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginEnd="19dp"
app:cardCornerRadius="12dp" app:cardCornerRadius="12dp"
app:cardElevation="6dp" app:cardElevation="6dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -50,9 +54,11 @@ ...@@ -50,9 +54,11 @@
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthCardView <com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthCardView
android:id="@+id/view_enterprise_auth" android:id="@+id/view_enterprise_auth"
android:layout_width="322dp" android:layout_width="match_parent"
android:layout_height="144dp" android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginTop="19dp" android:layout_marginTop="19dp"
android:layout_marginEnd="19dp"
app:cardCornerRadius="12dp" app:cardCornerRadius="12dp"
app:cardElevation="6dp" app:cardElevation="6dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
android:paddingBottom="5dp" android:paddingBottom="5dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/big_back" android:src="@drawable/big_back"
android:visibility="gone"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
...@@ -82,7 +81,7 @@ ...@@ -82,7 +81,7 @@
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:paddingTop="6dp" android:paddingTop="6dp"
android:paddingBottom="6dp" android:paddingBottom="6dp"
android:text="@string/account_error_tips" android:text="@string/life_account_name_overrun_error_tips"
android:textColor="@color/red_account_tips" android:textColor="@color/red_account_tips"
android:textSize="12sp" android:textSize="12sp"
android:visibility="gone" android:visibility="gone"
......
...@@ -14,30 +14,45 @@ ...@@ -14,30 +14,45 @@
app:CommonTopBarView_title_text="@string/management_center" app:CommonTopBarView_title_text="@string/management_center"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView <com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/lv_life_account_label" android:id="@+id/rl_refresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/bv_top_bar" />
<com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView
android:id="@+id/av_merchant_asset"
android:layout_width="match_parent"
android:layout_height="125dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lv_life_account_label" />
<androidx.recyclerview.widget.RecyclerView
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:paddingStart="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/bv_top_bar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
android:id="@+id/lv_life_account_label"
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.MerchantAssetView
android:id="@+id/av_merchant_asset"
android:layout_width="match_parent"
android:layout_height="125dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lv_life_account_label" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_service_group"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/av_merchant_asset" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdRelativeLayout 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="44dp"
android:background="@drawable/selector_card"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.yidian.nightmode.widget.YdFrameLayout
android:id="@+id/image_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp">
<com.yidian.news.image.YdRoundedImageView
android:id="@+id/image"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_marginBottom="2dp"
android:layout_marginRight="8dp"
android:scaleType="centerCrop"
android:src="@android:color/transparent"
app:placeholder="@android:color/transparent"
app:placeholderBg ="@android:color/transparent"
app:riv_corner_radius="5dp" />
<com.yidian.news.image.YdNetworkImageView
android:id="@+id/img_v_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
app:placeholder="@drawable/transparent_drawable"
app:placeholderBg="@android:color/transparent"
app:riv_corner_radius="0dp"
app:riv_border_width="0dp"/>
</com.yidian.nightmode.widget.YdFrameLayout>
<com.yidian.nightmode.widget.YdLinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="4dp"
android:layout_toLeftOf="@id/txtCount"
android:layout_toRightOf="@id/image_bg"
android:orientation="horizontal">
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:ellipsize="end"
android:maxEms="10"
android:maxLines="1"
android:text="channel name"
android:textColor="?attr/title_text"
android:textSize="15sp" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/search_hint_annotation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:paddingLeft="3dp"
android:text="annotation"
android:textColor="@color/content_other_text"
android:textSize="13sp" />
<ImageView
android:id="@+id/rssFlag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="@null"
android:src="@mipmap/right_rss_icon" />
</com.yidian.nightmode.widget.YdLinearLayout>
<com.yidian.nightmode.widget.YdView
android:id="@+id/ydView"
style="@style/divider_style_dark"
android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/txtCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/ydView"
android:layout_alignRight="@+id/ydView"
android:layout_centerVertical="true"
android:background="@null"
android:text="book number"
android:textColor="@color/book_number"
android:textSize="11sp" />
</com.yidian.nightmode.widget.YdRelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdRelativeLayout 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="44dp"
android:background="@drawable/selector_card"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.yidian.nightmode.widget.YdFrameLayout
android:id="@+id/image_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp">
<com.yidian.news.image.YdRoundedImageView
android:id="@+id/image"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_marginBottom="2dp"
android:layout_marginRight="8dp"
android:scaleType="centerCrop"
android:src="@android:color/transparent"
app:placeholder="@android:color/transparent"
app:placeholderBg ="@android:color/transparent"
app:riv_corner_radius="5dp" />
<com.yidian.news.image.YdNetworkImageView
android:id="@+id/img_v_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
app:placeholder="@drawable/transparent_drawable"
app:placeholderBg="@android:color/transparent"
app:riv_corner_radius="0dp"
app:riv_border_width="0dp"/>
</com.yidian.nightmode.widget.YdFrameLayout>
<com.yidian.nightmode.widget.YdLinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="4dp"
android:layout_toLeftOf="@id/txtCount"
android:layout_toRightOf="@id/image_bg"
android:orientation="horizontal">
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:ellipsize="end"
android:maxEms="10"
android:maxLines="1"
android:text="channel name"
android:textColor="?attr/title_text"
android:textSize="15sp" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/search_hint_annotation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:paddingLeft="3dp"
android:text="annotation"
android:textColor="@color/content_other_text"
android:textSize="13sp" />
<ImageView
android:id="@+id/rssFlag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="@null"
android:src="@mipmap/right_rss_icon" />
</com.yidian.nightmode.widget.YdLinearLayout>
<com.yidian.nightmode.widget.YdView
android:id="@+id/ydView"
style="@style/divider_style_dark"
android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/txtCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/ydView"
android:layout_alignRight="@+id/ydView"
android:layout_centerVertical="true"
android:background="@null"
android:text="book number"
android:textColor="@color/book_number"
android:textSize="11sp" />
</com.yidian.nightmode.widget.YdRelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView 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="322dp" android:layout_width="match_parent"
android:layout_height="144dp"> android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/selector_life_account_auth_card"> android:background="@drawable/selector_life_account_auth_card">
<com.yidian.nightmode.widget.YdTextView <TextView
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="23dp" android:layout_marginTop="23dp"
android:includeFontPadding="false" android:includeFontPadding="false"
android:paddingStart="23dp" android:paddingStart="23dp"
android:paddingEnd="23dp" android:paddingEnd="23dp"
android:textColor="#FF333333" android:textColor="#FF333333"
android:textSize="23sp" android:textSize="22sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.yidian.nightmode.widget.YdTextView <TextView
android:id="@+id/tv_condition" android:id="@+id/tv_condition"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:includeFontPadding="false" android:includeFontPadding="false"
...@@ -36,20 +36,22 @@ ...@@ -36,20 +36,22 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_name" /> app:layout_constraintTop_toBottomOf="@id/tv_name" />
<com.yidian.nightmode.widget.YdTextView <TextView
android:id="@+id/tv_description" android:id="@+id/tv_description"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:layout_marginBottom="23dp"
android:includeFontPadding="false" android:includeFontPadding="false"
android:paddingStart="23dp" android:paddingStart="23dp"
android:paddingEnd="23dp" android:paddingEnd="23dp"
android:textColor="#FF999999" android:textColor="#FF999999"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_condition" /> app:layout_constraintTop_toBottomOf="@id/tv_condition" />
<com.yidian.nightmode.widget.YdImageView <ImageView
android:id="@+id/iv_authenticated" android:id="@+id/iv_authenticated"
android:layout_width="49dp" android:layout_width="49dp"
android:layout_height="58dp" android:layout_height="58dp"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp283" android:layout_width="@dimen/dp283"
android:layout_height="@dimen/dp174" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp32" android:layout_marginTop="@dimen/dp32"
android:background="@drawable/shape_bg_merchant_info" android:background="@drawable/shape_bg_merchant_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -15,13 +15,15 @@ ...@@ -15,13 +15,15 @@
<TextView <TextView
android:id="@+id/tv_life_account_name" android:id="@+id/tv_life_account_name"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp19" android:layout_marginStart="@dimen/dp19"
android:layout_marginTop="@dimen/dp38" android:layout_marginTop="@dimen/dp38"
android:layout_marginEnd="@dimen/dp19"
android:includeFontPadding="false" android:includeFontPadding="false"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp23" android:textSize="@dimen/sp23"
app:layout_constraintEnd_toStartOf="@id/view_auth_complete"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -54,10 +56,12 @@ ...@@ -54,10 +56,12 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp19" android:layout_marginTop="@dimen/dp19"
android:layout_marginBottom="@dimen/dp19"
android:includeFontPadding="false" android:includeFontPadding="false"
android:text="@string/phone_number" android:text="@string/phone_number"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_life_account_name" app:layout_constraintStart_toStartOf="@id/tv_life_account_name"
app:layout_constraintTop_toBottomOf="@id/tv_title_manager" /> app:layout_constraintTop_toBottomOf="@id/tv_title_manager" />
...@@ -74,6 +78,7 @@ ...@@ -74,6 +78,7 @@
app:layout_constraintTop_toBottomOf="@id/tv_title_manager" /> app:layout_constraintTop_toBottomOf="@id/tv_title_manager" />
<View <View
android:id="@+id/view_auth_complete"
android:layout_width="@dimen/dp49" android:layout_width="@dimen/dp49"
android:layout_height="@dimen/dp58" android:layout_height="@dimen/dp58"
android:layout_marginTop="@dimen/dp36" android:layout_marginTop="@dimen/dp36"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp283" android:layout_width="@dimen/dp283"
android:layout_height="@dimen/dp259" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:background="@drawable/shape_bg_merchant_info" android:background="@drawable/shape_bg_merchant_info"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -14,15 +14,16 @@ ...@@ -14,15 +14,16 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_life_account_name"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp19" android:layout_marginStart="@dimen/dp19"
android:layout_marginTop="@dimen/dp47" android:layout_marginTop="@dimen/dp47"
android:layout_marginEnd="@dimen/dp19"
android:includeFontPadding="false" android:includeFontPadding="false"
android:text="@string/personal_shop"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintEnd_toStartOf="@id/view_auth_complete"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -35,8 +36,8 @@ ...@@ -35,8 +36,8 @@
android:text="@string/occupation_label" android:text="@string/occupation_label"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintStart_toStartOf="@id/tv_title" app:layout_constraintStart_toStartOf="@id/tv_life_account_name"
app:layout_constraintTop_toBottomOf="@id/tv_title" /> app:layout_constraintTop_toBottomOf="@id/tv_life_account_name" />
<TextView <TextView
android:id="@+id/tv_content_occupation_label" android:id="@+id/tv_content_occupation_label"
...@@ -48,7 +49,7 @@ ...@@ -48,7 +49,7 @@
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" /> app:layout_constraintTop_toBottomOf="@id/tv_life_account_name" />
<TextView <TextView
android:id="@+id/tv_title_real_name" android:id="@+id/tv_title_real_name"
...@@ -59,7 +60,7 @@ ...@@ -59,7 +60,7 @@
android:text="@string/real_name" android:text="@string/real_name"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintStart_toStartOf="@id/tv_title" app:layout_constraintStart_toStartOf="@id/tv_life_account_name"
app:layout_constraintTop_toBottomOf="@id/tv_title_occupation_label" /> app:layout_constraintTop_toBottomOf="@id/tv_title_occupation_label" />
<TextView <TextView
...@@ -83,7 +84,7 @@ ...@@ -83,7 +84,7 @@
android:text="@string/id_card_number" android:text="@string/id_card_number"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintStart_toStartOf="@id/tv_title" app:layout_constraintStart_toStartOf="@id/tv_life_account_name"
app:layout_constraintTop_toBottomOf="@id/tv_content_real_name" /> app:layout_constraintTop_toBottomOf="@id/tv_content_real_name" />
<TextView <TextView
...@@ -103,11 +104,13 @@ ...@@ -103,11 +104,13 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp19" android:layout_marginTop="@dimen/dp19"
android:layout_marginBottom="@dimen/dp19"
android:includeFontPadding="false" android:includeFontPadding="false"
android:text="@string/phone_number" android:text="@string/phone_number"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintStart_toStartOf="@id/tv_title" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_life_account_name"
app:layout_constraintTop_toBottomOf="@id/tv_title_id_card_no" /> app:layout_constraintTop_toBottomOf="@id/tv_title_id_card_no" />
<TextView <TextView
...@@ -123,11 +126,12 @@ ...@@ -123,11 +126,12 @@
app:layout_constraintTop_toBottomOf="@id/tv_title_id_card_no" /> app:layout_constraintTop_toBottomOf="@id/tv_title_id_card_no" />
<View <View
android:id="@+id/view_auth_complete"
android:layout_width="@dimen/dp49" android:layout_width="@dimen/dp49"
android:layout_height="@dimen/dp59" android:layout_height="@dimen/dp59"
android:layout_marginTop="@dimen/dp36" android:layout_marginTop="@dimen/dp36"
android:background="@mipmap/icon_seal"
android:layout_marginEnd="@dimen/dp1" android:layout_marginEnd="@dimen/dp1"
android:background="@mipmap/icon_seal"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
......
...@@ -20,13 +20,17 @@ ...@@ -20,13 +20,17 @@
<TextView <TextView
android:id="@+id/tv_content" android:id="@+id/tv_content"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp85" android:layout_marginStart="@dimen/dp85"
android:layout_marginEnd="@dimen/dp35"
android:ellipsize="end"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp15" android:textSize="@dimen/sp15"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<string name="create_account">确认创建</string> <string name="create_account">确认创建</string>
<string name="account_create_tips">同企业下生活号名称不可复用</string> <string name="account_create_tips">同企业下生活号名称不可复用</string>
<string name="account_create_desc">生活号作为企业服务管理载体,请正确使用生活号权益,新申请生活号默认当前申请人作为默认管理员,申请成功 后可在销售APP内进行更改</string> <string name="account_create_desc">生活号作为企业服务管理载体,请正确使用生活号权益,新申请生活号默认当前申请人作为默认管理员,申请成功 后可在销售APP内进行更改</string>
<string name="account_error_tips">名称超限,最多40个字符</string> <string name="life_account_name_overrun_error_tips">名称超限,最多24个字符</string>
<string name="account_manager">管理员</string> <string name="account_manager">管理员</string>
<string name="account_name">生活号名称</string> <string name="account_name">生活号名称</string>
<string name="account_title">创建生活号</string> <string name="account_title">创建生活号</string>
......
package com.yidian.subway.userinfo.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.os.bundleOf
import com.yidian.common.base.BaseFragment
import com.yidian.subway.userinfo.databinding.FragmentUserInfoBinding
import com.yidian.xpage.XPageManager
class UserInfoFragment:BaseFragment<FragmentUserInfoBinding>() {
companion object{
fun newInstance(): UserInfoFragment {
val fragment = UserInfoFragment()
val args = bundleOf()
fragment.arguments = args
return fragment
}
}
override fun createViewBinding(
inflater: LayoutInflater,
container: ViewGroup?
): FragmentUserInfoBinding {
return FragmentUserInfoBinding.inflate(inflater,container,false)
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
viewBinding.tvContent.text = "我的页面"
setClickListener()
}
private fun setClickListener(){
viewBinding.circleImage.setOnClickListener{
imagePopupShow()
}
viewBinding.btnJump.setOnClickListener{
XPageManager.push("/home", null)
}
}
private fun imagePopupShow(){
// val imagePopupWindow = activity?.let { ImagePopupWindow(it) }
// val imageList = ArrayList<ImageItemBean>()
// for (i in 1..5){
// imageList.add(ImageItemBean(R.mipmap.head_icon))
// }
// imagePopupWindow?.updateImageList(imageList)
// imagePopupWindow?.show(lly_root)
}
}
\ No newline at end of file
...@@ -29,13 +29,19 @@ ext.dependencies = [ ...@@ -29,13 +29,19 @@ ext.dependencies = [
'androidx.constraintlayout:constraintlayout:2.0.4', 'androidx.constraintlayout:constraintlayout:2.0.4',
'jp.co.cyberagent.android:gpuimage:2.1.0', 'jp.co.cyberagent.android:gpuimage:2.1.0',
'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9', 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9',
// 刷新
'com.scwang.smart:refresh-layout-kernel:2.0.1', 'com.scwang.smart:refresh-layout-kernel:2.0.1',
'com.scwang.smart:refresh-header-classics:2.0.1', 'com.scwang.smart:refresh-header-classics:2.0.1',
'com.scwang.smart:refresh-footer-classics:2.0.1', 'com.scwang.smart:refresh-footer-classics:2.0.1',
"androidx.recyclerview:recyclerview:1.1.0", "androidx.recyclerview:recyclerview:1.1.0",
'de.hdodenhof:circleimageview:3.1.0', 'de.hdodenhof:circleimageview:3.1.0',
'com.github.chrisbanes:PhotoView:2.3.0', 'com.github.chrisbanes:PhotoView:2.3.0',
'com.yidian.android:CommonComponent:0.0.88', // 'com.yidian.android:CommonComponent:0.0.88',
'com.yidian.android:CommonUtil:0.0.88',
'com.yidian.android:log-util:0.0.88',
'com.yidian.android:nightmode:0.0.88',
'com.yidian.xarc:xevent:0.0.3', 'com.yidian.xarc:xevent:0.0.3',
'com.google.zxing:core:3.4.0', 'com.google.zxing:core:3.4.0',
'id.zelory:compressor:3.0.0', 'id.zelory:compressor:3.0.0',
......
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