Files
video-factory/shortdrama/controller/character_controller.go
T
2026-06-29 13:32:50 +08:00

80 lines
2.4 KiB
Go

package controller
import (
"context"
"video-factory/shortdrama/model/dto"
"video-factory/shortdrama/service"
)
// ==================== Character CRUD ====================
func (c *drama) AddCharacter(ctx context.Context, req *dto.AddCharacterReq) (res *dto.GetDramaRes, err error) {
var voicePath, portraitPath string
if req.VoiceFile != nil {
f, err := req.VoiceFile.Open()
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()
voicePath, err = service.DramaService.SaveCharacterFile(ctx, req.DramaId, f, req.VoiceFile.Filename, "演员声音", req.Name)
if err != nil {
return nil, err
}
}
if req.PortraitFile != nil {
f, err := req.PortraitFile.Open()
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()
portraitPath, err = service.DramaService.SaveCharacterFile(ctx, req.DramaId, f, req.PortraitFile.Filename, "演员形象", req.Name)
if err != nil {
return nil, err
}
}
_, err = service.DramaService.AddCharacter(ctx, req.DramaId, req.Name, req.Description, voicePath, portraitPath)
if err != nil {
return nil, err
}
return c.Get(ctx, &dto.GetDramaReq{Id: req.DramaId})
}
func (c *drama) UpdateCharacter(ctx context.Context, req *dto.UpdateCharacterReq) (res *dto.GetDramaRes, err error) {
var voicePath, portraitPath string
if req.VoiceFile != nil {
f, err := req.VoiceFile.Open()
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()
voicePath, err = service.DramaService.SaveCharacterFile(ctx, req.DramaId, f, req.VoiceFile.Filename, "演员声音", req.Name)
if err != nil {
return nil, err
}
}
if req.PortraitFile != nil {
f, err := req.PortraitFile.Open()
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()
portraitPath, err = service.DramaService.SaveCharacterFile(ctx, req.DramaId, f, req.PortraitFile.Filename, "演员形象", req.Name)
if err != nil {
return nil, err
}
}
err = service.DramaService.UpdateCharacter(ctx, req.DramaId, req.CharId, req.Name, req.Description, voicePath, portraitPath)
if err != nil {
return nil, err
}
return c.Get(ctx, &dto.GetDramaReq{Id: req.DramaId})
}
func (c *drama) DeleteCharacter(ctx context.Context, req *dto.DeleteCharacterReq) (res *dto.GetDramaRes, err error) {
err = service.DramaService.DeleteCharacter(ctx, req.DramaId, req.CharId)
if err != nil {
return nil, err
}
return c.Get(ctx, &dto.GetDramaReq{Id: req.DramaId})
}