Files
huangguo_server/common/mdrsdb/mediaresourcedatabase.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

292 lines
8.3 KiB
Go

package mdrsdb
import (
"context"
"encoding/json"
"errors"
"fmt"
"strconv"
"time"
"91porn-server/common"
"91porn-server/common/httputil"
"91porn-server/common/log"
"91porn-server/web/webg"
)
type findMediaListReq struct {
IDs string `json:"ids"`
ProId string `json:"pro_id"`
Type string `json:"type"`
Page string `json:"page"`
Size string `json:"size"`
Timestamp string `json:"timestamp"`
Sign string `json:"sign"`
MediaType string `json:"filter[media_type],omitempty"` // 媒体类型 0视频 1图文
Title string `json:"filter[title],omitempty"`
TerminalCdo string `json:"filter[terminal_cdo],omitempty"`
TagText string `json:"filter[tags_text],omitempty"`
HashId string `json:"filter[hash_id],omitempty"`
VloggerId string `json:"filter[vlogger_id],omitempty"`
VloggerUserId string `json:"filter[vlogger_user_id],omitempty"`
StartTime string `json:"filter[start_time],omitempty"`
EndTime string `json:"filter[end_time],omitempty"`
SortType string `json:"sort_type" form:"sort_type"` // 0-id倒序 1-id正序
MaxTotal string `json:"max_total" form:"max_total"` // 最大列表总数
}
func (f *findMediaListReq) getParam() interface{} {
f.Sign = sign(*f)
m := make(map[string]string)
b, err := json.Marshal(f)
if err != nil {
return m
}
_ = json.Unmarshal(b, &m)
return m
}
func FindMediaList(ctx context.Context, pageNumber, pageSize, vloggerUserId int64, title, tagText, hashId string, mVia, videoType int, syncType, terminalCdo string, startTime, endTime time.Time, sortType, maxTotal int) (mslist []MediaResource, count int64, err error) {
var msgData struct {
Data []MediaResource `json:"data"`
Pagination Pagination `json:"pagination"`
}
var retMsg msg
var errlog string
mt := ""
if videoType == 0 {
mt = "0"
} else if videoType == 2 {
mt = "1"
}
var req = findMediaListReq{
ProId: getMerchat(),
Type: syncType,
Page: strconv.FormatInt(pageNumber, 10),
Size: strconv.FormatInt(pageSize, 10),
Timestamp: strconv.FormatInt(time.Now().Unix(), 10),
HashId: hashId,
Title: title,
TerminalCdo: terminalCdo,
TagText: tagText,
MediaType: mt,
SortType: strconv.Itoa(sortType),
MaxTotal: strconv.Itoa(maxTotal),
StartTime: strconv.FormatInt(startTime.Unix(), 10),
EndTime: strconv.FormatInt(endTime.Unix(), 10),
}
if vloggerUserId > 0 {
req.VloggerUserId = strconv.FormatInt(vloggerUserId, 10)
}
switch mVia {
case 0:
case 1:
req.VloggerId = "1,"
case 2:
req.VloggerId = "0"
}
var url string
if videoType == 0 || videoType == 2 {
url = "/services/video/videos/v2"
} else {
url = "/services/short_video/videos/v2"
}
code, err := httputil.DefaultClientGetWithResp(&retMsg, common.BindUrl(getOrignUrl(), url), nil, req.getParam())
if err != nil {
errlog = fmt.Sprintf("meadia resource FindMediaList http GetWithJResp error \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
if code != 200 {
errlog = fmt.Sprintf("meadia resource FindMediaList http code error \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
if retMsg.Code != 0 {
errlog = fmt.Sprintf("meadia resource FindMediaList retmsg code error \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
b, err := json.Marshal(retMsg.Data)
if err != nil {
errlog := fmt.Sprintf("meadia resource FindMediaList Marshal fail \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
if err = json.Unmarshal(b, &msgData); err != nil {
errlog := fmt.Sprintf("meadia resource FindMediaList Unmarshal fail \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
mslist = msgData.Data
count = msgData.Pagination.Count
return
}
func FindMediaListWithIDs(ctx context.Context, ids []int64, videoType int) (mslist []MediaResource, err error) {
var msgData struct {
Data []MediaResource `json:"data"`
Pagination Pagination `json:"pagination"`
}
var retMsg msg
var errlog string
var req = findMediaListReq{
ProId: getMerchat(),
Type: "all",
IDs: sliCovertStr(ids),
Timestamp: strconv.FormatInt(time.Now().Unix(), 10),
Size: strconv.Itoa(len(ids)),
Page: "1",
}
var url string
if videoType == 0 || videoType == 2 {
url = "/services/video/videos"
} else {
url = "/services/short_video/videos"
}
code, err := httputil.DefaultClientGetWithResp(&retMsg, common.BindUrl(getOrignUrl(), url), nil, req.getParam())
if err != nil {
errlog = fmt.Sprintf("meadia resource FindMediaList http GetWithJResp error \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
if code != 200 {
errlog = fmt.Sprintf("meadia resource FindMediaList http code error \nerror:%+v;code:%v", err, code)
log.Error(errlog)
err = errors.New(errlog)
return
}
if retMsg.Code != 0 {
errlog = fmt.Sprintf("meadia resource FindMediaList retmsg code error \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
b, err := json.Marshal(retMsg.Data)
if err != nil {
errlog := fmt.Sprintf("meadia resource FindMediaList Marshal fail \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
if err = json.Unmarshal(b, &msgData); err != nil {
errlog := fmt.Sprintf("meadia resource FindMediaList Unmarshal fail \nerror:%+v;", err)
log.Error(errlog)
err = errors.New(errlog)
return
}
mslist = msgData.Data
return
}
type useMediaReq struct {
IDs string `json:"ids"`
ProId string `json:"pro_id"`
Timestamp string `json:"timestamp"`
Sign string `json:"sign"`
}
func (this *useMediaReq) getParam() interface{} {
this.Sign = sign(*this)
b, _ := json.Marshal(this)
return b
}
func UseMedia(ctx context.Context, ids []int64, videoType int) error {
var retMsg msg
var errlog string
var p = useMediaReq{
ProId: getMerchat(),
IDs: sliCovertStr(ids),
Timestamp: strconv.FormatInt(time.Now().Unix(), 10),
}
var url string
if videoType == 0 || videoType == 2 {
url = "/services/video/used"
} else {
url = "/services/short_video/used"
}
fmt.Println("-------url", getOrignUrl()+url)
code, err := httputil.DefaultClientPostJsonWithResp(&retMsg, common.BindUrl(getOrignUrl(), url), nil, p.getParam())
if err != nil {
errlog = fmt.Sprintf("meadia resource FindMediaList http POSTJsonWithJResp error \nerror:%+v;", err)
log.Error(errlog)
return errors.New(errlog)
}
if code != 200 {
errlog = fmt.Sprintf("meadia resource FindMediaList http code error \nerror:%+v;", err)
log.Error(errlog)
return errors.New(errlog)
}
if retMsg.Code != 0 {
errlog = fmt.Sprintf("meadia resource FindMediaList retmsg code error \nerror:%+v;", err)
log.Error(errlog)
return errors.New(errlog)
}
return nil
}
type ignoreMediaReq struct {
IDs string `json:"ids"`
ProId string `json:"pro_id"`
Timestamp string `json:"timestamp"`
Sign string `json:"sign"`
}
func (this *ignoreMediaReq) getParam() interface{} {
this.Sign = sign(*this)
b, _ := json.Marshal(this)
return b
}
func IgnoreMedia(ctx context.Context, ids []int64, videoType int) error {
var retMsg msg
var errlog string
var p = ignoreMediaReq{
ProId: getMerchat(),
IDs: sliCovertStr(ids),
Timestamp: strconv.FormatInt(time.Now().Unix(), 10),
}
var url string
if videoType == 0 || videoType == 2 {
url = "/services/video/ignored"
} else {
url = "/services/short_video/ignored"
}
code, err := httputil.DefaultClientPostJsonWithResp(&retMsg, common.BindUrl(getOrignUrl(), url), nil, p.getParam())
if err != nil {
errlog = fmt.Sprintf("meadia resource FindMediaList http POSTJsonWithJResp error \nerror:%+v;", err)
log.Error(errlog)
return errors.New(errlog)
}
if code != 200 {
errlog = fmt.Sprintf("meadia resource FindMediaList http code error \nerror:%+v;code %d", err, code)
log.Error(errlog)
return errors.New(errlog)
}
if retMsg.Code != 0 {
errlog = fmt.Sprintf("meadia resource FindMediaList retmsg code error \nerror:%+v;res:%+v", err, retMsg)
log.Error(errlog)
return errors.New(errlog)
}
return nil
}
func getMerchat() string {
return webg.Conf.MediaResourceDBCfg.Merchat
}
func getSecret() string {
return webg.Conf.MediaResourceDBCfg.Secret
}
func getOrignUrl() string {
return webg.Conf.MediaResourceDBCfg.BaseUrl
}