mirror of https://github.com/go-sonic/sonic.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.5 KiB
Go
119 lines
3.5 KiB
Go
package admin
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"github.com/go-sonic/sonic/handler/binding"
|
|
"github.com/go-sonic/sonic/model/dto"
|
|
"github.com/go-sonic/sonic/model/param"
|
|
"github.com/go-sonic/sonic/service"
|
|
"github.com/go-sonic/sonic/util"
|
|
"github.com/go-sonic/sonic/util/xerr"
|
|
)
|
|
|
|
type AttachmentHandler struct {
|
|
AttachmentService service.AttachmentService
|
|
}
|
|
|
|
func NewAttachmentHandler(attachmentService service.AttachmentService) *AttachmentHandler {
|
|
return &AttachmentHandler{
|
|
AttachmentService: attachmentService,
|
|
}
|
|
}
|
|
|
|
func (a *AttachmentHandler) QueryAttachment(ctx *gin.Context) (interface{}, error) {
|
|
queryParam := ¶m.AttachmentQuery{}
|
|
err := ctx.ShouldBindWith(queryParam, binding.CustomFormBinding)
|
|
if err != nil {
|
|
return nil, xerr.WithStatus(err, xerr.StatusBadRequest).WithMsg("param error ")
|
|
}
|
|
attachments, totalCount, err := a.AttachmentService.Page(ctx, queryParam)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
attachmentDTOs, err := a.AttachmentService.ConvertToDTOs(ctx, attachments)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return dto.NewPage(attachmentDTOs, totalCount, queryParam.Page), nil
|
|
}
|
|
|
|
func (a *AttachmentHandler) GetAttachmentByID(ctx *gin.Context) (interface{}, error) {
|
|
id, err := util.ParamInt32(ctx, "id")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if id < 0 {
|
|
return nil, xerr.BadParam.New("id < 0").WithStatus(xerr.StatusBadRequest).WithMsg("param error")
|
|
}
|
|
return a.AttachmentService.GetAttachment(ctx, id)
|
|
}
|
|
|
|
func (a *AttachmentHandler) UploadAttachment(ctx *gin.Context) (interface{}, error) {
|
|
fileHeader, err := ctx.FormFile("file")
|
|
if err != nil {
|
|
return nil, xerr.WithMsg(err, "上传文件错误").WithStatus(xerr.StatusBadRequest)
|
|
}
|
|
return a.AttachmentService.Upload(ctx, fileHeader)
|
|
}
|
|
|
|
func (a *AttachmentHandler) UploadAttachments(ctx *gin.Context) (interface{}, error) {
|
|
form, _ := ctx.MultipartForm()
|
|
if len(form.File) == 0 {
|
|
return nil, xerr.BadParam.New("empty files").WithStatus(xerr.StatusBadRequest).WithMsg("empty files")
|
|
}
|
|
files := form.File["files"]
|
|
attachmentDTOs := make([]*dto.AttachmentDTO, 0)
|
|
for _, file := range files {
|
|
attachment, err := a.AttachmentService.Upload(ctx, file)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
attachmentDTOs = append(attachmentDTOs, attachment)
|
|
}
|
|
return attachmentDTOs, nil
|
|
}
|
|
|
|
func (a *AttachmentHandler) UpdateAttachment(ctx *gin.Context) (interface{}, error) {
|
|
id, err := util.ParamInt32(ctx, "id")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
updateParam := ¶m.AttachmentUpdate{}
|
|
err = ctx.ShouldBind(updateParam)
|
|
if err != nil {
|
|
return nil, xerr.WithStatus(err, xerr.StatusBadRequest).WithMsg("param error ")
|
|
}
|
|
return a.AttachmentService.Update(ctx, id, updateParam)
|
|
}
|
|
|
|
func (a *AttachmentHandler) DeleteAttachment(ctx *gin.Context) (interface{}, error) {
|
|
id, err := util.ParamInt32(ctx, "id")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return a.AttachmentService.Delete(ctx, id)
|
|
}
|
|
|
|
func (a *AttachmentHandler) DeleteAttachmentInBatch(ctx *gin.Context) (interface{}, error) {
|
|
ids := make([]int32, 0)
|
|
err := ctx.ShouldBind(&ids)
|
|
if err != nil {
|
|
return nil, xerr.WithStatus(err, xerr.StatusBadRequest).WithMsg("parameter error")
|
|
}
|
|
return a.AttachmentService.DeleteBatch(ctx, ids)
|
|
}
|
|
|
|
func (a *AttachmentHandler) GetAllMediaType(ctx *gin.Context) (interface{}, error) {
|
|
return a.AttachmentService.GetAllMediaTypes(ctx)
|
|
}
|
|
|
|
func (a *AttachmentHandler) GetAllTypes(ctx *gin.Context) (interface{}, error) {
|
|
attachmentTypes, err := a.AttachmentService.GetAllTypes(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return attachmentTypes, nil
|
|
}
|