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
}
}
} }
...@@ -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))
} }
......
...@@ -72,7 +72,6 @@ class MerchantServiceFunctionAdapter @JvmOverloads constructor( ...@@ -72,7 +72,6 @@ class MerchantServiceFunctionAdapter @JvmOverloads constructor(
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position] val data = serviceData[position]
if (data.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 {
......
...@@ -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)
} }
......
...@@ -52,9 +52,10 @@ class MerchantSwitchAdapter( ...@@ -52,9 +52,10 @@ class MerchantSwitchAdapter(
// 已认证 // 已认证
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 -> ""
} }
} }
......
...@@ -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 // 生活号名称
} }
...@@ -25,6 +25,6 @@ class AuthEnterpriseLegalIdentityCommitBean { ...@@ -25,6 +25,6 @@ class AuthEnterpriseLegalIdentityCommitBean {
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)
} }
...@@ -9,6 +9,6 @@ class AuthIndividualBusinessCompleteBean { ...@@ -9,6 +9,6 @@ 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)
} }
...@@ -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 Request(val mobile: String, val life_account_id: Long?)
data class Response(val life_account_id: String)
data class Response(
val life_account_id: String,
val occupation: String,
val full_name: String,
val id_card: String,
val life_account_name: String
)
} }
...@@ -13,6 +13,7 @@ class GetLifeAccountInfoByIdBean { ...@@ -13,6 +13,7 @@ class GetLifeAccountInfoByIdBean {
data class Response( data class Response(
val audit_status: Int, val audit_status: Int,
val code: String,
val create_time: String, val create_time: String,
val enterprise_auth_record_id: Int, val enterprise_auth_record_id: Int,
val id_card: String, val id_card: String,
...@@ -25,11 +26,17 @@ class GetLifeAccountInfoByIdBean { ...@@ -25,11 +26,17 @@ class GetLifeAccountInfoByIdBean {
val life_account_status: Int, val life_account_status: Int,
val life_account_type: Int, val life_account_type: Int,
val merchant_id: Int, val merchant_id: Int,
val occupation: String,
val update_time: String,
val code: String,
val name: String,
val mobile: String, val mobile: String,
val name: String,
val role_type: Int,
val tag: Tag,
val update_time: String,
val occupation: String
) : Serializable
data class Tag(
val tag_key: Int,
val tag_text: String
) : Serializable ) : 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)
if (t?.code == 0) {
// 登录成功后请求生活号列表接口
ApiService.getLifeAccountList(this) ApiService.getLifeAccountList(this)
} }
}
} }
...@@ -19,40 +19,27 @@ object LifeAccountAuthDataManager { ...@@ -19,40 +19,27 @@ 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
}
if (data.back.completeness != -1) {
personalAuthData.idCardNationalEmblemFaceCompleteness = data.back.completeness
}
if (data.posit.idcard_number.isNotEmpty()) {
personalAuthData.idCardNum = data.posit.idcard_number personalAuthData.idCardNum = data.posit.idcard_number
}
if (data.posit.gender.isNotEmpty()) {
personalAuthData.gender = data.posit.gender personalAuthData.gender = data.posit.gender
}
if (data.posit.name.isNotEmpty()) {
personalAuthData.realName = data.posit.name personalAuthData.realName = data.posit.name
}
if (data.posit.address.isNotEmpty()) {
personalAuthData.address = data.posit.address personalAuthData.address = data.posit.address
}
if (data.posit.nationality.isNotEmpty()) {
personalAuthData.nationality = data.posit.nationality personalAuthData.nationality = data.posit.nationality
} }
if (data.back.valid_date_start.isNotEmpty()) {
/**
* 将身份证国徽面OCR结果填入
*/
fun generateIDCardNationEmblemFaceData(data: GetIDCardOCRBean.Response) {
personalAuthData.idCardNationalEmblemFaceCompleteness = data.back.completeness
personalAuthData.validDateStart = data.back.valid_date_start personalAuthData.validDateStart = data.back.valid_date_start
}
if (data.back.valid_date_end.isNotEmpty()) {
personalAuthData.validDateEnd = data.back.valid_date_end personalAuthData.validDateEnd = data.back.valid_date_end
}
if (data.back.issued_by.isNotEmpty()) {
personalAuthData.issuedBy = data.back.issued_by 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) viewBind.svMerchantType.setContentResult(data.item)
// 保存选择的商户类型 // 保存选择的商户类型
LifeAccountAuthDataManager.merchantAuthData.merchantType = LifeAccountAuthDataManager.merchantAuthData.merchantType =
if (data.item == Constant.ITEM_INDIVIDUAL_BUSINESSES) Constant.TYPE_INDIVIDUAL_BUSINESS else Constant.TYPE_COMMON_ENTERPRISE 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() checkNextCondition()
lastSelectedMerchantType = data.item
}
} }
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,39 +480,62 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -480,39 +480,62 @@ 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 {
Pair("posit_image_objectid", objectKey),
Pair("posit_bucket", bucket)
)
)
} else {
ApiService.getIDCardOCR(
this, hashMapOf(
Pair("back_image_objectid", objectKey),
Pair("back_bucket", bucket)
)
)
}
}
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) { override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
result?.let { LifeAccountAuthDataManager.generatePersonalAuthData(it) } result?.let { LifeAccountAuthDataManager.generateIDCardPortraitFaceData(it) }
// 回显OCR结果 // 回显OCR结果
viewBinding.evRealName.fillEditContent(result?.posit?.name) viewBinding.evRealName.fillEditContent(result?.posit?.name)
viewBinding.evIdCardNumber.fillEditContent(result?.posit?.idcard_number) viewBinding.evIdCardNumber.fillEditContent(result?.posit?.idcard_number)
// 此时身份证已上传并OCR识别完成 删除本地临时存储文件 // 此时身份证人像面已上传并OCR识别完成 删除本地临时存储文件
File(cachePath + Constant.FILE_PATH_ID_CARD_PORTRAIT_FACE).apply { File(cachePath + Constant.FILE_PATH_ID_CARD_PORTRAIT_FACE).apply {
if (exists()) delete() 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_bucket", bucket)
)
)
} else {
ApiService.getIDCardOCR(
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 { File(cachePath + Constant.FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE).apply {
if (exists()) delete() if (exists()) delete()
} }
// 检查下一步条件
if (authType == Constant.TYPE_AUTH_PERSONAL) {
(activity as LifeAccountPersonalAuthActivity).checkNextCondition()
} else {
(activity as LifeAccountEnterpriseAuthActivity).checkNextCondition()
}
} }
override fun getIDCardOCRFailure(message: String?) { override fun getIDCardOCRFailure(message: String?) {
} }
}, hashMapOf(
Pair("back_image_objectid", objectKey),
Pair("back_bucket", bucket)
)
)
}
}
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))
}
} }
...@@ -51,6 +51,7 @@ class MerchantAuthInfoActivity : BaseActivity<ActivityMerchantAuthInfoBinding>() ...@@ -51,6 +51,7 @@ class MerchantAuthInfoActivity : BaseActivity<ActivityMerchantAuthInfoBinding>()
// 个人认证 // 个人认证
viewBind.ivPersonAuthInfo.isVisible = true viewBind.ivPersonAuthInfo.isVisible = true
viewBind.ivPersonAuthInfo.fillAuthInfo( viewBind.ivPersonAuthInfo.fillAuthInfo(
lifeAccountInfo?.life_account_name,
lifeAccountInfo?.occupation, lifeAccountInfo?.occupation,
lifeAccountInfo?.legal_person, lifeAccountInfo?.legal_person,
lifeAccountInfo?.id_card, lifeAccountInfo?.id_card,
......
...@@ -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)
if (lifeAccountInfo?.audit_status != Constant.STATUS_AUDIT_UNDER && lifeAccountInfo?.role_type != Constant.TYPE_ROLE_ORDINARY) {
// 审核中和企业员工不允许修改生活号名称
viewBind.ivLifeAccountName.showDetailEntry() 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)
) )
) )
} }
......
...@@ -79,8 +79,8 @@ class MerchantCenterBottomHintDialog( ...@@ -79,8 +79,8 @@ class MerchantCenterBottomHintDialog(
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 -> {
// 修改企业认证 // 修改企业认证
...@@ -92,9 +92,9 @@ class MerchantCenterBottomHintDialog( ...@@ -92,9 +92,9 @@ class MerchantCenterBottomHintDialog(
interface OnMerchantCenterBottomHintCallback { interface OnMerchantCenterBottomHintCallback {
/** /**
* 升级企业认证 * 由未认证升级认证
*/ */
fun onUpgradeEnterpriseAuth() fun onUpgradeAuth()
/** /**
* 修改企业认证 * 修改企业认证
......
...@@ -9,8 +9,9 @@ import java.util.regex.Pattern ...@@ -9,8 +9,9 @@ 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 {
/** /**
* 真实姓名过滤 * 真实姓名过滤
* 汉字 + · * 汉字 + ·
...@@ -26,11 +27,11 @@ object InputFilterUtil { ...@@ -26,11 +27,11 @@ object InputFilterUtil {
/** /**
* 身份证号过滤 * 身份证号过滤
* 数字 + 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
...@@ -65,11 +66,11 @@ object InputFilterUtil { ...@@ -65,11 +66,11 @@ object InputFilterUtil {
/** /**
* 统一社会信用代码过滤 * 统一社会信用代码过滤
* 数字 + 大写字母 * 数字 + 大小写字母
*/ */
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
...@@ -77,14 +78,24 @@ object InputFilterUtil { ...@@ -77,14 +78,24 @@ object InputFilterUtil {
} }
/** /**
* 生活号名称过滤 * 带回调的输入长度过滤
*/ */
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,11 +94,9 @@ class LifeAccountLabelView @JvmOverloads constructor( ...@@ -93,11 +94,9 @@ 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) {
this.callback = callback this.callback = callback
......
...@@ -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
...@@ -30,15 +31,17 @@ class LifeAccountPersonalAuthInfoView @JvmOverloads constructor( ...@@ -30,15 +31,17 @@ class LifeAccountPersonalAuthInfoView @JvmOverloads constructor(
/** /**
* 填充认证信息 * 填充认证信息
* @param lifeAccountName 生活号名称
* @param occupation 职业 * @param occupation 职业
* @param realName 真实姓名 * @param realName 真实姓名
* @param idCardNo 身份证号 * @param idCardNo 身份证号
* @param phoneNo 手机号 * @param phoneNo 手机号
*/ */
fun fillAuthInfo(occupation: String?, realName: String?, idCardNo: String?, phoneNo: String?) { fun fillAuthInfo(lifeAccountName: String?, occupation: String?, realName: String?, idCardNo: String?, phoneNo: String?) {
viewBinding.tvLifeAccountName.text = lifeAccountName
viewBinding.tvContentOccupationLabel.text = occupation viewBinding.tvContentOccupationLabel.text = occupation
viewBinding.tvContentRealName.text = realName viewBinding.tvContentRealName.text = realName
viewBinding.tvContentIdCardNo.text = idCardNo viewBinding.tvContentIdCardNo.text = idCardNo?.let { SensitiveInfoUtil.idCardNumEncrypt(it) }
viewBinding.tvContentPhoneNo.text = phoneNo viewBinding.tvContentPhoneNo.text = phoneNo?.let { SensitiveInfoUtil.mobileEncrypt(it) }
} }
} }
...@@ -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,12 +14,23 @@ ...@@ -14,12 +14,23 @@
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.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/rl_refresh"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
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 <com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
android:id="@+id/lv_life_account_label" android:id="@+id/lv_life_account_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/bv_top_bar" /> app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView <com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView
android:id="@+id/av_merchant_asset" android:id="@+id/av_merchant_asset"
...@@ -40,4 +51,8 @@ ...@@ -40,4 +51,8 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/av_merchant_asset" /> app:layout_constraintTop_toBottomOf="@id/av_merchant_asset" />
</androidx.constraintlayout.widget.ConstraintLayout>
</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