You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.5 KiB
99 lines
2.5 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"net/url" |
|
|
|
"go-common/app/admin/main/dm/model" |
|
"go-common/library/log" |
|
"go-common/library/xstr" |
|
) |
|
|
|
const ( |
|
_views = "/videoup/views" |
|
_types = "/videoup/types" |
|
_season = "/pgc/admin/season/dm/aids" |
|
) |
|
|
|
// TypeInfo TypeInfo |
|
func (d *Dao) TypeInfo(c context.Context) (types map[int64]*model.ArchiveType, err error) { |
|
var ( |
|
res struct { |
|
Code int64 `json:"code"` |
|
Data map[int64]*model.ArchiveType `json:"data"` |
|
Message string `json:"message"` |
|
} |
|
) |
|
v := make(url.Values) |
|
if err = d.httpCli.Get(c, d.typesURI, "", v, &res); err != nil { |
|
log.Error("d.httpCli.Get(%s) error(%v)", d.typesURI, err) |
|
return |
|
} |
|
if res.Code != 0 { |
|
err = fmt.Errorf("%v", res) |
|
log.Error("d.httpClient.Get(%s) code(%d)", d.typesURI, res.Code) |
|
} |
|
types = res.Data |
|
return |
|
} |
|
|
|
// ArchiveVideos return archive and video info. |
|
func (d *Dao) ArchiveVideos(c context.Context, aids []int64) (avm map[int64]*model.ArcVideo, err error) { |
|
var ( |
|
res struct { |
|
Code int64 `json:"code"` |
|
Data map[int64]*model.ArcVideo `json:"data"` |
|
Message string `json:"message"` |
|
} |
|
v = make(url.Values) |
|
) |
|
v.Set("aids", xstr.JoinInts(aids)) |
|
if err = d.httpCli.Get(c, d.viewsURI, "", v, &res); err != nil { |
|
log.Error("d.httpClient.Get(%s) error(%v)", d.viewsURI, err) |
|
return |
|
} |
|
if res.Code != 0 { |
|
err = fmt.Errorf("%v", res) |
|
log.Error("d.httpClient.Get(%s) code(%d)", d.viewsURI, res.Code) |
|
return |
|
} |
|
avm = res.Data |
|
return |
|
} |
|
|
|
// SeasonInfos return season infos |
|
func (d *Dao) SeasonInfos(c context.Context, IDType string, id int64) (aids, oids []int64, err error) { |
|
var ( |
|
res struct { |
|
Code int64 `json:"code"` |
|
Message string `json:"message"` |
|
Data []*model.SeasonInfo `json:"result"` |
|
} |
|
params = make(url.Values, 1) |
|
) |
|
switch IDType { |
|
case "ep": |
|
params.Set("epid", fmt.Sprint(id)) |
|
case "ss": |
|
params.Set("season_id", fmt.Sprint(id)) |
|
default: |
|
err = fmt.Errorf("season type(%s) error", IDType) |
|
log.Error("d.SeasonInfos error(%v)", err) |
|
return |
|
} |
|
if err = d.httpSearch.Get(c, d.seasonURI, "", params, &res); err != nil { |
|
log.Error("d.httpSearch.Get(uri:%s,params:%s) error(%v)", d.seasonURI, params.Encode(), err) |
|
return |
|
} |
|
if res.Code != 0 { |
|
err = fmt.Errorf("uri:%s,code:%d", d.seasonURI, res.Code) |
|
log.Error("d.SeasonInfos error(%v)", err) |
|
return |
|
} |
|
for _, v := range res.Data { |
|
aids = append(aids, v.Aid) |
|
oids = append(oids, v.Cid) |
|
} |
|
return |
|
}
|
|
|