feat: add order module
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
37
backend/app/http/users/routes.gen.go
Normal file
37
backend/app/http/users/routes.gen.go
Normal 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"),
|
||||
))
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user