Commit 90549f90 authored by zhenghongbin's avatar zhenghongbin

add Merge branch 'dev' of https://git.yidian-inc.com:8021/bp/ShenghuoquanBusiness into dev

* 'dev' of https://git.yidian-inc.com:8021/bp/ShenghuoquanBusiness:
  add 企业认证UI
  fix Demo 活体检测数据写入失败
  update:各种挑战成功页面跳转提示
  update Demo 身份证OCR后调起活体检测

# Conflicts:
#	Components/newscontent/src/main/java/com/yidian/shenghuoquan/newscontent/app/NewsContentApplication.kt
parents e7807ffb 7f1506f2
......@@ -23,5 +23,6 @@ class XRouterPathConstants {
const val LIFE_ACCOUNT_CREATE = "/createLiveAccountActivity"
const val PERSONAL_AUTHENTICATION = "/PersonalAuthenticationActivity"
const val ENTERPRISE_CERTIFICATION = "/EnterpriseCertificationActivity"
const val LIFE_ACCOUNT_ENTERPRISE_AUTH = "/lifeAccountEnterpriseAuth"
}
}
\ No newline at end of file
......@@ -93,6 +93,9 @@
<activity android:name=".ui.LifeAccountPersonalAuthActivity"
android:theme="@style/Transparent" />
<activity android:name=".ui.auth.LifeAccountEnterpriseAuthActivity"
android:theme="@style/Transparent" />
</application>
</manifest>
\ No newline at end of file
......@@ -6,6 +6,7 @@ import com.yidian.common.XRouterPathConstants.Companion.FLASH
import com.yidian.common.XRouterPathConstants.Companion.GALLERY
import com.yidian.common.XRouterPathConstants.Companion.ID_CARD_TEST
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_AUTH
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_ENTERPRISE_AUTH
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_ENTERPRISE_CERTIFICATION
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_IDENTITY
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_PERSONAL_AUTH
......@@ -19,6 +20,7 @@ import com.yidian.news.util.ProcessUtil
import com.yidian.nightmode.util.NightModeUtil
import com.yidian.shenghuoquan.newscontent.service.*
import com.yidian.shenghuoquan.newscontent.ui.*
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActivity
import com.yidian.shenghuoquan.newscontent.ui.idcard.IDCardTestActivity
import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler
......@@ -136,6 +138,18 @@ class NewsContentApplication : YdBaseApplication() {
}
}),
XPageNode(LIFE_ACCOUNT_ENTERPRISE_AUTH, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, LifeAccountEnterpriseAuthActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}),
XPageNode(NEWS_CONTENT, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
......
......@@ -76,6 +76,7 @@ class ApiService {
}
override fun onFailer(result: HttpResult<IdentifyIdOcrVerifyBean.Response?>?) {
apiCallback.identifyIdOcrVerifyFailure(result)
}
})
}
......
......@@ -4,4 +4,5 @@ import com.yidian.common.http.HttpResult
interface IdentifyIdOcrVerifyCallback {
fun identifyIdOcrVerifySuccess(t: HttpResult<IdentifyIdOcrVerifyBean.Response?>?)
fun identifyIdOcrVerifyFailure(t: HttpResult<IdentifyIdOcrVerifyBean.Response?>?)
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ import com.yidian.common.XRouterPathConstants.Companion.ENTERPRISE_CERTIFICATION
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityEnterpriseCertificationBinding
import com.yidian.utils.ToastUtil
import kotlinx.android.synthetic.main.top_bar.view.*
/**
......@@ -34,6 +35,7 @@ class EnterpriseCertificationActivity : BaseActivity<ActivityEnterpriseCertifica
}
private fun initListener() {
viewBind.createLifeNumber.setOnClickListener {
ToastUtil.showToast(this, "创建生活号跳转")
startActivity(
Intent(
this@EnterpriseCertificationActivity,
......
package com.yidian.shenghuoquan.newscontent.ui
import android.os.Bundle
import android.widget.Toast
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeNumberBinding
import com.yidian.shenghuoquan.newscontent.databinding.ActivityPersonalAuthenticationBinding
import com.yidian.utils.ToastUtil
import kotlinx.android.synthetic.main.top_bar.view.*
/**
......@@ -55,6 +57,7 @@ class LifeNumberActivity : BaseActivity<ActivityLifeNumberBinding>() {
}
viewBind.information.setOnClickListener {
// TODO: 2021/5/27 去体验跳转
ToastUtil.showToast(this, "去体验跳转")
}
}
......
......@@ -6,6 +6,7 @@ import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_AUTHENTICATION
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityPersonalAuthenticationBinding
import com.yidian.utils.ToastUtil
import kotlinx.android.synthetic.main.top_bar.view.*
/**
......@@ -57,9 +58,11 @@ class PersonalAuthenticationActivity : BaseActivity<ActivityPersonalAuthenticati
finish()
}
viewBind.information.setOnClickListener {
ToastUtil.showToast(this, "去体验页面跳转跳转")
// TODO: 2021/5/27 去体验页面跳转
}
viewBind.turnOnEnterpriseCertification.setOnClickListener {
ToastUtil.showToast(this, "升级为企业认证页面跳转")
// TODO: 2021/5/27 升级为企业认证页面
}
}
......
......@@ -34,6 +34,9 @@ class AliveTestActivity : BaseActivity<ActivityAliveLayoutBinding>(), PreCallbac
private var dataPath = "" // 模型本地存放路径
private var mProgressDialog: ProgressDialog? = null
private var idCardName: String? = null
private var idCardNo: String? = null
override fun createViewBinding(): ActivityAliveLayoutBinding {
return ActivityAliveLayoutBinding.inflate(layoutInflater)
......@@ -47,6 +50,8 @@ class AliveTestActivity : BaseActivity<ActivityAliveLayoutBinding>(), PreCallbac
super.onCreate(savedInstanceState)
initSign()
setOnListener()
idCardName = intent.getStringExtra("idCardName")
idCardNo = intent.getStringExtra("idCardNo")
}
private fun initSign() {
......@@ -61,7 +66,8 @@ class AliveTestActivity : BaseActivity<ActivityAliveLayoutBinding>(), PreCallbac
private fun setOnListener() {
viewBind.btActionYy.setOnClickListener {
val requestParams: AuthPersonalGetTokenBean.Request = AuthPersonalGetTokenBean.Request("13010519881211121X", "宋永孟", "meglive", "merchant")
val requestParams: AuthPersonalGetTokenBean.Request = AuthPersonalGetTokenBean.Request(
idCardNo!!, idCardName!!, "meglive", AppConfig.appid)
ApiService.authPersonalGetToken(authPersonalGetTokenCallback, requestParams)
}
}
......@@ -155,6 +161,10 @@ class AliveTestActivity : BaseActivity<ActivityAliveLayoutBinding>(), PreCallbac
Toast.makeText(this@AliveTestActivity, "活体检测结果失败 msg = ${t.reason}", Toast.LENGTH_SHORT).show()
}
}
override fun identifyIdOcrVerifyFailure(t: HttpResult<IdentifyIdOcrVerifyBean.Response?>?) {
progressDialogDismiss()
}
}
// 将字节流转换成文件
......@@ -162,12 +172,14 @@ class AliveTestActivity : BaseActivity<ActivityAliveLayoutBinding>(), PreCallbac
fun saveFile(filename: String, data: ByteArray?) {
if (data != null) {
val sdcardPath = System.getenv("EXTERNAL_STORAGE")
dataPath = "$sdcardPath/life_circle_business/meglive"
dataPath = externalCacheDir?.absolutePath + "/alive/meglive"
val file = File(dataPath)
if (file.exists()) {
file.delete()
} else {
file.parentFile?.mkdirs()
file.createNewFile()
}
val fos = FileOutputStream(file)
fos.write(data, 0, data.size)
......
package com.yidian.shenghuoquan.newscontent.ui.auth
import android.os.Bundle
import android.view.View
import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountEnterpriseAuthBinding
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthProcessView
/**
* author: yinjiacheng
* date: 5/27/21 5:33 PM
* description: 生活号企业认证
*/
class LifeAccountEnterpriseAuthActivity : BaseActivity<ActivityLifeAccountEnterpriseAuthBinding>(),
View.OnClickListener {
override fun createViewBinding(): ActivityLifeAccountEnterpriseAuthBinding {
return ActivityLifeAccountEnterpriseAuthBinding.inflate(layoutInflater)
}
override fun getXPageName(): String {
return XRouterPathConstants.LIFE_ACCOUNT_ENTERPRISE_AUTH
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
initView()
initListener()
viewBind.pvAuthProcess.setProcess(LifeAccountAuthProcessView.PROCESS_ENTERPRISE_QUALIFICATION)
}
private fun initView() {
viewBind.viewCommonHeader.tvTitle.text = resources.getString(R.string.enterprise_auth)
}
private fun initListener() {
viewBind.viewCommonHeader.ivBack.setOnClickListener(this)
}
override fun onClick(v: View?) {
}
}
\ No newline at end of file
......@@ -19,6 +19,7 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityIdcardBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetIDCardOCRBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.IGetIDCardOCRCallback
import com.yidian.shenghuoquan.newscontent.ui.alive.AliveTestActivity
import com.yidian.shenghuoquan.newscontent.utils.KS3Core
import com.yidian.utils.ToastUtil
import java.io.File
......@@ -122,6 +123,11 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() {
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
Log.d(KS3Core.TAG, "name: ${result?.posit?.name}, id num: ${result?.posit?.idcard_number}")
ToastUtil.showToast(this@IDCardTestActivity, "ocr result, name: ${result?.posit?.name}, number: ${result?.posit?.idcard_number}")
// 身份证OCR成功后执行活体检测
val intent = Intent(this@IDCardTestActivity, AliveTestActivity::class.java)
intent.putExtra("idCardName", result?.posit?.name)
intent.putExtra("idCardNo", result?.posit?.idcard_number)
startActivity(intent)
}
override fun getIDCardOCRFailure(message: String?) {
......
package com.yidian.shenghuoquan.newscontent.widget
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.util.AttributeSet
import android.view.View
import com.yidian.nightmode.widget.YdConstraintLayout
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthProcessBinding
/**
* author: yinjiacheng
* date: 5/27/21 6:49 PM
* description: 生活号认证流程
*/
class LifeAccountAuthProcessView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : YdConstraintLayout(context, attrs, defStyle) {
companion object {
/**
* 企业资质
*/
const val PROCESS_ENTERPRISE_QUALIFICATION = 0
/**
* 经营者
*/
const val PROCESS_ENTERPRISE_MANAGER = 1
/**
* 平台审核
*/
const val PROCESS_PLATFORM_AUDIT = 2
}
private val viewBinding = ViewLifeAccountAuthProcessBinding.bind(
View.inflate(
getContext(),
R.layout.view_life_account_auth_process,
this
)
)
/**
* 设置当前流程
*/
fun setProcess(process: Int) {
when (process) {
PROCESS_ENTERPRISE_QUALIFICATION -> {
resetUI()
viewBinding.tvProcessNumEnterpriseQualification.setBackgroundResource(R.drawable.bg_life_account_auth_process_ongoing)
viewBinding.tvProcessNumEnterpriseQualification.setTextColor(Color.WHITE)
viewBinding.tvProcessNameEnterpriseQualification.setTextColor(Color.parseColor("#FF1852F1"))
}
PROCESS_ENTERPRISE_MANAGER -> {
resetUI()
viewBinding.viewProcessEnterpriseQualification.setBackgroundColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNumEnterpriseQualification.setBackgroundResource(R.drawable.bg_life_account_auth_process_finish)
viewBinding.tvProcessNumEnterpriseQualification.setTextColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNameEnterpriseQualification.setTextColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNumEnterpriseManager.setBackgroundResource(R.drawable.bg_life_account_auth_process_ongoing)
viewBinding.tvProcessNumEnterpriseManager.setTextColor(Color.WHITE)
viewBinding.tvProcessNameEnterpriseManager.setTextColor(Color.parseColor("#FF1852F1"))
}
PROCESS_PLATFORM_AUDIT -> {
resetUI()
viewBinding.viewProcessEnterpriseManager.setBackgroundColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNumEnterpriseQualification.setBackgroundResource(R.drawable.bg_life_account_auth_process_finish)
viewBinding.tvProcessNumEnterpriseQualification.setTextColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNameEnterpriseQualification.setTextColor(Color.parseColor("#FF1852F1"))
viewBinding.tvProcessNumEnterpriseManager.setBackgroundResource(R.drawable.bg_life_account_auth_process_finish)
viewBinding.tvProcessNumEnterpriseManager.setTextColor((Color.parseColor("#FF1852F1")))
viewBinding.tvProcessNameEnterpriseManager.setTextColor((Color.parseColor("#FF1852F1")))
viewBinding.tvProcessNumEnterpriseManager.setBackgroundResource(R.drawable.bg_life_account_auth_process_ongoing)
viewBinding.tvProcessNumEnterpriseManager.setTextColor((Color.WHITE))
viewBinding.tvProcessNameEnterpriseManager.setTextColor((Color.parseColor("#FF1852F1")))
}
}
}
private fun resetUI() {
viewBinding.viewProcessEnterpriseQualification.setBackgroundColor(Color.parseColor("#FFF3F4F6"))
viewBinding.viewProcessEnterpriseManager.setBackgroundColor(Color.parseColor("#FFF3F4F6"))
viewBinding.tvProcessNumEnterpriseQualification.setBackgroundResource(R.drawable.bg_life_account_auth_process_initial)
viewBinding.tvProcessNumEnterpriseQualification.setTextColor(Color.parseColor("#61000000"))
viewBinding.tvProcessNameEnterpriseQualification.setTextColor(Color.parseColor("#61000000"))
viewBinding.tvProcessNumEnterpriseManager.setBackgroundResource(R.drawable.bg_life_account_auth_process_initial)
viewBinding.tvProcessNumEnterpriseManager.setTextColor(Color.parseColor("#61000000"))
viewBinding.tvProcessNameEnterpriseManager.setTextColor(Color.parseColor("#61000000"))
viewBinding.tvProcessNumPlatformAudit.setBackgroundResource(R.drawable.bg_life_account_auth_process_initial)
viewBinding.tvProcessNumPlatformAudit.setTextColor(Color.parseColor("#61000000"))
viewBinding.tvProcessNamePlatformAudit.setTextColor(Color.parseColor("#61000000"))
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FFFFFFFF" />
<stroke
android:width="1dp"
android:color="@color/base" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FFF3F4F6" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/base" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdConstraintLayout 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="match_parent">
<include
android:id="@+id/view_common_header"
layout="@layout/layout_common_header"
android:layout_width="match_parent"
android:layout_height="42dp"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthProcessView
android:id="@+id/pv_auth_process"
android:layout_width="wrap_content"
android:layout_height="61dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_common_header" />
<com.yidian.nightmode.widget.YdFrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/pv_auth_process" />
</com.yidian.nightmode.widget.YdConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="61dp"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_num_enterprise_qualification"
android:layout_width="19dp"
android:layout_height="19dp"
android:background="@drawable/bg_life_account_auth_process_initial"
android:gravity="center"
android:text="1"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="@id/tv_process_name_enterprise_qualification"
app:layout_constraintStart_toStartOf="@id/tv_process_name_enterprise_qualification" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_name_enterprise_qualification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:includeFontPadding="false"
android:text="@string/enterprise_qualification"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintTop_toBottomOf="@id/tv_process_num_enterprise_qualification" />
<View
android:id="@+id/view_process_enterprise_qualification"
android:layout_width="96dp"
android:layout_height="1dp"
android:background="#FFF3F4F6"
app:layout_constraintBottom_toBottomOf="@id/tv_process_num_enterprise_qualification"
app:layout_constraintStart_toEndOf="@id/tv_process_num_enterprise_qualification"
app:layout_constraintTop_toTopOf="@id/tv_process_num_enterprise_qualification" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_num_enterprise_manager"
android:layout_width="19dp"
android:layout_height="19dp"
android:background="@drawable/bg_life_account_auth_process_initial"
android:gravity="center"
android:text="2"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/view_process_enterprise_qualification" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_name_enterprise_manager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:includeFontPadding="false"
android:text="@string/enterprise_manager"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="@id/tv_process_num_enterprise_manager"
app:layout_constraintStart_toStartOf="@id/tv_process_num_enterprise_manager"
app:layout_constraintTop_toBottomOf="@id/tv_process_num_enterprise_qualification" />
<View
android:id="@+id/view_process_enterprise_manager"
android:layout_width="96dp"
android:layout_height="1dp"
android:background="#FFF3F4F6"
app:layout_constraintBottom_toBottomOf="@id/tv_process_num_enterprise_manager"
app:layout_constraintStart_toEndOf="@id/tv_process_num_enterprise_manager"
app:layout_constraintTop_toTopOf="@id/tv_process_num_enterprise_manager" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_num_platform_audit"
android:layout_width="19dp"
android:layout_height="19dp"
android:background="@drawable/bg_life_account_auth_process_initial"
android:gravity="center"
android:text="3"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/view_process_enterprise_manager" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_process_name_platform_audit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:includeFontPadding="false"
android:text="@string/platform_audit"
android:textColor="#61000000"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="@id/tv_process_num_platform_audit"
app:layout_constraintStart_toStartOf="@id/tv_process_num_platform_audit"
app:layout_constraintTop_toBottomOf="@id/tv_process_num_platform_audit" />
</com.yidian.nightmode.widget.YdConstraintLayout>
\ No newline at end of file
......@@ -32,8 +32,11 @@
<color name="subscribed_gray">#A8ABB1</color>
<color name="thumb_up_gray">#8C8F96</color>
<color name="progress_d8d8d8_transparent">#bfd8d8d8</color>
<!--生活圈B端-->
<color name="gray_333">#333333</color>
<color name="divider_white">#FFF2F2F2</color>
<color name="red_account_tips">#FF3A3A</color>
<color name="account_hint">#c2c2c2</color>
<color name="base">#FF1852F1</color>
</resources>
\ No newline at end of file
......@@ -105,6 +105,9 @@
<string name="privacy_certification">《隐私认证》</string>
<string name="user_agreement">《用户协议》</string>
<string name="auth_finish">完成认证</string>
<string name="enterprise_qualification">企业资质</string>
<string name="enterprise_manager">经营者</string>
<string name="platform_audit">平台审核</string>
</resources>
\ No newline at end of file
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