This commit is contained in:
oneao committed 2026-01-30 22:06:16 +08:00
1 parent 6a8c31e20c
commit 572011017a
25 files changed
+599 -563

No files matched your search

@@ -34,7 +34,7 @@ func CreateSpace(ctx context.Context, c *app.RequestContext) {
userID := middleware.GetUserID(ctx)
_, err = db.Queries.GetSpaceUser(ctx, userID)
_, err = db.Queries.GetSpaceMember(ctx, userID)
var isExist = true
@@ -93,13 +93,13 @@ func CreateSpace(ctx context.Context, c *app.RequestContext) {
return err
}
// 将创建用户默认添加到该空间内
userParams := repo.InsertSpaceUserParams{
userParams := repo.InsertSpaceMemberParams{
ID: idgen.NextId(),
SpaceID: spaceId,
UserID: userID,
Role: 0,
}
err := q.InsertSpaceUser(ctx, userParams)
err := q.InsertSpaceMember(ctx, userParams)
if err != nil {
return err
@@ -155,7 +155,7 @@ func DissolveSpace(ctx context.Context, c *app.RequestContext) {
return err2
}
err2 = q.DeleteSpaceUsersBySpaceID(ctx, spaceID)
err2 = q.DeleteSpaceMembersBySpaceID(ctx, spaceID)
if err2 != nil {
return err2
}
@@ -188,7 +188,7 @@ func ExitSpace(ctx context.Context, c *app.RequestContext) {
userID := middleware.GetUserID(ctx)
spaceUser, err := db.Queries.GetSpaceUser(ctx, userID)
spaceUser, err := db.Queries.GetSpaceMember(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
@@ -210,7 +210,7 @@ func ExitSpace(ctx context.Context, c *app.RequestContext) {
}
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.DeleteSpaceUserByUserID(ctx, userID)
err2 := q.DeleteSpaceMemberByUserID(ctx, userID)
if err2 != nil {
return err2
}
@@ -225,90 +225,6 @@ func ExitSpace(ctx context.Context, c *app.RequestContext) {
response.Success(c).Data(resp).Send()
}
// ListSpaceUsers .
// @router /space/users [POST]
func ListSpaceUsers(ctx context.Context, c *app.RequestContext) {
var err error
var req space.ListSpaceUsersParams
if err = c.BindAndValidate(&req); err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.ListSpaceUsersResult)
users, err := db.Queries.ListSpaceUsers(ctx, req.SpaceId)
if err != nil {
c.String(consts.StatusInternalServerError, err.Error())
return
}
resp.Users = make([]*space.SpaceUser, 0, len(users))
for _, u := range users {
resp.Users = append(resp.Users, &space.SpaceUser{
Id: u.UserID,
Username: u.UserName,
Avatar: u.UserAvatar,
Role: u.Role,
LastLoginTime: pgtypex.TimestamptzToMillis(u.LastLoginTime),
})
}
response.Success(c).Data(resp).Send()
}
// RemoveSpaceUser .
// @router /space/remove [POST]
func RemoveSpaceUser(ctx context.Context, c *app.RequestContext) {
var err error
var req space.RemoveSpaceUserParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.RemoveSpaceUserResult)
userID := middleware.GetUserID(ctx)
spaceID := req.SpaceId
// 检查权限
hasPermission, err := hasSpacePermission(ctx, userID, spaceID)
if err != nil {
errorx.AddError(c, err)
return
}
if !hasPermission {
response.Fail(c).Message("无权限操作该空间").Send()
return
}
// 移除
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.DeleteSpaceUserBySpaceIDAndUserID(ctx, repo.DeleteSpaceUserBySpaceIDAndUserIDParams{
SpaceID: spaceID,
UserID: req.UserId,
})
if err2 != nil {
return err2
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Data(resp).Send()
}
// JoinSpace .
// @router /space/join [POST]
func JoinSpace(ctx context.Context, c *app.RequestContext) {
@@ -324,7 +240,7 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
userID := middleware.GetUserID(ctx)
_, err = db.Queries.GetSpaceUser(ctx, userID)
_, err = db.Queries.GetSpaceMember(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
@@ -352,7 +268,7 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
}
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.InsertSpaceUser(ctx, repo.InsertSpaceUserParams{
err2 := q.InsertSpaceMember(ctx, repo.InsertSpaceMemberParams{
ID: idgen.NextId(),
UserID: userID,
SpaceID: spaceByInviteCode.ID,
@@ -377,18 +293,102 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
response.Success(c).Data(resp).Send()
}
// UpdateSpaceUserRole .
// @router /space/updateRole [POST]
func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
// ListSpaceMembers .
// @router /space/members [POST]
func ListSpaceMembers(ctx context.Context, c *app.RequestContext) {
var err error
var req space.UpdateSpaceUserRoleParams
var req space.ListSpaceMembersParams
if err = c.BindAndValidate(&req); err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.ListSpaceMembersResult)
members, err := db.Queries.ListSpaceMembers(ctx, req.SpaceId)
if err != nil {
c.String(consts.StatusInternalServerError, err.Error())
return
}
resp.Members = make([]*space.SpaceMember, 0, len(members))
for _, u := range members {
resp.Members = append(resp.Members, &space.SpaceMember{
Id: u.UserID,
Username: u.UserName,
Avatar: u.UserAvatar,
Role: u.Role,
LastLoginTime: pgtypex.TimestamptzToMillis(u.LastLoginTime),
})
}
response.Success(c).Data(resp).Send()
}
// RemoveSpaceMember .
// @router /space/remove [POST]
func RemoveSpaceMember(ctx context.Context, c *app.RequestContext) {
var err error
var req space.RemoveSpaceMemberParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.UpdateSpaceUserRoleResult)
resp := new(space.RemoveSpaceMemberResult)
userID := middleware.GetUserID(ctx)
spaceID := req.SpaceId
// 检查权限
hasPermission, err := hasSpacePermission(ctx, userID, spaceID)
if err != nil {
errorx.AddError(c, err)
return
}
if !hasPermission {
response.Fail(c).Message("无权限操作该空间").Send()
return
}
// 移除
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.DeleteSpaceMemberBySpaceIDAndUserID(ctx, repo.DeleteSpaceMemberBySpaceIDAndUserIDParams{
SpaceID: spaceID,
UserID: req.UserId,
})
if err2 != nil {
return err2
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Data(resp).Send()
}
// UpdateSpaceMemberRole .
// @router /space/updateRole [POST]
func UpdateSpaceMemberRole(ctx context.Context, c *app.RequestContext) {
var err error
var req space.UpdateSpaceMemberRoleParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.UpdateSpaceMemberRoleResult)
userID := middleware.GetUserID(ctx)
spaceID := req.SpaceId
@@ -407,7 +407,7 @@ func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
}
// 检查是否在该空间
updateSpaceUser, err := db.Queries.GetSpaceUser(ctx, updateUserID)
updateSpaceUser, err := db.Queries.GetSpaceMember(ctx, updateUserID)
if err != nil {
if errorx.IsNotFound(err) {
@@ -425,7 +425,7 @@ func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
// 更新
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.UpdateSpaceUserRole(ctx, repo.UpdateSpaceUserRoleParams{
err2 := q.UpdateSpaceMemberRole(ctx, repo.UpdateSpaceMemberRoleParams{
Role: 1,
SpaceID: spaceID,
UserID: userID,
@@ -435,7 +435,7 @@ func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
return err2
}
err2 = q.UpdateSpaceUserRole(ctx, repo.UpdateSpaceUserRoleParams{
err2 = q.UpdateSpaceMemberRole(ctx, repo.UpdateSpaceMemberRoleParams{
Role: 0,
SpaceID: spaceID,
UserID: updateUserID,
@@ -457,7 +457,7 @@ func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
}
func hasSpacePermission(ctx context.Context, userID int64, spaceID int64) (bool, error) {
user, err := db.Queries.GetSpaceUser(ctx, userID)
user, err := db.Queries.GetSpaceMember(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {