优化领取页角色绑定校验
This commit is contained in:
@@ -248,6 +248,16 @@ export function mapClaimKuaishouCloudFulfillment(task: TaskRow, order: OrderRow)
|
||||
const dispatch = source.dispatch && typeof source.dispatch === 'object' ? source.dispatch : {}
|
||||
const returnNumber = source.returnNumber && typeof source.returnNumber === 'object' ? source.returnNumber : {}
|
||||
const consume = source.consume && typeof source.consume === 'object' ? source.consume : {}
|
||||
const roleName = String(role.name || binding.roleName || '').trim()
|
||||
const roleId = String(role.rid || binding.roleId || '').trim()
|
||||
const defaultRoleName = String(role.defaultName || role.defaultRoleName || '').trim()
|
||||
const defaultRoleId = String(role.defaultRid || role.defaultRoleId || '').trim()
|
||||
const isDefaultRole =
|
||||
Boolean(roleName || roleId) &&
|
||||
isSameClaimKuaishouCloudRole(
|
||||
{ name: roleName, rid: roleId },
|
||||
{ name: defaultRoleName, rid: defaultRoleId },
|
||||
)
|
||||
|
||||
return {
|
||||
flowType: 'kuaishou_cloud',
|
||||
@@ -288,10 +298,16 @@ export function mapClaimKuaishouCloudFulfillment(task: TaskRow, order: OrderRow)
|
||||
},
|
||||
role: {
|
||||
status: String(role.status || 'pending').trim() || 'pending',
|
||||
name: String(role.name || binding.roleName || '').trim(),
|
||||
rid: String(role.rid || binding.roleId || '').trim(),
|
||||
name: roleName,
|
||||
rid: roleId,
|
||||
refreshedAt: role.refreshedAt || null,
|
||||
errorMessage: String(role.errorMessage || '').trim(),
|
||||
defaultName: defaultRoleName,
|
||||
defaultRid: defaultRoleId,
|
||||
defaultCapturedAt: role.defaultCapturedAt || null,
|
||||
defaultCaptureStatus: String(role.defaultCaptureStatus || '').trim(),
|
||||
defaultErrorMessage: String(role.defaultErrorMessage || '').trim(),
|
||||
isDefaultRole,
|
||||
},
|
||||
purchase: {
|
||||
autoBuyEnabled: purchase.autoBuyEnabled !== false,
|
||||
@@ -351,6 +367,28 @@ function isPlainObject(value: unknown): value is JsonObject {
|
||||
return Object.prototype.toString.call(value) === '[object Object]'
|
||||
}
|
||||
|
||||
function isSameClaimKuaishouCloudRole(
|
||||
left: { name?: unknown; rid?: unknown },
|
||||
right: { name?: unknown; rid?: unknown },
|
||||
) {
|
||||
const leftRid = String(left.rid || '').trim()
|
||||
const rightRid = String(right.rid || '').trim()
|
||||
if (leftRid && rightRid) {
|
||||
return leftRid === rightRid
|
||||
}
|
||||
|
||||
const leftName = normalizeClaimRoleNameForCompare(left.name)
|
||||
const rightName = normalizeClaimRoleNameForCompare(right.name)
|
||||
return Boolean(leftName && rightName && leftName === rightName)
|
||||
}
|
||||
|
||||
function normalizeClaimRoleNameForCompare(value: unknown) {
|
||||
return String(value || '')
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.replace(/\s+/g, '')
|
||||
}
|
||||
|
||||
function normalizeClaimDeliveryItems(value: unknown, binding: JsonObject) {
|
||||
const rawItems = Array.isArray(value) ? value : []
|
||||
const items = rawItems
|
||||
|
||||
Reference in New Issue
Block a user