u
This commit is contained in:
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)
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
Reference in new issue
Block a user