支持 .env 配置,并完善源头对接文档与测试订单
- 增加 .env.example 与 godotenv 加载,start.sh 自动读环境变量 - 重写发给源头的开放接口对接文档 - 订单页支持创建测试订单(可直接已支付并复制店铺订单号)
This commit is contained in:
@@ -2,7 +2,10 @@ package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
@@ -18,7 +21,9 @@ type Config struct {
|
||||
OpenSignSkew int64
|
||||
}
|
||||
|
||||
// Load 加载配置:先尝试读取 .env,再读系统环境变量(已存在的系统环境变量优先级更高)
|
||||
func Load() *Config {
|
||||
loadDotEnv()
|
||||
return &Config{
|
||||
Port: getEnv("PORT", "8080"),
|
||||
JWTSecret: getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me"),
|
||||
@@ -30,6 +35,32 @@ func Load() *Config {
|
||||
}
|
||||
}
|
||||
|
||||
// loadDotEnv 依次尝试常见路径,不覆盖已有环境变量
|
||||
func loadDotEnv() {
|
||||
var paths []string
|
||||
if wd, err := os.Getwd(); err == nil {
|
||||
paths = append(paths,
|
||||
filepath.Join(wd, ".env"),
|
||||
filepath.Join(wd, "..", ".env"), // 在 backend/ 下启动时读仓库根 .env
|
||||
filepath.Join(wd, "backend", ".env"), // 在仓库根启动时
|
||||
)
|
||||
}
|
||||
paths = append(paths, ".env")
|
||||
|
||||
seen := map[string]struct{}{}
|
||||
for _, p := range paths {
|
||||
abs, err := filepath.Abs(p)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if _, ok := seen[abs]; ok {
|
||||
continue
|
||||
}
|
||||
seen[abs] = struct{}{}
|
||||
_ = godotenv.Load(abs) // 忽略不存在;不覆盖已在环境中的变量
|
||||
}
|
||||
}
|
||||
|
||||
func getEnv(key, def string) string {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
return v
|
||||
|
||||
Reference in New Issue
Block a user