152 lines
5.6 KiB
JavaScript
152 lines
5.6 KiB
JavaScript
// @ts-check
|
|
|
|
export function maskSecret(value) {
|
|
const normalized = String(value || '').trim()
|
|
if (!normalized) {
|
|
return ''
|
|
}
|
|
|
|
if (normalized.length <= 10) {
|
|
return `${normalized.slice(0, 2)}****${normalized.slice(-2)}`
|
|
}
|
|
|
|
return `${normalized.slice(0, 6)}****${normalized.slice(-6)}`
|
|
}
|
|
|
|
export function maskPhone(value) {
|
|
const normalized = String(value || '').trim()
|
|
if (!normalized) {
|
|
return ''
|
|
}
|
|
|
|
if (normalized.length < 7) {
|
|
return normalized
|
|
}
|
|
|
|
return `${normalized.slice(0, 3)}****${normalized.slice(-4)}`
|
|
}
|
|
|
|
export function mapAdminKhhaoSourceConfig(config = {}) {
|
|
return {
|
|
enabled: config.enabled !== false,
|
|
baseUrl: String(config.baseUrl || '').trim(),
|
|
username: String(config.username || '').trim(),
|
|
password: String(config.password || '').trim(),
|
|
maxCaptchaAttempts: Number(config.maxCaptchaAttempts || 3) || 3,
|
|
autoSync: {
|
|
enabled: config.autoSync?.enabled === true,
|
|
intervalMinutes: Number(config.autoSync?.intervalMinutes || 3) || 3,
|
|
pages: Number(config.autoSync?.pages || 2) || 2,
|
|
pageSize: Number(config.autoSync?.pageSize || 20) || 20,
|
|
},
|
|
}
|
|
}
|
|
|
|
export function mapAdminKhhaoSyncState(syncState = {}) {
|
|
return {
|
|
syncFromCreatedAt: String(syncState.syncFromCreatedAt || '').trim(),
|
|
lastRunStartedAt: String(syncState.lastRunStartedAt || '').trim(),
|
|
lastRunFinishedAt: String(syncState.lastRunFinishedAt || '').trim(),
|
|
lastRunStatus: String(syncState.lastRunStatus || '').trim(),
|
|
lastErrorMessage: String(syncState.lastErrorMessage || '').trim(),
|
|
fetchedCount: Number(syncState.fetchedCount || 0),
|
|
syncedCount: Number(syncState.syncedCount || 0),
|
|
ignoredCount: Number(syncState.ignoredCount || 0),
|
|
watchMode: String(syncState.watchMode || 'normal').trim() || 'normal',
|
|
watchOrders: Array.isArray(syncState.watchOrders)
|
|
? syncState.watchOrders.map((item) => ({
|
|
platformOrderId: String(item?.platformOrderId || '').trim(),
|
|
shopId: String(item?.shopId || '').trim(),
|
|
shopName: String(item?.shopName || '').trim(),
|
|
itemTitle: String(item?.itemTitle || '').trim(),
|
|
payStatus: String(item?.payStatus || '').trim(),
|
|
detectedAt: String(item?.detectedAt || '').trim(),
|
|
lastSeenAt: String(item?.lastSeenAt || '').trim(),
|
|
}))
|
|
: [],
|
|
}
|
|
}
|
|
|
|
export function mapAdminKuaishouEticketShopItem(item = {}) {
|
|
return {
|
|
shopId: String(item.shopId || '').trim(),
|
|
kshopName: String(item.kshopName || '').trim(),
|
|
cookie: String(item.cookie || '').trim(),
|
|
cookieMasked: maskSecret(item.cookie),
|
|
hasCookie: Boolean(String(item.cookie || '').trim()),
|
|
userAvatar: String(item.userAvatar || '').trim(),
|
|
enabled: item.enabled !== false,
|
|
}
|
|
}
|
|
|
|
export function mapAdminKuaishouEticketSourceConfig(config = {}, shops = []) {
|
|
return {
|
|
enabled: config.enabled !== false,
|
|
baseUrl: String(config.baseUrl || '').trim(),
|
|
shops: shops.map((item) => mapAdminKuaishouEticketShopItem(item)),
|
|
}
|
|
}
|
|
|
|
export function mapAdminCloudtentaclesSourceConfig(config = {}) {
|
|
return {
|
|
enabled: config.enabled !== false,
|
|
baseUrl: String(config.baseUrl || '').trim(),
|
|
username: String(config.username || '').trim(),
|
|
password: String(config.password || '').trim(),
|
|
phone: String(config.phone || '').trim(),
|
|
deviceId: String(config.deviceId || '-').trim() || '-',
|
|
deviceType: Number(config.deviceType || 0),
|
|
}
|
|
}
|
|
|
|
export function mapAdminCloudtentaclesSession(session = {}) {
|
|
return {
|
|
token: String(session.token || '').trim(),
|
|
tokenMasked: maskSecret(session.token),
|
|
baseUrl: String(session.baseUrl || '').trim(),
|
|
username: String(session.username || '').trim(),
|
|
phoneMasked: maskPhone(session.phone),
|
|
loggedInAt: String(session.loggedInAt || '').trim(),
|
|
deviceId: String(session.deviceId || '-').trim() || '-',
|
|
deviceType: Number(session.deviceType || 0),
|
|
hasToken: Boolean(String(session.token || '').trim()),
|
|
}
|
|
}
|
|
|
|
export function mapAdminKuaishouCloudFulfillmentItem(item = {}) {
|
|
return {
|
|
id: String(item.id || '').trim(),
|
|
enabled: item.enabled !== false,
|
|
priority: Number(item.priority || 100) || 100,
|
|
provider: String(item.provider || 'khhao').trim() || 'khhao',
|
|
platform: String(item.platform || 'kuaishou').trim() || 'kuaishou',
|
|
shopId: String(item.shopId || '').trim(),
|
|
internalSkuCode: String(item.internalSkuCode || '').trim(),
|
|
internalSkuName: String(item.internalSkuName || '').trim(),
|
|
externalSkuCode: String(item.externalSkuCode || '').trim(),
|
|
externalItemId: String(item.externalItemId || '').trim(),
|
|
externalSkuName: String(item.externalSkuName || '').trim(),
|
|
resolvedSkuName: String(item.resolvedSkuName || '').trim(),
|
|
cloudSourceKey: String(item.cloudSourceKey || 'default').trim() || 'default',
|
|
cloudSkuId: Number(item.cloudSkuId || 0) || 0,
|
|
cloudSkuName: String(item.cloudSkuName || '').trim(),
|
|
vnKey: String(item.vnKey || '').trim(),
|
|
autoBuyEnabled: item.autoBuyEnabled !== false,
|
|
minAssetReserve: Number(item.minAssetReserve || 0) || 0,
|
|
autoReturnNumberAfterDispatch: item.autoReturnNumberAfterDispatch === true,
|
|
autoConsumeAfterDispatch: item.autoConsumeAfterDispatch === true,
|
|
kuaishouConsumeShopId: String(item.kuaishouConsumeShopId || '').trim(),
|
|
kuaishouConsumeShopName: String(item.kuaishouConsumeShopName || '').trim(),
|
|
notes: String(item.notes || '').trim(),
|
|
}
|
|
}
|
|
|
|
export function mapAdminKuaishouCloudFulfillmentSource(config = {}) {
|
|
return {
|
|
enabled: config.enabled !== false,
|
|
items: (Array.isArray(config.items) ? config.items : []).map((item) =>
|
|
mapAdminKuaishouCloudFulfillmentItem(item),
|
|
),
|
|
}
|
|
}
|