- F1 一个资产同时只能有一个有效手机号关联,他号绑定返回 1192(不含号码),同号幂等 - 登录 need_bind_phone 改看资产是否已有有效关联,新增 asset_phone_bound、asset_phone_is_own;H5 绑定按客户/资产两侧状态分别写入 - 客户换号不再迁移资产关联 - M12 换货新资产有有效手机号关联即拒绝,号码只在 data.phone;换货完成清空旧资产客户绑定并失效旧资产关联(exchange_completed),均不迁移 - OpenSpec Change enforce-single-phone-per-asset:11/16,H5 短信与换货端到端验证待测试部署后完成
149 lines
6.8 KiB
Go
149 lines
6.8 KiB
Go
package constants
|
||
|
||
import "time"
|
||
|
||
// 手机号—资产关联的状态取值。
|
||
const (
|
||
// PhoneAssetAssociationStatusInvalid 表示关联已失效,不再占用十项额度。
|
||
PhoneAssetAssociationStatusInvalid = 0
|
||
// PhoneAssetAssociationStatusValid 表示关联当前有效。
|
||
PhoneAssetAssociationStatusValid = 1
|
||
)
|
||
|
||
// 手机号—资产关联的建立来源;关联只能由 H5 短信验证建立,后台无创建或补录入口。
|
||
const (
|
||
// PhoneAssetAssociationSourceH5SMSVerification 表示关联由 H5 短信验证码校验通过后建立。
|
||
PhoneAssetAssociationSourceH5SMSVerification = "h5_sms_verification"
|
||
)
|
||
|
||
// 手机号—资产关联的失效方式,用于审计与事后核对解除入口。
|
||
const (
|
||
// PhoneAssetAssociationInvalidateMethodBackendSingle 表示后台单项解除。
|
||
PhoneAssetAssociationInvalidateMethodBackendSingle = "backend_single"
|
||
// PhoneAssetAssociationInvalidateMethodBackendBatch 表示后台勾选批量解除。
|
||
PhoneAssetAssociationInvalidateMethodBackendBatch = "backend_batch"
|
||
// PhoneAssetAssociationInvalidateMethodCSVImport 表示 CSV 导入解除。
|
||
PhoneAssetAssociationInvalidateMethodCSVImport = "csv_import"
|
||
// PhoneAssetAssociationInvalidateMethodExchangeCompleted 表示换货完成时随旧资产一并失效。
|
||
PhoneAssetAssociationInvalidateMethodExchangeCompleted = "exchange_completed"
|
||
// PhoneAssetAssociationExchangeCompletedReason 换货完成失效旧资产关联的原因。
|
||
PhoneAssetAssociationExchangeCompletedReason = "换货完成"
|
||
)
|
||
|
||
// 手机号—资产关联的业务口径常量。
|
||
const (
|
||
// PhoneAssetAssociationMaxValidPerPhone 表示单手机号可同时有效的关联资产项数上限。
|
||
PhoneAssetAssociationMaxValidPerPhone = 10
|
||
// PhoneAssetAssociationLimitMessage 表示超过十项上限时的统一失败文案。
|
||
PhoneAssetAssociationLimitMessage = "该手机号最多关联10项有效资产"
|
||
)
|
||
|
||
// 手机号—资产关联解绑入口的角色说明。
|
||
const (
|
||
// PhoneAssetAssociationAccessDescription 表示关联查看与解除入口的角色说明。
|
||
PhoneAssetAssociationAccessDescription = "仅超级管理员和平台账号可访问,代理与企业账号返回 403。"
|
||
)
|
||
|
||
// 手机号—资产关联解除的入参口径。
|
||
const (
|
||
// PhoneAssetAssociationUnbindReasonMaxLength 表示解除原因的最大长度。
|
||
PhoneAssetAssociationUnbindReasonMaxLength = 500
|
||
)
|
||
|
||
// 手机号—资产关联 CSV 解绑导入的场景常量。
|
||
const (
|
||
// StoragePurposePhoneAssetUnbindImport 表示手机号资产解绑 CSV 导入上传用途。
|
||
StoragePurposePhoneAssetUnbindImport = "phone_unbind_import"
|
||
// PhoneAssetUnbindImportStoragePrefix 表示解绑导入文件的对象存储目录。
|
||
PhoneAssetUnbindImportStoragePrefix = "phone-unbind-imports"
|
||
// PhoneAssetUnbindImportTaskTimeout 表示单个解绑导入任务的最长执行时间。
|
||
PhoneAssetUnbindImportTaskTimeout = 2 * time.Hour
|
||
// PhoneAssetUnbindImportProgressBatchSize 表示导入按批更新进度计数的批大小。
|
||
PhoneAssetUnbindImportProgressBatchSize = 100
|
||
// PhoneAssetUnbindImportItemStatusSuccess 表示导入单行已成功解除关联。
|
||
PhoneAssetUnbindImportItemStatusSuccess = 3
|
||
// PhoneAssetUnbindImportItemStatusFailed 表示导入单行校验或执行失败并保留原状。
|
||
PhoneAssetUnbindImportItemStatusFailed = 4
|
||
)
|
||
|
||
// PhoneAssetUnbindImportColumns 表示导入文件首行必须完全一致的固定列序;解绑原因由任务级必填字段提供。
|
||
var PhoneAssetUnbindImportColumns = []string{"资产标识", "备注"}
|
||
|
||
// 手机号—资产关联解绑导入的任务级失败原因,与行级失败原因分开记录。
|
||
const (
|
||
// PhoneAssetUnbindImportErrorFileFormat 表示文件格式或表头与固定列序不符。
|
||
PhoneAssetUnbindImportErrorFileFormat = "文件格式或表头与固定列序不符"
|
||
// PhoneAssetUnbindImportErrorEncoding 表示文件既非合法 UTF-8 也无法按 GBK 解码。
|
||
PhoneAssetUnbindImportErrorEncoding = "文件编码无法按 UTF-8 或 GBK 解码"
|
||
// PhoneAssetUnbindImportErrorNoDataRow 表示文件没有数据行。
|
||
PhoneAssetUnbindImportErrorNoDataRow = "文件没有数据行"
|
||
)
|
||
|
||
// 手机号—资产关联解绑导入的行级失败原因,取值集合固定。
|
||
const (
|
||
// PhoneAssetUnbindImportRowErrorIdentifier 表示资产标识为空。
|
||
PhoneAssetUnbindImportRowErrorIdentifier = "资产标识不能为空"
|
||
// PhoneAssetUnbindImportRowErrorAssetMissing 表示资产标识无法定位到资产。
|
||
PhoneAssetUnbindImportRowErrorAssetMissing = "资产标识不存在或已删除"
|
||
// PhoneAssetUnbindImportRowErrorNoAssociation 表示该资产已无有效关联。
|
||
PhoneAssetUnbindImportRowErrorNoAssociation = "该资产已无有效关联手机号"
|
||
// PhoneAssetUnbindImportRowErrorFormat 表示该行列数与固定列序不一致。
|
||
PhoneAssetUnbindImportRowErrorFormat = "行格式错误"
|
||
// PhoneAssetUnbindImportRowErrorRemarkTooLong 表示备注超过长度上限。
|
||
PhoneAssetUnbindImportRowErrorRemarkTooLong = "备注超过500字符"
|
||
)
|
||
|
||
// 手机号—资产关联解绑导入的备注长度上限。
|
||
const (
|
||
// PhoneAssetUnbindImportRemarkMaxLength 表示行内备注的最大长度。
|
||
PhoneAssetUnbindImportRemarkMaxLength = 500
|
||
)
|
||
|
||
// 手机号—资产关联的三态统一失败文案。
|
||
// 越权、资产不存在与已无有效关系三种情况必须返回同一文案,避免形成可枚举差异(ENG-AUTHZ-001)。
|
||
// 本常量只供新增用例使用;既有内联字面量按 As-Is 保留,不在本 Change 统一。
|
||
const (
|
||
// PhoneAssetAssociationDeniedMessage 表示越权、资产不存在或已无有效关系时的统一失败文案。
|
||
PhoneAssetAssociationDeniedMessage = "无权限操作该资源或资源不存在"
|
||
)
|
||
|
||
// GetPhoneAssetAssociationImportItemStatusName 返回解绑导入行状态中文名称。
|
||
func GetPhoneAssetAssociationImportItemStatusName(status int) string {
|
||
switch status {
|
||
case PhoneAssetUnbindImportItemStatusSuccess:
|
||
return "成功"
|
||
case PhoneAssetUnbindImportItemStatusFailed:
|
||
return "失败"
|
||
default:
|
||
return "未知"
|
||
}
|
||
}
|
||
|
||
// GetPhoneAssetAssociationStatusName 返回关联状态中文名称。
|
||
func GetPhoneAssetAssociationStatusName(status int) string {
|
||
switch status {
|
||
case PhoneAssetAssociationStatusValid:
|
||
return "有效"
|
||
case PhoneAssetAssociationStatusInvalid:
|
||
return "已失效"
|
||
default:
|
||
return "未知"
|
||
}
|
||
}
|
||
|
||
// PhoneAssetAssociationInvalidateMethodName 返回失效方式中文名称。
|
||
func PhoneAssetAssociationInvalidateMethodName(method string) string {
|
||
switch method {
|
||
case PhoneAssetAssociationInvalidateMethodBackendSingle:
|
||
return "后台单项解除"
|
||
case PhoneAssetAssociationInvalidateMethodBackendBatch:
|
||
return "后台批量解除"
|
||
case PhoneAssetAssociationInvalidateMethodCSVImport:
|
||
return "CSV导入解除"
|
||
case PhoneAssetAssociationInvalidateMethodExchangeCompleted:
|
||
return "换货完成失效"
|
||
default:
|
||
return "未知"
|
||
}
|
||
}
|