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
|
||||
}
|
||||
Reference in new issue
Block a user