Files
hldrCenter/server/api/meeting_spaeker.api
2025-10-28 15:57:14 +08:00

107 lines
5.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 嘉宾详情结构体(包含表中所有字段,用于查询响应)
type SpeakerDetail struct {
Id int64 `json:"id"` // 嘉宾ID主键
MeetingId int64 `json:"meeting_id"` // 关联会议ID外键
Name string `json:"name"` // 嘉宾姓名
Title string `json:"title"` // 嘉宾头衔
Avatar string `json:"avatar"` // 嘉宾头像URL
Intro string `json:"intro"` // 嘉宾简介
Sort int `json:"sort"` // 排序(数字越小越靠前)
IsDelete int `json:"is_delete"` // 软删除标识0-未删1-已删)
}
// 请求参数创建嘉宾时需传入的信息不含自动生成的id和软删除字段
type CreateSpeakerReq struct {
MeetingId int64 `json:"meeting_id" validate:"required,min=1"` // 关联会议ID必填需存在对应的会议
Name string `json:"name" validate:"required,min=1,max=100"` // 嘉宾姓名(必填,长度限制)
Title string `json:"title,omitempty" validate:"max=200"` // 嘉宾头衔可选最长200字
Avatar string `json:"avatar,omitempty" validate:"max=512"` // 头像URL可选最长512字符
Intro string `json:"intro,omitempty"` // 嘉宾简介(可选,长文本)
Sort int `json:"sort,omitempty" validate:"min=0"` // 排序可选默认0非负整数
}
// 响应结果创建成功后返回嘉宾ID
type CreateSpeakerResp struct {
Msg string `json:"message"` // 操作提示(如:"嘉宾创建成功"
SpeakerId int64 `json:"speaker_id"` // 新增嘉宾的ID
}
// 请求参数通过嘉宾ID查询详情
type GetSpeakerReq struct {
Id int64 `json:"id" path:"id" validate:"required,min=1"` // 嘉宾ID从路径参数获取必填
}
// 响应结果:返回单个嘉宾详情
type GetSpeakerResp struct {
Msg string `json:"message"` // 操作提示
Speaker *SpeakerDetail `json:"speaker"` // 嘉宾详情(查询成功返回)
}
// 请求参数通过会议ID查询该会议的所有嘉宾支持排序和分页
type ListSpeakersByMeetingReq struct {
MeetingId int64 `json:"meeting_id" path:"meetingId" validate:"required,min=1"` // 会议ID从路径参数获取必填
Page int `json:"page" query:"page" validate:"min=1"` // 页码默认1
PageSize int `json:"page_size" query:"page_size" validate:"min=1,max=100"` // 每页条数默认10最大100
}
// 响应结果返回会议下的嘉宾列表按sort排序
type ListSpeakersByMeetingResp struct {
Msg string `json:"message"` // 操作提示
Total int64 `json:"total"` // 该会议下的嘉宾总数
Speakers []*SpeakerDetail `json:"speakers"` // 嘉宾列表当前页数据按sort升序排列
}
// 请求参数更新嘉宾信息支持部分字段更新必填id定位嘉宾
type UpdateSpeakerReq struct {
Id int64 `json:"id" validate:"required,min=1"` // 嘉宾ID必填定位要更新的记录
MeetingId int64 `json:"meeting_id,omitempty" validate:"min=1"` // 关联会议ID可选不填则不更新
Name string `json:"name,omitempty" validate:"min=1,max=100"` // 嘉宾姓名(可选,更新时需非空)
Title string `json:"title,omitempty" validate:"max=200"` // 嘉宾头衔(可选)
Avatar string `json:"avatar,omitempty" validate:"max=512"` // 头像URL可选
Intro string `json:"intro,omitempty"` // 嘉宾简介(可选)
Sort int `json:"sort,omitempty" validate:"min=0"` // 排序(可选)
}
// 响应结果:更新操作提示
type UpdateSpeakerResp struct {
Msg string `json:"message"` // 操作提示(如:"嘉宾信息更新成功"
}
// 请求参数通过嘉宾ID进行软删除更新is_delete=1
type DeleteSpeakerReq struct {
Id int64 `json:"id" path:"id" validate:"required,min=1"` // 嘉宾ID从路径参数获取必填
}
// 响应结果:删除操作提示
type DeleteSpeakerResp struct {
Msg string `json:"message"` // 操作提示(如:"嘉宾已删除"
}
@server (
group: meeting_speaker // 接口分组:会议嘉宾相关
)
service meeting-speaker-api {
// 1. 创建嘉宾POST请求关联会议ID
@handler CreateSpeakerHandler
post /api/speakers (CreateSpeakerReq) returns (CreateSpeakerResp)
// 2. 查询单个嘉宾GET请求路径带嘉宾ID
@handler GetSpeakerHandler
get /api/speakers/:id (GetSpeakerReq) returns (GetSpeakerResp)
// 3. 查询会议下的嘉宾列表GET请求路径带会议ID核心接口
@handler ListSpeakersByMeetingHandler
get /api/meetings/:meetingId/speakers (ListSpeakersByMeetingReq) returns (ListSpeakersByMeetingResp)
// 4. 更新嘉宾信息PUT请求支持部分字段更新
@handler UpdateSpeakerHandler
put /api/speakers (UpdateSpeakerReq) returns (UpdateSpeakerResp)
// 5. 软删除嘉宾DELETE请求路径带嘉宾ID
@handler DeleteSpeakerHandler
delete /api/speakers/:id (DeleteSpeakerReq) returns (DeleteSpeakerResp)
}