Initial commit

This commit is contained in:
2026-05-20 16:13:58 +08:00
commit ceffbe382e
500 changed files with 157469 additions and 0 deletions
+179
View File
@@ -0,0 +1,179 @@
package proxy
import (
"bytes"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"stat/common/httpUtils"
"strings"
)
const (
apiDomain = "http://file.dhuqh.com/file/upload"
)
var (
header = map[string]string{"Content-Type": "application/json"}
)
const (
Success = 200
)
func UploadImg(fileName string, data []byte, domain string) (pathStr string, err error) {
r := objreq{
Name: fileName,
Data: base64.StdEncoding.EncodeToString(data),
}
jsonbytes, err := json.Marshal(r)
if err != nil {
return
}
if len(domain) == 0 {
domain = apiDomain
}
url := domain
if !strings.Contains(domain, "/file/upload") {
url = domain + "/file/upload"
}
resp, err := httpUtils.Post(url, header, bytes.NewReader(jsonbytes))
if err != nil {
return
}
var or objresp
if err = json.Unmarshal(resp.Data, &or); err != nil {
return
}
if or.Code != Success {
err = fmt.Errorf("上传失败:%s", or.Msg)
return
}
pathStr = or.Object.Name
return
}
func fileServer() (url string) {
return "http://ts.dhuqh.com"
}
func PostOk(baseInfo *BaseInfo, domain string) (result *VideoOkResult, err error) {
result = &VideoOkResult{}
paramJson, err := json.Marshal(baseInfo)
if err != nil {
return
}
if len(domain) == 0 {
domain = fileServer()
}
url := domain
if !strings.Contains(domain, "/video/shard/info") {
url = domain + "/video/shard/info"
}
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
if err != nil {
return
}
if err = json.Unmarshal(fr.Data, result); err != nil {
return nil, err
}
return
}
func UploadVideo(domain string, body *ShardBody) (result *Result, err error) {
if body == nil {
return nil, errors.New("no video to upload")
}
if len(domain) == 0 {
domain = fileServer()
}
url := domain
if !strings.Contains(domain, "/video/shard/body") {
url = domain + "/video/shard/body"
}
buf, err := json.Marshal(body)
if err != nil {
return nil, err
}
resp, err := httpUtils.Post(url, header, bytes.NewBuffer(buf))
if err != nil {
return nil, err
}
result = new(Result)
if err = json.Unmarshal(resp.Data, result); err != nil {
return nil, err
}
return
}
func PostSearch(param *MediaSearchReq, domain string) (result *MediaSearchResp, err error) {
result = &MediaSearchResp{}
paramJson, err := json.Marshal(param)
if err != nil {
return
}
if len(domain) == 0 {
domain = fileServer()
}
url := domain
if !strings.Contains(domain, "/video/search/list") {
url = domain + "/video/search/list"
}
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
if err != nil {
return
}
if err = json.Unmarshal(fr.Data, result); err != nil {
return nil, err
}
return
}
func PostUpdate(param *MediasUpdateReq, domain string) (result *MediasUpdateResp, err error) {
result = &MediasUpdateResp{}
paramJson, err := json.Marshal(param)
if err != nil {
return
}
if len(domain) == 0 {
domain = fileServer()
}
url := domain
if !strings.Contains(domain, "/video/update") {
url = domain + "/video/update"
}
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
if err != nil {
return
}
if err = json.Unmarshal(fr.Data, result); err != nil {
return nil, err
}
return
}
func PostDelete(param *MediasDelReq, domain string) (result *MediasDelResp, err error) {
result = &MediasDelResp{}
paramJson, err := json.Marshal(param)
if err != nil {
return
}
if len(domain) == 0 {
domain = fileServer()
}
url := domain
if !strings.Contains(domain, "/video/delete") {
url = domain + "/video/delete"
}
fr, err := httpUtils.Post(url, header, bytes.NewReader(paramJson))
if err != nil {
return
}
if err = json.Unmarshal(fr.Data, result); err != nil {
return nil, err
}
return
}
+150
View File
@@ -0,0 +1,150 @@
package proxy
import "time"
type objreq struct {
Name string `json:"fileName"`
Data string `json:"fileData"`
}
type Obj struct {
Domain string `json:"domain"`
Name string `json:"fileName"`
}
type objresp struct {
Code int `json:"code"`
Object Obj `json:"data"`
Msg string `json:"msg"`
}
type ShardBody struct {
TaskId string `json:"taskId,omitempty"` // 文档md5
Pos int `json:"pos,omitempty"` // 位置
FileData string `json:"fileData,omitempty"` // 数据
Type string `json:"type,omitempty"`
TotalPos int `json:"totalPos,omitempty"` // 分片总数
}
type Data struct {
Id string `json:"id,omitempty"`
VideoUri string `json:"videoUri,omitempty"`
}
type Result struct {
Code int `json:"code,omitempty"` //
Data Data `json:"data,omitempty"` //
Msg string `json:"msg,omitempty"` //
}
type VideoOkResult struct {
Code int `json:"code,omitempty"`
Msg string `json:"msg,omitempty"` //
Data string `json:"data,omitempty"`
}
type BaseInfo struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"` // 标题
CheckSum string `json:"checkSum,omitempty"` // md5校验码
VideoTime int32 `json:"videTime"` // 影片时长
Publish string `bson:"publish,omitempty"` // 视频发布者
Type string `json:"type"` // 视频:长视频/短视频--时间阈值
Preview int32 `json:"preview"` // 预览普通视频:1:预览 2:
Country string `json:"country"` // 国家 (国产、日本、欧美.... 前端固定)
FirstTag string `json:"firstTag,omitempty"` // 一级标签
SecondTags []string `json:"secondTags,omitempty"` // 二级标签标签
CoverImg []string `json:"coverImg,omitempty"` // 封面
PreFileName string `json:"preFileName,omitempty"` // 预览文件
Status string `json:"status,omitempty"` // 当前状态
Size int64 `json:"size"` // 文件size,单位byte
Filename string `json:"filename,omitempty"` // 文件名称
Desc string `json:"desc,omitempty"` // 详细描述
Directors []string `json:"director,omitempty"` // 导演
Actors []string `json:"actors,omitempty"` // 演员
Studio string `json:"studio,omitempty"` // 工作室
Bango string `json:"bango,omitempty"` // 番号,唯一
Via string `json:"via,omitempty"` // 来源
Remark string `json:"remark,omitempty"` // 备注
AddedTime string `json:"addedTime,omitempty"` // 上架时间
UploadTime string `json:"uploadTime,omitempty"` // 上传时间
}
type VideoUpdate struct {
ID string `json:"id,omitempty"`
Title *string `json:"title,omitempty"` // 标题
Publish *string `bson:"publish,omitempty"` // 视频发布者
Type *string `json:"type"` // 视频:长视频/短视频--时间阈值
Preview *int32 `json:"preview"` // 预览:1:预览 2:普通视频
Country *string `json:"country"` // 国家 (国产、日本、欧美.... 前端固定)
FirstTag *string `json:"firstTag,omitempty"` // 一级标签
SecondTags *[]string `json:"secondTags,omitempty"` // 二级标签标签
CoverImg *[]string `json:"coverImg,omitempty"` // 封面
PreFileName *string `json:"preFileName,omitempty"` // 预览文件
Status *string `json:"status,omitempty"` // 当前状态
Desc *string `json:"desc,omitempty"` // 详细描述
Directors *[]string `json:"director,omitempty"` // 导演
Actors *[]string `json:"actors,omitempty"` // 演员
Studio *string `json:"studio,omitempty"` // 工作室
Bango *string `json:"bango,omitempty"` // 番号,唯一
Via *string `json:"via,omitempty"` // 来源
Remark *string `json:"remark,omitempty"` // 备注
AddedTime *string `json:"addedTime,omitempty"` // 上架时间
UploadTime *string `json:"uploadTime,omitempty"` // 上传时间
}
type VideoSearch struct {
ID string `json:"id,omitempty"`
Title *string `json:"title,omitempty"` // 标题
Publish *string `bson:"publish,omitempty"` // 视频发布者
Type *string `json:"type"` // 视频:长视频/短视频--时间阈值
Preview *int32 `json:"preview"` // 预览:1:预览 2:普通视频
Country *string `json:"country"` // 国家 (国产、日本、欧美.... 前端固定)
FirstTag *string `json:"firstTag,omitempty"` // 一级标签
SecondTags *[]string `json:"secondTags,omitempty"` // 二级标签标签
Status *string `json:"status,omitempty"` // 当前状态
Directors *[]string `json:"director,omitempty"` // 导演
Actors *[]string `json:"actors,omitempty"` // 演员
Studio *string `json:"studio,omitempty"` // 工作室
Bango *string `json:"bango,omitempty"` // 番号,唯一
Via *string `json:"via,omitempty"` // 来源
Remark *string `json:"remark,omitempty"` // 备注
AddedTime *string `json:"addedTime,omitempty"` // 上架时间
UploadTime *string `json:"uploadTime,omitempty"` // 上传时间
Start *time.Time `json:"start"` // 开始时间
End *time.Time `json:"end"` // 结束时间
}
type UploadVideoBodyResp struct {
Id string `json:"id"` // 文件服返回的上传文件Id
VideoUri string `json:"videoUri"` // 文件服返回的视频uri
}
type MediaSearchReq struct {
PageNum int64 `json:"pageNum"`
PageSize int64 `json:"pageSize"`
Param *VideoSearch `json:"param"`
}
//MediaSearchReq 媒体搜索请求返回
type MediaSearchResp struct {
Total int64 `json:"total"`
List []BaseInfo `json:"list"`
}
type MediasDelReq struct {
Ids []string `json:"id"`
}
//MediasDelResp 请求批量删除媒体回复
type MediasDelResp struct {
}
type MediasUpdateReq struct {
Ids []string `json:"id"`
VideoUpdate
}
//MediasUpdateResp 请求批量更新媒体回复
type MediasUpdateResp struct {
}