This commit is contained in:
oneao committed 2025-12-04 21:48:22 +08:00
1 parent 59d3be2299
commit 33ab76f73e
13 files changed
+172 -374

No files matched your search

@@ -155,82 +155,6 @@ func RemoveSpaceUser(ctx context.Context, c *app.RequestContext) {
response.Success(c).Message("移除成功").Send()
}
// UpdateSpaceUserRole .
// @router /space/user/updateRole [POST]
func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
var req space.UpdateSpaceUserRoleParams
if err := c.BindAndValidate(&req); err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
// 1. 获取当前操作者信息
userID := middleware.GetUserID(ctx)
operator, err := db.Queries.GetSpaceUserByUserId(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
response.Fail(c).Message("权限不足").Send()
return
}
errorx.AddError(c, err)
return
}
// 2. 检查操作者是否属于该空间
if operator.SpaceID != req.SpaceId {
response.Fail(c).Message("权限不足").Send()
return
}
// 3. 权限检查:只有创建者可以修改他人角色
// 假设 Role: 0=创建者, 1=管理员, 2=普通成员
if operator.Role != 0 {
response.Fail(c).Message("权限不足").Send()
return
}
// 3.1 不允许修改自己的角色
if operator.UserID == req.UserId {
response.Fail(c).Message("不能修改自己的角色").Send()
return
}
// 4. 校验目标 Role 是否合法
if req.Role != 1 && req.Role != 2 {
response.Fail(c).Message("角色修改错误").Send()
return
}
// 5. 获取被修改的用户
targetUser, err := db.Queries.GetSpaceUserByUserId(ctx, req.UserId)
if err != nil {
if errorx.IsNotFound(err) {
response.Fail(c).Message("目标用户不存在").Send()
return
}
errorx.AddError(c, err)
return
}
if targetUser.SpaceID != req.SpaceId {
response.Fail(c).Message("目标用户不在该空间").Send()
return
}
// 6. 执行更新
err = db.Queries.UpdateSpaceUserRole(ctx, repo.UpdateSpaceUserRoleParams{
SpaceID: req.SpaceId,
UserID: req.UserId,
Role: req.Role,
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Send()
}
// JoinSpace .
// @router /space/user/join [POST]
func JoinSpace(ctx context.Context, c *app.RequestContext) {
@@ -275,7 +199,7 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
ID: idgen.NextId(),
SpaceID: spaceByCode.ID,
UserID: userID,
Role: 2,
Role: 1,
}
err = db.Queries.InsertSpaceUser(ctx, params)