This commit is contained in:
oneao committed 2026-02-28 17:02:35 +08:00
1 parent fc005e0fb4
commit 10d0cadfe3
18 files changed
+591 -133

No files matched your search

@@ -86,7 +86,7 @@ func CreateSpace(c fiber.Ctx) error {
UserID: userID,
Role: 0,
IsDefault: int16(isDefault),
UserName: dto.UserName,
MemberName: dto.MemberName,
SortNumber: dto.SortNumber,
}
@@ -114,6 +114,7 @@ func CreateSpace(c fiber.Ctx) error {
return responsex.OK(c, vo)
}
// ListUserSpaces 查询该用户的空间
func ListUserSpaces(c fiber.Ctx) error {
vo := new(types.ListSpacesVO)
@@ -133,13 +134,13 @@ func ListUserSpaces(c fiber.Ctx) error {
for _, row := range rows {
userSpaces = append(userSpaces, types.UserSpace{
Id: row.ID,
SpaceId: row.SpaceID,
OwnerId: row.OwnerID,
Name: row.Name,
Role: row.Role,
MemberCount: row.MemberCount,
IsDefault: row.IsDefault,
UserName: row.UserName,
MemberName: row.MemberName,
SortNumber: row.SortNumber,
})
}
@@ -149,6 +150,127 @@ func ListUserSpaces(c fiber.Ctx) error {
return responsex.OK(c, vo)
}
// DissolveSpace 解散空间
func DissolveSpace(c fiber.Ctx) error {
dto := new(types.DissolveSpaceDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
return err
}
userId, err := middleware.GetUserID(c)
if err != nil {
return err
}
spaceId := dto.SpaceId
space, err := db.Queries.GetSpaceById(c.Context(), spaceId)
if err != nil {
if errorx.IsNotFound(err) {
return responsex.Error(c, "空间不存在或已解散")
}
return err
}
if userId != space.OwnerID {
return responsex.Error(c, "您不是该空间的拥有者,无法解散")
}
if err := db.Queries.DissolveSpace(c.Context(), spaceId); err != nil {
return err
}
return responsex.OK(c, "空间已成功解散")
}
// UpdateMemberName 更新群成员名称
func UpdateMemberName(c fiber.Ctx) error {
dto := new(types.UpdateMemberNameDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
return err
}
userId, err := middleware.GetUserID(c)
if err != nil {
return err
}
err = db.Queries.UpdateSpaceMemberName(c.Context(), repo.UpdateSpaceMemberNameParams{
SpaceID: dto.SpaceId,
UserID: userId,
MemberName: dto.MemberName,
})
if err != nil {
return err
}
return responsex.OK(c, "更新成功")
}
// UpdateSpaceDefault 更新空间默认情况
func UpdateSpaceDefault(c fiber.Ctx) error {
dto := new(types.UpdateSpaceIsDefaultDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
return err
}
userId, err := middleware.GetUserID(c)
if err != nil {
return err
}
err = db.Queries.UpdateSpaceIsDefault(c.Context(), repo.UpdateSpaceIsDefaultParams{
SpaceID: dto.SpaceId,
UserID: userId,
IsDefault: dto.IsDefault,
})
if err != nil {
return err
}
return responsex.OK(c, "更新成功")
}
func UpdateSpaceName(c fiber.Ctx) error {
dto := new(types.UpdateSpaceNameDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
return err
}
userId, err := middleware.GetUserID(c)
if err != nil {
return err
}
spaceId := dto.SpaceId
space, err := db.Queries.GetSpaceById(c.Context(), spaceId)
if err != nil {
if errorx.IsNotFound(err) {
return responsex.Error(c, "空间不存在或已解散")
}
return err
}
if userId != space.OwnerID {
return responsex.Error(c, "您不是该空间的拥有者,无法修改群名称")
}
err = db.Queries.UpdateSpaceName(c.Context(), repo.UpdateSpaceNameParams{
Name: dto.SpaceName,
ID: spaceId,
})
if err != nil {
return err
}
return responsex.OK(c, "更新成功")
}
// 初始化记账分类
func initFinanceCategory(ctx context.Context, q *repo.Queries, spaceId int64, userId int64) error {
categoryDefaults, err := q.ListFinanceCategoryDefault(ctx)
if err != nil {
@@ -23,6 +23,11 @@ func SetupRouters(app *fiber.App) {
spaceRouter.Post("/create", space.CreateSpace)
spaceRouter.Post("/list", space.ListUserSpaces)
spaceRouter.Post("/dissolve", space.DissolveSpace)
spaceRouter.Post("/name", space.UpdateSpaceName)
spaceRouter.Post("/member/default", space.UpdateSpaceDefault)
spaceRouter.Post("/member/name", space.UpdateMemberName)
// authGroup.Get("/user/profile", user.GetProfile)
// spaceGroup.Get("/space/info", space.GetInfo)
+22 -3
View File
@@ -2,7 +2,7 @@ package types
type CreateSpaceDTO struct {
Name string `json:"name" validate:"required"`
UserName string `json:"user_name" validate:"required"`
MemberName string `json:"member_name" validate:"required"`
SortNumber int32 `json:"sort_number" validate:"required"`
}
@@ -13,16 +13,35 @@ type CreateSpaceVO struct {
}
type UserSpace struct {
Id int64 `json:"id"`
SpaceId int64 `json:"space_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"`
MemberName string `json:"member_name"`
SortNumber int32 `json:"sort_number"`
}
type ListSpacesVO struct {
Spaces []UserSpace `json:"spaces"`
}
type DissolveSpaceDTO struct {
SpaceId int64 `json:"space_id" validate:"required"`
}
type UpdateMemberNameDTO struct {
SpaceId int64 `json:"space_id" validate:"required"`
MemberName string `json:"member_name" validate:"required"`
}
type UpdateSpaceIsDefaultDTO struct {
IsDefault int16 `json:"is_default" validate:"required"`
SpaceId int64 `json:"space_id" validate:"required"`
}
type UpdateSpaceNameDTO struct {
SpaceId int64 `json:"space_id" validate:"required"`
SpaceName string `json:"space_name" validate:"required"`
}