u
This commit is contained in:
1 parent
1903861354
commit
1b1a54f7dd
35 files changed
+1185
-535
No files matched your search
@@ -154,7 +154,7 @@ func handleThirdLogin(
|
||||
openid string,
|
||||
nickname string,
|
||||
avatar string,
|
||||
loginType int32, // 0=微信 1=QQ
|
||||
loginType int16, // 0=微信 1=QQ
|
||||
vo *types.LoginVO,
|
||||
) error {
|
||||
user, err := db.Queries.FindUserByOpenID(c.Context(), repo.FindUserByOpenIDParams{
|
||||
@@ -191,7 +191,7 @@ func handleThirdLogin(
|
||||
}
|
||||
|
||||
// 注册用户
|
||||
func registerUser(c fiber.Ctx, openid, nickname, avatar string, loginType int32, vo *types.LoginVO) error {
|
||||
func registerUser(c fiber.Ctx, openid, nickname, avatar string, loginType int16, vo *types.LoginVO) error {
|
||||
userId := uniqueid.NextId()
|
||||
|
||||
if nickname == "" {
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
package space
|
||||
|
||||
import (
|
||||
"allapp/api/router/middleware"
|
||||
"allapp/api/types"
|
||||
"allapp/db"
|
||||
"allapp/db/repo"
|
||||
"allapp/utils"
|
||||
"allapp/utils/errorx"
|
||||
"allapp/utils/requestx"
|
||||
"allapp/utils/responsex"
|
||||
"allapp/utils/uniqueid"
|
||||
"context"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
// CreateSpace 创建空间
|
||||
func CreateSpace(c fiber.Ctx) error {
|
||||
dto := new(types.CreateSpaceDTO)
|
||||
vo := new(types.CreateSpaceVO)
|
||||
|
||||
if err := requestx.BindAndValidate(c, dto); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
userID, err2 := middleware.GetUserID(c)
|
||||
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
var inviteCode string
|
||||
|
||||
for {
|
||||
// 生成邀请码
|
||||
code := utils.GenerateCode(6)
|
||||
|
||||
// 检查数据库是否存在
|
||||
|
||||
_, err := db.Queries.GetSpaceByInviteCode(c.Context(), code)
|
||||
|
||||
if err != nil {
|
||||
if errorx.IsNotFound(err) {
|
||||
inviteCode = code
|
||||
break
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spaceId := uniqueid.NextId()
|
||||
|
||||
err := db.WithTx(c.Context(), func(q *repo.Queries) error {
|
||||
// 创建空间
|
||||
params := repo.InsertSpaceParams{
|
||||
ID: spaceId,
|
||||
Name: dto.Name,
|
||||
InviteCode: inviteCode,
|
||||
}
|
||||
|
||||
err := q.InsertSpace(c.Context(), params)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 将创建用户默认添加到该空间内
|
||||
spaceMemberParams := repo.InsertSpaceMemberParams{
|
||||
ID: uniqueid.NextId(),
|
||||
SpaceID: spaceId,
|
||||
UserID: userID,
|
||||
Role: 0,
|
||||
}
|
||||
|
||||
err = q.InsertSpaceMember(c.Context(), spaceMemberParams)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 初始化记账
|
||||
err = initFinanceCategory(c.Context(), q, spaceId, userID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
vo.SpaceId = spaceId
|
||||
vo.InviteCode = inviteCode
|
||||
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
if len(categoryDefaults) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
categorySpaces := make([]repo.BatchInsertFinanceCategorySpaceParams, 0, len(categoryDefaults))
|
||||
|
||||
for _, sysCat := range categoryDefaults {
|
||||
categorySpaces = append(categorySpaces, repo.BatchInsertFinanceCategorySpaceParams{
|
||||
ID: uniqueid.NextId(),
|
||||
SpaceID: spaceId,
|
||||
Name: sysCat.Name,
|
||||
Icon: sysCat.Icon,
|
||||
Type: sysCat.Type,
|
||||
SortNumber: sysCat.SortNumber,
|
||||
CreateBy: userId,
|
||||
UpdateBy: userId,
|
||||
})
|
||||
}
|
||||
|
||||
if _, err := q.BatchInsertFinanceCategorySpace(ctx, categorySpaces); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -13,7 +13,6 @@ const CtxUserIDKey = "user_id"
|
||||
// Auth 登录校验中间件
|
||||
func Auth() fiber.Handler {
|
||||
return func(c fiber.Ctx) error {
|
||||
|
||||
token := strings.TrimSpace(c.Get("Token"))
|
||||
if token == "" {
|
||||
return responsex.Unauthorized(c, "未登录")
|
||||
|
||||
@@ -2,6 +2,8 @@ package router
|
||||
|
||||
import (
|
||||
"allapp/api/handler/auth"
|
||||
"allapp/api/handler/space"
|
||||
"allapp/api/router/middleware"
|
||||
"allapp/config"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
@@ -14,7 +16,7 @@ func SetupRouters(app *fiber.App) {
|
||||
publicGroup := api.Group("")
|
||||
|
||||
// 2️⃣ 需要登录
|
||||
//authGroup := api.Group("", middleware.Auth())
|
||||
authGroup := api.Group("", middleware.Auth())
|
||||
//
|
||||
//// 3️⃣ 需要登录 + 需要空间
|
||||
//spaceGroup := api.Group("", middleware.Auth(), middleware.SpaceGuard())
|
||||
@@ -25,7 +27,8 @@ func SetupRouters(app *fiber.App) {
|
||||
authRouter.Post("/login/qq", auth.LoginQq)
|
||||
authRouter.Post("/login/wechat", auth.LoginWechat)
|
||||
|
||||
// 示例
|
||||
// 空间操作
|
||||
authGroup.Post("/space/create", space.CreateSpace)
|
||||
// authGroup.Get("/user/profile", user.GetProfile)
|
||||
// spaceGroup.Get("/space/info", space.GetInfo)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package types
|
||||
|
||||
type CreateSpaceDTO struct {
|
||||
Name string `json:"name" validate:"required"`
|
||||
}
|
||||
|
||||
type CreateSpaceVO struct {
|
||||
SpaceId int64 `json:"space_id"`
|
||||
InviteCode string `json:"invite_code"`
|
||||
}
|
||||
Reference in new issue
Block a user