This commit is contained in:
oneao committed 2026-03-02 22:09:47 +08:00
1 parent cf23acdabc
commit 2efeb7cee2
13 files changed
+271 -49

No files matched your search

@@ -183,6 +183,38 @@ func DissolveSpace(c fiber.Ctx) error {
return responsex.OK(c, "空间已成功解散")
}
// ExitSpace 退出空间
func ExitSpace(c fiber.Ctx) error {
dto := new(types.ExitSpaceDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
return err
}
userId, err := middleware.GetUserID(c)
if err != nil {
return err
}
spaceId := dto.SpaceId
_, err = db.Queries.GetSpaceById(c.Context(), spaceId)
if err != nil {
if errorx.IsNotFound(err) {
return responsex.Error(c, "空间不存在或已解散")
}
return err
}
if err := db.Queries.UpdateSpaceMemberExit(c.Context(), repo.UpdateSpaceMemberExitParams{
SpaceID: spaceId,
UserID: userId,
}); err != nil {
return err
}
return responsex.OK(c, "空间已成功退出")
}
// UpdateMemberName 更新群成员名称
func UpdateMemberName(c fiber.Ctx) error {
dto := new(types.UpdateMemberNameDTO)
@@ -257,6 +289,7 @@ func UpdateSpaceDefault(c fiber.Ctx) error {
return responsex.OK(c, "更新成功")
}
// UpdateSpaceName 更新空间名称
func UpdateSpaceName(c fiber.Ctx) error {
dto := new(types.UpdateSpaceNameDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
@@ -295,6 +328,7 @@ func UpdateSpaceName(c fiber.Ctx) error {
return responsex.OK(c, "更新成功")
}
// GetSpaceSettings 获取空间配置信息
func GetSpaceSettings(c fiber.Ctx) error {
dto := new(types.GetSpaceSettingDTO)
if err := requestx.BindAndValidate(c, dto); err != nil {
@@ -329,6 +363,7 @@ func GetSpaceSettings(c fiber.Ctx) error {
vo.MemberCount = row.MemberCount
vo.OwnerId = row.OwnerID
vo.SortNumber = row.SortNumber
vo.InviteCode = row.InviteCode
return responsex.OK(c, vo)
}
@@ -30,6 +30,7 @@ func SetupRouters(app *fiber.App) {
spaceRouter.Post("/member/default", space.UpdateSpaceDefault)
spaceRouter.Post("/member/name", space.UpdateMemberName)
spaceRouter.Post("/member/sortNumber", space.UpdateSpaceSortNumber)
spaceRouter.Post("/member/exit", space.ExitSpace)
// authGroup.Get("/user/profile", user.GetProfile)
// spaceGroup.Get("/space/info", space.GetInfo)
+5
View File
@@ -21,6 +21,7 @@ type UserSpace struct {
IsDefault int16 `json:"is_default"`
MemberName string `json:"member_name"`
SortNumber int32 `json:"sort_number"`
InviteCode string `json:"invite_code"`
}
type ListSpacesVO struct {
@@ -31,6 +32,10 @@ type DissolveSpaceDTO struct {
SpaceId int64 `json:"space_id" validate:"required"`
}
type ExitSpaceDTO 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"`
+4 -3
View File
@@ -39,7 +39,7 @@ FROM space s
GROUP BY space_id
) mc
ON s.id = mc.space_id
WHERE sm.user_id = $1
WHERE sm.user_id = $1 AND s.status != 2 AND sm.status != 2
ORDER BY sm.is_default DESC, sm.sort_number ASC;
-- name: GetSpaceByUserIdAndSpaceId :one
@@ -51,7 +51,8 @@ SELECT
COALESCE(mc.member_count, 0) AS member_count,
sm.is_default,
sm.member_name,
sm.sort_number
sm.sort_number,
s.invite_code
FROM space s
JOIN space_member sm
ON s.id = sm.space_id
@@ -61,7 +62,7 @@ FROM space s
GROUP BY space_id
) mc
ON s.id = mc.space_id
WHERE sm.user_id = $1 AND s.id = $2
WHERE sm.user_id = $1 AND s.id = $2 AND s.status != 2 AND sm.status != 2
ORDER BY sm.is_default DESC, sm.sort_number ASC;
-- name: UpdateSpaceName :exec
@@ -38,4 +38,11 @@ WHERE user_id = $2
UPDATE space_member
SET sort_number = $1
WHERE user_id = $2
AND space_id = $3;
AND space_id = $3;
-- 退出空间
-- name: UpdateSpaceMemberExit :exec
UPDATE space_member
SET status = 2 AND exit_time = NOW()
WHERE space_id = $1
AND user_id = $2;
+6 -3
View File
@@ -75,7 +75,8 @@ SELECT
COALESCE(mc.member_count, 0) AS member_count,
sm.is_default,
sm.member_name,
sm.sort_number
sm.sort_number,
s.invite_code
FROM space s
JOIN space_member sm
ON s.id = sm.space_id
@@ -85,7 +86,7 @@ FROM space s
GROUP BY space_id
) mc
ON s.id = mc.space_id
WHERE sm.user_id = $1 AND s.id = $2
WHERE sm.user_id = $1 AND s.id = $2 AND s.status != 2 AND sm.status != 2
ORDER BY sm.is_default DESC, sm.sort_number ASC
`
@@ -103,6 +104,7 @@ type GetSpaceByUserIdAndSpaceIdRow struct {
IsDefault int16
MemberName string
SortNumber int32
InviteCode string
}
func (q *Queries) GetSpaceByUserIdAndSpaceId(ctx context.Context, arg GetSpaceByUserIdAndSpaceIdParams) (GetSpaceByUserIdAndSpaceIdRow, error) {
@@ -117,6 +119,7 @@ func (q *Queries) GetSpaceByUserIdAndSpaceId(ctx context.Context, arg GetSpaceBy
&i.IsDefault,
&i.MemberName,
&i.SortNumber,
&i.InviteCode,
)
return i, err
}
@@ -164,7 +167,7 @@ FROM space s
GROUP BY space_id
) mc
ON s.id = mc.space_id
WHERE sm.user_id = $1
WHERE sm.user_id = $1 AND s.status != 2 AND sm.status != 2
ORDER BY sm.is_default DESC, sm.sort_number ASC
`
@@ -108,6 +108,24 @@ func (q *Queries) UpdateSpaceIsDefault(ctx context.Context, arg UpdateSpaceIsDef
return err
}
const updateSpaceMemberExit = `-- name: UpdateSpaceMemberExit :exec
UPDATE space_member
SET status = 2 AND exit_time = NOW()
WHERE space_id = $1
AND user_id = $2
`
type UpdateSpaceMemberExitParams struct {
SpaceID int64
UserID int64
}
// 退出空间
func (q *Queries) UpdateSpaceMemberExit(ctx context.Context, arg UpdateSpaceMemberExitParams) error {
_, err := q.db.Exec(ctx, updateSpaceMemberExit, arg.SpaceID, arg.UserID)
return err
}
const updateSpaceMemberName = `-- name: UpdateSpaceMemberName :exec
UPDATE space_member SET member_name = $1
WHERE space_id = $2 AND user_id = $3