From 179b6aa0e23642c70d2140bba82446cd17ea0195 Mon Sep 17 00:00:00 2001 From: Rogee Date: Tue, 30 Dec 2025 18:12:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E9=87=8D=E6=9E=84=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E6=A8=A1=E5=9D=97=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=92=8C=E6=A3=80=E6=9F=A5Token=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=B7=AF=E7=94=B1=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/http/super/v1/{ => auth}/auth.go | 2 +- backend/app/http/super/v1/auth/dto/auth.go | 32 +++++++++++ .../app/http/super/v1/auth/provider.gen.go | 37 ++++++++++++ backend/app/http/super/v1/auth/routes.gen.go | 56 +++++++++++++++++++ .../app/http/super/v1/auth/routes.manual.go | 9 +++ backend/app/http/super/v1/provider.gen.go | 9 --- backend/app/http/super/v1/routes.gen.go | 11 ---- backend/app/http/v1/auth/routes.manual.go | 2 +- 8 files changed, 136 insertions(+), 22 deletions(-) rename backend/app/http/super/v1/{ => auth}/auth.go (98%) create mode 100644 backend/app/http/super/v1/auth/dto/auth.go create mode 100755 backend/app/http/super/v1/auth/provider.gen.go create mode 100644 backend/app/http/super/v1/auth/routes.gen.go create mode 100644 backend/app/http/super/v1/auth/routes.manual.go diff --git a/backend/app/http/super/v1/auth.go b/backend/app/http/super/v1/auth/auth.go similarity index 98% rename from backend/app/http/super/v1/auth.go rename to backend/app/http/super/v1/auth/auth.go index 5821338..bac74c3 100644 --- a/backend/app/http/super/v1/auth.go +++ b/backend/app/http/super/v1/auth/auth.go @@ -1,4 +1,4 @@ -package v1 +package auth import ( dto "quyun/v2/app/http/super/v1/dto" diff --git a/backend/app/http/super/v1/auth/dto/auth.go b/backend/app/http/super/v1/auth/dto/auth.go new file mode 100644 index 0000000..8e53a90 --- /dev/null +++ b/backend/app/http/super/v1/auth/dto/auth.go @@ -0,0 +1,32 @@ +package dto + +import "quyun/v2/pkg/consts" + +type LoginForm struct { + Phone string `json:"phone"` + OTP string `json:"otp"` +} + +type LoginResponse struct { + Token string `json:"token"` + User *User `json:"user"` +} + +type User struct { + ID string `json:"id"` + Phone string `json:"phone"` + Nickname string `json:"nickname"` + Avatar string `json:"avatar"` + Gender consts.Gender `json:"gender"` + Bio string `json:"bio"` + Birthday string `json:"birthday"` // YYYY-MM-DD + Location *Location `json:"location"` + Balance float64 `json:"balance"` + Points int64 `json:"points"` + IsRealNameVerified bool `json:"is_real_name_verified"` +} + +type Location struct { + Province string `json:"province"` + City string `json:"city"` +} diff --git a/backend/app/http/super/v1/auth/provider.gen.go b/backend/app/http/super/v1/auth/provider.gen.go new file mode 100755 index 0000000..c174a57 --- /dev/null +++ b/backend/app/http/super/v1/auth/provider.gen.go @@ -0,0 +1,37 @@ +package auth + +import ( + "quyun/v2/app/middlewares" + + "go.ipao.vip/atom" + "go.ipao.vip/atom/container" + "go.ipao.vip/atom/contracts" + "go.ipao.vip/atom/opt" +) + +func Provide(opts ...opt.Option) error { + if err := container.Container.Provide(func() (*auth, error) { + obj := &auth{} + + return obj, nil + }); err != nil { + return err + } + if err := container.Container.Provide(func( + auth *auth, + middlewares *middlewares.Middlewares, + ) (contracts.HttpRoute, error) { + obj := &Routes{ + auth: auth, + middlewares: middlewares, + } + if err := obj.Prepare(); err != nil { + return nil, err + } + + return obj, nil + }, atom.GroupRoutes); err != nil { + return err + } + return nil +} diff --git a/backend/app/http/super/v1/auth/routes.gen.go b/backend/app/http/super/v1/auth/routes.gen.go new file mode 100644 index 0000000..d6164e0 --- /dev/null +++ b/backend/app/http/super/v1/auth/routes.gen.go @@ -0,0 +1,56 @@ +// Code generated by atomctl. DO NOT EDIT. + +// Package auth provides HTTP route definitions and registration +// for the quyun/v2 application. +package auth + +import ( + dto "quyun/v2/app/http/super/v1/dto" + "quyun/v2/app/middlewares" + + "github.com/gofiber/fiber/v3" + log "github.com/sirupsen/logrus" + _ "go.ipao.vip/atom" + _ "go.ipao.vip/atom/contracts" + . "go.ipao.vip/atom/fen" +) + +// Routes implements the HttpRoute contract and provides route registration +// for all controllers in the auth module. +// +// @provider contracts.HttpRoute atom.GroupRoutes +type Routes struct { + log *log.Entry `inject:"false"` + middlewares *middlewares.Middlewares + // Controller instances + auth *auth +} + +// Prepare initializes the routes provider with logging configuration. +func (r *Routes) Prepare() error { + r.log = log.WithField("module", "routes.auth") + r.log.Info("Initializing routes module") + return nil +} + +// Name returns the unique identifier for this routes provider. +func (r *Routes) Name() string { + return "auth" +} + +// Register registers all HTTP routes with the provided fiber router. +// Each route is registered with its corresponding controller action and parameter bindings. +func (r *Routes) Register(router fiber.Router) { + // Register routes for controller: auth + r.log.Debugf("Registering route: Get /super/v1/auth/token -> auth.CheckToken") + router.Get("/super/v1/auth/token"[len(r.Path()):], DataFunc0( + r.auth.CheckToken, + )) + r.log.Debugf("Registering route: Post /super/v1/auth/login -> auth.Login") + router.Post("/super/v1/auth/login"[len(r.Path()):], DataFunc1( + r.auth.Login, + Body[dto.LoginForm]("form"), + )) + + r.log.Info("Successfully registered all routes") +} diff --git a/backend/app/http/super/v1/auth/routes.manual.go b/backend/app/http/super/v1/auth/routes.manual.go new file mode 100644 index 0000000..4dff8df --- /dev/null +++ b/backend/app/http/super/v1/auth/routes.manual.go @@ -0,0 +1,9 @@ +package auth + +func (r *Routes) Path() string { + return "/super/v1/auth" +} + +func (r *Routes) Middlewares() []any { + return []any{} +} diff --git a/backend/app/http/super/v1/provider.gen.go b/backend/app/http/super/v1/provider.gen.go index 815ac7e..5b5a80f 100755 --- a/backend/app/http/super/v1/provider.gen.go +++ b/backend/app/http/super/v1/provider.gen.go @@ -10,13 +10,6 @@ import ( ) func Provide(opts ...opt.Option) error { - if err := container.Container.Provide(func() (*auth, error) { - obj := &auth{} - - return obj, nil - }); err != nil { - return err - } if err := container.Container.Provide(func() (*contents, error) { obj := &contents{} @@ -32,7 +25,6 @@ func Provide(opts ...opt.Option) error { return err } if err := container.Container.Provide(func( - auth *auth, contents *contents, middlewares *middlewares.Middlewares, orders *orders, @@ -40,7 +32,6 @@ func Provide(opts ...opt.Option) error { users *users, ) (contracts.HttpRoute, error) { obj := &Routes{ - auth: auth, contents: contents, middlewares: middlewares, orders: orders, diff --git a/backend/app/http/super/v1/routes.gen.go b/backend/app/http/super/v1/routes.gen.go index a72b12b..dd4a3b0 100644 --- a/backend/app/http/super/v1/routes.gen.go +++ b/backend/app/http/super/v1/routes.gen.go @@ -23,7 +23,6 @@ type Routes struct { log *log.Entry `inject:"false"` middlewares *middlewares.Middlewares // Controller instances - auth *auth contents *contents orders *orders tenants *tenants @@ -45,16 +44,6 @@ func (r *Routes) Name() string { // Register registers all HTTP routes with the provided fiber router. // Each route is registered with its corresponding controller action and parameter bindings. func (r *Routes) Register(router fiber.Router) { - // Register routes for controller: auth - r.log.Debugf("Registering route: Get /super/v1/auth/token -> auth.CheckToken") - router.Get("/super/v1/auth/token"[len(r.Path()):], DataFunc0( - r.auth.CheckToken, - )) - r.log.Debugf("Registering route: Post /super/v1/auth/login -> auth.Login") - router.Post("/super/v1/auth/login"[len(r.Path()):], DataFunc1( - r.auth.Login, - Body[dto.LoginForm]("form"), - )) // Register routes for controller: contents r.log.Debugf("Registering route: Get /super/v1/contents -> contents.List") router.Get("/super/v1/contents"[len(r.Path()):], DataFunc1( diff --git a/backend/app/http/v1/auth/routes.manual.go b/backend/app/http/v1/auth/routes.manual.go index 33d08ba..2117250 100644 --- a/backend/app/http/v1/auth/routes.manual.go +++ b/backend/app/http/v1/auth/routes.manual.go @@ -1,7 +1,7 @@ package auth func (r *Routes) Path() string { - return "/auth" + return "/v1/auth" } func (r *Routes) Middlewares() []any {