feat: 增加店铺规格只读对比工具 (#193)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
// compare-shop-specs 生成指定蝦皮店铺与关联 PDD 商品的只读规格对比报告。
|
||||
// 它只执行 SELECT,没有写库或 --apply 功能。
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"cmautobuy/admin/config"
|
||||
"cmautobuy/admin/repository"
|
||||
"cmautobuy/admin/service"
|
||||
)
|
||||
|
||||
func main() {
|
||||
shop := flag.String("shop", "", "要对比的蝦皮店铺名(精确匹配,必填)")
|
||||
output := flag.String("output", "", "可选:把 JSON 报告写入本机文件;不填则输出到终端")
|
||||
flag.Parse()
|
||||
if strings.TrimSpace(*shop) == "" {
|
||||
log.Fatal("必须通过 --shop 指定店铺名")
|
||||
}
|
||||
|
||||
cfg, err := config.LoadDatabase()
|
||||
if err != nil {
|
||||
log.Fatalf("读取 MySQL 配置失败: %v", err)
|
||||
}
|
||||
db, err := repository.OpenMySQL(cfg)
|
||||
if err != nil {
|
||||
log.Fatalf("连接 MySQL 失败: %v", err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
sources, err := repository.ListShopSpecSources(db, *shop)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
report := service.CompareShopSpecs(*shop, sources, time.Now())
|
||||
raw, err := json.MarshalIndent(report, "", " ")
|
||||
if err != nil {
|
||||
log.Fatalf("生成 JSON 报告失败: %v", err)
|
||||
}
|
||||
raw = append(raw, '\n')
|
||||
if strings.TrimSpace(*output) == "" {
|
||||
fmt.Print(string(raw))
|
||||
return
|
||||
}
|
||||
if err := os.WriteFile(*output, raw, 0o600); err != nil {
|
||||
log.Fatalf("写入本机报告失败: %v", err)
|
||||
}
|
||||
fmt.Printf("只读对比完成:%d 件商品,报告已写入 %s\n", report.Total, *output)
|
||||
}
|
||||
Reference in New Issue
Block a user