diff --git a/src/views/system/giftcoupon/index.vue b/src/views/system/giftcoupon/index.vue index 4522e29..3eeabfc 100644 --- a/src/views/system/giftcoupon/index.vue +++ b/src/views/system/giftcoupon/index.vue @@ -551,31 +551,64 @@ export default { } // 根据提取结果设置skuId或materialUrl - // 参考JD项目:idOrUrl = skuId != null && !skuId.trim().isEmpty() ? skuId : materialUrl + // 参考京东API文档:skuMaterialId支持SKU ID、商品落地页地址(如https://item.jd.com/11144230.html)或materialUrl // 优先使用查询商品信息时获取的数据 if (this.createForm.queryResult) { - // 如果查询过商品信息,优先使用查询结果中的spuid(SKU ID)或materialUrl + // 如果查询过商品信息,根据商品类型选择优先使用materialUrl或spuid const queryResult = this.createForm.queryResult + const isPop = this.createForm.owner === 'pop' - // 1. 优先使用spuid(纯数字SKU ID)- 这是最准确的 - if (queryResult.spuid && /^\d+$/.test(String(queryResult.spuid))) { - params.skuId = String(queryResult.spuid) - console.log('使用查询到的spuid(SKU ID):', queryResult.spuid) - } - // 2. 如果没有spuid,使用materialUrl(jingfen链接) - else if (queryResult.materialUrl) { - params.materialUrl = queryResult.materialUrl - console.log('使用查询到的materialUrl:', queryResult.materialUrl) - } - // 3. 降级:从用户输入的URL中提取SKU ID - else if (isUrl && skuId && /^\d+$/.test(skuId)) { - params.skuId = skuId - console.log('使用从URL提取的SKU ID:', skuId) - } - // 4. 最后降级:使用用户输入的原始URL(但短链可能不行) - else { - params.materialUrl = materialUrl - console.log('使用用户输入的原始URL(可能是短链,可能不工作):', materialUrl) + // POP商品:优先使用materialUrl(jingfen链接),如果没有则使用SKU ID或落地页地址 + // 自营商品:优先使用spuid(SKU ID),如果没有则使用materialUrl + if (isPop) { + // POP商品:优先使用materialUrl + if (queryResult.materialUrl) { + params.materialUrl = queryResult.materialUrl + console.log('POP商品,使用查询到的materialUrl(jingfen链接):', queryResult.materialUrl) + } else if (queryResult.spuid && /^\d+$/.test(String(queryResult.spuid))) { + // 如果没有materialUrl,使用SKU ID(京东API支持) + params.skuId = String(queryResult.spuid) + console.log('POP商品,materialUrl不可用,使用查询到的spuid(SKU ID):', queryResult.spuid) + } else { + // 降级:从用户输入的URL中提取SKU ID或使用完整URL + if (isUrl && skuId && /^\d+$/.test(skuId)) { + // 可以使用SKU ID + params.skuId = skuId + console.log('POP商品,使用从URL提取的SKU ID:', skuId) + } else if (isUrl && materialUrl.includes('item.jd.com')) { + // 商品落地页地址(https://item.jd.com/11144230.html)也可以 + params.materialUrl = materialUrl + console.log('POP商品,使用商品落地页地址:', materialUrl) + } else if (isUrl) { + params.materialUrl = materialUrl + console.log('POP商品,使用用户输入的URL:', materialUrl) + } else if (/^\d+$/.test(skuId)) { + params.skuId = skuId + console.log('POP商品,使用纯数字SKU ID:', skuId) + } + } + } else { + // 自营商品:优先使用spuid(纯数字SKU ID) + if (queryResult.spuid && /^\d+$/.test(String(queryResult.spuid))) { + params.skuId = String(queryResult.spuid) + console.log('自营商品,使用查询到的spuid(SKU ID):', queryResult.spuid) + } else if (queryResult.materialUrl) { + // 如果没有spuid,使用materialUrl + params.materialUrl = queryResult.materialUrl + console.log('自营商品,spuid不可用,使用materialUrl:', queryResult.materialUrl) + } else { + // 降级:从用户输入的URL中提取SKU ID + if (isUrl && skuId && /^\d+$/.test(skuId)) { + params.skuId = skuId + console.log('自营商品,使用从URL提取的SKU ID:', skuId) + } else if (isUrl) { + params.materialUrl = materialUrl + console.log('自营商品,使用用户输入的URL:', materialUrl) + } else if (/^\d+$/.test(skuId)) { + params.skuId = skuId + console.log('自营商品,使用纯数字SKU ID:', skuId) + } + } } } else { // 没有查询过商品信息,使用用户输入的