完成会议管理

This commit is contained in:
2025-10-28 22:57:51 +08:00
parent 9ee83134f2
commit e60827487a
32 changed files with 1214 additions and 85 deletions

View File

@@ -0,0 +1,36 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.1
package meeting_speaker
import (
"context"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateSpeakerLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.MeetingSpeakerModel
}
func NewCreateSpeakerLogic(ctx context.Context, cfg *config.Config, model model.MeetingSpeakerModel) *CreateSpeakerLogic {
return &CreateSpeakerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *CreateSpeakerLogic) CreateSpeaker(req *types.CreateSpeakerReq) (resp *types.CreateSpeakerResp, err error) {
// todo: add your logic here and delete this line
return
}

View File

@@ -0,0 +1,36 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.1
package meeting_speaker
import (
"context"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type DeleteSpeakerLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.MeetingSpeakerModel
}
func NewDeleteSpeakerLogic(ctx context.Context, cfg *config.Config, model model.MeetingSpeakerModel) *DeleteSpeakerLogic {
return &DeleteSpeakerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *DeleteSpeakerLogic) DeleteSpeaker(req *types.DeleteSpeakerReq) (resp *types.DeleteSpeakerResp, err error) {
// todo: add your logic here and delete this line
return
}

View File

@@ -0,0 +1,36 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.1
package meeting_speaker
import (
"context"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetSpeakerLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.MeetingSpeakerModel
}
func NewGetSpeakerLogic(ctx context.Context, cfg *config.Config, model model.MeetingSpeakerModel) *GetSpeakerLogic {
return &GetSpeakerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *GetSpeakerLogic) GetSpeaker(req *types.GetSpeakerReq) (resp *types.GetSpeakerResp, err error) {
// todo: add your logic here and delete this line
return
}

View File

@@ -0,0 +1,36 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.1
package meeting_speaker
import (
"context"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type ListSpeakersByMeetingLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.MeetingSpeakerModel
}
func NewListSpeakersByMeetingLogic(ctx context.Context, cfg *config.Config, model model.MeetingSpeakerModel) *ListSpeakersByMeetingLogic {
return &ListSpeakersByMeetingLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *ListSpeakersByMeetingLogic) ListSpeakersByMeeting(req *types.ListSpeakersByMeetingReq) (resp *types.ListSpeakersByMeetingResp, err error) {
// todo: add your logic here and delete this line
return
}

View File

@@ -0,0 +1,36 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.1
package meeting_speaker
import (
"context"
"github.com/JACKYMYPERSON/hldrCenter/config"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/model"
"github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdateSpeakerLogic struct {
logx.Logger
ctx context.Context
cfg *config.Config
model model.MeetingSpeakerModel
}
func NewUpdateSpeakerLogic(ctx context.Context, cfg *config.Config, model model.MeetingSpeakerModel) *UpdateSpeakerLogic {
return &UpdateSpeakerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
cfg: cfg,
model: model,
}
}
func (l *UpdateSpeakerLogic) UpdateSpeaker(req *types.UpdateSpeakerReq) (resp *types.UpdateSpeakerResp, err error) {
// todo: add your logic here and delete this line
return
}

View File

@@ -0,0 +1,29 @@
package model
import "github.com/zeromicro/go-zero/core/stores/sqlx"
var _ MeetingSpeakerModel = (*customMeetingSpeakerModel)(nil)
type (
// MeetingSpeakerModel is an interface to be customized, add more methods here,
// and implement the added methods in customMeetingSpeakerModel.
MeetingSpeakerModel interface {
meetingSpeakerModel
withSession(session sqlx.Session) MeetingSpeakerModel
}
customMeetingSpeakerModel struct {
*defaultMeetingSpeakerModel
}
)
// NewMeetingSpeakerModel returns a model for the database table.
func NewMeetingSpeakerModel(conn sqlx.SqlConn) MeetingSpeakerModel {
return &customMeetingSpeakerModel{
defaultMeetingSpeakerModel: newMeetingSpeakerModel(conn),
}
}
func (m *customMeetingSpeakerModel) withSession(session sqlx.Session) MeetingSpeakerModel {
return NewMeetingSpeakerModel(sqlx.NewSqlConnFromSession(session))
}

View File

@@ -0,0 +1,90 @@
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.9.1
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
meetingSpeakerFieldNames = builder.RawFieldNames(&MeetingSpeaker{})
meetingSpeakerRows = strings.Join(meetingSpeakerFieldNames, ",")
meetingSpeakerRowsExpectAutoSet = strings.Join(stringx.Remove(meetingSpeakerFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
meetingSpeakerRowsWithPlaceHolder = strings.Join(stringx.Remove(meetingSpeakerFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
meetingSpeakerModel interface {
Insert(ctx context.Context, data *MeetingSpeaker) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*MeetingSpeaker, error)
Update(ctx context.Context, data *MeetingSpeaker) error
Delete(ctx context.Context, id int64) error
}
defaultMeetingSpeakerModel struct {
conn sqlx.SqlConn
table string
}
MeetingSpeaker struct {
Id int64 `db:"id"` // 嘉宾ID主键
MeetingId int64 `db:"meeting_id"` // 关联会议ID对应meeting表id
Name string `db:"name"` // 嘉宾姓名
Title string `db:"title"` // 嘉宾头衔XX公司技术总监
Avatar string `db:"avatar"` // 嘉宾头像URL
Intro sql.NullString `db:"intro"` // 嘉宾简介
Sort int64 `db:"sort"` // 嘉宾排序(数字越小越靠前)
}
)
func newMeetingSpeakerModel(conn sqlx.SqlConn) *defaultMeetingSpeakerModel {
return &defaultMeetingSpeakerModel{
conn: conn,
table: "`meeting_speaker`",
}
}
func (m *defaultMeetingSpeakerModel) Delete(ctx context.Context, id int64) error {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
_, err := m.conn.ExecCtx(ctx, query, id)
return err
}
func (m *defaultMeetingSpeakerModel) FindOne(ctx context.Context, id int64) (*MeetingSpeaker, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", meetingSpeakerRows, m.table)
var resp MeetingSpeaker
err := m.conn.QueryRowCtx(ctx, &resp, query, id)
switch err {
case nil:
return &resp, nil
case sqlx.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultMeetingSpeakerModel) Insert(ctx context.Context, data *MeetingSpeaker) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, meetingSpeakerRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.MeetingId, data.Name, data.Title, data.Avatar, data.Intro, data.Sort)
return ret, err
}
func (m *defaultMeetingSpeakerModel) Update(ctx context.Context, data *MeetingSpeaker) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, meetingSpeakerRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.MeetingId, data.Name, data.Title, data.Avatar, data.Intro, data.Sort, data.Id)
return err
}
func (m *defaultMeetingSpeakerModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,5 @@
package model
import "github.com/zeromicro/go-zero/core/stores/sqlx"
var ErrNotFound = sqlx.ErrNotFound

View File

@@ -0,0 +1,72 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.9.1
package types
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非负整数
}
type CreateSpeakerResp struct {
Msg string `json:"message"` // 操作提示(如:"嘉宾创建成功"
SpeakerId int64 `json:"speaker_id"` // 新增嘉宾的ID
}
type DeleteSpeakerReq struct {
Id int64 `path:"id" validate:"required,min=1"` // 嘉宾ID从路径参数获取必填
}
type DeleteSpeakerResp struct {
Msg string `json:"message"` // 操作提示(如:"嘉宾已删除"
}
type GetSpeakerReq struct {
Id int64 `path:"id" validate:"required,min=1"` // 嘉宾ID从路径参数获取必填
}
type GetSpeakerResp struct {
Msg string `json:"message"` // 操作提示
Speaker *SpeakerDetail `json:"speaker"` // 嘉宾详情(查询成功返回)
}
type ListSpeakersByMeetingReq struct {
MeetingId int64 `path:"meetingId" validate:"required,min=1"` // 会议ID从路径参数获取必填
Page int `query:"page" validate:"min=1"` // 页码默认1
PageSize int `query:"page_size" validate:"min=1,max=100"` // 每页条数默认10最大100
}
type ListSpeakersByMeetingResp struct {
Msg string `json:"message"` // 操作提示
Total int64 `json:"total"` // 该会议下的嘉宾总数
Speakers []*SpeakerDetail `json:"speakers"` // 嘉宾列表当前页数据按sort升序排列
}
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-已删)
}
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"` // 操作提示(如:"嘉宾信息更新成功"
}