fix(bridge): 商品搜索结果按库存优先排序
This commit is contained in:
+9
-3
@@ -421,7 +421,8 @@ function createTools(cfg, deps = {}) {
|
||||
const cmd = {
|
||||
keyword: rpcQuery,
|
||||
page: 1,
|
||||
pageSize: limit,
|
||||
// 多取候选,下面按库存排序后再截断到 limit,避免缺货商品占满前几条
|
||||
pageSize: limit * 4,
|
||||
languageId: profile.languageId,
|
||||
tenantId: profile.tenantId,
|
||||
currencyCode: profile.currencyCode || '',
|
||||
@@ -439,7 +440,6 @@ function createTools(cfg, deps = {}) {
|
||||
const list = Array.isArray(paging) ? paging : (paging.data || paging.list || []);
|
||||
total = result.total != null ? result.total : (paging.total != null ? paging.total : null);
|
||||
items = (Array.isArray(list) ? list : [])
|
||||
.slice(0, limit)
|
||||
.map((p) => {
|
||||
const name = p.spuName || p.name || p.title || null;
|
||||
const sku = p.sku || p.model || (Array.isArray(p.skus) && p.skus[0] ? p.skus[0].productId : null);
|
||||
@@ -458,7 +458,13 @@ function createTools(cfg, deps = {}) {
|
||||
mark_price: p.markPriceWithCurrency || null,
|
||||
};
|
||||
})
|
||||
.filter((p) => p.name);
|
||||
.filter((p) => p.name)
|
||||
// 有库存优先:stock>0 → 0,未知 → 1,缺货 → 2;sort 稳定,保留 RPC 原顺序
|
||||
.sort((a, b) => {
|
||||
const rank = (p) => (p.stock > 0 ? 0 : p.stock === null ? 1 : 2);
|
||||
return rank(a) - rank(b);
|
||||
})
|
||||
.slice(0, limit);
|
||||
} catch (err) {
|
||||
catalogError = err.message;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user