From cd820c187a4710152fcf34d8668a961056b66fbf Mon Sep 17 00:00:00 2001 From: pengyinjie Date: Fri, 31 Oct 2025 18:01:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=BB=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E8=B5=B7=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 1 + go.sum | 3 ++ internal/biz/weather_and_location.go | 5 +++ internal/data/weather_cache.go | 5 +++ internal/middleware/middleware.go | 7 ++- main.go | 66 ++++++++++++++++++++++++++-- 6 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 internal/biz/weather_and_location.go create mode 100644 internal/data/weather_cache.go diff --git a/go.mod b/go.mod index 7c9b668..754a685 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ replace github.com/apache/thrift => github.com/apache/thrift v0.13.0 require ( github.com/apache/thrift v0.0.0-00010101000000-000000000000 github.com/cloudwego/hertz v0.10.3 + gopkg.in/yaml.v3 v3.0.1 ) require ( diff --git a/go.sum b/go.sum index eab0c37..dff37b7 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,10 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg= github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= @@ -112,6 +114,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/internal/biz/weather_and_location.go b/internal/biz/weather_and_location.go new file mode 100644 index 0000000..1eea14a --- /dev/null +++ b/internal/biz/weather_and_location.go @@ -0,0 +1,5 @@ +package biz + +import "weather_and_earthquake/internal/config" + +var AccuWeather *config.AccuWeather diff --git a/internal/data/weather_cache.go b/internal/data/weather_cache.go new file mode 100644 index 0000000..4e85c7a --- /dev/null +++ b/internal/data/weather_cache.go @@ -0,0 +1,5 @@ +package data + +import "weather_and_earthquake/internal/config" + +var DataConf *config.Data diff --git a/internal/middleware/middleware.go b/internal/middleware/middleware.go index 3495c77..e1dce6b 100644 --- a/internal/middleware/middleware.go +++ b/internal/middleware/middleware.go @@ -1,8 +1,13 @@ package middleware -import "github.com/cloudwego/hertz/pkg/app" +import ( + "github.com/cloudwego/hertz/pkg/app" + "weather_and_earthquake/internal/config" +) import "context" +var Apps *config.Apps + // 跨域 func CorsMiddleware() app.HandlerFunc { return func(ctx context.Context, c *app.RequestContext) { diff --git a/main.go b/main.go index 4cbc294..2148a75 100644 --- a/main.go +++ b/main.go @@ -3,12 +3,70 @@ package main import ( + "flag" + "fmt" "github.com/cloudwego/hertz/pkg/app/server" + "gopkg.in/yaml.v3" + "log" + "os" + "weather_and_earthquake/internal/biz" + "weather_and_earthquake/internal/config" + "weather_and_earthquake/internal/data" + "weather_and_earthquake/internal/middleware" ) -func main() { - h := server.Default() +var ( + _configPath string + _appsPath string + _server *server.Hertz +) - register(h) - h.Spin() +func init() { + flag.StringVar(&_configPath, "config", "configs/config.yaml", "config path, eg: -conf=config.yaml") + flag.StringVar(&_appsPath, "apps", "configs/apps.yaml", "apps path, eg: -apps=apps.yaml") +} + +func initialize() { + configFile, err := os.Open(_configPath) + if err != nil { + log.Fatalln(err.Error()) + } + defer configFile.Close() + + conf := &config.Config{} + decoder := yaml.NewDecoder(configFile) + err = decoder.Decode(conf) + if err != nil { + log.Fatalln(err.Error()) + } + + appsFile, err := os.Open(_appsPath) + if err != nil { + log.Fatalln(err.Error()) + } + defer appsFile.Close() + + apps := &config.Apps{} + decoder = yaml.NewDecoder(appsFile) + err = decoder.Decode(apps) + if err != nil { + log.Fatalln(err.Error()) + } + + if len(apps.AppSecrets) == 0 { + log.Fatalln("no app secrets") + } + + biz.AccuWeather = conf.AccuWeather + middleware.Apps = apps + data.DataConf = conf.Data + + hostPort := fmt.Sprintf("%s:%d", conf.Server.Addr, conf.Server.Port) + _server = server.Default(server.WithHostPorts(hostPort)) + register(_server) +} + +func main() { + initialize() + _server.Spin() }