Files
video-factory/shortdrama/controller/character_controller.go
T
2026-07-24 10:40:33 +08:00

102 lines
3.1 KiB
Go

package controller
import (
"context"
"video-factory/shortdrama/model/dto"
"video-factory/shortdrama/service"
)
type character struct{}
var Character = new(character)
func (c *character) List(ctx context.Context, req *dto.ListCharacterReq) (res *dto.ListCharacterRes, err error) {
list, err := service.CharacterService.ListCharacter(ctx, req.DramaId)
if err != nil {
return nil, err
}
return &dto.ListCharacterRes{List: list}, nil
}
func (c *character) Add(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() }()
if err := service.ValidateUploadFile(ctx, req.VoiceFile.Size, req.VoiceFile.Filename, "audio"); err != nil {
return nil, err
}
voicePath, err = service.CharacterService.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() }()
if err := service.ValidateUploadFile(ctx, req.PortraitFile.Size, req.PortraitFile.Filename, "image"); err != nil {
return nil, err
}
portraitPath, err = service.CharacterService.SaveCharacterFile(ctx, req.DramaId, f, req.PortraitFile.Filename, "演员形象", req.Name)
if err != nil {
return nil, err
}
}
_, err = service.CharacterService.AddCharacter(ctx, req.DramaId, req.Name, req.Description, voicePath, portraitPath)
if err != nil {
return nil, err
}
return nil, nil
}
func (c *character) Update(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() }()
if err := service.ValidateUploadFile(ctx, req.VoiceFile.Size, req.VoiceFile.Filename, "audio"); err != nil {
return nil, err
}
voicePath, err = service.CharacterService.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() }()
if err := service.ValidateUploadFile(ctx, req.PortraitFile.Size, req.PortraitFile.Filename, "image"); err != nil {
return nil, err
}
portraitPath, err = service.CharacterService.SaveCharacterFile(ctx, req.DramaId, f, req.PortraitFile.Filename, "演员形象", req.Name)
if err != nil {
return nil, err
}
}
err = service.CharacterService.UpdateCharacter(ctx, req.DramaId, req.CharId, req.Name, req.Description, voicePath, portraitPath)
if err != nil {
return nil, err
}
return nil, nil
}
func (c *character) Delete(ctx context.Context, req *dto.DeleteCharacterReq) (res *dto.GetDramaRes, err error) {
err = service.CharacterService.DeleteCharacter(ctx, req.DramaId, req.CharId)
if err != nil {
return nil, err
}
return nil, nil
}