112 lines
3.2 KiB
Go
112 lines
3.2 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"` // 视频封面地址
|
||
|
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
|
||
|
}
|