daShangDao_kfz_goods_pricing/internal/repository/config_repository.go
97694732@qq.com e26d7a027e first commit
2026-06-11 16:06:08 +08:00

65 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package repository
import (
"database/sql"
"fmt"
"kfz-goods-pricing/internal/database"
)
// KfzConfig kfz_config 表结构
type KfzConfig struct {
ID int
NewPrice float64
PlaceholderDownPrice float64
MinShippingFee float64
MinPrice float64
QueryIndex int
}
// GetKfzConfig 获取 kfz_config 配置ID=1
// 无数据时返回 nil, nil
func GetKfzConfig() (*KfzConfig, error) {
var cfg KfzConfig
err := database.DB.QueryRow(
`SELECT id, new_price, placeholder_down_price, min_shipping_fee, min_price, query_index FROM kfz_config WHERE id=1`,
).Scan(&cfg.ID, &cfg.NewPrice, &cfg.PlaceholderDownPrice, &cfg.MinShippingFee, &cfg.MinPrice, &cfg.QueryIndex)
if err == sql.ErrNoRows {
return nil, nil // 无数据
}
if err != nil {
return nil, fmt.Errorf("查询kfz_config失败: %w", err)
}
return &cfg, nil
}
// SaveKfzConfig 保存 kfz_config 配置
// 表中永远只有 ID=1 一条记录:无数据则 INSERT有数据则 UPDATE
func SaveKfzConfig(cfg *KfzConfig) error {
var count int
err := database.DB.QueryRow("SELECT COUNT(*) FROM kfz_config").Scan(&count)
if err != nil {
return fmt.Errorf("查询kfz_config失败: %w", err)
}
if count == 0 {
_, err = database.DB.Exec(
`INSERT INTO kfz_config (id, new_price, placeholder_down_price, min_shipping_fee, min_price, query_index) VALUES (1, ?, ?, ?, ?, ?)`,
cfg.NewPrice, cfg.PlaceholderDownPrice, cfg.MinShippingFee, cfg.MinPrice, cfg.QueryIndex,
)
if err != nil {
return fmt.Errorf("插入kfz_config失败: %w", err)
}
} else {
_, err = database.DB.Exec(
`UPDATE kfz_config SET new_price=?, placeholder_down_price=?, min_shipping_fee=?, min_price=?, query_index=? WHERE id=1`,
cfg.NewPrice, cfg.PlaceholderDownPrice, cfg.MinShippingFee, cfg.MinPrice, cfg.QueryIndex,
)
if err != nil {
return fmt.Errorf("更新kfz_config失败: %w", err)
}
}
return nil
}