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