feat: add order module

This commit is contained in:
Rogee
2025-01-10 16:54:33 +08:00
parent 2ba8ed7dbd
commit ca1b4cdd12
17 changed files with 456 additions and 40 deletions

View File

@@ -1,6 +1,10 @@
package users
import (
"backend/providers/jwt"
"github.com/gofiber/fiber/v3"
"github.com/jinzhu/copier"
log "github.com/sirupsen/logrus"
)
@@ -15,16 +19,33 @@ func (c *Controller) Prepare() error {
return nil
}
// Test godoc
// Show user info
//
// @Summary Test
// @Description Test
// @Tags Test
// @Accept json
// @Produce json
// @Param id path int true "AccountID"
// @Param queryFilter query dto.AlarmListQuery true "AlarmListQueryFilter"
// @Param pageFilter query common.PageQueryFilter true "PageQueryFilter"
// @Param sortFilter query common.SortQueryFilter true "SortQueryFilter"
// @Success 200 {object} common.PageDataResponse{list=dto.AlarmItem}
// @Router /v1/test/:id<int> [get]
// @Router /api/v1/users/info [get]
// @Bind claim local
func (c *Controller) Info(ctx fiber.Ctx, claim *jwt.Claims) (*UserInfo, error) {
userInfo := &UserInfo{}
user, err := c.svc.GetUserByID(ctx.Context(), claim.UserID)
if err != nil {
return nil, err
}
if err := copier.Copy(userInfo, user); err != nil {
return nil, err
}
userAuths, err := c.svc.GetUserOAuthChannels(ctx.Context(), claim.UserID)
if err != nil {
return nil, err
}
for _, auth := range userAuths {
userInfo.OAuths = append(userInfo.OAuths, OAuth{
Channel: auth.Channel,
ExpireAt: auth.ExpireAt,
})
}
return userInfo, nil
}

View File

@@ -1 +1,26 @@
package users
import (
"time"
"backend/database/fields"
)
type UserInfo struct {
ID int64 `json:"id"`
CreatedAt time.Time `json:"created_at"`
Status fields.UserStatus `json:"status"`
Email string `json:"email"`
Phone string `json:"phone"`
Nickname *string `json:"nickname"`
Username string `json:"username"`
Age int16 `json:"age"`
Sex int16 `json:"sex"`
Avatar *string `json:"avatar"`
OAuths []OAuth `json:"oauths"`
}
type OAuth struct {
Channel fields.AuthChannel `json:"channel"`
ExpireAt time.Time `json:"expire_at"`
}

View File

@@ -5,7 +5,9 @@ import (
"backend/providers/event"
"git.ipao.vip/rogeecn/atom"
"git.ipao.vip/rogeecn/atom/container"
"git.ipao.vip/rogeecn/atom/contracts"
"git.ipao.vip/rogeecn/atom/utils/opt"
)
@@ -24,6 +26,20 @@ func Provide(opts ...opt.Option) error {
}); err != nil {
return err
}
if err := container.Container.Provide(func(
controller *Controller,
) (contracts.HttpRoute, error) {
obj := &Routes{
controller: controller,
}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupRoutes); err != nil {
return err
}
if err := container.Container.Provide(func(
db *sql.DB,
event *event.PubSub,

View File

@@ -0,0 +1,37 @@
// Code generated by the atomctl ; DO NOT EDIT.
package users
import (
. "backend/pkg/f"
"backend/providers/jwt"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
)
// @provider contracts.HttpRoute atom.GroupRoutes
type Routes struct {
log *log.Entry `inject:"false"`
controller *Controller
}
func (r *Routes) Prepare() error {
r.log = log.WithField("module", "routes.users")
return nil
}
func (r *Routes) Name() string {
return "users"
}
func (r *Routes) Register(router fiber.Router) {
// 注册路由组: Controller
router.Get("/users/info", DataFunc1(
r.controller.Info,
Local[*jwt.Claims]("claim"),
))
}

View File

@@ -228,3 +228,29 @@ func (svc *Service) SetUserStatusByID(ctx context.Context, userID int64, status
}
return nil
}
// GetUserOAuthChannels
func (svc *Service) GetUserOAuthChannels(ctx context.Context, userID int64) ([]model.UserOauths, error) {
_, span := otel.Start(ctx, "users.service.GetUserOAuthChannels")
defer span.End()
span.SetAttributes(
attribute.Int64("user.id", userID),
)
tbl := table.UserOauths
stmt := tbl.
SELECT(
tbl.Channel,
tbl.ExpireAt,
).
WHERE(
tbl.UserID.EQ(Int64(userID)),
)
span.SetAttributes(semconv.DBStatementKey.String(stmt.DebugSql()))
var oauths []model.UserOauths
if err := stmt.QueryContext(ctx, svc.db, &oauths); err != nil {
return nil, err
}
return oauths, nil
}