Create & Init Project...
This commit is contained in:
134
app/interface/main/space/dao/bplus.go
Normal file
134
app/interface/main/space/dao/bplus.go
Normal file
@ -0,0 +1,134 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
|
||||
"go-common/app/interface/main/space/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/net/metadata"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
const (
|
||||
_groupsCountURI = "/link_group/v1/member/created_groups_num"
|
||||
_dynamicListURI = "/dynamic_svr/v0/dynamic_svr/co_space_history"
|
||||
_dynamicCntURI = "/dynamic_svr/v0/dynamic_svr/space_dy_num"
|
||||
_dynamicURI = "/dynamic_svr/v1/dynamic_svr/get_dynamic_detail"
|
||||
)
|
||||
|
||||
// GroupsCount .
|
||||
func (d *Dao) GroupsCount(c context.Context, mid, vmid int64) (count int, err error) {
|
||||
var (
|
||||
req *http.Request
|
||||
ip = metadata.String(c, metadata.RemoteIP)
|
||||
)
|
||||
params := url.Values{}
|
||||
params.Set("master_uid", strconv.FormatInt(vmid, 10))
|
||||
if req, err = d.httpR.NewRequest(http.MethodGet, d.groupsCountURL, ip, params); err != nil {
|
||||
return
|
||||
}
|
||||
req.Header.Set("X-BiliLive-UID", strconv.FormatInt(mid, 10))
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data *struct {
|
||||
Num int `json:"num"`
|
||||
}
|
||||
}
|
||||
if err = d.httpR.Do(c, req, &res); err != nil {
|
||||
err = errors.Wrapf(err, "url(%s) header(X-BiliLive-UID:%s)", req.URL.String(), req.Header.Get("X-BiliLive-UID"))
|
||||
return
|
||||
}
|
||||
if res.Code != ecode.OK.Code() {
|
||||
err = errors.Wrapf(ecode.Int(res.Code), "url(%s) header(X-BiliLive-UID:%s)", req.URL.String(), req.Header.Get("X-BiliLive-UID"))
|
||||
return
|
||||
}
|
||||
if res.Data != nil {
|
||||
count = res.Data.Num
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DynamicCnt dynamic count.
|
||||
func (d *Dao) DynamicCnt(c context.Context, mid int64) (cnt int64, err error) {
|
||||
var (
|
||||
params = url.Values{}
|
||||
ip = metadata.String(c, metadata.RemoteIP)
|
||||
)
|
||||
params.Set("uids", strconv.FormatInt(mid, 10))
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data struct {
|
||||
Items []*struct {
|
||||
UID int64 `json:"uid"`
|
||||
Num int64 `json:"num"`
|
||||
} `json:"items"`
|
||||
}
|
||||
}
|
||||
if err = d.httpR.Get(c, d.dynamicCntURL, ip, params, &res); err != nil {
|
||||
return
|
||||
}
|
||||
if res.Code != ecode.OK.Code() {
|
||||
err = errors.Wrap(ecode.Int(res.Code), d.dynamicCntURL+"?"+params.Encode())
|
||||
return
|
||||
}
|
||||
if len(res.Data.Items) > 0 && res.Data.Items[0].UID == mid {
|
||||
cnt = res.Data.Items[0].Num
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DynamicList .
|
||||
func (d *Dao) DynamicList(c context.Context, mid, vmid, dyID int64, qn, page int) (data *model.DyList, err error) {
|
||||
ip := metadata.String(c, metadata.RemoteIP)
|
||||
params := url.Values{}
|
||||
if mid > 0 {
|
||||
params.Set("visitor_uid", strconv.FormatInt(mid, 10))
|
||||
}
|
||||
params.Set("host_uid", strconv.FormatInt(vmid, 10))
|
||||
params.Set("offset_dynamic_id", strconv.FormatInt(dyID, 10))
|
||||
params.Set("qn", strconv.Itoa(qn))
|
||||
params.Set("page", strconv.Itoa(page))
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data *model.DyList `json:"data"`
|
||||
}
|
||||
if err = d.httpR.Get(c, d.dynamicListURL, ip, params, &res); err != nil {
|
||||
return
|
||||
}
|
||||
if res.Code != ecode.OK.Code() {
|
||||
err = errors.Wrap(ecode.Int(res.Code), d.dynamicListURL+"?"+params.Encode())
|
||||
return
|
||||
}
|
||||
data = res.Data
|
||||
return
|
||||
}
|
||||
|
||||
// Dynamic .
|
||||
func (d *Dao) Dynamic(c context.Context, mid, dynamicID int64, qn int) (data *model.DyCard, err error) {
|
||||
ip := metadata.String(c, metadata.RemoteIP)
|
||||
params := url.Values{}
|
||||
if mid > 0 {
|
||||
params.Set("uid", strconv.FormatInt(mid, 10))
|
||||
}
|
||||
params.Set("dynamic_id", strconv.FormatInt(dynamicID, 10))
|
||||
params.Set("qn", strconv.Itoa(qn))
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data struct {
|
||||
Card *model.DyCard `json:"card"`
|
||||
} `json:"data"`
|
||||
}
|
||||
if err = d.httpR.Get(c, d.dynamicURL, ip, params, &res); err != nil {
|
||||
return
|
||||
}
|
||||
if res.Code != ecode.OK.Code() {
|
||||
err = errors.Wrap(ecode.Int(res.Code), d.dynamicURL+"?"+params.Encode())
|
||||
return
|
||||
}
|
||||
data = res.Data.Card
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user