From fcf611e22b0ba2d83be408b4530abff0c3c7a5d0 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Tue, 13 Jan 2026 01:08:10 +0800 Subject: [PATCH] deving --- cmd/main/main.go | 27 +++++++++++++++++++++++--- internal/config/config.go | 36 +++++++++++++++++++++++++++++++++++ internal/cron/boot.go | 5 +++++ internal/impl/impl.go | 26 +++++++++++++++++++++++++ internal/logic/a.go | 11 +++++++++++ internal/logic/hook.go | 15 --------------- internal/models/query.go | 1 + internal/routers/register.go | 37 ++++++++++++++++++++++++++++++++++++ 8 files changed, 140 insertions(+), 18 deletions(-) create mode 100644 internal/config/config.go create mode 100644 internal/cron/boot.go create mode 100644 internal/impl/impl.go create mode 100644 internal/logic/a.go delete mode 100644 internal/logic/hook.go create mode 100644 internal/models/query.go create mode 100644 internal/routers/register.go diff --git a/cmd/main/main.go b/cmd/main/main.go index 1b60e76..359978e 100644 --- a/cmd/main/main.go +++ b/cmd/main/main.go @@ -4,22 +4,43 @@ import ( "fmt" "git.apinb.com/dataset/stock/internal/logic" + "git.apinb.com/dataset/stock/internal/cron" "github.com/gin-gonic/gin" + "git.apinb.com/bsm-sdk/core/infra" + "git.apinb.com/bsm-sdk/core/middleware" ) var ( - ServiceKey = "folo" + ServiceKey = "stock" ) func main() { + // 配置初始化 + config.New(ServiceKey) + + // 创建实现层 + impl.NewImpl() + + // starter crontab list + cron.Boot() + // 初始化Gin引擎 app := gin.Default() - // use middleware + + // 使用中间件 + middleware.Mode(app) + app.Use(middleware.Cors()) app.Use(gin.Recovery()) + // register health check + app.HEAD("/", infra.Health) + + // register routers + routers.Register(ServiceKey, app) + // start - err := app.Run(fmt.Sprintf(":%s", "15935")) + err := app.Run(fmt.Sprintf(":%s", config.Spec.Port)) if err != nil { panic(err) } diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..6e8a895 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,36 @@ +package config + +import ( + "git.apinb.com/bsm-sdk/core/conf" + "git.apinb.com/bsm-sdk/core/env" +) + +var ( + Spec SrvConfig +) + +type SrvConfig struct { + conf.Base `yaml:",inline"` + Databases *conf.DBConf `yaml:"Databases"` +} + +func New(srvKey string) { + + // 初始化通用配置 创建一个新的配置实例,用于服务配置 + conf.New(srvKey, &Spec) + // 配置校验 服务端口如果不合规,则随机分配端口 + Spec.Port = conf.CheckPort(Spec.Port) + + // 初始化自定义环境变量 + Spec.SecretKey = env.Runtime.JwtSecretKey + + // InitRootUser 配置说明: + // 由于bool类型零值是false,如果配置文件中未设置该字段,默认值为false + // 为了保持向后兼容和默认启用初始化,我们采用以下策略: + // - 如果配置文件中显式设置为false,则禁用初始化 + // - 如果配置文件中未设置或设置为true,则启用初始化 + // 注意:InitRootUserData函数内部已有幂等性检查,重复执行是安全的 + + // 配置校验 服务名称地址及监听地址不能为空 + conf.NotNil(Spec.Service, Spec.Cache) +} diff --git a/internal/cron/boot.go b/internal/cron/boot.go new file mode 100644 index 0000000..d5f1dbe --- /dev/null +++ b/internal/cron/boot.go @@ -0,0 +1,5 @@ +package cron + +func Boot(){ + +} \ No newline at end of file diff --git a/internal/impl/impl.go b/internal/impl/impl.go new file mode 100644 index 0000000..9c8e0d0 --- /dev/null +++ b/internal/impl/impl.go @@ -0,0 +1,26 @@ +package impl + +import ( + "git.apinb.com/bsm-sdk/core/cache/redis" + "git.apinb.com/bsm-sdk/core/with" + "git.apinb.com/pro/rbac2/internal/config" + "github.com/allegro/bigcache/v3" + "git.apinb.com/bsm-sdk/core/with" +) + +var ( + RedisService *redis.RedisClient // Redis 客户端服务 + MemoryService *bigcache.BigCache // 内存缓存服务 +) + +// NewImpl 初始化各类服务实例 +func NewImpl() { + // 初始化内存缓存 + MemorySerice = with.Memory(nil) + // 初始化 Redis 缓存 + RedisService = with.RedisCache(config.Spec.Cache) + // 初始化数据库服务 + DBService = with.Databases(config.Spec.Databases, nil) // model + // 初始化日志服务 + with.Logger(config.Spec.Log) +} diff --git a/internal/logic/a.go b/internal/logic/a.go new file mode 100644 index 0000000..1fa0da6 --- /dev/null +++ b/internal/logic/a.go @@ -0,0 +1,11 @@ +package logic + +import tushare "github.com/ShawnRong/tushare-go" + +var ( + TushareClient *tushare.TuShare +) + +func NewApiClient(){ + TushareClient = tushare.New("你的token") +} \ No newline at end of file diff --git a/internal/logic/hook.go b/internal/logic/hook.go deleted file mode 100644 index fa8b836..0000000 --- a/internal/logic/hook.go +++ /dev/null @@ -1,15 +0,0 @@ -package logic - -import ( - "fmt" - "io" - - "github.com/gin-gonic/gin" -) - -func Hook(ctx *gin.Context) { - fmt.Println("BODY:") - reqBody, _ := io.ReadAll(ctx.Request.Body) - fmt.Println(string(reqBody)) - return -} diff --git a/internal/models/query.go b/internal/models/query.go new file mode 100644 index 0000000..778a4c0 --- /dev/null +++ b/internal/models/query.go @@ -0,0 +1 @@ +package models \ No newline at end of file diff --git a/internal/routers/register.go b/internal/routers/register.go new file mode 100644 index 0000000..088968c --- /dev/null +++ b/internal/routers/register.go @@ -0,0 +1,37 @@ +package routers + +import ( + "fmt" + + "git.apinb.com/bsm-sdk/core/middleware" + "git.apinb.com/pro/rbac2/internal/logic/application" + "git.apinb.com/pro/rbac2/internal/logic/hello" + "git.apinb.com/pro/rbac2/internal/logic/permission" + "git.apinb.com/pro/rbac2/internal/logic/pub" + "git.apinb.com/pro/rbac2/internal/logic/role" + "git.apinb.com/pro/rbac2/internal/logic/user" + "github.com/gin-gonic/gin" +) + +// 完成请求地址: ip:port/srvKey/v1/group/xxx +func Register(srvKey string, engine *gin.Engine) { + v1_key := fmt.Sprintf("/%s/%s", srvKey, "v1") + registerAnonymous(v1_key, engine) + registerRouters(v1_key, engine) +} + +// registerAnonymous 不需要auth的接口 +func registerAnonymous(v1_key string, engine *gin.Engine) { + // Anonymous router. + fmt.Println(v1_key) + anonymous := engine.Group(v1_key) + { + anonymous.GET("/ping", hello.Ping) + + } +} + +func registerRouters(v1_key string, engine *gin.Engine) { + + +}