Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
d4b4a6f4
Commit
d4b4a6f4
authored
Jun 05, 2021
by
yinjiacheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update 企业认证流程
parent
f0e967b0
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
541 additions
and
52 deletions
+541
-52
LifeAccountMerchantAuthData.kt
...nghuoquan/newscontent/bean/LifeAccountMerchantAuthData.kt
+27
-0
LifeAccountPersonalAuthData.kt
...nghuoquan/newscontent/bean/LifeAccountPersonalAuthData.kt
+1
-0
Constant.kt
.../com/yidian/shenghuoquan/newscontent/constant/Constant.kt
+13
-0
BusinessLicenseOCRBean.kt
...oquan/newscontent/http/httpbean/BusinessLicenseOCRBean.kt
+1
-1
GetIDCardOCRBean.kt
...henghuoquan/newscontent/http/httpbean/GetIDCardOCRBean.kt
+1
-2
LifeAccountEnterpriseCertificationActivity.kt
...scontent/ui/LifeAccountEnterpriseCertificationActivity.kt
+2
-1
LifeAccountAuthDataManager.kt
...huoquan/newscontent/ui/auth/LifeAccountAuthDataManager.kt
+109
-3
LifeAccountBusinessLicenseAuthFragment.kt
...content/ui/auth/LifeAccountBusinessLicenseAuthFragment.kt
+59
-4
LifeAccountEnterpriseAuthActivity.kt
.../newscontent/ui/auth/LifeAccountEnterpriseAuthActivity.kt
+134
-10
LifeAccountIDCardAuthFragment.kt
...quan/newscontent/ui/auth/LifeAccountIDCardAuthFragment.kt
+107
-20
IDCardTestActivity.kt
.../shenghuoquan/newscontent/ui/idcard/IDCardTestActivity.kt
+1
-3
FileUtil.kt
...ava/com/yidian/shenghuoquan/newscontent/utils/FileUtil.kt
+4
-0
LifeAccountAuthBusinessInfoEditView.kt
...newscontent/widget/LifeAccountAuthBusinessInfoEditView.kt
+59
-4
LifeAccountAuthIdentityInfoEditView.kt
...newscontent/widget/LifeAccountAuthIdentityInfoEditView.kt
+9
-3
fragment_life_account_id_card_auth.xml
...rc/main/res/layout/fragment_life_account_id_card_auth.xml
+10
-0
strings.xml
Components/newscontent/src/main/res/values/strings.xml
+4
-1
No files found.
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/bean/LifeAccountMerchantAuthData.kt
0 → 100644
View file @
d4b4a6f4
package
com.yidian.shenghuoquan.newscontent.bean
/**
* author: yinjiacheng
* date: 6/4/21 5:26 PM
* description: 生活号企业认证数据集
*/
class
LifeAccountMerchantAuthData
{
var
merchantType
:
Int
=
0
var
isBusinessLicenseUpload
:
Boolean
=
false
var
businessLicenseObjectKey
:
String
=
""
var
registrationName
:
String
=
""
var
registrationCode
:
String
=
""
var
type
:
String
?
=
null
var
addr
:
String
?
=
null
var
pers
:
String
?
=
null
var
scope
:
String
?
=
null
var
time
:
String
?
=
null
var
regi
:
String
?
=
null
var
organizer
:
String
?
=
null
var
date
:
String
?
=
null
var
comp
:
String
?
=
null
var
num
:
String
?
=
null
var
form
:
String
?
=
null
var
funding
:
String
?
=
null
var
date_issue
:
String
?
=
null
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/bean/LifeAccountPersonalAuthData.kt
View file @
d4b4a6f4
...
...
@@ -26,4 +26,5 @@ class LifeAccountPersonalAuthData {
var
isFaceAuthPass
:
Boolean
=
false
var
isIDCardPortraitFaceUpload
:
Boolean
=
false
var
isIDCardNationalEmblemFaceUpload
:
Boolean
=
false
var
phoneNUm
:
String
=
""
}
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/constant/Constant.kt
View file @
d4b4a6f4
...
...
@@ -9,9 +9,17 @@ object Constant {
const
val
LIFE_ACCOUNT_AUTH_TAG
=
"LifeAccountAuth"
// 认证类型
const
val
TYPE_AUTH
=
"auth_type"
const
val
TYPE_AUTH_PERSONAL
=
0
// 个人
const
val
TYPE_AUTH_INDIVIDUAL_BUSINESS
=
1
// 个体工商户
const
val
TYPE_AUTH_COMMON_ENTERPRISE
=
2
// 普通企业
// 商户类型
const
val
ITEM_INDIVIDUAL_BUSINESSES
=
"个体工商户"
const
val
ITEM_COMMON_ENTERPRISE
=
"普通企业"
const
val
TYPE_INDIVIDUAL_BUSINESS
=
1
const
val
TYPE_COMMON_ENTERPRISE
=
2
// 身份证、营业执照上传方式
const
val
ITEM_TAKE_PHOTO
=
"拍照"
...
...
@@ -44,4 +52,9 @@ object Constant {
// 服务端error message
const
val
ERROR_MESSAGE_ID_CARD_NUMBER
=
"身份证号码有误"
const
val
ERROR_MESSAGE_REAL_NAME
=
"姓名缺失"
// 数据来源
const
val
DATA_FROM_C
=
1
// C端
const
val
DATA_FROM_B
=
2
// B端
const
val
DATA_FROM_OP
=
3
// OP后台
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/http/httpbean/BusinessLicenseOCRBean.kt
View file @
d4b4a6f4
...
...
@@ -6,7 +6,7 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
* description: 营业执照OCR
*/
class
BusinessLicenseOCRBean
{
data class
Request
(
val
business_image_objectid
:
String
?
)
data class
Request
(
val
business_image_objectid
:
String
,
val
business_image_bucket
:
String
)
data class
Response
(
val
addr
:
String
,
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/http/httpbean/GetIDCardOCRBean.kt
View file @
d4b4a6f4
...
...
@@ -9,8 +9,7 @@ class GetIDCardOCRBean(val request: Request, val response: Response) {
data class
Request
(
val
posit_image_objectid
:
String
,
val
back_image_objectid
:
String
,
val
posit_bucket
:
String
?,
val
back_bucket
:
String
?
val
bucket
:
String
)
data class
Response
(
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/LifeAccountEnterpriseCertificationActivity.kt
View file @
d4b4a6f4
...
...
@@ -115,7 +115,8 @@ class LifeAccountEnterpriseCertificationActivity :
}
override
fun
onTaskSuccess
(
bucket
:
String
?,
objectKey
:
String
?)
{
val
request
=
BusinessLicenseOCRBean
.
Request
(
objectKey
)
if
(
bucket
==
null
||
objectKey
==
null
)
return
val
request
=
BusinessLicenseOCRBean
.
Request
(
objectKey
,
bucket
)
ApiService
.
businessLicenseOCR
(
object
:
IBusinessLicenseOCRCallback
{
override
fun
businessLicenseOCRSuccess
(
result
:
BusinessLicenseOCRBean
.
Response
?)
{
Log
.
d
(
TAG
,
"name: ${result?.name}, code: ${result?.code}"
)
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/auth/LifeAccountAuthDataManager.kt
View file @
d4b4a6f4
package
com.yidian.shenghuoquan.newscontent.ui.auth
import
com.yidian.shenghuoquan.newscontent.bean.LifeAccountMerchantAuthData
import
com.yidian.shenghuoquan.newscontent.bean.LifeAccountPersonalAuthData
import
com.yidian.shenghuoquan.newscontent.
http.httpbean.AuthPersonalCheckBean
import
com.yidian.shenghuoquan.newscontent.http.httpbean.
GetIDCardOCRBean
import
com.yidian.shenghuoquan.newscontent.
constant.Constant
import
com.yidian.shenghuoquan.newscontent.http.httpbean.
*
/**
* author: yinjiacheng
...
...
@@ -12,6 +13,7 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetIDCardOCRBean
object
LifeAccountAuthDataManager
{
val
personalAuthData
by
lazy
{
LifeAccountPersonalAuthData
()
}
val
merchantAuthData
by
lazy
{
LifeAccountMerchantAuthData
()
}
/**
* 将身份证OCR结果填入
...
...
@@ -30,7 +32,7 @@ object LifeAccountAuthDataManager {
}
/**
*
使用个人认证数据
生成身份信息校验接口请求体
* 生成身份信息校验接口请求体
*/
fun
generateAuthPersonalCheckRequest
():
AuthPersonalCheckBean
.
Request
{
return
AuthPersonalCheckBean
.
Request
(
...
...
@@ -49,4 +51,108 @@ object LifeAccountAuthDataManager {
personalAuthData
.
issuedBy
)
}
/**
* 将营业执照OCR结果填入
*/
fun
generateMerchantAuthData
(
data
:
BusinessLicenseOCRBean
.
Response
)
{
merchantAuthData
.
registrationName
=
data
.
name
merchantAuthData
.
registrationCode
=
data
.
code
merchantAuthData
.
type
=
data
.
type
merchantAuthData
.
addr
=
data
.
addr
merchantAuthData
.
pers
=
data
.
pers
merchantAuthData
.
scope
=
data
.
scope
merchantAuthData
.
time
=
data
.
time
merchantAuthData
.
regi
=
data
.
regi
merchantAuthData
.
organizer
=
data
.
organizer
merchantAuthData
.
date
=
data
.
date
merchantAuthData
.
comp
=
data
.
comp
merchantAuthData
.
num
=
data
.
num
merchantAuthData
.
form
=
data
.
form
merchantAuthData
.
funding
=
data
.
funding
merchantAuthData
.
date_issue
=
data
.
date_issue
}
/**
* 生成营业执照上传接口请求体
*/
fun
generateAuthBusinessLicenseCommitRequest
(
userId
:
Long
,
dataType
:
Int
,
lifeAccountId
:
Long
?
):
AuthBusinessLicenseCommitBean
.
Request
{
return
AuthBusinessLicenseCommitBean
.
Request
(
userId
,
merchantAuthData
.
registrationCode
,
merchantAuthData
.
registrationName
,
merchantAuthData
.
type
,
merchantAuthData
.
addr
,
merchantAuthData
.
pers
,
merchantAuthData
.
scope
,
merchantAuthData
.
time
,
merchantAuthData
.
regi
,
merchantAuthData
.
organizer
,
merchantAuthData
.
date
,
merchantAuthData
.
comp
,
merchantAuthData
.
num
,
merchantAuthData
.
form
,
merchantAuthData
.
funding
,
merchantAuthData
.
date_issue
,
merchantAuthData
.
businessLicenseObjectKey
,
Constant
.
DATA_FROM_B
,
dataType
,
lifeAccountId
,
null
,
null
,
null
)
}
/**
* 生成个体工商户身份上传接口请求体
*/
fun
generateAuthIndividualBusinessIdentityCommitRequest
(
dataType
:
Int
):
AuthIndividualBusinessIdentityCommitBean
.
Request
{
return
AuthIndividualBusinessIdentityCommitBean
.
Request
(
merchantAuthData
.
registrationCode
,
dataType
,
personalAuthData
.
idCardPortraitFaceObjectKey
,
personalAuthData
.
idCardNationalEmblemFaceObjectKey
,
personalAuthData
.
idCardPortraitFaceCompleteness
,
personalAuthData
.
idCardNationalEmblemFaceCompleteness
,
personalAuthData
.
idCardNum
,
personalAuthData
.
gender
,
personalAuthData
.
realName
,
personalAuthData
.
address
,
personalAuthData
.
nationality
,
personalAuthData
.
validDateStart
,
personalAuthData
.
validDateEnd
,
personalAuthData
.
issuedBy
,
null
,
null
,
null
)
}
/**
* 生成普通企业法人身份信息上传接口请求体
*/
fun
generateAuthEnterpriseLegalIdentityCommitRequest
(
authRecordId
:
Long
,
lifeAccountId
:
Long
?
):
AuthEnterpriseLegalIdentityCommitBean
.
Request
{
return
AuthEnterpriseLegalIdentityCommitBean
.
Request
(
authRecordId
,
personalAuthData
.
idCardPortraitFaceObjectKey
,
personalAuthData
.
idCardNationalEmblemFaceObjectKey
,
personalAuthData
.
idCardPortraitFaceCompleteness
,
personalAuthData
.
idCardNationalEmblemFaceCompleteness
,
personalAuthData
.
idCardNum
,
personalAuthData
.
gender
,
personalAuthData
.
realName
,
personalAuthData
.
address
,
personalAuthData
.
nationality
,
personalAuthData
.
validDateStart
,
personalAuthData
.
validDateEnd
,
personalAuthData
.
issuedBy
,
lifeAccountId
,
null
,
personalAuthData
.
phoneNUm
,
null
)
}
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/auth/LifeAccountBusinessLicenseAuthFragment.kt
View file @
d4b4a6f4
...
...
@@ -11,6 +11,7 @@ import android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.core.content.FileProvider
import
androidx.core.view.isVisible
import
com.yidian.common.base.BaseFragment
import
com.yidian.shenghuoquan.newscontent.R
import
com.yidian.shenghuoquan.newscontent.adapter.BottomSelectAdapter
...
...
@@ -24,6 +25,7 @@ import com.yidian.shenghuoquan.newscontent.ui.dialog.BottomSelectDialog
import
com.yidian.shenghuoquan.newscontent.utils.BitmapUtil
import
com.yidian.shenghuoquan.newscontent.utils.FileUtil
import
com.yidian.shenghuoquan.newscontent.utils.KS3Core
import
com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthBusinessInfoEditView
import
java.io.File
/**
...
...
@@ -34,7 +36,8 @@ import java.io.File
class
LifeAccountBusinessLicenseAuthFragment
:
BaseFragment
<
FragmentLifeAccountBusinessLicenseAuthBinding
>(),
View
.
OnClickListener
,
BottomSelectAdapter
.
OnItemClickListener
<
BottomSelectBean
>,
KS3Core
.
OnKS3TaskListener
,
IBusinessLicenseOCRCallback
{
IBusinessLicenseOCRCallback
,
LifeAccountAuthBusinessInfoEditView
.
OnLifeAccountAuthBusinessInfoEditViewCallback
{
/**
* sdcard/Android/data/package/cache
...
...
@@ -67,6 +70,8 @@ class LifeAccountBusinessLicenseAuthFragment :
private
fun
initListener
()
{
viewBinding
.
clBusinessLicenseUpload
.
setOnClickListener
(
this
)
viewBinding
.
ivClear
.
setOnClickListener
(
this
)
viewBinding
.
evRegistrationName
.
setOnLifeAccountAuthBusinessInfoEditViewCallback
(
this
)
viewBinding
.
evRegistrationCode
.
setOnLifeAccountAuthBusinessInfoEditViewCallback
(
this
)
}
override
fun
onClick
(
v
:
View
?)
{
...
...
@@ -87,13 +92,18 @@ class LifeAccountBusinessLicenseAuthFragment :
R
.
id
.
iv_clear
->
{
// 清除已上传的营业执照
viewBinding
.
ivBusinessLicense
.
setImageDrawable
(
null
)
LifeAccountAuthDataManager
.
merchantAuthData
.
isBusinessLicenseUpload
=
false
// 清除OCR或用户输入内容
viewBinding
.
evRegistrationName
.
clearEditContent
()
viewBinding
.
evRegistrationCode
.
clearEditContent
()
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationName
=
""
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
=
""
// 设置上传区域可点击
viewBinding
.
clBusinessLicenseUpload
.
isEnabled
=
true
// 隐藏清除按钮
viewBinding
.
ivClear
.
visibility
=
View
.
GONE
// 检查下一步条件
(
activity
as
LifeAccountEnterpriseAuthActivity
).
checkNextCondition
()
}
}
}
...
...
@@ -179,11 +189,33 @@ class LifeAccountBusinessLicenseAuthFragment :
/**
* 执行营业执照OCR
*/
private
fun
startBusinessLicenseOCR
(
objectKey
:
String
?)
{
val
request
=
BusinessLicenseOCRBean
.
Request
(
objectKey
)
private
fun
startBusinessLicenseOCR
(
objectKey
:
String
?,
bucket
:
String
?)
{
if
(
objectKey
==
null
||
bucket
==
null
)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"business license objectKey or bucket is null, ocr suspend!"
)
return
}
val
request
=
BusinessLicenseOCRBean
.
Request
(
objectKey
,
bucket
)
ApiService
.
businessLicenseOCR
(
this
,
request
)
}
/**
* 清除已输入的营业执照相关信息
* 用户更换商户类型操作
*/
fun
clearBusinessLicenseInfo
()
{
// 清除已上传的营业执照
viewBinding
.
ivBusinessLicense
.
setImageDrawable
(
null
)
viewBinding
.
ivClear
.
isVisible
=
false
// 清除OCR或用户输入内容
viewBinding
.
evRegistrationName
.
clearEditContent
()
viewBinding
.
evRegistrationCode
.
clearEditContent
()
// 设置上传区域可点击
viewBinding
.
clBusinessLicenseUpload
.
isEnabled
=
true
}
override
fun
onTaskStart
()
{
}
...
...
@@ -201,8 +233,10 @@ class LifeAccountBusinessLicenseAuthFragment :
}
override
fun
onTaskSuccess
(
bucket
:
String
?,
objectKey
:
String
?)
{
LifeAccountAuthDataManager
.
merchantAuthData
.
isBusinessLicenseUpload
=
true
objectKey
?.
let
{
LifeAccountAuthDataManager
.
merchantAuthData
.
businessLicenseObjectKey
=
it
}
// 执行营业执照OCR
startBusinessLicenseOCR
(
objectKey
)
startBusinessLicenseOCR
(
objectKey
,
bucket
)
}
override
fun
onTaskFailure
(
statesCode
:
Int
,
message
:
String
?)
{
...
...
@@ -210,11 +244,14 @@ class LifeAccountBusinessLicenseAuthFragment :
}
override
fun
businessLicenseOCRSuccess
(
result
:
BusinessLicenseOCRBean
.
Response
?)
{
result
?.
let
{
LifeAccountAuthDataManager
.
generateMerchantAuthData
(
it
)
}
// 回显OCR结果
viewBinding
.
evRegistrationName
.
fillEditContent
(
result
?.
name
)
viewBinding
.
evRegistrationCode
.
fillEditContent
(
result
?.
code
)
// 此时营业执照已上传并OCR识别完成 删除本地临时存储文件
File
(
commonPath
+
Constant
.
FILE_PATH_BUSINESS_LICENSE
).
delete
()
// 检查下一步条件
(
activity
as
LifeAccountEnterpriseAuthActivity
).
checkNextCondition
()
}
override
fun
businessLicenseOCRFailure
(
message
:
String
?)
{
...
...
@@ -223,4 +260,22 @@ class LifeAccountBusinessLicenseAuthFragment :
"request business license ocr failure, message: $message"
)
}
override
fun
onTextClear
(
from
:
LifeAccountAuthBusinessInfoEditView
)
{
if
(
from
==
viewBinding
.
evRegistrationName
)
{
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationName
=
""
}
else
{
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
=
""
}
// 检查下一步条件
(
activity
as
LifeAccountEnterpriseAuthActivity
).
checkNextCondition
()
}
override
fun
onTextChange
(
from
:
LifeAccountAuthBusinessInfoEditView
,
text
:
String
)
{
if
(
from
==
viewBinding
.
evRegistrationName
)
{
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationName
=
text
}
else
{
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
=
text
}
}
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/auth/LifeAccountEnterpriseAuthActivity.kt
View file @
d4b4a6f4
package
com.yidian.shenghuoquan.newscontent.ui.auth
import
android.os.Bundle
import
android.util.Log
import
android.view.View
import
androidx.fragment.app.Fragment
import
com.orhanobut.hawk.Hawk
import
com.yidian.common.HawkConfig
import
com.yidian.common.XRouterPathConstants
import
com.yidian.common.base.BaseActivity
import
com.yidian.shenghuoquan.newscontent.R
...
...
@@ -10,6 +13,12 @@ import com.yidian.shenghuoquan.newscontent.adapter.BottomSelectAdapter
import
com.yidian.shenghuoquan.newscontent.bean.BottomSelectBean
import
com.yidian.shenghuoquan.newscontent.constant.Constant
import
com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountEnterpriseAuthBinding
import
com.yidian.shenghuoquan.newscontent.http.ApiService
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthBusinessLicenseCommitCallback
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthEnterpriseCompleteCallback
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthEnterpriseLegalIdentityCommitCallback
import
com.yidian.shenghuoquan.newscontent.http.httpbean.AuthBusinessLicenseCommitBean
import
com.yidian.shenghuoquan.newscontent.http.httpbean.AuthEnterpriseCompleteBean
import
com.yidian.shenghuoquan.newscontent.ui.dialog.BottomSelectDialog
import
com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthProcessView
import
com.yidian.xpage.XPageManager
...
...
@@ -20,7 +29,9 @@ import com.yidian.xpage.XPageManager
* description: 生活号企业认证
*/
class
LifeAccountEnterpriseAuthActivity
:
BaseActivity
<
ActivityLifeAccountEnterpriseAuthBinding
>(),
View
.
OnClickListener
,
BottomSelectAdapter
.
OnItemClickListener
<
BottomSelectBean
>
{
View
.
OnClickListener
,
BottomSelectAdapter
.
OnItemClickListener
<
BottomSelectBean
>,
IAuthBusinessLicenseCommitCallback
,
IAuthEnterpriseLegalIdentityCommitCallback
,
IAuthEnterpriseCompleteCallback
{
private
val
fragmentList
:
ArrayList
<
Fragment
>
by
lazy
{
arrayListOf
<
Fragment
>(
...
...
@@ -57,6 +68,40 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
viewBind
.
btnNext
.
setOnClickListener
(
this
)
}
/**
* 检查是否可以进行下一步
*/
fun
checkNextCondition
()
{
if
(
viewBind
.
pvAuthProcess
.
curProcess
==
LifeAccountAuthProcessView
.
PROCESS_ENTERPRISE_QUALIFICATION
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
!=
0
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
isBusinessLicenseUpload
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationName
.
isNotEmpty
()
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
.
isNotEmpty
()
)
{
viewBind
.
btnNext
.
alpha
=
1f
viewBind
.
btnNext
.
isEnabled
=
true
}
else
if
(
viewBind
.
pvAuthProcess
.
curProcess
==
LifeAccountAuthProcessView
.
PROCESS_ENTERPRISE_MANAGER
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
==
Constant
.
TYPE_INDIVIDUAL_BUSINESS
&&
LifeAccountAuthDataManager
.
personalAuthData
.
isFaceAuthPass
)
{
viewBind
.
btnNext
.
alpha
=
1f
viewBind
.
btnNext
.
isEnabled
=
true
}
else
if
(
viewBind
.
pvAuthProcess
.
curProcess
==
LifeAccountAuthProcessView
.
PROCESS_ENTERPRISE_MANAGER
&&
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
==
Constant
.
TYPE_COMMON_ENTERPRISE
&&
LifeAccountAuthDataManager
.
personalAuthData
.
isIDCardPortraitFaceUpload
&&
LifeAccountAuthDataManager
.
personalAuthData
.
isIDCardNationalEmblemFaceUpload
&&
LifeAccountAuthDataManager
.
personalAuthData
.
realName
.
isNotEmpty
()
&&
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
.
isNotEmpty
()
&&
LifeAccountAuthDataManager
.
personalAuthData
.
phoneNUm
.
isNotEmpty
()
)
{
viewBind
.
btnNext
.
alpha
=
1f
viewBind
.
btnNext
.
isEnabled
=
true
}
else
{
viewBind
.
btnNext
.
alpha
=
0.32f
viewBind
.
btnNext
.
isEnabled
=
false
}
}
override
fun
onClick
(
v
:
View
?)
{
when
(
v
?.
id
)
{
R
.
id
.
iv_back
->
{
...
...
@@ -87,22 +132,101 @@ class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterp
).
show
()
}
R
.
id
.
btn_next
->
{
// TODO: 5/29/21 请求接口401 402
viewBind
.
pvAuthProcess
.
setProcess
(++
viewBind
.
pvAuthProcess
.
curProcess
)
viewBind
.
svMerchantType
.
enableSelect
(
false
)
supportFragmentManager
.
beginTransaction
()
.
replace
(
R
.
id
.
fragment_container
,
fragmentList
[
viewBind
.
pvAuthProcess
.
curProcess
]
).
commit
()
if
(
viewBind
.
pvAuthProcess
.
curProcess
==
LifeAccountAuthProcessView
.
PROCESS_ENTERPRISE_QUALIFICATION
)
{
// TODO: 6/4/21 判断是否为个人生活号升级
ApiService
.
authBusinessLicenseCommit
(
this
,
LifeAccountAuthDataManager
.
generateAuthBusinessLicenseCommitRequest
(
Hawk
.
get
<
Long
>(
HawkConfig
.
UserId
),
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
,
null
)
)
}
else
if
(
viewBind
.
pvAuthProcess
.
curProcess
==
LifeAccountAuthProcessView
.
PROCESS_ENTERPRISE_MANAGER
)
{
if
(
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
==
Constant
.
TYPE_INDIVIDUAL_BUSINESS
)
{
val
params
=
HashMap
<
String
,
String
>()
params
[
"code"
]
=
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
ApiService
.
authEnterpriseComplete
(
this
,
params
)
}
else
if
(
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
==
Constant
.
TYPE_COMMON_ENTERPRISE
)
{
ApiService
.
authEnterpriseLegalIdentityCommit
(
this
,
LifeAccountAuthDataManager
.
generateAuthEnterpriseLegalIdentityCommitRequest
(
123
,
null
)
)
}
}
}
}
}
override
fun
onItemClick
(
view
:
View
,
position
:
Int
,
data
:
BottomSelectBean
)
{
if
(
viewBind
.
svMerchantType
.
getCurSelectItem
().
isNotEmpty
())
{
// 更换商户类型,清空营业执照图片、清空注册名称和注册码
(
fragmentList
[
0
]
as
LifeAccountBusinessLicenseAuthFragment
).
clearBusinessLicenseInfo
()
}
// 回显选择的商户类型
viewBind
.
svMerchantType
.
setContentResult
(
data
.
item
)
// TODO: 5/29/21 清空营业执照图片、清空注册名称和注册码
// 保存选择的商户类型
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
=
if
(
data
.
item
==
Constant
.
ITEM_INDIVIDUAL_BUSINESSES
)
Constant
.
TYPE_INDIVIDUAL_BUSINESS
else
Constant
.
TYPE_COMMON_ENTERPRISE
// 检查下一步条件
checkNextCondition
()
}
override
fun
authBusinessLicenseCommitSuccess
(
result
:
AuthBusinessLicenseCommitBean
.
Response
?)
{
// 营业执照提交成功
viewBind
.
pvAuthProcess
.
setProcess
(++
viewBind
.
pvAuthProcess
.
curProcess
)
viewBind
.
svMerchantType
.
enableSelect
(
false
)
// 向身份信息fragment传参
val
fragment
=
fragmentList
[
viewBind
.
pvAuthProcess
.
curProcess
]
val
bundle
=
Bundle
()
bundle
.
putInt
(
Constant
.
TYPE_AUTH
,
LifeAccountAuthDataManager
.
merchantAuthData
.
merchantType
)
fragment
.
arguments
=
bundle
supportFragmentManager
.
beginTransaction
()
.
replace
(
R
.
id
.
fragment_container
,
fragment
).
commit
()
checkNextCondition
()
}
override
fun
authBusinessLicenseCommitFailure
(
message
:
String
?)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"request auth business license commit failure, message: $message"
)
}
override
fun
authEnterpriseLegalIdentityCommitSuccess
()
{
// 普通企业法人身份信息提交成功 请求企业认证完成接口
// TODO: 6/6/21 跳转提交成功页面
val
params
=
HashMap
<
String
,
String
>()
params
[
"code"
]
=
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
ApiService
.
authEnterpriseComplete
(
this
,
params
)
}
override
fun
authEnterpriseLegalIdentityCommitFailure
(
message
:
String
?)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"request auth enterprise legal identity commit failure, message: $message"
)
}
override
fun
authEnterpriseCompleteSuccess
(
result
:
AuthEnterpriseCompleteBean
.
Response
?)
{
// 企业认证完成
// TODO: 6/6/21 跳转提交成功页面
}
override
fun
authEnterpriseCompleteFailure
(
message
:
String
?)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"request auth enterprise complete failure, message: $message"
)
}
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/auth/LifeAccountIDCardAuthFragment.kt
View file @
d4b4a6f4
...
...
@@ -14,6 +14,7 @@ import android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.core.view.isVisible
import
com.megvii.demo.activity.IDCardDetectActivity
import
com.megvii.demo.utils.Configuration
import
com.megvii.idcardquality.IDCardQualityLicenseManager
...
...
@@ -30,6 +31,8 @@ import com.yidian.shenghuoquan.newscontent.bean.BottomSelectBean
import
com.yidian.shenghuoquan.newscontent.constant.Constant
import
com.yidian.shenghuoquan.newscontent.databinding.FragmentLifeAccountIdCardAuthBinding
import
com.yidian.shenghuoquan.newscontent.http.ApiService
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthEnterpriseLiveIdentityCallback
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthIndividualBusinessIdentityCommitCallback
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthLiveIdentityCallback
import
com.yidian.shenghuoquan.newscontent.http.callback.IAuthPersonalCheckCallback
import
com.yidian.shenghuoquan.newscontent.http.httpbean.*
...
...
@@ -53,7 +56,8 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
IGetIDCardOCRCallback
,
AuthPersonalGetTokenCallback
,
IdentifyIdOcrVerifyCallback
,
PreCallback
,
DetectCallback
,
KS3Core
.
OnKS3TaskListener
,
IAuthPersonalCheckCallback
,
IAuthLiveIdentityCallback
,
LifeAccountAuthImageView
.
OnLifeAccountAuthImageViewCallback
,
LifeAccountAuthIdentityInfoEditView
.
OnLifeAccountAuthIdentityInfoEditViewCallback
{
LifeAccountAuthIdentityInfoEditView
.
OnLifeAccountAuthIdentityInfoEditViewCallback
,
IAuthIndividualBusinessIdentityCommitCallback
,
IAuthEnterpriseLiveIdentityCallback
{
companion
object
{
// 身份证采集页面回传数据
...
...
@@ -89,6 +93,11 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
*/
private
val
megLiveManager
by
lazy
{
MegLiveManager
.
getInstance
()
}
/**
* 当前认证类型
*/
private
var
authType
:
Int
?
=
0
override
fun
createViewBinding
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?
...
...
@@ -104,7 +113,20 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
}
private
fun
initView
()
{
authType
=
arguments
?.
getInt
(
Constant
.
TYPE_AUTH
,
0
)
when
(
authType
)
{
Constant
.
TYPE_AUTH_PERSONAL
->
{
viewBinding
.
evRealName
.
setTitleContent
(
resources
.
getString
(
R
.
string
.
real_name
))
}
Constant
.
TYPE_AUTH_INDIVIDUAL_BUSINESS
->
{
viewBinding
.
evRealName
.
setTitleContent
(
resources
.
getString
(
R
.
string
.
individual_business_manager_name
))
}
Constant
.
TYPE_AUTH_COMMON_ENTERPRISE
->
{
viewBinding
.
evRealName
.
setTitleContent
(
resources
.
getString
(
R
.
string
.
enterprise_legal_name
))
}
}
viewBinding
.
evMobile
.
isVisible
=
authType
==
Constant
.
TYPE_AUTH_COMMON_ENTERPRISE
viewBinding
.
clFaceAuth
.
isVisible
=
authType
==
Constant
.
TYPE_AUTH_INDIVIDUAL_BUSINESS
}
private
fun
initListener
()
{
...
...
@@ -115,6 +137,7 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
viewBinding
.
ivIdCardNationalEmblemFace
.
setOnLifeAccountAuthImageViewCallback
(
this
)
viewBinding
.
evRealName
.
setOnLifeAccountAuthIdentityInfoEditViewCallback
(
this
)
viewBinding
.
evIdCardNumber
.
setOnLifeAccountAuthIdentityInfoEditViewCallback
(
this
)
viewBinding
.
evMobile
.
setOnLifeAccountAuthIdentityInfoEditViewCallback
(
this
)
}
/**
...
...
@@ -196,10 +219,22 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
R
.
id
.
iv_face_auth_start
->
{
// 判断是否满足条件进行活体检测
if
(!
checkFaceAuthCondition
())
return
ApiService
.
authPersonalCheck
(
this
,
LifeAccountAuthDataManager
.
generateAuthPersonalCheckRequest
()
)
when
(
authType
)
{
Constant
.
TYPE_AUTH_PERSONAL
->
{
ApiService
.
authPersonalCheck
(
this
,
LifeAccountAuthDataManager
.
generateAuthPersonalCheckRequest
()
)
}
Constant
.
TYPE_AUTH_INDIVIDUAL_BUSINESS
->
{
ApiService
.
authIndividualBusinessIdentityCommit
(
this
,
LifeAccountAuthDataManager
.
generateAuthIndividualBusinessIdentityCommitRequest
(
Constant
.
TYPE_INDIVIDUAL_BUSINESS
)
)
}
}
}
}
}
...
...
@@ -413,8 +448,7 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
GetIDCardOCRBean
.
Request
(
LifeAccountAuthDataManager
.
personalAuthData
.
idCardPortraitFaceObjectKey
,
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNationalEmblemFaceObjectKey
,
LifeAccountAuthDataManager
.
personalAuthData
.
idCardPortraitFaceBucket
,
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNationalEmblemFaceBucket
LifeAccountAuthDataManager
.
personalAuthData
.
idCardPortraitFaceBucket
)
)
}
...
...
@@ -459,15 +493,24 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
changeFaceAuthUI
(
true
)
// 删除活体检测数据
File
(
cachePath
+
Constant
.
FILE_PATH_ALIVE_DETECT_VERIFY_DATA
).
delete
()
// 回调server 保存活体识别认证状态
ApiService
.
authLiveIdentity
(
this
)
// 检查下一步条件
(
activity
as
LifeAccountPersonalAuthActivity
).
checkNextCondition
()
// 锁定当前输入状态 即完成人脸验证后无法修改身份证照片、姓名、身份证号
viewBinding
.
ivIdCardPortraitFace
.
disableModify
()
viewBinding
.
ivIdCardNationalEmblemFace
.
disableModify
()
viewBinding
.
evRealName
.
disableModify
()
viewBinding
.
evIdCardNumber
.
disableModify
()
// 回调server 保存活体识别认证状态
if
(
authType
==
Constant
.
TYPE_AUTH_PERSONAL
)
{
ApiService
.
authLiveIdentity
(
this
)
// 检查下一步条件
(
activity
as
LifeAccountPersonalAuthActivity
).
checkNextCondition
()
}
else
{
val
params
=
HashMap
<
String
,
String
>(
2
)
params
[
"code"
]
=
LifeAccountAuthDataManager
.
merchantAuthData
.
registrationCode
params
[
"idcard_number"
]
=
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
ApiService
.
authEnterpriseLiveIdentity
(
this
,
params
)
// 检查下一步条件
(
activity
as
LifeAccountEnterpriseAuthActivity
).
checkNextCondition
()
}
}
}
...
...
@@ -614,21 +657,65 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
}
override
fun
onTextClear
(
from
:
LifeAccountAuthIdentityInfoEditView
)
{
if
(
from
==
viewBinding
.
evRealName
)
{
LifeAccountAuthDataManager
.
personalAuthData
.
realName
=
""
}
else
{
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
=
""
when
(
from
)
{
viewBinding
.
evRealName
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
realName
=
""
}
viewBinding
.
evIdCardNumber
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
=
""
}
viewBinding
.
evMobile
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
phoneNUm
=
""
}
}
}
override
fun
onTextChange
(
from
:
LifeAccountAuthIdentityInfoEditView
,
text
:
String
)
{
if
(
from
==
viewBinding
.
evRealName
)
{
LifeAccountAuthDataManager
.
personalAuthData
.
realName
=
text
}
else
{
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
=
text
when
(
from
)
{
viewBinding
.
evRealName
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
realName
=
text
}
viewBinding
.
evIdCardNumber
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
=
text
}
viewBinding
.
evMobile
->
{
LifeAccountAuthDataManager
.
personalAuthData
.
phoneNUm
=
text
}
}
}
override
fun
authIndividualBusinessIdentityCommitSuccess
()
{
// 身份信息校验成功后才允许进行人脸验证
// 若存在上一次活体检测数据则删除 处理活体检测失败 再次进入
File
(
cachePath
+
Constant
.
FILE_PATH_ALIVE_DETECT_VERIFY_DATA
).
delete
()
// 跳转人脸认证
ApiService
.
authPersonalGetToken
(
this
,
AuthPersonalGetTokenBean
.
Request
(
LifeAccountAuthDataManager
.
personalAuthData
.
idCardNum
,
LifeAccountAuthDataManager
.
personalAuthData
.
realName
,
Constant
.
TYPE_MEG_LIVE
)
)
}
override
fun
authIndividualBusinessIdentityCommitFailure
(
message
:
String
?)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"request auth individual business identity commit failure, message: $message"
)
}
override
fun
authEnterpriseLiveIdentitySuccess
()
{
}
override
fun
authEnterpriseLiveIdentityFailure
(
message
:
String
?)
{
Log
.
e
(
Constant
.
LIFE_ACCOUNT_AUTH_TAG
,
"request auth enterprise live identity failure: message: $message"
)
}
/**
* 人脸验证结果UI
* @param result true为验证通过 false为验证未通过
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/ui/idcard/IDCardTestActivity.kt
View file @
d4b4a6f4
...
...
@@ -130,9 +130,7 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() {
GetIDCardOCRBean
.
Request
(
idCardFrontObjectKey
,
idCardBackObjectKey
,
idCardFrontBucket
,
idCardBackBucket
)
idCardFrontBucket
)
ApiService
.
getIDCardOCR
(
object
:
IGetIDCardOCRCallback
{
override
fun
getIDCardOCRSuccess
(
result
:
GetIDCardOCRBean
.
Response
?)
{
Log
.
d
(
KS3Core
.
TAG
,
"name: ${result?.posit?.name}, id num: ${result?.posit?.idcard_number}"
)
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/utils/FileUtil.kt
View file @
d4b4a6f4
...
...
@@ -19,6 +19,10 @@ object FileUtil {
*/
fun
generateFileFromUri
(
context
:
Context
?,
uri
:
Uri
?,
path
:
String
)
{
if
(
uri
!=
null
)
{
val
file
=
File
(
path
)
if
(
file
.
exists
())
file
.
delete
()
file
.
parentFile
?.
mkdirs
()
file
.
createNewFile
()
context
?.
contentResolver
?.
openInputStream
(
uri
)
?.
copyTo
(
FileOutputStream
(
path
))
}
}
...
...
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/widget/LifeAccountAuthBusinessInfoEditView.kt
View file @
d4b4a6f4
package
com.yidian.shenghuoquan.newscontent.widget
import
android.content.Context
import
android.graphics.Color
import
android.text.Editable
import
android.text.TextUtils
import
android.text.TextWatcher
...
...
@@ -31,6 +32,13 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
)
)
private
var
callback
:
OnLifeAccountAuthBusinessInfoEditViewCallback
?
=
null
/**
* 是否输入错误标识位
*/
private
var
isInputError
=
false
init
{
val
typedArray
=
context
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
LifeAccountAuthBusinessInfoEditView
)
...
...
@@ -47,18 +55,28 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
* 展示错误提示
*/
fun
showErrorTips
(
tips
:
String
)
{
viewBinding
.
tvErrorTips
.
visibility
=
View
.
VISIBLE
viewBinding
.
tvErrorTips
.
isVisible
=
true
viewBinding
.
tvErrorTips
.
text
=
tips
}
/**
* 隐藏错误提示
*/
private
fun
dismissErrorTips
()
{
viewBinding
.
tvErrorTips
.
isVisible
=
false
viewBinding
.
tvErrorTips
.
text
=
""
}
/**
* 清除输入的文字
*/
fun
clearEditContent
()
{
viewBinding
.
etContent
.
setText
(
""
)
if
(
viewBinding
.
tvErrorTips
.
visibility
==
View
.
VISIBLE
)
{
viewBinding
.
tvErrorTips
.
visibility
=
View
.
GONE
if
(
isInputError
)
{
dismissErrorTips
()
cancelHighLightEditContent
()
}
callback
?.
onTextClear
(
this
)
}
/**
...
...
@@ -79,6 +97,22 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
isEnabled
=
false
}
/**
* 高亮显示输入文本
*/
fun
highLightEditContent
()
{
isInputError
=
true
viewBinding
.
etContent
.
setTextColor
(
Color
.
parseColor
(
"#FFFF3A3A"
))
}
/**
* 取消高亮显示输入文本
*/
private
fun
cancelHighLightEditContent
()
{
isInputError
=
false
viewBinding
.
etContent
.
setTextColor
(
Color
.
parseColor
(
"#FF333333"
))
}
override
fun
onClick
(
v
:
View
?)
{
if
(
v
?.
id
==
R
.
id
.
iv_clear
)
{
// 清除输入框中的内容
...
...
@@ -96,6 +130,27 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
override
fun
afterTextChanged
(
s
:
Editable
?)
{
// 处理一键清除按钮
viewBinding
.
ivClear
.
visibility
=
if
(
TextUtils
.
isEmpty
(
s
))
View
.
GONE
else
View
.
VISIBLE
viewBinding
.
ivClear
.
isVisible
=
!
TextUtils
.
isEmpty
(
s
)
callback
?.
onTextChange
(
this
,
s
.
toString
())
if
(
isInputError
)
{
dismissErrorTips
()
cancelHighLightEditContent
()
}
}
fun
setOnLifeAccountAuthBusinessInfoEditViewCallback
(
callback
:
OnLifeAccountAuthBusinessInfoEditViewCallback
)
{
this
.
callback
=
callback
}
interface
OnLifeAccountAuthBusinessInfoEditViewCallback
{
/**
* 清除内容
*/
fun
onTextClear
(
from
:
LifeAccountAuthBusinessInfoEditView
)
/**
* 内容修改
*/
fun
onTextChange
(
from
:
LifeAccountAuthBusinessInfoEditView
,
text
:
String
)
}
}
\ No newline at end of file
Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/widget/LifeAccountAuthIdentityInfoEditView.kt
View file @
d4b4a6f4
...
...
@@ -7,7 +7,6 @@ import android.text.TextUtils
import
android.text.TextWatcher
import
android.util.AttributeSet
import
android.view.View
import
androidx.core.view.isVisible
import
com.yidian.nightmode.widget.YdConstraintLayout
import
com.yidian.shenghuoquan.newscontent.R
import
com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthIdentityInfoEditBinding
...
...
@@ -51,6 +50,13 @@ class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor(
viewBinding
.
etContent
.
addTextChangedListener
(
this
)
}
/**
* 设置标题
*/
fun
setTitleContent
(
content
:
String
)
{
viewBinding
.
tvContent
.
text
=
content
}
/**
* 展示错误提示
*/
...
...
@@ -62,7 +68,7 @@ class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor(
/**
* 隐藏错误提示
*/
fun
dismissErrorTips
()
{
private
fun
dismissErrorTips
()
{
viewBinding
.
tvErrorTips
.
visibility
=
View
.
GONE
viewBinding
.
tvErrorTips
.
text
=
""
}
...
...
@@ -93,7 +99,7 @@ class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor(
* 禁止修改
*/
fun
disableModify
()
{
viewBinding
.
ivClear
.
isVisible
=
false
viewBinding
.
ivClear
.
visibility
=
View
.
GONE
isEnabled
=
false
}
...
...
Components/newscontent/src/main/res/layout/fragment_life_account_id_card_auth.xml
View file @
d4b4a6f4
...
...
@@ -79,6 +79,15 @@
app:LifeAccountAuthIdentityInfoEditView_hint_text=
"@string/input_id_card_number"
app:layout_constraintTop_toBottomOf=
"@id/ev_real_name"
/>
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthIdentityInfoEditView
android:id=
"@+id/ev_mobile"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
app:LifeAccountAuthIdentityInfoEditView_content_text=
"@string/enterprise_legal_mobile"
app:LifeAccountAuthIdentityInfoEditView_hint_text=
"@string/input_id_card_number"
app:layout_constraintTop_toBottomOf=
"@id/ev_id_card_number"
/>
<com.yidian.nightmode.widget.YdConstraintLayout
android:id=
"@+id/cl_face_auth"
android:layout_width=
"match_parent"
...
...
@@ -87,6 +96,7 @@
android:paddingTop=
"17dp"
android:paddingEnd=
"12dp"
android:paddingBottom=
"6dp"
android:visibility=
"gone"
app:layout_constraintTop_toBottomOf=
"@id/ev_id_card_number"
>
<com.yidian.nightmode.widget.YdTextView
...
...
Components/newscontent/src/main/res/values/strings.xml
View file @
d4b4a6f4
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools
=
"http://schemas.android.com/tools"
tools:ignore=
"MissingTranslation"
>
<resources
xmlns:tools
=
"http://schemas.android.com/tools"
tools:ignore=
"MissingTranslation"
>
<string
name=
"app_name"
>
Yac
</string>
<string
name=
"action_settings"
>
Settings
</string>
<!-- Strings used for fragments for navigation -->
...
...
@@ -121,5 +121,8 @@
<string
name=
"registration_code_description"
>
统一社会信用代码(注册号)将作为生活号唯一企业身份标识,请仔细核对,确认无误。
</string>
<string
name=
"next_step"
>
下一步
</string>
<string
name=
"cancel"
>
取消
</string>
<string
name=
"enterprise_legal_name"
>
法人姓名
</string>
<string
name=
"enterprise_legal_mobile"
>
法人手机号
</string>
<string
name=
"individual_business_manager_name"
>
经营者姓名
</string>
</resources>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment