u
This commit is contained in:
1 parent
1b1a54f7dd
commit
fc005e0fb4
22 files changed
+300
-193
No files matched your search
@@ -1,10 +0,0 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
// Hello handle api status
|
||||
func Hello(c fiber.Ctx) error {
|
||||
panic("测试 panic")
|
||||
}
|
||||
@@ -53,11 +53,24 @@ func CreateSpace(c fiber.Ctx) error {
|
||||
spaceId := uniqueid.NextId()
|
||||
|
||||
err := db.WithTx(c.Context(), func(q *repo.Queries) error {
|
||||
// 查询是否存在空间
|
||||
countSpaces, err3 := q.CountUserSpaces(c.Context(), userID)
|
||||
if err3 != nil {
|
||||
return err3
|
||||
}
|
||||
|
||||
isDefault := 0
|
||||
|
||||
if countSpaces == 0 {
|
||||
isDefault = 1
|
||||
}
|
||||
|
||||
// 创建空间
|
||||
params := repo.InsertSpaceParams{
|
||||
ID: spaceId,
|
||||
Name: dto.Name,
|
||||
InviteCode: inviteCode,
|
||||
OwnerID: userID,
|
||||
}
|
||||
|
||||
err := q.InsertSpace(c.Context(), params)
|
||||
@@ -68,10 +81,13 @@ func CreateSpace(c fiber.Ctx) error {
|
||||
|
||||
// 将创建用户默认添加到该空间内
|
||||
spaceMemberParams := repo.InsertSpaceMemberParams{
|
||||
ID: uniqueid.NextId(),
|
||||
SpaceID: spaceId,
|
||||
UserID: userID,
|
||||
Role: 0,
|
||||
ID: uniqueid.NextId(),
|
||||
SpaceID: spaceId,
|
||||
UserID: userID,
|
||||
Role: 0,
|
||||
IsDefault: int16(isDefault),
|
||||
UserName: dto.UserName,
|
||||
SortNumber: dto.SortNumber,
|
||||
}
|
||||
|
||||
err = q.InsertSpaceMember(c.Context(), spaceMemberParams)
|
||||
@@ -98,6 +114,41 @@ func CreateSpace(c fiber.Ctx) error {
|
||||
return responsex.OK(c, vo)
|
||||
}
|
||||
|
||||
func ListUserSpaces(c fiber.Ctx) error {
|
||||
vo := new(types.ListSpacesVO)
|
||||
|
||||
userID, err := middleware.GetUserID(c)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rows, err := db.Queries.ListSpacesByUserId(c.Context(), userID)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
userSpaces := make([]types.UserSpace, 0, len(rows))
|
||||
|
||||
for _, row := range rows {
|
||||
userSpaces = append(userSpaces, types.UserSpace{
|
||||
Id: row.ID,
|
||||
OwnerId: row.OwnerID,
|
||||
Name: row.Name,
|
||||
Role: row.Role,
|
||||
MemberCount: row.MemberCount,
|
||||
IsDefault: row.IsDefault,
|
||||
UserName: row.UserName,
|
||||
SortNumber: row.SortNumber,
|
||||
})
|
||||
}
|
||||
|
||||
vo.Spaces = userSpaces
|
||||
|
||||
return responsex.OK(c, vo)
|
||||
}
|
||||
|
||||
func initFinanceCategory(ctx context.Context, q *repo.Queries, spaceId int64, userId int64) error {
|
||||
categoryDefaults, err := q.ListFinanceCategoryDefault(ctx)
|
||||
if err != nil {
|
||||
|
||||
@@ -12,23 +12,18 @@ import (
|
||||
func SetupRouters(app *fiber.App) {
|
||||
api := app.Group(config.GetConf().Server.BaseUrl)
|
||||
|
||||
// 1️⃣ 公开接口(无需登录)
|
||||
publicGroup := api.Group("")
|
||||
|
||||
// 2️⃣ 需要登录
|
||||
authGroup := api.Group("", middleware.Auth())
|
||||
//
|
||||
//// 3️⃣ 需要登录 + 需要空间
|
||||
//spaceGroup := api.Group("", middleware.Auth(), middleware.SpaceGuard())
|
||||
|
||||
// --------------------
|
||||
// auth
|
||||
authRouter := publicGroup.Group("/auth")
|
||||
authRouter := api.Group("/auth")
|
||||
authRouter.Post("/login/qq", auth.LoginQq)
|
||||
authRouter.Post("/login/wechat", auth.LoginWechat)
|
||||
|
||||
// 空间操作
|
||||
authGroup.Post("/space/create", space.CreateSpace)
|
||||
spaceRouter := api.Group("/space").Use(middleware.Auth())
|
||||
|
||||
spaceRouter.Post("/create", space.CreateSpace)
|
||||
spaceRouter.Post("/list", space.ListUserSpaces)
|
||||
|
||||
// authGroup.Get("/user/profile", user.GetProfile)
|
||||
// spaceGroup.Get("/space/info", space.GetInfo)
|
||||
}
|
||||
@@ -1,10 +1,28 @@
|
||||
package types
|
||||
|
||||
type CreateSpaceDTO struct {
|
||||
Name string `json:"name" validate:"required"`
|
||||
Name string `json:"name" validate:"required"`
|
||||
UserName string `json:"user_name" validate:"required"`
|
||||
SortNumber int32 `json:"sort_number" validate:"required"`
|
||||
}
|
||||
|
||||
type CreateSpaceVO struct {
|
||||
SpaceId int64 `json:"space_id"`
|
||||
InviteCode string `json:"invite_code"`
|
||||
SortNumber int32 `json:"sort_number"`
|
||||
}
|
||||
|
||||
type UserSpace struct {
|
||||
Id int64 `json:"id"`
|
||||
OwnerId int64 `json:"owner_id"`
|
||||
Name string `json:"name"`
|
||||
Role int16 `json:"role"`
|
||||
MemberCount int64 `json:"member_count"`
|
||||
IsDefault int16 `json:"is_default"`
|
||||
UserName string `json:"user_name"`
|
||||
SortNumber int32 `json:"sort_number"`
|
||||
}
|
||||
|
||||
type ListSpacesVO struct {
|
||||
Spaces []UserSpace `json:"spaces"`
|
||||
}
|
||||
Reference in new issue
Block a user