Commit 324e552f authored by yinjiacheng's avatar yinjiacheng

add 商户管理中心功能入口校验权限

parent 315a2829
......@@ -7,71 +7,79 @@ package com.yidian.shenghuoquan.newscontent.constant
*/
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 STATUS_AUTH_NOT = 1 // 未认证
const val STATUS_AUTH_FINISH = 2 // 已认证
// 审核状态
const val STATUS_AUDIT_UNDER = 10 // 审核中
const val STATUS_AUDIT_PASS = 20 // 审核通过
const val STATUS_AUDIT_REJECT = 30 // 审核失败
// 商户类型
const val ITEM_INDIVIDUAL_BUSINESSES = "个体工商户"
const val ITEM_COMMON_ENTERPRISE = "普通企业"
const val TYPE_INDIVIDUAL_BUSINESS = 1
const val TYPE_COMMON_ENTERPRISE = 2
// 生活号类型
const val TYPE_LIFE_ACCOUNT_PERSONAL = 1 // 个人生活号
const val TYPE_LIFE_ACCOUNT_ENTERPRISE = 2 // 企业生活号
// 身份证、营业执照上传方式
const val ITEM_TAKE_PHOTO = "拍照"
const val ITEM_OPEN_ALBUM = "相册"
// 调用系统相机、打开系统相册 requestCode
const val REQUEST_CODE_OPEN_ALBUM = 101
const val REQUEST_CODE_OPEN_CAMERA = 102
// 调用旷视FaceID进行身份证采集 requestCode
const val REQUEST_CODE_ID_CARD_CAPTURE = 103
// 身份证人像面、身份证国徽面、营业执照待上传临时存储path,营业执照相机拍照临时存储path
const val FILE_PATH_ID_CARD_PORTRAIT_FACE = "/ocr/id_card/portrait_face.jpg"
const val FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE = "/ocr/id_card/national_emblem_face.jpg"
const val FILE_PATH_BUSINESS_LICENSE_CAMERA = "/ocr/business_license_camera.jpg"
const val FILE_PATH_BUSINESS_LICENSE = "/ocr/business_license.jpg"
const val FILE_PATH_ALIVE_DETECT_VERIFY_DATA = "/alive_detect/verify"
// 身份证人像面、身份证国徽面标识
const val ID_CARD_PORTRAIT_FACE = 1
const val ID_CARD_NATIONAL_EMBLEM_FACE = 2
// 活体验证流程
const val TYPE_MEG_LIVE = "meglive" // 动作活体
const val TYPE_STILL = "still" // 静默活体
const val TYPE_FLASH = "flash" // 炫彩活体,通过打光进行活体验证,炫彩活体相较于静默活体安全性更高,但通过率会略有降低
const val TYPE_RAW_IMAGE = "raw_image" // 不进行活体验证,仅使用上传的图片进行后续的比对
// 服务端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后台
// 服务端标识
const val ALIVE_DETECT_SUCCESS = 1 // 活体检测成功
const val ALIVE_DETECT_FAIL = 2 // 活体检测未检测或失败
}
\ No newline at end of file
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 STATUS_AUTH_NOT = 1 // 未认证
const val STATUS_AUTH_FINISH = 2 // 已认证
// 审核状态
const val STATUS_AUDIT_UNDER = 10 // 审核中
const val STATUS_AUDIT_PASS = 20 // 审核通过
const val STATUS_AUDIT_REJECT = 30 // 审核失败
// 商户类型
const val ITEM_INDIVIDUAL_BUSINESSES = "个体工商户"
const val ITEM_COMMON_ENTERPRISE = "普通企业"
const val TYPE_INDIVIDUAL_BUSINESS = 1
const val TYPE_COMMON_ENTERPRISE = 2
// 生活号类型
const val TYPE_LIFE_ACCOUNT_PERSONAL = 1 // 个人生活号
const val TYPE_LIFE_ACCOUNT_ENTERPRISE = 2 // 企业生活号
// 生活号Tag
const val LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH = 1 // 普通企业认证
const val LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH = 2 // 个体工商户认证
const val LIFE_ACCOUNT_TAG_PERSONAL_AUTH = 3 // 个人认证
const val LIFE_ACCOUNT_TAG_NOT_AUTH = 4 // 未认证
const val LIFE_ACCOUNT_TAG_AUDIT_UNDER = 5 // 审核中
const val LIFE_ACCOUNT_TAG_AUTH_REJECT = 6 // 认证驳回
// 身份证、营业执照上传方式
const val ITEM_TAKE_PHOTO = "拍照"
const val ITEM_OPEN_ALBUM = "相册"
// 调用系统相机、打开系统相册 requestCode
const val REQUEST_CODE_OPEN_ALBUM = 101
const val REQUEST_CODE_OPEN_CAMERA = 102
// 调用旷视FaceID进行身份证采集 requestCode
const val REQUEST_CODE_ID_CARD_CAPTURE = 103
// 身份证人像面、身份证国徽面、营业执照待上传临时存储path,营业执照相机拍照临时存储path
const val FILE_PATH_ID_CARD_PORTRAIT_FACE = "/ocr/id_card/portrait_face.jpg"
const val FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE = "/ocr/id_card/national_emblem_face.jpg"
const val FILE_PATH_BUSINESS_LICENSE_CAMERA = "/ocr/business_license_camera.jpg"
const val FILE_PATH_BUSINESS_LICENSE = "/ocr/business_license.jpg"
const val FILE_PATH_ALIVE_DETECT_VERIFY_DATA = "/alive_detect/verify"
// 身份证人像面、身份证国徽面标识
const val ID_CARD_PORTRAIT_FACE = 1
const val ID_CARD_NATIONAL_EMBLEM_FACE = 2
// 活体验证流程
const val TYPE_MEG_LIVE = "meglive" // 动作活体
const val TYPE_STILL = "still" // 静默活体
const val TYPE_FLASH = "flash" // 炫彩活体,通过打光进行活体验证,炫彩活体相较于静默活体安全性更高,但通过率会略有降低
const val TYPE_RAW_IMAGE = "raw_image" // 不进行活体验证,仅使用上传的图片进行后续的比对
// 服务端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后台
// 服务端标识
const val ALIVE_DETECT_SUCCESS = 1 // 活体检测成功
const val ALIVE_DETECT_FAIL = 2 // 活体检测未检测或失败
}
......@@ -3,14 +3,22 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
import java.io.Serializable
class LifeAccountItemBean(var response: Response) {
data class Response(
var create_time: String,
var enterprise_audit_status: Int,
var life_account_auth_status: Int,
var life_account_id: String,
var life_account_name: String,
var life_account_status: Int,
var life_account_type: Int,
var role_type: Int
) : Serializable
}
\ No newline at end of file
data class Response(
val create_time: String,
val enterprise_audit_status: Int,
val life_account_auth_status: Int,
val life_account_id: String,
val life_account_name: String,
val life_account_status: Int,
val life_account_type: Int,
val role_type: Int,
val tag: Tag
) : Serializable
data class Tag(
val tag_key: Int,
val tag_text: String
) : Serializable
}
......@@ -23,6 +23,13 @@ import com.yidian.xpage.XPageManager
class LifeAccountAuthActivity : BaseActivity<ActivityLifeAccountAuthBinding>(),
View.OnClickListener, IAuthAuthenticationCallback, IAuthMerchantCheckCallback {
companion object {
// 从哪个页面跳转
const val EXTRA_PAGE_FROM = "from"
const val FROM_AUTH = "auth"
}
override fun createViewBinding(): ActivityLifeAccountAuthBinding {
return ActivityLifeAccountAuthBinding.inflate(layoutInflater)
}
......@@ -53,8 +60,8 @@ class LifeAccountAuthActivity : BaseActivity<ActivityLifeAccountAuthBinding>(),
)
if (intent.getSerializableExtra(XRouterPathConstants.ParamsKey) != null) {
val paramsMap = intent.getSerializableExtra(XRouterPathConstants.ParamsKey) as HashMap<*, *>
val fromTag = paramsMap["from"] as String
if (fromTag == "auth") {
val fromTag = paramsMap[EXTRA_PAGE_FROM] as String
if (fromTag == FROM_AUTH) {
// 如果由商户基本信息跳转至此页面 则此页面可返回
viewBind.bvTopBar.setBackVisibility(true)
}
......
......@@ -2,11 +2,14 @@ package com.yidian.shenghuoquan.newscontent.ui.center
import android.os.Bundle
import android.view.View
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.MerchantServiceFunctionAdapter
import com.yidian.shenghuoquan.newscontent.adapter.MerchantServiceGroupAdapter
import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityMerchantCenterBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService
......@@ -18,7 +21,9 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthMerchantCheckBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.GetLifeAccountInfoByIdBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.LifeAccountItemBean
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountAuthActivity
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActivity
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.ui.dialog.MerchantCenterBottomHintDialog
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
......@@ -54,6 +59,7 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
* 功能-页面表
*/
private val functionPageMap by lazy { HashMap<Int, String?>() }
private val functionPermissionList by lazy { ArrayList<Int>() }
override fun createViewBinding(): ActivityMerchantCenterBinding {
return ActivityMerchantCenterBinding.inflate(layoutInflater)
......@@ -139,8 +145,68 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
XRouterPathConstants.SYSTEM_SETTING
}
/**
* 对应生活号权限下的功能集
* @param tagKey 生活号认证类型/状态
*/
private fun generateFunctionPermissionMap(data: GetConfigListBean.Response, tagKey: Int) {
when (tagKey) {
Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> {
// 普通企业认证
// 所有服务都可用
functionPermissionList.add(data.merchant_manager_center.items[0].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[2].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> {
// 个体工商户认证
// 所有服务都可用
functionPermissionList.add(data.merchant_manager_center.items[0].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[1].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[0].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[2].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[3].function_id)
}
Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> {
// 个人认证
// 我要发布-招聘 其他服务-职位管理
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
}
Constant.LIFE_ACCOUNT_TAG_NOT_AUTH -> {
// 未认证
// 我要发布-招聘 其他服务-职位管理
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
}
Constant.LIFE_ACCOUNT_TAG_AUDIT_UNDER -> {
// 审核中
// 我要发布-招聘 其他服务-职位管理
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
}
Constant.LIFE_ACCOUNT_TAG_AUTH_REJECT -> {
// 认证驳回
// 我要发布-招聘 其他服务-职位管理
functionPermissionList.add(data.merchant_manager_center.items[0].functions[1].function_id)
functionPermissionList.add(data.merchant_manager_center.items[2].functions[1].function_id)
}
}
}
override fun getConfigListSuccess(result: GetConfigListBean.Response?) {
result?.let { generateFunctionPageMap(it) }
result?.let {
generateFunctionPageMap(it)
generateFunctionPermissionMap(it, curLifeAccount.tag.tag_key)
}
viewBind.rvServiceGroup.layoutManager =
LinearLayoutManager(this)
viewBind.rvServiceGroup.addItemDecoration(MerchantServiceGroupAdapter.MerchantServiceGroupItemDecorator())
......@@ -232,8 +298,82 @@ class MerchantCenterActivity : BaseActivity<ActivityMerchantCenterBinding>(),
}
override fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function) {
// 选择某一个功能 跳转指定页面
functionPageMap[data.function_id]?.let { XPageManager.push(it, null) }
// 选择某一个功能
// 若在当前权限功能集中则跳转指定页
if (functionPermissionList.contains(data.function_id)) {
functionPageMap[data.function_id]?.let { XPageManager.push(it, null) }
} else {
// 若当前功能无权限 根据生活号类型做弹窗提示
when (curLifeAccount.tag.tag_key) {
Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> {
// 个人认证 提示认证升级
HintDialog(
this,
resources.getString(R.string.upgrade_to_use_more_tool),
arrayListOf(HintOptionBean(resources.getString(R.string.close)), HintOptionBean(resources.getString(R.string.goto_upgrade))),
object : HintDialog.OnHintOptionCallback {
override fun onLeftOption() {
}
override fun onRightOption() {
// 认证升级
}
}).setRightBtnColor(ContextCompat.getColor(this, R.color.color_FF1852F1)).show()
}
Constant.LIFE_ACCOUNT_TAG_NOT_AUTH -> {
// 未认证 提示认证
HintDialog(
this,
resources.getString(R.string.auth_to_use_more_tool),
arrayListOf(HintOptionBean(resources.getString(R.string.close)), HintOptionBean(resources.getString(R.string.goto_auth))),
object : HintDialog.OnHintOptionCallback {
override fun onLeftOption() {
}
override fun onRightOption() {
// 进行认证
XPageManager.push(
XRouterPathConstants.LIFE_ACCOUNT_AUTH,
hashMapOf(Pair(LifeAccountAuthActivity.EXTRA_PAGE_FROM, LifeAccountAuthActivity.FROM_AUTH))
)
}
}).setRightBtnColor(ContextCompat.getColor(this, R.color.color_FF1852F1)).show()
}
Constant.LIFE_ACCOUNT_TAG_AUDIT_UNDER -> {
// 审核中 提示加急审核
HintDialog(
this,
resources.getString(R.string.audit_urgent),
arrayListOf(HintOptionBean(resources.getString(R.string.close))), null
).setRightBtnColor(ContextCompat.getColor(this, R.color.color_FF1852F1)).show()
}
Constant.LIFE_ACCOUNT_TAG_AUTH_REJECT -> {
// 审核驳回 提示修改认证
HintDialog(
this,
resources.getString(R.string.auth_apply_reject),
arrayListOf(HintOptionBean(resources.getString(R.string.close)), HintOptionBean(resources.getString(R.string.modify_auth))),
object : HintDialog.OnHintOptionCallback {
override fun onLeftOption() {
}
override fun onRightOption() {
// 认证修改 请求商户认证检查
ApiService.authMerchantCheck(
this@MerchantCenterActivity,
hashMapOf(Pair(LifeAccountEnterpriseAuthActivity.EXTRA_LIFE_ACCOUNT_ID, curLifeAccount.life_account_id))
)
}
}).setRightBtnColor(ContextCompat.getColor(this, R.color.color_FFFF3A3A)).show()
}
}
}
}
override fun onDoAction() {
......
......@@ -96,15 +96,17 @@ class HintDialog(
/***
* 设置左侧按钮颜色
*/
fun setLeftBtnColor(@ColorInt color: Int) {
fun setLeftBtnColor(@ColorInt color: Int): HintDialog {
leftBtnColor = color
return this
}
/***
* 设置右侧按钮颜色
*/
fun setRightBtnColor(@ColorInt color: Int) {
fun setRightBtnColor(@ColorInt color: Int): HintDialog {
rightBtnColor = color
return this
}
}
......@@ -163,5 +163,12 @@
<string name="audit_reject">审核驳回</string>
<string name="audit_pass">已开通</string>
<string name="legal_person_info">法人信息</string>
<string name="upgrade_to_use_more_tool">升级后才能使用更多平台工具</string>
<string name="auth_to_use_more_tool">认证后才能使用更多平台工具</string>
<string name="audit_urgent">正在加急审核认证</string>
<string name="close">关闭</string>
<string name="goto_auth">去认证</string>
<string name="goto_upgrade">去升级</string>
<string name="goto_modify">去修改</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