service/dbstruct/media.go

115 lines
3.4 KiB
Go

package dbstruct
import (
"errors"
"service/library/wishjson"
)
// 图片
type Image struct {
Id int64 `json:"id" bson:"_id"` // 图片id
Ct int64 `json:"ct" bson:"ct"` // 创建时间
Ut int64 `json:"ut" bson:"ut"` // 更新时间
SrcId string `json:"src_id" bson:"src_id"` // 源id
MD5 string `json:"md5" bson:"md5"` // 视频md5
W int64 `json:"w" bson:"w"` // 宽
H int64 `json:"h" bson:"h"` // 高
Fmt string `json:"fmt" bson:"fmt"` // 图片格式
}
type ToCImage struct {
Id int64 `json:"id"` // 图片id
W int64 `json:"w"` // 宽
H int64 `json:"h"` // 高
Fmt string `json:"fmt"` // 图片格式
Urls []string `json:"urls"` // 图片展示地址
}
// 视频
type Video struct {
Id int64 `json:"id" bson:"_id"` // 视频id
Ct int64 `json:"ct" bson:"ct"` // 创建时间
Ut int64 `json:"ut" bson:"ut"` // 更新时间
SrcId string `json:"src_id" bson:"src_id"` // 源id
CoverSrcId string `json:"cover_src_id" bson:"cover_src_id"` // cover srcId
CoverId int64 `json:"cover_id" bson:"cover_id"` // 封面id
MD5 string `json:"md5" bson:"md5"` // 视频md5
Dur int64 `json:"dur" bson:"dur"` // 视频时长
Fmt string `json:"fmt" bson:"fmt"`
}
type ToCVideo struct {
Id int64 `json:"id"` // 视频id
Dur int64 `json:"dur"` // 视频时
CoverUrls []string `json:"cover_urls"` // 视频封面地址
CoverW int64 `json:"cover_w"` // 封面宽
CoverH int64 `json:"cover_h"` // 封面高
CoverFmt string `json:"cover_fmt"` // 封面图片格式
Urls []string `json:"urls"` // 视频地址
}
func NewImageFromJson(item any) (img *Image, err error) {
j := wishjson.New(item)
img = &Image{
SrcId: j.Get("src_id").MustPhpString(),
MD5: j.Get("md5").MustPhpString(),
W: j.Get("w").MustPhpInt(),
H: j.Get("h").MustPhpInt(),
Fmt: j.Get("fmt").MustPhpString(),
}
if img.SrcId == "" {
err = errors.New("invalid image object with null src_id")
return
}
if img.MD5 == "" {
err = errors.New("invalid image object with null md5")
return
}
if img.W == 0 {
err = errors.New("invalid image object with zero-width")
return
}
if img.H == 0 {
err = errors.New("invalid image object with zero-height")
return
}
if img.Fmt == "" {
err = errors.New("invalid image object with null fmt")
return
}
return
}
func NewVideoFromJson(item any) (vid *Video, err error) {
j := wishjson.New(item)
vid = &Video{
SrcId: j.Get("src_id").MustPhpString(),
CoverSrcId: j.Get("cover_src_id").MustPhpString(),
CoverId: j.Get("cover_id").MustPhpInt(),
MD5: j.Get("md5").MustPhpString(),
Dur: j.Get("dur").MustPhpInt(),
Fmt: j.Get("fmt").MustPhpString(),
}
if vid.SrcId == "" {
err = errors.New("invalid video object with null src_id")
return
}
if vid.CoverId == 0 {
err = errors.New("invalid video object with zero cover_id")
return
}
if vid.MD5 == "" {
err = errors.New("invalid video object with null md5")
return
}
if vid.Dur == 0 {
err = errors.New("invalid video object with zero dur")
return
}
if vid.Fmt == "" {
err = errors.New("invalid video object with null fmt")
return
}
return
}