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 }