This commit is contained in:
oneao committed 2026-01-27 22:47:55 +08:00
1 parent 83cbf18572
commit 5ca04f85ca
32 files changed
+1308 -1804

No files matched your search

@@ -12,9 +12,6 @@ import (
"allapp/utils/response"
"context"
"fmt"
"time"
"github.com/jackc/pgx/v5/pgtype"
money "allapp/biz/model/money"
@@ -31,85 +28,85 @@ func QueryMoneyRecord(ctx context.Context, c *app.RequestContext) {
return
}
// 解析年月
startTime, err := time.Parse("2006-01", req.RecordTime)
if err != nil {
errorx.AddError(c, fmt.Errorf("invalid record_time format: %v", err))
return
}
endTime := startTime.AddDate(0, 1, 0).Add(-time.Nanosecond)
//// 解析年月
//startTime, err := time.Parse("2006-01", req.RecordTime)
//if err != nil {
// errorx.AddError(c, fmt.Errorf("invalid record_time format: %v", err))
// return
//}
//endTime := startTime.AddDate(0, 1, 0).Add(-time.Nanosecond)
//
//// 获取 userID 和 spaceID
//userID := middleware.GetUserID(ctx)
//spaceIspaceID := middleware.GetSpaceID(ctx)
//
//// 定义统一的 records 切片
//var dbRecordsUser []repo.MoneyRecord
//var dbRecordsSpace []repo.FindMoneyRecordsBySpaceRow
//var errQuery error
//
//// 最终返回统一类型
//var records []*money.MoneyRecord
//
//// 有空间ID,查询空间内所有用户
//if ok {
// params := repo.FindMoneyRecordsBySpaceParams{
// SpaceID: spaceID,
// RecordTime: pgtype.Date{Time: startTime, Valid: true},
// RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
// }
// dbRecordsSpace, errQuery = db.Queries.FindMoneyRecordsBySpace(ctx, params)
// if errQuery != nil {
// errorx.AddError(c, errQuery)
// return
// }
//
// for _, r := range dbRecordsSpace {
// records = append(records, &money.MoneyRecord{
// Id: r.ID,
// CategoryId: r.CategoryID,
// UserId: r.UserID,
// Username: r.Username.String,
// Amount: pgtypex.NumericToString(r.Amount),
// Remark: r.Remark.String,
// RecordTime: pgtypex.DateToString(r.RecordTime),
// CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
// UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
// })
// }
//} else {
// // 没有空间ID,只查询单用户
// params := repo.FindUserMoneyRecordsParams{
// UserID: userID,
// RecordTime: pgtype.Date{Time: startTime, Valid: true},
// RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
// }
// dbRecordsUser, errQuery = db.Queries.FindUserMoneyRecords(ctx, params)
// if errQuery != nil {
// errorx.AddError(c, errQuery)
// return
// }
//
// for _, r := range dbRecordsUser {
// records = append(records, &money.MoneyRecord{
// Id: r.ID,
// CategoryId: r.CategoryID,
// UserId: r.UserID,
// Username: "",
// Amount: pgtypex.NumericToString(r.Amount),
// Remark: r.Remark.String,
// RecordTime: pgtypex.DateToString(r.RecordTime),
// CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
// UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
// })
// }
//}
//
//result := &money.QueryMoneyRecordsResult{
// Records: records,
//}
// 获取 userID 和 spaceID
userID := middleware.GetUserID(ctx)
spaceID, ok := middleware.GetSpaceID(ctx)
// 定义统一的 records 切片
var dbRecordsUser []repo.MoneyRecord
var dbRecordsSpace []repo.FindMoneyRecordsBySpaceRow
var errQuery error
// 最终返回统一类型
var records []*money.MoneyRecord
// 有空间ID,查询空间内所有用户
if ok {
params := repo.FindMoneyRecordsBySpaceParams{
SpaceID: spaceID,
RecordTime: pgtype.Date{Time: startTime, Valid: true},
RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
}
dbRecordsSpace, errQuery = db.Queries.FindMoneyRecordsBySpace(ctx, params)
if errQuery != nil {
errorx.AddError(c, errQuery)
return
}
for _, r := range dbRecordsSpace {
records = append(records, &money.MoneyRecord{
Id: r.ID,
CategoryId: r.CategoryID,
UserId: r.UserID,
Username: r.Username.String,
Amount: pgtypex.NumericToString(r.Amount),
Remark: r.Remark.String,
RecordTime: pgtypex.DateToString(r.RecordTime),
CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
})
}
} else {
// 没有空间ID,只查询单用户
params := repo.FindUserMoneyRecordsParams{
UserID: userID,
RecordTime: pgtype.Date{Time: startTime, Valid: true},
RecordTime_2: pgtype.Date{Time: endTime, Valid: true},
}
dbRecordsUser, errQuery = db.Queries.FindUserMoneyRecords(ctx, params)
if errQuery != nil {
errorx.AddError(c, errQuery)
return
}
for _, r := range dbRecordsUser {
records = append(records, &money.MoneyRecord{
Id: r.ID,
CategoryId: r.CategoryID,
UserId: r.UserID,
Username: "",
Amount: pgtypex.NumericToString(r.Amount),
Remark: r.Remark.String,
RecordTime: pgtypex.DateToString(r.RecordTime),
CreateTime: pgtypex.TimestampToMillis(r.CreateTime),
UpdateTime: pgtypex.TimestampToMillis(r.UpdateTime),
})
}
}
result := &money.QueryMoneyRecordsResult{
Records: records,
}
response.Success(c).Data(result).Send()
response.Success(c).Send()
}
// InsertMoneyRecord .
@@ -9,7 +9,7 @@ import (
"allapp/utils"
"allapp/utils/errorx"
"allapp/utils/idgen"
"allapp/utils/redisx"
"allapp/utils/pgtypex"
"allapp/utils/response"
"context"
@@ -19,70 +19,287 @@ import (
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
// KickOutUser 踢出某人
// @router /space/kick [POST]
func KickOutUser(ctx context.Context, c *app.RequestContext) {
var req space.KickOutUserParams
if err := c.BindAndValidate(&req); err != nil {
// CreateSpace .
// @router /space/create [POST]
func CreateSpace(ctx context.Context, c *app.RequestContext) {
var err error
var req space.CreateSpaceParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
userID := middleware.GetUserID(ctx)
spaceID := middleware.GetSpaceID(ctx)
hasPermission, err := CheckUserPermission(ctx, userID, spaceID)
if err != nil {
errorx.AddError(c, err)
return
}
if !hasPermission {
response.Fail(c).Message("无权限操作").Send()
return
}
if err := LeaveSpace(ctx, req.UserId, spaceID); err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Send()
}
// QuitSpace .
// @router /space/quit [POST]
func QuitSpace(ctx context.Context, c *app.RequestContext) {
var req space.QuitSpaceParams
if err := c.BindAndValidate(&req); err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.CreateSpaceResult)
userID := middleware.GetUserID(ctx)
spaceID := req.SpaceId
// 检查权限
role, exists, err := redisx.GetUserSpaceRole(ctx, userID, spaceID)
_, err = db.Queries.GetSpaceUser(ctx, userID)
var isExist = true
if err != nil {
errorx.AddError(c, err)
if errorx.IsNotFound(err) {
isExist = false
} else {
errorx.AddError(c, err)
return
}
}
if isExist {
response.Fail(c).Message("请先退出所在空间").Send()
return
}
if !exists {
response.Fail(c).Message("已不在该空间内").Send()
return
// 生成邀请码
var inviteCode string
for {
// 生成邀请码
code := utils.GenerateCode(6)
// 检查数据库是否存在
_, err = db.Queries.FindSpaceByInviteCode(ctx, code)
if err != nil {
if errorx.IsNotFound(err) {
// 不存在,唯一,直接使用
inviteCode = code
break
} else {
// 系统错误
errorx.AddError(c, err)
return
}
}
// 如果存在,继续循环重新生成
}
spaceId := idgen.NextId()
// 创建空间
err = db.WithTx(ctx, func(q *repo.Queries) error {
if role == 0 {
// 创建空间
params := repo.InsertSpaceParams{
ID: spaceId,
Name: pgtypex.StringToText(req.Name),
InviteCode: inviteCode,
}
err = q.InsertSpace(ctx, params)
if err != nil {
return err
}
// 将创建用户默认添加到该空间内
userParams := repo.InsertSpaceUserParams{
ID: idgen.NextId(),
SpaceID: spaceId,
UserID: userID,
Role: 0,
}
err := q.InsertSpaceUser(ctx, userParams)
if err != nil {
return err
}
return nil
})
response.Success(c).Send()
if err != nil {
errorx.AddError(c, err)
return
}
resp.Id = spaceId
resp.InviteCode = inviteCode
response.Success(c).Data(resp).Send()
}
// DissolveSpace .
// @router /space/dissolve [POST]
func DissolveSpace(ctx context.Context, c *app.RequestContext) {
var err error
var req space.DissolveSpaceParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.DissolveSpaceResult)
spaceID := req.GetSpaceId()
userID := middleware.GetUserID(ctx)
// 检查权限
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.DeleteSpace(ctx, spaceID)
if err2 != nil {
return err2
}
err2 = q.DeleteSpaceUsersBySpaceID(ctx, spaceID)
if err2 != nil {
return err2
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Data(resp).Send()
}
// ExitSpace .
// @router /space/exit [POST]
func ExitSpace(ctx context.Context, c *app.RequestContext) {
var err error
var req space.ExitSpaceParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.ExitSpaceResult)
userID := middleware.GetUserID(ctx)
spaceUser, err := db.Queries.GetSpaceUser(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
response.Success(c).Data(resp).Send()
} else {
errorx.AddError(c, err)
return
}
}
if spaceUser.Role == 0 {
response.Fail(c).Message("请选择解散空间").Send()
return
}
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.DeleteSpaceUserByUserID(ctx, userID)
if err2 != nil {
return err2
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
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 .
@@ -99,243 +316,73 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
resp := new(space.JoinSpaceResult)
userID := middleware.GetUserID(ctx)
oldSpaceID := middleware.GetSpaceID(ctx)
inviteCode := req.InviteCode
spaceByInviteCode, err := db.Queries.FindSpaceByInviteCode(ctx, inviteCode)
_, err = db.Queries.GetSpaceUser(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
response.Fail(c).Message("邀请码错误或已过期").Send()
} else {
errorx.AddError(c, err)
return
}
errorx.AddError(c, err)
} else {
response.Fail(c).Message("请先退出已加入的空间").Send()
return
}
joinSpaceID := spaceByInviteCode.ID
inviteCode := req.GetInviteCode()
spaceByInviteCode, err := db.Queries.FindSpaceByInviteCode(ctx, inviteCode)
// 检查权限
role, exists, err := redisx.GetUserSpaceRole(ctx, userID, oldSpaceID)
if err != nil {
errorx.AddError(c, err)
return
if errorx.IsNotFound(err) {
response.Fail(c).Message("邀请码无效或过期").Send()
return
} else {
errorx.AddError(c, err)
return
}
}
err = db.WithTx(ctx, func(q *repo.Queries) error {
// 判断权限, 如果角色为 0 则解散
if exists && role == 0 {
users, err2 := q.ListSpaceUsers(ctx, oldSpaceID)
err2 := q.InsertSpaceUser(ctx, repo.InsertSpaceUserParams{
ID: idgen.NextId(),
UserID: userID,
SpaceID: spaceByInviteCode.ID,
Role: 1,
})
if err2 != nil {
return err2
}
for _, user := range users {
if err2 := LeaveSpace(ctx, user.UserID, oldSpaceID); err2 != nil {
return err2
}
}
} else {
// 退出就行
if err2 := q.DeleteSpaceUser(ctx, repo.DeleteSpaceUserParams{
SpaceID: oldSpaceID,
UserID: userID,
}); err2 != nil {
return err2
}
if err2 := redisx.RemoveUserSpace(ctx, userID, oldSpaceID); err2 != nil {
return err2
}
// 再加入
if err2 := q.InsertSpaceUser(ctx, repo.InsertSpaceUserParams{
ID: idgen.NextId(),
UserID: userID,
SpaceID: joinSpaceID,
Role: 0,
}); err2 != nil {
return err2
}
if err2 := redisx.AddOrUpdateUserSpace(ctx, userID, joinSpaceID, 0); err2 != nil {
return err2
}
if err2 != nil {
return err2
}
return nil
})
c.JSON(consts.StatusOK, resp)
}
// ListSpaceUsers .
// @router /space/users [POST]
func ListSpaceUsers(ctx context.Context, c *app.RequestContext) {
var err error
var req space.ListSpaceUsersParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.ListSpaceUsersResult)
// 查询
users, err := db.Queries.ListSpaceUsers(ctx, req.SpaceId)
if err != nil {
errorx.AddError(c, err)
return
}
spaceUsers := make([]*space.SpaceUser, 0, len(users))
resp.Id = spaceByInviteCode.ID
resp.Name = spaceByInviteCode.Name.String
for _, user := range users {
spaceUsers = append(spaceUsers, &space.SpaceUser{
UserId: user.UserID,
UserName: user.UserName,
UserAvatar: user.UserAvatar,
Role: user.Role,
})
}
resp.Users = spaceUsers
response.Success(c).Data(spaceUsers).Send()
response.Success(c).Data(resp).Send()
}
// CheckUserPermission 检查是否有权限
func CheckUserPermission(ctx context.Context, userID int64, spaceID int64) (bool, error) {
inSpace, err := redisx.InSpace(ctx, userID, spaceID)
func hasSpacePermission(ctx context.Context, userID int64, spaceID int64) (bool, error) {
user, err := db.Queries.GetSpaceUser(ctx, userID)
if err != nil {
return false, err
}
if !inSpace {
return false, nil
}
role, exists, err := redisx.GetUserSpaceRole(ctx, userID, spaceID)
if err != nil {
return false, err
}
if !exists {
return false, nil
}
return role == 0, nil
}
// LeaveSpace 处理用户离开空间逻辑(包括删除空间用户、清理 Redis、创建新空间)
func LeaveSpace(ctx context.Context, userID, spaceID int64) error {
return db.WithTx(ctx, func(q *repo.Queries) error {
// 1. 删除数据库空间用户
if err := q.DeleteSpaceUser(ctx, repo.DeleteSpaceUserParams{
UserID: userID,
SpaceID: spaceID,
}); err != nil {
return err
}
// 确保该用户加入了缓存
err := InitUserSpaces(ctx, userID)
if err != nil {
return err
}
// 2. 删除 Redis 缓存
if err := redisx.RemoveUserSpace(ctx, userID, spaceID); err != nil {
return err
}
// 3. 确保用户至少有一个空间
if err := EnsureUserHasSpaceWithTx(ctx, q, userID); err != nil {
return err
}
return nil
})
}
// InitUserSpaces 初始化用户空间信息
func InitUserSpaces(ctx context.Context, userID int64) error {
hasSpace, err := redisx.HasUserSpaces(ctx, userID)
if err != nil {
return err
}
if hasSpace {
return nil
}
spaces, err := db.Queries.ListUserSpaces(ctx, userID)
if err != nil {
return err
}
spaceRoles := make(map[int64]int32, len(spaces))
for _, row := range spaces {
spaceRoles[row.ID] = row.Role
}
return redisx.SetUserSpaces(ctx, userID, spaceRoles)
}
// EnsureUserHasSpaceWithTx 确保用户至少有一个空间,如果没有则创建新空间
// 注意:不管理事务,需要在外层传入 q *repo.Queries
func EnsureUserHasSpaceWithTx(ctx context.Context, q *repo.Queries, userID int64) error {
// 1. 查询用户现有空间
spaces, err := redisx.GetUserSpaces(ctx, userID)
if err != nil {
return err
}
if len(spaces) > 0 {
// 已经有空间,无需创建
return nil
}
// 2. 没有空间则创建
var inviteCode string
for {
code := utils.GenerateCode(6)
_, err := q.FindSpaceByInviteCode(ctx, code)
if errorx.IsNotFound(err) {
inviteCode = code
break
} else if err != nil {
return err
return false, nil
}
return false, err
}
newSpaceID := idgen.NextId()
// 插入新空间
if err := q.InsertSpace(ctx, repo.InsertSpaceParams{
ID: newSpaceID,
InviteCode: inviteCode,
}); err != nil {
return err
if user.SpaceID != spaceID {
return false, nil
}
// 插入空间用户
if err := q.InsertSpaceUser(ctx, repo.InsertSpaceUserParams{
ID: idgen.NextId(),
SpaceID: newSpaceID,
UserID: userID,
}); err != nil {
return err
}
// 同步到 Redis
if err := redisx.AddOrUpdateUserSpace(ctx, userID, newSpaceID, 0); err != nil {
return err
}
return nil
return user.Role == 0, nil
}
@@ -15,40 +15,37 @@ import (
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
// ListUserSpaces .
// @router /user/spaces [GET]
func ListUserSpaces(ctx context.Context, c *app.RequestContext) {
// GetUserSpace .
// @router /user/space [GET]
func GetUserSpace(ctx context.Context, c *app.RequestContext) {
var err error
var req user.ListUserSpacesParams
var req user.GetUserSpaceParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(user.ListUserSpacesResult)
resp := new(user.UserSpace)
userID := middleware.GetUserID(ctx)
// 查询
spaces, err := db.Queries.ListUserSpaces(ctx, userID)
space, err := db.Queries.GetSpaceByUserId(ctx, userID)
if err != nil {
if errorx.IsNotFound(err) {
response.Success(c).Data(resp).Send()
return
}
errorx.AddError(c, err)
return
}
userSpaces := make([]*user.UserSpace, 0, len(spaces))
for _, space := range spaces {
userSpaces = append(userSpaces, &user.UserSpace{
Id: space.ID,
Name: space.Name.String,
InviteCode: space.InviteCode,
Role: space.Role,
})
}
resp.Spaces = userSpaces
resp.Id = space.ID
resp.Name = space.Name.String
resp.InviteCode = space.InviteCode
resp.Role = space.Role
response.Success(c).Data(resp).Send()
}
@@ -3,7 +3,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// protoc v6.33.1
// source: api.proto
package api
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// protoc v6.33.1
// source: space.proto
package space
@@ -26,57 +26,76 @@ var file_space_proto_rawDesc = []byte{
0x0a, 0x0b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73,
0x70, 0x61, 0x63, 0x65, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x17, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xdc, 0x02, 0x0a, 0x0c, 0x53, 0x70, 0x61,
0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x4b, 0x69, 0x63,
0x6b, 0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65,
0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x1a, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x4f,
0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x0f, 0xd2, 0xc1,
0x18, 0x0b, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x6b, 0x69, 0x63, 0x6b, 0x12, 0x4c, 0x0a,
0x09, 0x51, 0x75, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x73, 0x70, 0x61,
0x63, 0x65, 0x2e, 0x51, 0x75, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x1a, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x69, 0x74, 0x53,
0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x9e, 0x04, 0x0a, 0x0c, 0x53, 0x70, 0x61,
0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x1a, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x11, 0xd2, 0xc1,
0x18, 0x0d, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
0x5c, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65,
0x12, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76,
0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1a, 0x2e, 0x73,
0x70, 0x61, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x53, 0x70, 0x61,
0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x13, 0xd2, 0xc1, 0x18, 0x0f, 0x2f, 0x73,
0x70, 0x61, 0x63, 0x65, 0x2f, 0x64, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x4c, 0x0a,
0x09, 0x45, 0x78, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x73, 0x70, 0x61,
0x63, 0x65, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x1a, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x53,
0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x0f, 0xd2, 0xc1, 0x18, 0x0b,
0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x71, 0x75, 0x69, 0x74, 0x12, 0x4c, 0x0a, 0x09, 0x4a,
0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x65, 0x78, 0x69, 0x74, 0x12, 0x5c, 0x0a, 0x0e, 0x4c,
0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e,
0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55,
0x73, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1b, 0x2e, 0x73, 0x70, 0x61,
0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72,
0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x10, 0xd2, 0xc1, 0x18, 0x0c, 0x2f, 0x73, 0x70,
0x61, 0x63, 0x65, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x52, 0x65, 0x6d,
0x6f, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x73,
0x70, 0x61, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65,
0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x61,
0x63, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73,
0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x11, 0xd2, 0xc1, 0x18, 0x0d, 0x2f, 0x73,
0x70, 0x61, 0x63, 0x65, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x4a,
0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65,
0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x1a, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61,
0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x0f, 0xd2, 0xc1, 0x18, 0x0b, 0x2f, 0x73,
0x70, 0x61, 0x63, 0x65, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x5c, 0x0a, 0x0e, 0x4c, 0x69, 0x73,
0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x70,
0x61, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65,
0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x10, 0xd2, 0xc1, 0x18, 0x0c, 0x2f, 0x73, 0x70, 0x61, 0x63,
0x65, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70,
0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x73, 0x70, 0x61, 0x63,
0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x70, 0x61, 0x63, 0x65, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c,
0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x73, 0x70,
0x61, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_space_proto_goTypes = []interface{}{
(*KickOutUserParams)(nil), // 0: space.KickOutUserParams
(*QuitSpaceParams)(nil), // 1: space.QuitSpaceParams
(*JoinSpaceParams)(nil), // 2: space.JoinSpaceParams
(*ListSpaceUsersParams)(nil), // 3: space.ListSpaceUsersParams
(*KickOutUserResult)(nil), // 4: space.KickOutUserResult
(*QuitSpaceResult)(nil), // 5: space.QuitSpaceResult
(*JoinSpaceResult)(nil), // 6: space.JoinSpaceResult
(*ListSpaceUsersResult)(nil), // 7: space.ListSpaceUsersResult
(*CreateSpaceParams)(nil), // 0: space.CreateSpaceParams
(*DissolveSpaceParams)(nil), // 1: space.DissolveSpaceParams
(*ExitSpaceParams)(nil), // 2: space.ExitSpaceParams
(*ListSpaceUsersParams)(nil), // 3: space.ListSpaceUsersParams
(*RemoveSpaceUserParams)(nil), // 4: space.RemoveSpaceUserParams
(*JoinSpaceParams)(nil), // 5: space.JoinSpaceParams
(*DissolveSpaceResult)(nil), // 6: space.DissolveSpaceResult
(*ExitSpaceResult)(nil), // 7: space.ExitSpaceResult
(*ListSpaceUsersResult)(nil), // 8: space.ListSpaceUsersResult
(*RemoveSpaceUserResult)(nil), // 9: space.RemoveSpaceUserResult
(*JoinSpaceResult)(nil), // 10: space.JoinSpaceResult
}
var file_space_proto_depIdxs = []int32{
0, // 0: space.SpaceService.KickOutUser:input_type -> space.KickOutUserParams
1, // 1: space.SpaceService.QuitSpace:input_type -> space.QuitSpaceParams
2, // 2: space.SpaceService.JoinSpace:input_type -> space.JoinSpaceParams
3, // 3: space.SpaceService.ListSpaceUsers:input_type -> space.ListSpaceUsersParams
4, // 4: space.SpaceService.KickOutUser:output_type -> space.KickOutUserResult
5, // 5: space.SpaceService.QuitSpace:output_type -> space.QuitSpaceResult
6, // 6: space.SpaceService.JoinSpace:output_type -> space.JoinSpaceResult
7, // 7: space.SpaceService.ListSpaceUsers:output_type -> space.ListSpaceUsersResult
4, // [4:8] is the sub-list for method output_type
0, // [0:4] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
0, // 0: space.SpaceService.CreateSpace:input_type -> space.CreateSpaceParams
1, // 1: space.SpaceService.DissolveSpace:input_type -> space.DissolveSpaceParams
2, // 2: space.SpaceService.ExitSpace:input_type -> space.ExitSpaceParams
3, // 3: space.SpaceService.ListSpaceUsers:input_type -> space.ListSpaceUsersParams
4, // 4: space.SpaceService.RemoveSpaceUser:input_type -> space.RemoveSpaceUserParams
5, // 5: space.SpaceService.JoinSpace:input_type -> space.JoinSpaceParams
0, // 6: space.SpaceService.CreateSpace:output_type -> space.CreateSpaceParams
6, // 7: space.SpaceService.DissolveSpace:output_type -> space.DissolveSpaceResult
7, // 8: space.SpaceService.ExitSpace:output_type -> space.ExitSpaceResult
8, // 9: space.SpaceService.ListSpaceUsers:output_type -> space.ListSpaceUsersResult
9, // 10: space.SpaceService.RemoveSpaceUser:output_type -> space.RemoveSpaceUserResult
10, // 11: space.SpaceService.JoinSpace:output_type -> space.JoinSpaceResult
6, // [6:12] is the sub-list for method output_type
0, // [0:6] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_space_proto_init() }
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// protoc v6.33.1
// source: space/space_types.proto
package space
@@ -21,19 +21,208 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// --- 空间用户列表 ---
// 创建空间
type CreateSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=Name,proto3" form:"name" json:"name"`
}
func (x *CreateSpaceParams) Reset() {
*x = CreateSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateSpaceParams) ProtoMessage() {}
func (x *CreateSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateSpaceParams.ProtoReflect.Descriptor instead.
func (*CreateSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{0}
}
func (x *CreateSpaceParams) GetName() string {
if x != nil {
return x.Name
}
return ""
}
type CreateSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"`
InviteCode string `protobuf:"bytes,2,opt,name=InviteCode,proto3" form:"invite_code" json:"invite_code"`
}
func (x *CreateSpaceResult) Reset() {
*x = CreateSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateSpaceResult) ProtoMessage() {}
func (x *CreateSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateSpaceResult.ProtoReflect.Descriptor instead.
func (*CreateSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{1}
}
func (x *CreateSpaceResult) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *CreateSpaceResult) GetInviteCode() string {
if x != nil {
return x.InviteCode
}
return ""
}
// 解散空间
type DissolveSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
}
func (x *DissolveSpaceParams) Reset() {
*x = DissolveSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DissolveSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DissolveSpaceParams) ProtoMessage() {}
func (x *DissolveSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DissolveSpaceParams.ProtoReflect.Descriptor instead.
func (*DissolveSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{2}
}
func (x *DissolveSpaceParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
type DissolveSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *DissolveSpaceResult) Reset() {
*x = DissolveSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DissolveSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DissolveSpaceResult) ProtoMessage() {}
func (x *DissolveSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DissolveSpaceResult.ProtoReflect.Descriptor instead.
func (*DissolveSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{3}
}
// 获取空间下的成员
type ListSpaceUsersParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" json:"SpaceId" query:"space_id"`
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
}
func (x *ListSpaceUsersParams) Reset() {
*x = ListSpaceUsersParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[0]
mi := &file_space_space_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -46,7 +235,7 @@ func (x *ListSpaceUsersParams) String() string {
func (*ListSpaceUsersParams) ProtoMessage() {}
func (x *ListSpaceUsersParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[0]
mi := &file_space_space_types_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -59,7 +248,7 @@ func (x *ListSpaceUsersParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListSpaceUsersParams.ProtoReflect.Descriptor instead.
func (*ListSpaceUsersParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{0}
return file_space_space_types_proto_rawDescGZIP(), []int{4}
}
func (x *ListSpaceUsersParams) GetSpaceId() int64 {
@@ -74,16 +263,17 @@ type SpaceUser struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserId int64 `protobuf:"varint,1,opt,name=UserId,proto3" json:"UserId" query:"user_id"`
UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName" query:"user_name"`
UserAvatar string `protobuf:"bytes,3,opt,name=UserAvatar,proto3" json:"UserAvatar" query:"user_avatar"`
Role int32 `protobuf:"varint,4,opt,name=Role,proto3" json:"Role" query:"role"`
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"`
Username string `protobuf:"bytes,2,opt,name=Username,proto3" form:"username" json:"username"`
Avatar string `protobuf:"bytes,3,opt,name=Avatar,proto3" form:"avatar" json:"avatar"`
Role int32 `protobuf:"varint,4,opt,name=Role,proto3" form:"role" json:"role"`
LastLoginTime int64 `protobuf:"varint,5,opt,name=LastLoginTime,proto3" form:"last_login_time" json:"last_login_time"`
}
func (x *SpaceUser) Reset() {
*x = SpaceUser{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[1]
mi := &file_space_space_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -96,7 +286,7 @@ func (x *SpaceUser) String() string {
func (*SpaceUser) ProtoMessage() {}
func (x *SpaceUser) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[1]
mi := &file_space_space_types_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -109,26 +299,26 @@ func (x *SpaceUser) ProtoReflect() protoreflect.Message {
// Deprecated: Use SpaceUser.ProtoReflect.Descriptor instead.
func (*SpaceUser) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{1}
return file_space_space_types_proto_rawDescGZIP(), []int{5}
}
func (x *SpaceUser) GetUserId() int64 {
func (x *SpaceUser) GetId() int64 {
if x != nil {
return x.UserId
return x.Id
}
return 0
}
func (x *SpaceUser) GetUserName() string {
func (x *SpaceUser) GetUsername() string {
if x != nil {
return x.UserName
return x.Username
}
return ""
}
func (x *SpaceUser) GetUserAvatar() string {
func (x *SpaceUser) GetAvatar() string {
if x != nil {
return x.UserAvatar
return x.Avatar
}
return ""
}
@@ -140,6 +330,13 @@ func (x *SpaceUser) GetRole() int32 {
return 0
}
func (x *SpaceUser) GetLastLoginTime() int64 {
if x != nil {
return x.LastLoginTime
}
return 0
}
type ListSpaceUsersResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -151,7 +348,7 @@ type ListSpaceUsersResult struct {
func (x *ListSpaceUsersResult) Reset() {
*x = ListSpaceUsersResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[2]
mi := &file_space_space_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -164,7 +361,7 @@ func (x *ListSpaceUsersResult) String() string {
func (*ListSpaceUsersResult) ProtoMessage() {}
func (x *ListSpaceUsersResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[2]
mi := &file_space_space_types_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -177,7 +374,7 @@ func (x *ListSpaceUsersResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListSpaceUsersResult.ProtoReflect.Descriptor instead.
func (*ListSpaceUsersResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{2}
return file_space_space_types_proto_rawDescGZIP(), []int{6}
}
func (x *ListSpaceUsersResult) GetUsers() []*SpaceUser {
@@ -187,193 +384,13 @@ func (x *ListSpaceUsersResult) GetUsers() []*SpaceUser {
return nil
}
// 踢出用户
type KickOutUserParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
UserId int64 `protobuf:"varint,2,opt,name=UserId,proto3" form:"user_id" json:"user_id"`
}
func (x *KickOutUserParams) Reset() {
*x = KickOutUserParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KickOutUserParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KickOutUserParams) ProtoMessage() {}
func (x *KickOutUserParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use KickOutUserParams.ProtoReflect.Descriptor instead.
func (*KickOutUserParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{3}
}
func (x *KickOutUserParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
func (x *KickOutUserParams) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
type KickOutUserResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *KickOutUserResult) Reset() {
*x = KickOutUserResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KickOutUserResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KickOutUserResult) ProtoMessage() {}
func (x *KickOutUserResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use KickOutUserResult.ProtoReflect.Descriptor instead.
func (*KickOutUserResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{4}
}
// 退出空间
type QuitSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
}
func (x *QuitSpaceParams) Reset() {
*x = QuitSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QuitSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QuitSpaceParams) ProtoMessage() {}
func (x *QuitSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QuitSpaceParams.ProtoReflect.Descriptor instead.
func (*QuitSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{5}
}
func (x *QuitSpaceParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
type QuitSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *QuitSpaceResult) Reset() {
*x = QuitSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QuitSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QuitSpaceResult) ProtoMessage() {}
func (x *QuitSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QuitSpaceResult.ProtoReflect.Descriptor instead.
func (*QuitSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{6}
}
// 加入空间
type JoinSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
InviteCode string `protobuf:"bytes,1,opt,name=InviteCode,proto3" form:"invite_code" json:"invite_code"`
InviteCode string `protobuf:"bytes,1,opt,name=InviteCode,proto3" form:"invite_code" json:"invite_code" vd:"$ != ''"` // 邀请码
}
func (x *JoinSpaceParams) Reset() {
@@ -419,6 +436,9 @@ type JoinSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" form:"id" json:"id"`
Name string `protobuf:"bytes,2,opt,name=Name,proto3" form:"name" json:"name"`
}
func (x *JoinSpaceResult) Reset() {
@@ -453,51 +473,256 @@ func (*JoinSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{8}
}
func (x *JoinSpaceResult) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *JoinSpaceResult) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// 退出空间
type ExitSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ExitSpaceParams) Reset() {
*x = ExitSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExitSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExitSpaceParams) ProtoMessage() {}
func (x *ExitSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExitSpaceParams.ProtoReflect.Descriptor instead.
func (*ExitSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{9}
}
type ExitSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ExitSpaceResult) Reset() {
*x = ExitSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExitSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExitSpaceResult) ProtoMessage() {}
func (x *ExitSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExitSpaceResult.ProtoReflect.Descriptor instead.
func (*ExitSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{10}
}
// 踢出成员
type RemoveSpaceUserParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id" vd:"$ != 0"`
UserId int64 `protobuf:"varint,2,opt,name=UserId,proto3" form:"user_id" json:"user_id" vd:"$ != 0"`
}
func (x *RemoveSpaceUserParams) Reset() {
*x = RemoveSpaceUserParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RemoveSpaceUserParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RemoveSpaceUserParams) ProtoMessage() {}
func (x *RemoveSpaceUserParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RemoveSpaceUserParams.ProtoReflect.Descriptor instead.
func (*RemoveSpaceUserParams) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{11}
}
func (x *RemoveSpaceUserParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
func (x *RemoveSpaceUserParams) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
type RemoveSpaceUserResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *RemoveSpaceUserResult) Reset() {
*x = RemoveSpaceUserResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_types_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RemoveSpaceUserResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RemoveSpaceUserResult) ProtoMessage() {}
func (x *RemoveSpaceUserResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_types_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RemoveSpaceUserResult.ProtoReflect.Descriptor instead.
func (*RemoveSpaceUserResult) Descriptor() ([]byte, []int) {
return file_space_space_types_proto_rawDescGZIP(), []int{12}
}
var File_space_space_types_proto protoreflect.FileDescriptor
var file_space_space_types_proto_rawDesc = []byte{
0x0a, 0x17, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65,
0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x14, 0x4c,
0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72,
0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31, 0x0a, 0x11, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x1c, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
0xca, 0xbb, 0x18, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5c,
0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42,
0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0a, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65,
0x52, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3d, 0x0a, 0x13,
0x44, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xb2, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x09,
0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x06, 0x55, 0x73, 0x65,
0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xb2, 0xbb, 0x18, 0x07, 0x75,
0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29,
0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x42, 0x0d, 0xb2, 0xbb, 0x18, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52,
0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x55, 0x73, 0x65,
0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xb2,
0xbb, 0x18, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x52, 0x0a,
0x55, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1c, 0x0a, 0x04, 0x52, 0x6f,
0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x08, 0xb2, 0xbb, 0x18, 0x04, 0x72, 0x6f,
0x6c, 0x65, 0x52, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x3e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x12, 0x26, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x10, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65,
0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x11, 0x4b, 0x69, 0x63, 0x6b,
0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a,
0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c,
0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x53, 0x70,
0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x4b, 0x69,
0x63, 0x6b, 0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22,
0x39, 0x0a, 0x0f, 0x51, 0x75, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x51, 0x75,
0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x42, 0x0a,
0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x2f, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x5f, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64,
0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62,
0x69, 0x7a, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44,
0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x22, 0x3e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55,
0x73, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70,
0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18,
0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65,
0x49, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x09, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72,
0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb,
0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08,
0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x42, 0x0a, 0xca, 0xbb, 0x18, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x52, 0x06,
0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x05, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x04,
0x52, 0x6f, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x13, 0xca, 0xbb, 0x18,
0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
0x52, 0x0d, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22,
0x3e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72,
0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x53,
0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22,
0x4d, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xca, 0xbb, 0x18, 0x0b, 0x69, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0xda, 0xbb, 0x18, 0x07, 0x24, 0x20, 0x21, 0x3d, 0x20,
0x27, 0x27, 0x52, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x47,
0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x12, 0x16, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca,
0xbb, 0x18, 0x02, 0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x45, 0x78, 0x69, 0x74, 0x53,
0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x45, 0x78,
0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x78, 0x0a,
0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x16, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61,
0x63, 0x65, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x06, 0x24, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x52,
0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72,
0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x15, 0xca, 0xbb, 0x18, 0x07, 0x75, 0x73,
0x65, 0x72, 0x5f, 0x69, 0x64, 0xda, 0xbb, 0x18, 0x06, 0x24, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x52,
0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76,
0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
@@ -512,20 +737,24 @@ func file_space_space_types_proto_rawDescGZIP() []byte {
return file_space_space_types_proto_rawDescData
}
var file_space_space_types_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_space_space_types_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_space_space_types_proto_goTypes = []interface{}{
(*ListSpaceUsersParams)(nil), // 0: space.ListSpaceUsersParams
(*SpaceUser)(nil), // 1: space.SpaceUser
(*ListSpaceUsersResult)(nil), // 2: space.ListSpaceUsersResult
(*KickOutUserParams)(nil), // 3: space.KickOutUserParams
(*KickOutUserResult)(nil), // 4: space.KickOutUserResult
(*QuitSpaceParams)(nil), // 5: space.QuitSpaceParams
(*QuitSpaceResult)(nil), // 6: space.QuitSpaceResult
(*JoinSpaceParams)(nil), // 7: space.JoinSpaceParams
(*JoinSpaceResult)(nil), // 8: space.JoinSpaceResult
(*CreateSpaceParams)(nil), // 0: space.CreateSpaceParams
(*CreateSpaceResult)(nil), // 1: space.CreateSpaceResult
(*DissolveSpaceParams)(nil), // 2: space.DissolveSpaceParams
(*DissolveSpaceResult)(nil), // 3: space.DissolveSpaceResult
(*ListSpaceUsersParams)(nil), // 4: space.ListSpaceUsersParams
(*SpaceUser)(nil), // 5: space.SpaceUser
(*ListSpaceUsersResult)(nil), // 6: space.ListSpaceUsersResult
(*JoinSpaceParams)(nil), // 7: space.JoinSpaceParams
(*JoinSpaceResult)(nil), // 8: space.JoinSpaceResult
(*ExitSpaceParams)(nil), // 9: space.ExitSpaceParams
(*ExitSpaceResult)(nil), // 10: space.ExitSpaceResult
(*RemoveSpaceUserParams)(nil), // 11: space.RemoveSpaceUserParams
(*RemoveSpaceUserResult)(nil), // 12: space.RemoveSpaceUserResult
}
var file_space_space_types_proto_depIdxs = []int32{
1, // 0: space.ListSpaceUsersResult.users:type_name -> space.SpaceUser
5, // 0: space.ListSpaceUsersResult.users:type_name -> space.SpaceUser
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
@@ -540,7 +769,7 @@ func file_space_space_types_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_space_space_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSpaceUsersParams); i {
switch v := v.(*CreateSpaceParams); i {
case 0:
return &v.state
case 1:
@@ -552,7 +781,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SpaceUser); i {
switch v := v.(*CreateSpaceResult); i {
case 0:
return &v.state
case 1:
@@ -564,7 +793,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSpaceUsersResult); i {
switch v := v.(*DissolveSpaceParams); i {
case 0:
return &v.state
case 1:
@@ -576,7 +805,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KickOutUserParams); i {
switch v := v.(*DissolveSpaceResult); i {
case 0:
return &v.state
case 1:
@@ -588,7 +817,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KickOutUserResult); i {
switch v := v.(*ListSpaceUsersParams); i {
case 0:
return &v.state
case 1:
@@ -600,7 +829,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QuitSpaceParams); i {
switch v := v.(*SpaceUser); i {
case 0:
return &v.state
case 1:
@@ -612,7 +841,7 @@ func file_space_space_types_proto_init() {
}
}
file_space_space_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QuitSpaceResult); i {
switch v := v.(*ListSpaceUsersResult); i {
case 0:
return &v.state
case 1:
@@ -647,6 +876,54 @@ func file_space_space_types_proto_init() {
return nil
}
}
file_space_space_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExitSpaceParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExitSpaceResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoveSpaceUserParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_types_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemoveSpaceUserResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -654,7 +931,7 @@ func file_space_space_types_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_space_space_types_proto_rawDesc,
NumEnums: 0,
NumMessages: 9,
NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},
@@ -1,669 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// source: space/space_user_types.proto
package space
import (
_ "allapp/biz/model/api"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// --- 空间用户列表 ---
type ListSpaceUsersParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" json:"SpaceId" query:"space_id"`
}
func (x *ListSpaceUsersParams) Reset() {
*x = ListSpaceUsersParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListSpaceUsersParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListSpaceUsersParams) ProtoMessage() {}
func (x *ListSpaceUsersParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListSpaceUsersParams.ProtoReflect.Descriptor instead.
func (*ListSpaceUsersParams) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{0}
}
func (x *ListSpaceUsersParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
type SpaceUser struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserId int64 `protobuf:"varint,1,opt,name=UserId,proto3" json:"UserId" query:"user_id"`
UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName" query:"user_name"`
UserAvatar string `protobuf:"bytes,3,opt,name=UserAvatar,proto3" json:"UserAvatar" query:"user_avatar"`
Role int32 `protobuf:"varint,4,opt,name=Role,proto3" json:"Role" query:"role"`
}
func (x *SpaceUser) Reset() {
*x = SpaceUser{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SpaceUser) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SpaceUser) ProtoMessage() {}
func (x *SpaceUser) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SpaceUser.ProtoReflect.Descriptor instead.
func (*SpaceUser) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{1}
}
func (x *SpaceUser) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
func (x *SpaceUser) GetUserName() string {
if x != nil {
return x.UserName
}
return ""
}
func (x *SpaceUser) GetUserAvatar() string {
if x != nil {
return x.UserAvatar
}
return ""
}
func (x *SpaceUser) GetRole() int32 {
if x != nil {
return x.Role
}
return 0
}
type ListSpaceUsersResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Users []*SpaceUser `protobuf:"bytes,1,rep,name=users,proto3" form:"users" json:"users" query:"users"`
}
func (x *ListSpaceUsersResult) Reset() {
*x = ListSpaceUsersResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListSpaceUsersResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListSpaceUsersResult) ProtoMessage() {}
func (x *ListSpaceUsersResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListSpaceUsersResult.ProtoReflect.Descriptor instead.
func (*ListSpaceUsersResult) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{2}
}
func (x *ListSpaceUsersResult) GetUsers() []*SpaceUser {
if x != nil {
return x.Users
}
return nil
}
// 踢出用户
type KickOutUserParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
UserId int64 `protobuf:"varint,2,opt,name=UserId,proto3" form:"user_id" json:"user_id"`
}
func (x *KickOutUserParams) Reset() {
*x = KickOutUserParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KickOutUserParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KickOutUserParams) ProtoMessage() {}
func (x *KickOutUserParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use KickOutUserParams.ProtoReflect.Descriptor instead.
func (*KickOutUserParams) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{3}
}
func (x *KickOutUserParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
func (x *KickOutUserParams) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
type KickOutUserResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *KickOutUserResult) Reset() {
*x = KickOutUserResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KickOutUserResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KickOutUserResult) ProtoMessage() {}
func (x *KickOutUserResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use KickOutUserResult.ProtoReflect.Descriptor instead.
func (*KickOutUserResult) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{4}
}
// 退出空间
type QuitSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
}
func (x *QuitSpaceParams) Reset() {
*x = QuitSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QuitSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QuitSpaceParams) ProtoMessage() {}
func (x *QuitSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QuitSpaceParams.ProtoReflect.Descriptor instead.
func (*QuitSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{5}
}
func (x *QuitSpaceParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
type QuitSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *QuitSpaceResult) Reset() {
*x = QuitSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QuitSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QuitSpaceResult) ProtoMessage() {}
func (x *QuitSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use QuitSpaceResult.ProtoReflect.Descriptor instead.
func (*QuitSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{6}
}
// 加入空间
type JoinSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SpaceId int64 `protobuf:"varint,1,opt,name=SpaceId,proto3" form:"space_id" json:"space_id"`
}
func (x *JoinSpaceParams) Reset() {
*x = JoinSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *JoinSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*JoinSpaceParams) ProtoMessage() {}
func (x *JoinSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use JoinSpaceParams.ProtoReflect.Descriptor instead.
func (*JoinSpaceParams) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{7}
}
func (x *JoinSpaceParams) GetSpaceId() int64 {
if x != nil {
return x.SpaceId
}
return 0
}
type JoinSpaceResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *JoinSpaceResult) Reset() {
*x = JoinSpaceResult{}
if protoimpl.UnsafeEnabled {
mi := &file_space_space_user_types_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *JoinSpaceResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*JoinSpaceResult) ProtoMessage() {}
func (x *JoinSpaceResult) ProtoReflect() protoreflect.Message {
mi := &file_space_space_user_types_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use JoinSpaceResult.ProtoReflect.Descriptor instead.
func (*JoinSpaceResult) Descriptor() ([]byte, []int) {
return file_space_space_user_types_proto_rawDescGZIP(), []int{8}
}
var File_space_space_user_types_proto protoreflect.FileDescriptor
var file_space_space_user_types_proto_rawDesc = []byte{
0x0a, 0x1c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x73,
0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05,
0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x22, 0x3e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65,
0x72, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63,
0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xb2, 0xbb, 0x18, 0x08, 0x73,
0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64,
0x22, 0xaa, 0x01, 0x0a, 0x09, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23,
0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b,
0xb2, 0xbb, 0x18, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x65,
0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xb2, 0xbb, 0x18, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f,
0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x42, 0x0f, 0xb2, 0xbb, 0x18, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x76, 0x61,
0x74, 0x61, 0x72, 0x52, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12,
0x1c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x08, 0xb2,
0xbb, 0x18, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x3e, 0x0a,
0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x70, 0x61,
0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x60, 0x0a,
0x11, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x55, 0x73,
0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xca, 0xbb, 0x18, 0x07,
0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22,
0x13, 0x0a, 0x11, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x22, 0x39, 0x0a, 0x0f, 0x51, 0x75, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63,
0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70,
0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22,
0x11, 0x0a, 0x0f, 0x51, 0x75, 0x69, 0x74, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x22, 0x39, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xbb, 0x18, 0x08, 0x73, 0x70, 0x61, 0x63,
0x65, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x11, 0x0a,
0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x42, 0x18, 0x5a, 0x16, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_space_space_user_types_proto_rawDescOnce sync.Once
file_space_space_user_types_proto_rawDescData = file_space_space_user_types_proto_rawDesc
)
func file_space_space_user_types_proto_rawDescGZIP() []byte {
file_space_space_user_types_proto_rawDescOnce.Do(func() {
file_space_space_user_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_space_space_user_types_proto_rawDescData)
})
return file_space_space_user_types_proto_rawDescData
}
var file_space_space_user_types_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_space_space_user_types_proto_goTypes = []interface{}{
(*ListSpaceUsersParams)(nil), // 0: space.ListSpaceUsersParams
(*SpaceUser)(nil), // 1: space.SpaceUser
(*ListSpaceUsersResult)(nil), // 2: space.ListSpaceUsersResult
(*KickOutUserParams)(nil), // 3: space.KickOutUserParams
(*KickOutUserResult)(nil), // 4: space.KickOutUserResult
(*QuitSpaceParams)(nil), // 5: space.QuitSpaceParams
(*QuitSpaceResult)(nil), // 6: space.QuitSpaceResult
(*JoinSpaceParams)(nil), // 7: space.JoinSpaceParams
(*JoinSpaceResult)(nil), // 8: space.JoinSpaceResult
}
var file_space_space_user_types_proto_depIdxs = []int32{
1, // 0: space.ListSpaceUsersResult.users:type_name -> space.SpaceUser
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_space_space_user_types_proto_init() }
func file_space_space_user_types_proto_init() {
if File_space_space_user_types_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_space_space_user_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSpaceUsersParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SpaceUser); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSpaceUsersResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KickOutUserParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*KickOutUserResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QuitSpaceParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QuitSpaceResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JoinSpaceParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_space_space_user_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JoinSpaceResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_space_space_user_types_proto_rawDesc,
NumEnums: 0,
NumMessages: 9,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_space_space_user_types_proto_goTypes,
DependencyIndexes: file_space_space_user_types_proto_depIdxs,
MessageInfos: file_space_space_user_types_proto_msgTypes,
}.Build()
File_space_space_user_types_proto = out.File
file_space_space_user_types_proto_rawDesc = nil
file_space_space_user_types_proto_goTypes = nil
file_space_space_user_types_proto_depIdxs = nil
}
+11 -12
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// protoc v6.33.1
// source: user.proto
package user
@@ -26,24 +26,23 @@ var file_user_proto_rawDesc = []byte{
0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x75, 0x73,
0x65, 0x72, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x75,
0x73, 0x65, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x32, 0x69, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53,
0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65,
0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x10, 0xca,
0xc1, 0x18, 0x0c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42,
0x72, 0x6f, 0x74, 0x6f, 0x32, 0x59, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70,
0x61, 0x63, 0x65, 0x12, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73,
0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0f, 0x2e,
0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0x0f,
0xca, 0xc1, 0x18, 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42,
0x17, 0x5a, 0x15, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_user_proto_goTypes = []interface{}{
(*ListUserSpacesParams)(nil), // 0: user.ListUserSpacesParams
(*ListUserSpacesResult)(nil), // 1: user.ListUserSpacesResult
(*GetUserSpaceParams)(nil), // 0: user.GetUserSpaceParams
(*UserSpace)(nil), // 1: user.UserSpace
}
var file_user_proto_depIdxs = []int32{
0, // 0: user.UserService.ListUserSpaces:input_type -> user.ListUserSpacesParams
1, // 1: user.UserService.ListUserSpaces:output_type -> user.ListUserSpacesResult
0, // 0: user.UserService.GetUserSpace:input_type -> user.GetUserSpaceParams
1, // 1: user.UserService.GetUserSpace:output_type -> user.UserSpace
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v4.25.3
// protoc v6.33.1
// source: user/user_types.proto
package user
@@ -22,14 +22,14 @@ const (
)
// --- 用户下的空间列表 ---
type ListUserSpacesParams struct {
type GetUserSpaceParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ListUserSpacesParams) Reset() {
*x = ListUserSpacesParams{}
func (x *GetUserSpaceParams) Reset() {
*x = GetUserSpaceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -37,13 +37,13 @@ func (x *ListUserSpacesParams) Reset() {
}
}
func (x *ListUserSpacesParams) String() string {
func (x *GetUserSpaceParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListUserSpacesParams) ProtoMessage() {}
func (*GetUserSpaceParams) ProtoMessage() {}
func (x *ListUserSpacesParams) ProtoReflect() protoreflect.Message {
func (x *GetUserSpaceParams) ProtoReflect() protoreflect.Message {
mi := &file_user_user_types_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -55,8 +55,8 @@ func (x *ListUserSpacesParams) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use ListUserSpacesParams.ProtoReflect.Descriptor instead.
func (*ListUserSpacesParams) Descriptor() ([]byte, []int) {
// Deprecated: Use GetUserSpaceParams.ProtoReflect.Descriptor instead.
func (*GetUserSpaceParams) Descriptor() ([]byte, []int) {
return file_user_user_types_proto_rawDescGZIP(), []int{0}
}
@@ -131,77 +131,25 @@ func (x *UserSpace) GetRole() int32 {
return 0
}
type ListUserSpacesResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Spaces []*UserSpace `protobuf:"bytes,1,rep,name=Spaces,proto3" form:"spaces" json:"spaces"`
}
func (x *ListUserSpacesResult) Reset() {
*x = ListUserSpacesResult{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListUserSpacesResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListUserSpacesResult) ProtoMessage() {}
func (x *ListUserSpacesResult) ProtoReflect() protoreflect.Message {
mi := &file_user_user_types_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListUserSpacesResult.ProtoReflect.Descriptor instead.
func (*ListUserSpacesResult) Descriptor() ([]byte, []int) {
return file_user_user_types_proto_rawDescGZIP(), []int{2}
}
func (x *ListUserSpacesResult) GetSpaces() []*UserSpace {
if x != nil {
return x.Spaces
}
return nil
}
var File_user_user_types_proto protoreflect.FileDescriptor
var file_user_user_types_proto_rawDesc = []byte{
0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x09, 0x61,
0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x22, 0x90, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02,
0x69, 0x64, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f,
0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x69, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x05, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x52,
0x6f, 0x6c, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53,
0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x53,
0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x75, 0x73,
0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0a, 0xca, 0xbb,
0x18, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x06, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73,
0x42, 0x17, 0x5a, 0x15, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x6d,
0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55,
0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x90,
0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x02,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xca, 0xbb, 0x18, 0x02, 0x69, 0x64,
0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xca, 0xbb, 0x18, 0x0b, 0x69, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43,
0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x42, 0x08, 0xca, 0xbb, 0x18, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x52, 0x6f, 0x6c,
0x65, 0x42, 0x17, 0x5a, 0x15, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x2f,
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
@@ -216,19 +164,17 @@ func file_user_user_types_proto_rawDescGZIP() []byte {
return file_user_user_types_proto_rawDescData
}
var file_user_user_types_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_user_user_types_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_user_user_types_proto_goTypes = []interface{}{
(*ListUserSpacesParams)(nil), // 0: user.ListUserSpacesParams
(*UserSpace)(nil), // 1: user.UserSpace
(*ListUserSpacesResult)(nil), // 2: user.ListUserSpacesResult
(*GetUserSpaceParams)(nil), // 0: user.GetUserSpaceParams
(*UserSpace)(nil), // 1: user.UserSpace
}
var file_user_user_types_proto_depIdxs = []int32{
1, // 0: user.ListUserSpacesResult.Spaces:type_name -> user.UserSpace
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_user_user_types_proto_init() }
@@ -238,7 +184,7 @@ func file_user_user_types_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_user_user_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListUserSpacesParams); i {
switch v := v.(*GetUserSpaceParams); i {
case 0:
return &v.state
case 1:
@@ -261,18 +207,6 @@ func file_user_user_types_proto_init() {
return nil
}
}
file_user_user_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListUserSpacesResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -280,7 +214,7 @@ func file_user_user_types_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_user_user_types_proto_rawDesc,
NumEnums: 0,
NumMessages: 3,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
@@ -39,16 +39,11 @@ func Auth() app.HandlerFunc {
}
// 校验 token
token := strings.TrimSpace(string(c.GetHeader("token")))
if token == "" {
response.Fail(c).Code(response.HttpCode.Unauthorized).Send()
c.Abort()
return
}
token := strings.TrimSpace(string(c.GetHeader("Token")))
verifyToken, flag := jwtx.VerifyToken(token)
if !flag {
response.Fail(c).Code(response.HttpCode.RefreshToken).Send()
response.Fail(c).Code(response.HttpCode.Unauthorized).Send()
c.Abort()
return
}
@@ -56,18 +51,18 @@ func Auth() app.HandlerFunc {
userID := verifyToken.UserID
// 获取 header 中的 spaceid
spaceIDStr := strings.TrimSpace(string(c.GetHeader("spaceid")))
spaceIDStr := strings.TrimSpace(string(c.GetHeader("X-Space-Id")))
spaceID, err := strconv.ParseInt(spaceIDStr, 10, 64)
if err != nil || spaceID == 0 {
response.Fail(c).Message("缺少有效 spaceid").Send()
response.Fail(c).Code(response.HttpCode.ErrSpaceRequired).Message("请先选择空间").Send()
c.Abort()
return
}
// 判断用户是否在该空间
inSpace, err := redisx.HasUserSpace(ctx, userID, spaceID)
inSpace, err := redisx.InSpace(ctx, userID, spaceID)
if err != nil || !inSpace {
response.Fail(c).Message("无权限访问该空间").Send()
response.Fail(c).Code(response.HttpCode.ErrSpaceRequired).Message("无权限访问该空间").Send()
c.Abort()
return
}
@@ -16,51 +16,6 @@ func _spaceMw() []app.HandlerFunc {
return nil
}
func _insertspaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _deletespaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _space_userMw() []app.HandlerFunc {
// your code...
return nil
}
func _exitspaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _queryspaceusersMw() []app.HandlerFunc {
// your code...
return nil
}
func _listspaceusersMw() []app.HandlerFunc {
// your code...
return nil
}
func _removespaceuserMw() []app.HandlerFunc {
// your code...
return nil
}
func _updatespaceuserroleMw() []app.HandlerFunc {
// your code...
return nil
}
func _joinspaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _createspaceMw() []app.HandlerFunc {
// your code...
return nil
@@ -71,42 +26,22 @@ func _dissolvespaceMw() []app.HandlerFunc {
return nil
}
func _userMw() []app.HandlerFunc {
func _exitspaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _getuserspaceMw() []app.HandlerFunc {
func _joinspaceMw() []app.HandlerFunc {
// your code...
return nil
}
func _enterspaceMw() []app.HandlerFunc {
func _removespaceuserMw() []app.HandlerFunc {
// your code...
return nil
}
func _user0Mw() []app.HandlerFunc {
// your code...
return nil
}
func _listuserspacesMw() []app.HandlerFunc {
// your code...
return nil
}
func __7bspaceid_7dMw() []app.HandlerFunc {
// your code...
return nil
}
func _kickoutuserMw() []app.HandlerFunc {
// your code...
return nil
}
func _quitspaceMw() []app.HandlerFunc {
func _listspaceusersMw() []app.HandlerFunc {
// your code...
return nil
}
@@ -19,9 +19,11 @@ func Register(r *server.Hertz) {
root := r.Group("/", rootMw()...)
{
_space := root.Group("/space", _spaceMw()...)
_space.POST("/create", append(_createspaceMw(), space.CreateSpace)...)
_space.POST("/dissolve", append(_dissolvespaceMw(), space.DissolveSpace)...)
_space.POST("/exit", append(_exitspaceMw(), space.ExitSpace)...)
_space.POST("/join", append(_joinspaceMw(), space.JoinSpace)...)
_space.POST("/kick", append(_kickoutuserMw(), space.KickOutUser)...)
_space.POST("/quit", append(_quitspaceMw(), space.QuitSpace)...)
_space.POST("/remove", append(_removespaceuserMw(), space.RemoveSpaceUser)...)
_space.POST("/users", append(_listspaceusersMw(), space.ListSpaceUsers)...)
}
}
@@ -20,3 +20,8 @@ func _listuserspacesMw() []app.HandlerFunc {
// your code...
return nil
}
func _getuserspaceMw() []app.HandlerFunc {
// your code...
return nil
}
@@ -19,6 +19,6 @@ func Register(r *server.Hertz) {
root := r.Group("/", rootMw()...)
{
_user := root.Group("/user", _userMw()...)
_user.GET("/spaces", append(_listuserspacesMw(), user.ListUserSpaces)...)
_user.GET("/space", append(_getuserspaceMw(), user.GetUserSpace)...)
}
}
+3 -3
View File
@@ -1,8 +1,8 @@
-- 新增分享空间
-- name: InsertSpace :exec
INSERT INTO space (
id,invite_code,create_time,update_time
) VALUES ($1,$2,NOW(),NOW());
id,name,invite_code,create_time,update_time
) VALUES ($1,$2,$3,NOW(),NOW());
-- 删除分享空间
-- name: DeleteSpace :exec
@@ -14,7 +14,7 @@ SELECT * FROM space WHERE id = $1;
-- 查询用户所在的空间信息
-- name: GetSpaceByUserId :one
SELECT s.*
SELECT s.*, m.role
FROM space s
JOIN space_user m
ON s.id = m.space_id
+21 -28
View File
@@ -1,51 +1,44 @@
-- name: ListUserSpaces :many
SELECT s.id, s.name, s.invite_code, su.role
FROM space s
JOIN space_user su ON s.id = su.space_id
WHERE su.user_id = $1;
-- 插入空间用户
-- name: InsertSpaceUser :exec
INSERT INTO space_user(id,space_id,user_id,role,join_time)
VALUES ($1,$2,$3,$4,NOW());
-- name: ListSpaceUsers :many
SELECT
u.id AS user_id,
u.username AS user_name,
u.avatar AS user_avatar,
u.last_login_time AS last_login_time,
su.role
FROM space_user su
INNER JOIN "user" u ON su.user_id = u.id
WHERE su.space_id = $1
ORDER BY su.role DESC, u.username ASC;
-- name: HasUserInSpace :one
SELECT EXISTS (
SELECT 1
FROM space_user
WHERE user_id = $1 AND space_id = $2
);
-- 获取空间用户
-- name: GetSpaceUser :one
SELECT *
FROM space_user
WHERE user_id = $1 AND space_id = $2;
WHERE user_id = $1;
-- 插入空间用户
-- name: InsertSpaceUser :exec
INSERT INTO space_user(id,space_id,user_id,role,join_time)
VALUES ($1,$2,$3,$4,NOW());
-- 修改空间用户
-- name: DeleteSpaceUser :exec
-- 删除某个用户在所有空间的关系
-- name: DeleteSpaceUserByUserID :exec
DELETE FROM space_user
WHERE user_id = $1 AND space_id = $2;
WHERE user_id = $1;
-- 删除某个用户在指定空间中的关系
-- name: DeleteSpaceUserBySpaceIDAndUserID :exec
DELETE FROM space_user
WHERE space_id = $1
AND user_id = $2;
-- 删除某个空间下的所有用户
-- name: DeleteSpaceUsersBySpaceID :exec
DELETE FROM space_user
WHERE space_id = $1;
-- 修改角色
-- name: UpdateSpaceUserRole :exec
UPDATE space_user
SET role = $1
WHERE user_id = $2 AND space_id = $3;
-- 获取空间下的人数
-- name: CountUsersInSpace :one
SELECT COUNT(id)
FROM space_user
WHERE space_id = $1;
WHERE user_id = $2;
+19 -6
View File
@@ -7,6 +7,8 @@ package repo
import (
"context"
"github.com/jackc/pgx/v5/pgtype"
)
const deleteSpace = `-- name: DeleteSpace :exec
@@ -56,40 +58,51 @@ func (q *Queries) GetSpaceById(ctx context.Context, id int64) (Space, error) {
}
const getSpaceByUserId = `-- name: GetSpaceByUserId :one
SELECT s.id, s.name, s.invite_code, s.create_time, s.update_time
SELECT s.id, s.name, s.invite_code, s.create_time, s.update_time, m.role
FROM space s
JOIN space_user m
ON s.id = m.space_id
WHERE m.user_id = $1
`
type GetSpaceByUserIdRow struct {
ID int64
Name pgtype.Text
InviteCode string
CreateTime pgtype.Timestamp
UpdateTime pgtype.Timestamp
Role int32
}
// 查询用户所在的空间信息
func (q *Queries) GetSpaceByUserId(ctx context.Context, userID int64) (Space, error) {
func (q *Queries) GetSpaceByUserId(ctx context.Context, userID int64) (GetSpaceByUserIdRow, error) {
row := q.db.QueryRow(ctx, getSpaceByUserId, userID)
var i Space
var i GetSpaceByUserIdRow
err := row.Scan(
&i.ID,
&i.Name,
&i.InviteCode,
&i.CreateTime,
&i.UpdateTime,
&i.Role,
)
return i, err
}
const insertSpace = `-- name: InsertSpace :exec
INSERT INTO space (
id,invite_code,create_time,update_time
) VALUES ($1,$2,NOW(),NOW())
id,name,invite_code,create_time,update_time
) VALUES ($1,$2,$3,NOW(),NOW())
`
type InsertSpaceParams struct {
ID int64
Name pgtype.Text
InviteCode string
}
// 新增分享空间
func (q *Queries) InsertSpace(ctx context.Context, arg InsertSpaceParams) error {
_, err := q.db.Exec(ctx, insertSpace, arg.ID, arg.InviteCode)
_, err := q.db.Exec(ctx, insertSpace, arg.ID, arg.Name, arg.InviteCode)
return err
}
+47 -100
View File
@@ -11,50 +11,54 @@ import (
"github.com/jackc/pgx/v5/pgtype"
)
const countUsersInSpace = `-- name: CountUsersInSpace :one
SELECT COUNT(id)
FROM space_user
const deleteSpaceUserBySpaceIDAndUserID = `-- name: DeleteSpaceUserBySpaceIDAndUserID :exec
DELETE FROM space_user
WHERE space_id = $1
AND user_id = $2
`
type DeleteSpaceUserBySpaceIDAndUserIDParams struct {
SpaceID int64
UserID int64
}
// 删除某个用户在指定空间中的关系
func (q *Queries) DeleteSpaceUserBySpaceIDAndUserID(ctx context.Context, arg DeleteSpaceUserBySpaceIDAndUserIDParams) error {
_, err := q.db.Exec(ctx, deleteSpaceUserBySpaceIDAndUserID, arg.SpaceID, arg.UserID)
return err
}
const deleteSpaceUserByUserID = `-- name: DeleteSpaceUserByUserID :exec
DELETE FROM space_user
WHERE user_id = $1
`
// 删除某个用户在所有空间的关系
func (q *Queries) DeleteSpaceUserByUserID(ctx context.Context, userID int64) error {
_, err := q.db.Exec(ctx, deleteSpaceUserByUserID, userID)
return err
}
const deleteSpaceUsersBySpaceID = `-- name: DeleteSpaceUsersBySpaceID :exec
DELETE FROM space_user
WHERE space_id = $1
`
// 获取空间下的人数
func (q *Queries) CountUsersInSpace(ctx context.Context, spaceID int64) (int64, error) {
row := q.db.QueryRow(ctx, countUsersInSpace, spaceID)
var count int64
err := row.Scan(&count)
return count, err
}
const deleteSpaceUser = `-- name: DeleteSpaceUser :exec
DELETE FROM space_user
WHERE user_id = $1 AND space_id = $2
`
type DeleteSpaceUserParams struct {
UserID int64
SpaceID int64
}
// 修改空间用户
func (q *Queries) DeleteSpaceUser(ctx context.Context, arg DeleteSpaceUserParams) error {
_, err := q.db.Exec(ctx, deleteSpaceUser, arg.UserID, arg.SpaceID)
// 删除某个空间下的所有用户
func (q *Queries) DeleteSpaceUsersBySpaceID(ctx context.Context, spaceID int64) error {
_, err := q.db.Exec(ctx, deleteSpaceUsersBySpaceID, spaceID)
return err
}
const getSpaceUser = `-- name: GetSpaceUser :one
SELECT id, space_id, user_id, role, join_time
FROM space_user
WHERE user_id = $1 AND space_id = $2
WHERE user_id = $1
`
type GetSpaceUserParams struct {
UserID int64
SpaceID int64
}
// 获取空间用户
func (q *Queries) GetSpaceUser(ctx context.Context, arg GetSpaceUserParams) (SpaceUser, error) {
row := q.db.QueryRow(ctx, getSpaceUser, arg.UserID, arg.SpaceID)
func (q *Queries) GetSpaceUser(ctx context.Context, userID int64) (SpaceUser, error) {
row := q.db.QueryRow(ctx, getSpaceUser, userID)
var i SpaceUser
err := row.Scan(
&i.ID,
@@ -66,26 +70,6 @@ func (q *Queries) GetSpaceUser(ctx context.Context, arg GetSpaceUserParams) (Spa
return i, err
}
const hasUserInSpace = `-- name: HasUserInSpace :one
SELECT EXISTS (
SELECT 1
FROM space_user
WHERE user_id = $1 AND space_id = $2
)
`
type HasUserInSpaceParams struct {
UserID int64
SpaceID int64
}
func (q *Queries) HasUserInSpace(ctx context.Context, arg HasUserInSpaceParams) (bool, error) {
row := q.db.QueryRow(ctx, hasUserInSpace, arg.UserID, arg.SpaceID)
var exists bool
err := row.Scan(&exists)
return exists, err
}
const insertSpaceUser = `-- name: InsertSpaceUser :exec
INSERT INTO space_user(id,space_id,user_id,role,join_time)
VALUES ($1,$2,$3,$4,NOW())
@@ -114,6 +98,7 @@ SELECT
u.id AS user_id,
u.username AS user_name,
u.avatar AS user_avatar,
u.last_login_time AS last_login_time,
su.role
FROM space_user su
INNER JOIN "user" u ON su.user_id = u.id
@@ -122,10 +107,11 @@ ORDER BY su.role DESC, u.username ASC
`
type ListSpaceUsersRow struct {
UserID int64
UserName string
UserAvatar string
Role int32
UserID int64
UserName string
UserAvatar string
LastLoginTime pgtype.Timestamptz
Role int32
}
func (q *Queries) ListSpaceUsers(ctx context.Context, spaceID int64) ([]ListSpaceUsersRow, error) {
@@ -141,45 +127,7 @@ func (q *Queries) ListSpaceUsers(ctx context.Context, spaceID int64) ([]ListSpac
&i.UserID,
&i.UserName,
&i.UserAvatar,
&i.Role,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listUserSpaces = `-- name: ListUserSpaces :many
SELECT s.id, s.name, s.invite_code, su.role
FROM space s
JOIN space_user su ON s.id = su.space_id
WHERE su.user_id = $1
`
type ListUserSpacesRow struct {
ID int64
Name pgtype.Text
InviteCode string
Role int32
}
func (q *Queries) ListUserSpaces(ctx context.Context, userID int64) ([]ListUserSpacesRow, error) {
rows, err := q.db.Query(ctx, listUserSpaces, userID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ListUserSpacesRow
for rows.Next() {
var i ListUserSpacesRow
if err := rows.Scan(
&i.ID,
&i.Name,
&i.InviteCode,
&i.LastLoginTime,
&i.Role,
); err != nil {
return nil, err
@@ -195,17 +143,16 @@ func (q *Queries) ListUserSpaces(ctx context.Context, userID int64) ([]ListUserS
const updateSpaceUserRole = `-- name: UpdateSpaceUserRole :exec
UPDATE space_user
SET role = $1
WHERE user_id = $2 AND space_id = $3
WHERE user_id = $2
`
type UpdateSpaceUserRoleParams struct {
Role int32
UserID int64
SpaceID int64
Role int32
UserID int64
}
// 修改角色
func (q *Queries) UpdateSpaceUserRole(ctx context.Context, arg UpdateSpaceUserRoleParams) error {
_, err := q.db.Exec(ctx, updateSpaceUserRole, arg.Role, arg.UserID, arg.SpaceID)
_, err := q.db.Exec(ctx, updateSpaceUserRole, arg.Role, arg.UserID)
return err
}
+26 -13
View File
@@ -9,20 +9,33 @@ import "api.proto";
import "space/space_types.proto";
service SpaceService {
// 踢出用户
rpc KickOutUser(KickOutUserParams) returns (KickOutUserResult) {
option (api.post) = "/space/kick";
}
// 用户退出当前空间
rpc QuitSpace(QuitSpaceParams) returns (QuitSpaceResult) {
option (api.post) = "/space/quit";
}
// 用户加入其他空间
// 创建空间
rpc CreateSpace(CreateSpaceParams) returns (CreateSpaceParams){
option (api.post) = '/space/create';
};
// 解散空间
rpc DissolveSpace(DissolveSpaceParams) returns (DissolveSpaceResult){
option (api.post) = '/space/dissolve';
};
// 退出空间
rpc ExitSpace(ExitSpaceParams) returns (ExitSpaceResult){
option (api.post) = '/space/exit';
};
// 获取空间用户列表
rpc ListSpaceUsers(ListSpaceUsersParams) returns (ListSpaceUsersResult){
option (api.post) = '/space/users';
};
// 踢出某人
rpc RemoveSpaceUser(RemoveSpaceUserParams) returns (RemoveSpaceUserResult){
option (api.post) = '/space/remove';
};
// 加入空间
rpc JoinSpace(JoinSpaceParams) returns (JoinSpaceResult) {
option (api.post) = "/space/join";
}
// 获取某个空间下的用户列表
rpc ListSpaceUsers(ListSpaceUsersParams) returns (ListSpaceUsersResult) {
option (api.post) = "/space/users";
};
}
@@ -6,39 +6,69 @@ option go_package = "space";
import "api.proto";
// --- 空间用户列表 ---
// 创建空间
message CreateSpaceParams {
string Name = 1 [(api.body)="name"];
}
message CreateSpaceResult {
int64 Id = 1 [(api.body)="id"];
string InviteCode = 2 [(api.body)="invite_code"];
}
// 解散空间
message DissolveSpaceParams {
int64 SpaceId = 1 [(api.body) = "space_id"];
}
message DissolveSpaceResult {
}
// 获取空间下的成员
message ListSpaceUsersParams {
int64 SpaceId = 1 [(api.query) = "space_id"];
int64 SpaceId = 1 [(api.body)="space_id"];
}
message SpaceUser {
int64 UserId = 1 [(api.query) = "user_id"];
string UserName = 2 [(api.query) = "user_name"];
string UserAvatar= 3 [(api.query) = "user_avatar"];
int32 Role = 4 [(api.query) = "role"];
int64 Id = 1 [(api.body)="id"];
string Username = 2 [(api.body)="username"];
string Avatar = 3 [(api.body)="avatar"];
int32 Role = 4 [(api.body)="role"];
int64 LastLoginTime = 5 [(api.body)="last_login_time"];
}
message ListSpaceUsersResult {
repeated SpaceUser users = 1;
}
// 踢出用户
message KickOutUserParams {
int64 SpaceId = 1 [(api.body) = "space_id"];
int64 UserId = 2 [(api.body) = "user_id"];
}
message KickOutUserResult {}
// 退出空间
message QuitSpaceParams {
int64 SpaceId = 1 [(api.body) = "space_id"];
}
message QuitSpaceResult {}
// 加入空间
message JoinSpaceParams {
string InviteCode = 1 [(api.body) = "invite_code"];
string InviteCode = 1 [(api.body)="invite_code",(api.vd)="$ != ''"]; // 邀请码
}
message JoinSpaceResult {
int64 Id = 1 [(api.body)="id"];
string Name = 2 [(api.body)="name"];
}
// 退出空间
message ExitSpaceParams {
}
message ExitSpaceResult {
}
// 踢出成员
message RemoveSpaceUserParams {
int64 SpaceId = 1 [(api.body) = "space_id",(api.vd)="$ != 0"];
int64 UserId = 2 [(api.body) = "user_id",(api.vd)="$ != 0"];
}
message RemoveSpaceUserResult {
}
message JoinSpaceResult {}
+2 -2
View File
@@ -10,7 +10,7 @@ import "user/user_types.proto";
service UserService {
// 获取当前用户所属的所有空间
rpc ListUserSpaces(ListUserSpacesParams) returns (ListUserSpacesResult) {
option (api.get) = "/user/spaces";
rpc GetUserSpace(GetUserSpaceParams) returns (UserSpace) {
option (api.get) = "/user/space";
};
}
@@ -7,7 +7,7 @@ option go_package = "user";
import "api.proto";
// --- 用户下的空间列表 ---
message ListUserSpacesParams {}
message GetUserSpaceParams {}
message UserSpace {
int64 Id = 1 [(api.body)="id"];
@@ -16,6 +16,3 @@ message UserSpace {
int32 Role = 4 [(api.body)="role"];
}
message ListUserSpacesResult {
repeated UserSpace Spaces = 1 [(api.body)="spaces"];
}
@@ -129,6 +129,13 @@ func TimestampToMillis(ts pgtype.Timestamp) int64 {
return ts.Time.UnixMilli()
}
func TimestamptzToMillis(ts pgtype.Timestamptz) int64 {
if !ts.Valid {
return 0
}
return ts.Time.UnixMilli()
}
func DateToString(d pgtype.Date) string {
if !d.Valid {
return ""
@@ -17,15 +17,17 @@ type Result struct {
// HttpCode 响应状态码
var HttpCode = struct {
Success int
Unauthorized int
Fail int
RefreshToken int
Success int
Unauthorized int
Fail int
ErrSpaceRequired int
ErrSpaceNoPermission int
}{
Success: 200,
Unauthorized: 401,
Fail: 500,
RefreshToken: 402,
Success: 200,
Unauthorized: 401,
Fail: 500,
ErrSpaceRequired: 501,
ErrSpaceNoPermission: 502,
}
// Builder 响应构建器
@@ -1,12 +1,20 @@
import type { CreateSpaceParams, CreateSpaceResult, DissolveSpaceParams, DissolveSpaceResult } from '@/types/space/space'
import type { JoinSpaceParams, KickOutUserParams, ListSpaceUsersResult } from '@/types/space/space'
import alovaInstance from '../../index'
const API_PREFIX = '/space'
export function createSpaceApi(params: CreateSpaceParams) {
return alovaInstance.Post<ResponseData<CreateSpaceResult>>(`${API_PREFIX}/create`, params)
export function joinSpaceApi(params: JoinSpaceParams) {
return alovaInstance.Post<ResponseData<void>>(`${API_PREFIX}/join`, params)
}
export function dissolveSpaceApi(params: DissolveSpaceParams) {
return alovaInstance.Post<ResponseData<DissolveSpaceResult>>(`${API_PREFIX}/dissolve`, params)
export function kickOutUserApi(params: KickOutUserParams) {
return alovaInstance.Post<ResponseData<void>>(`${API_PREFIX}/kick`, params)
}
export function quitSpaceApi() {
return alovaInstance.Post<ResponseData<void>>(`${API_PREFIX}/quit`)
}
export function listSpaceUsersApi() {
return alovaInstance.Post<ResponseData<ListSpaceUsersResult>>(`${API_PREFIX}/users`)
}
@@ -1,33 +0,0 @@
import type {
ExitSpaceParams,
ExitSpaceResult,
JoinSpaceParams,
JoinSpaceResult,
ListSpaceUsersParams,
ListSpaceUsersResult,
RemoveSpaceUserParams,
RemoveSpaceUserResult,
} from '@/types/space/spaceUser'
import alovaInstance from '../../index'
const API_PREFIX = '/space/user'
export function getUserSpaceApi() {
return alovaInstance.Get<ResponseData<UserSpace | null>>(`${API_PREFIX}/get`)
}
export function exitSpaceApi(params: ExitSpaceParams) {
return alovaInstance.Post<ResponseData<ExitSpaceResult>>(`${API_PREFIX}/exit`, params)
}
export function joinSpaceApi(params: JoinSpaceParams) {
return alovaInstance.Post<ResponseData<JoinSpaceResult>>(`${API_PREFIX}/join`, params)
}
export function listSpaceUsersApi(params: ListSpaceUsersParams) {
return alovaInstance.Post<ResponseData<ListSpaceUsersResult>>(`${API_PREFIX}/list`, params)
}
export function removeSpaceUserApi(params: RemoveSpaceUserParams) {
return alovaInstance.Post<ResponseData<RemoveSpaceUserResult>>(`${API_PREFIX}/remove`, params)
}
@@ -0,0 +1,8 @@
import type { ListUserSpacesResult } from '@/types/user'
import alovaInstance from '../index'
const API_PREFIX = '/user'
export function listUserSpacesApi() {
return alovaInstance.Post<ResponseData<ListUserSpacesResult>>(`${API_PREFIX}/spaces`)
}
+25 -12
View File
@@ -1,5 +1,6 @@
import type { Method } from 'alova'
import type { AxiosError } from 'axios'
import type { ListUserSpacesResult } from '@/types/user'
import { axiosRequestAdapter } from '@alova/adapter-axios'
import { createAlova } from 'alova'
import { useNavStore } from '@/store/navigation'
@@ -11,12 +12,13 @@ enum HttpCode {
Success = 200,
Unauthorized = 401,
Fail = 500,
ErrSpaceRequired = 501,
ErrSpaceNoPermission = 502,
}
// 仅保留「无需登录」接口
const WhiteList = [
'/auth/login/**',
'/auth/register/**',
]
function isWhiteListed(url: string) {
@@ -30,14 +32,14 @@ function isWhiteListed(url: string) {
}
const alovaInstance = createAlova({
// baseURL: 'http://192.168.5.6:8086/app',
baseURL: 'http://192.168.1.137:8086/app',
baseURL: 'http://192.168.5.6:8086/app',
// baseURL: 'http://192.168.1.137:8086/app',
requestAdapter: axiosRequestAdapter(),
timeout: 5000,
cacheFor: null,
responded: {
onSuccess: async (response, _method: Method) => {
onSuccess: async (response, method: Method) => {
const resData = response.data as ResponseData<any>
const result = {
@@ -45,17 +47,28 @@ const alovaInstance = createAlova({
isSuccess: resData.code === HttpCode.Success,
}
/**
* 登录态失效:
* - 清空本地状态
* - 跳转登录页
* - 不做 token 刷新、不重试请求
*/
if (resData.code === HttpCode.Unauthorized) {
useUserStore.getState().clear()
useNavStore.getState().navigateToAuth()
return Promise.reject(new Error('登录已失效'))
}
else if (resData.code === HttpCode.ErrSpaceRequired || resData.code === HttpCode.ErrSpaceNoPermission) {
if (method.meta?.spaceRetried)
return Promise.reject(new Error('space retry failed'))
method.meta = { ...method.meta, spaceRetried: true }
const res = await alovaInstance.Post<ResponseData<ListUserSpacesResult>>('/user/spaces').send()
if (!res.isSuccess || res.data.spaces.length === 0)
return Promise.reject(new Error('没有可用空间,请刷新后再试'))
const defaultSpace = res.data.spaces[0]
useSpaceStore.getState().setUserSpace(defaultSpace)
method.config.headers['X-Space-Id'] = defaultSpace.id
return method.send()
}
return result
},
@@ -111,12 +124,12 @@ const alovaInstance = createAlova({
}
// 注入 JWT
method.config.headers.token = userStore.userInfo!.token
method.config.headers.Token = userStore.userInfo!.token
// 注入 space 信息(如果存在)
const userSpace = useSpaceStore.getState().userSpace
if (userSpace) {
method.config.headers['x-space-id'] = userSpace.space_id
method.config.headers['X-Space-Id'] = userSpace.id
}
},
})
+2 -2
View File
@@ -17,8 +17,8 @@ declare global {
}
interface UserSpace {
space_id: number
space_name: string
id: number
name: string
invite_code: string
role: number
}
+9 -11
View File
@@ -3,22 +3,20 @@ export interface JoinSpaceParams {
invite_code: string
}
export interface JoinSpaceResult {
}
// 踢出用户
export interface KickOutUserParams {
space_id: number
user_id: number
}
export interface KickOutUserResult {}
// 退出空间
export interface QuitSpaceParams {
space_id: number
// 空间用户列表
export interface SpaceUser {
user_id: number
user_name: number
user_avatar: string
role: number
}
export interface QuitSpaceResult {}
export interface ListSpaceUsersResult {
users: SpaceUser[]
}
@@ -1,40 +0,0 @@
// 退出空间
export interface ExitSpaceParams {
}
export interface ExitSpaceResult {
}
// 获取空间列表用户
export interface SpaceUser {
user_id: number
username: string
space_role: number
active_time: string
}
export interface ListSpaceUsersParams {
}
export interface ListSpaceUsersResult {
users: SpaceUser[]
}
// 踢出空间
export interface RemoveSpaceUserParams {
user_id: number
}
export interface RemoveSpaceUserResult {
}
// 加入空间
export interface JoinSpaceParams {
invite_code: string
}
export interface JoinSpaceResult {
}
+10
View File
@@ -0,0 +1,10 @@
export interface UserSpace {
id: number
name: string
invite_code: string
role: number
}
export interface ListUserSpacesResult {
spaces: UserSpace[]
}