102 lines
3.1 KiB
Go
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
|
|
}
|