feat: 增加蝦皮店铺图片筛选 (#150)

This commit is contained in:
chengma
2026-08-11 12:04:38 +08:00
parent 2a3224b86d
commit c39f5a7912
9 changed files with 212 additions and 11 deletions
+18 -2
View File
@@ -119,7 +119,7 @@ type ShopeeProductRow struct {
CollectMsg sql.NullString
}
// ShopeeFilter 是蝦皮商品列表页支持的筛选条件,两项都可以为空。
// ShopeeFilter 是蝦皮商品列表页支持的筛选条件,四项都可以为空。
//
// Status 取值见 §「状态筛选的四个取值」(工单 #43):
//
@@ -133,9 +133,11 @@ type ShopeeProductRow struct {
type ShopeeFilter struct {
Keyword string
Status string
Shop string // has / missing / 空(全部)
Image string // has / missing / 空(全部)
}
// shopeeFilterClause 把关键字和状态筛选拼成 WHERE 子句,供 ListShopeeProducts
// shopeeFilterClause 把关键字、状态、店铺和图片筛选拼成 WHERE 子句,供 ListShopeeProducts
// 和 CountShopeeProductsFiltered 共用——两处筛选逻辑必须完全一致,
// 否则底部统计会跟表格对不上(#19 踩过一次,见工单 #43)。
//
@@ -162,6 +164,20 @@ func shopeeFilterClause(filter ShopeeFilter) (string, []any) {
clauses = append(clauses, `(sp.pdd_goods_url IS NOT NULL AND sp.pdd_goods_url <> '')`)
}
switch filter.Shop {
case "has":
clauses = append(clauses, `(sp.shopee_shop_name IS NOT NULL AND TRIM(sp.shopee_shop_name) <> '')`)
case "missing":
clauses = append(clauses, `(sp.shopee_shop_name IS NULL OR TRIM(sp.shopee_shop_name) = '')`)
}
switch filter.Image {
case "has":
clauses = append(clauses, `(sp.image_url IS NOT NULL AND TRIM(sp.image_url) <> '')`)
case "missing":
clauses = append(clauses, `(sp.image_url IS NULL OR TRIM(sp.image_url) = '')`)
}
if len(clauses) == 0 {
return "", args
}