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.
158 lines
3.7 KiB
158 lines
3.7 KiB
package sports |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
"net/url" |
|
"time" |
|
|
|
"go-common/app/interface/main/activity/conf" |
|
"go-common/app/interface/main/activity/dao/sports" |
|
mdlsp "go-common/app/interface/main/activity/model/sports" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_qqNews = 1 |
|
_qqMatch = 2 |
|
_qqMatchTid = "14" |
|
_qqTeamRank = 3 |
|
_qqRankTid = "34" |
|
_qqPlayerRank = 4 |
|
_qqRoute = "matchUnion/fetchData" |
|
_newsRoute = "getQQNewsIndexAndItemsVerify" |
|
) |
|
|
|
// Service struct |
|
type Service struct { |
|
dao *sports.Dao |
|
} |
|
|
|
// New Service |
|
func New(c *conf.Config) (s *Service) { |
|
s = &Service{ |
|
dao: sports.New(c), |
|
} |
|
go s.qqNews() |
|
go s.qqMatch() |
|
go s.qqTeamRank() |
|
go s.qqPlayerRank() |
|
return |
|
} |
|
|
|
func (s *Service) qqNews() { |
|
var ( |
|
params = url.Values{} |
|
rs *mdlsp.QqRes |
|
err error |
|
c = context.Background() |
|
) |
|
for { |
|
for t := 0; t < conf.Conf.Rule.QqTryCount; t++ { |
|
if rs, err = s.dao.QqNews(c, params, _newsRoute); err != nil || rs == nil { |
|
continue |
|
} |
|
s.dao.SetQqCache(c, &rs.IDlist, _qqNews) |
|
break |
|
} |
|
time.Sleep(time.Duration(conf.Conf.Rule.TickQq)) |
|
} |
|
} |
|
|
|
func (s *Service) qqMatch() { |
|
var ( |
|
rs *json.RawMessage |
|
err error |
|
c = context.Background() |
|
params = url.Values{} |
|
) |
|
params.Set("tid", _qqMatchTid) |
|
params.Set("indexName", "col_4") |
|
params.Set("startTime", conf.Conf.Rule.QqStartTime) |
|
params.Set("endTime", conf.Conf.Rule.QqEndTime) |
|
for { |
|
for t := 0; t < conf.Conf.Rule.QqTryCount; t++ { |
|
if rs, err = s.dao.Qq(c, params, _qqRoute); err != nil || rs == nil || len(*rs) == 0 { |
|
continue |
|
} |
|
s.dao.SetQqCache(c, rs, _qqMatch) |
|
break |
|
} |
|
time.Sleep(time.Duration(conf.Conf.Rule.TickQq)) |
|
} |
|
} |
|
|
|
func (s *Service) qqTeamRank() { |
|
var ( |
|
rs *json.RawMessage |
|
err error |
|
c = context.Background() |
|
params = url.Values{} |
|
) |
|
params.Set("tid", _qqRankTid) |
|
params.Set("competitionId", "4") |
|
params.Set("seasonId", conf.Conf.Rule.QqYear) |
|
params.Set("valueType", "teamRank") |
|
params.Set("valueId", "teamRank") |
|
for { |
|
for t := 0; t < conf.Conf.Rule.QqTryCount; t++ { |
|
if rs, err = s.dao.Qq(c, params, _qqRoute); err != nil || rs == nil || len(*rs) == 0 { |
|
continue |
|
} |
|
s.dao.SetQqCache(c, rs, _qqTeamRank) |
|
break |
|
} |
|
time.Sleep(time.Duration(conf.Conf.Rule.TickQq)) |
|
} |
|
} |
|
|
|
func (s *Service) qqPlayerRank() { |
|
var ( |
|
rs *json.RawMessage |
|
err error |
|
c = context.Background() |
|
params = url.Values{} |
|
) |
|
params.Set("tid", _qqRankTid) |
|
params.Set("competitionId", "4") |
|
params.Set("seasonId", conf.Conf.Rule.PlayerYear) |
|
params.Set("valueType", "playerGoalRank") |
|
params.Set("valueId", "playerGoalRank") |
|
for { |
|
for t := 0; t < conf.Conf.Rule.QqTryCount; t++ { |
|
if rs, err = s.dao.Qq(c, params, _qqRoute); err != nil || rs == nil || len(*rs) == 0 { |
|
continue |
|
} |
|
s.dao.SetQqCache(c, rs, _qqPlayerRank) |
|
break |
|
} |
|
time.Sleep(time.Duration(conf.Conf.Rule.TickQq)) |
|
} |
|
} |
|
|
|
// Qq get qq. |
|
func (s *Service) Qq(c context.Context, params url.Values, p *mdlsp.ParamQq) (rs *json.RawMessage, err error) { |
|
if p.Tp > 0 { |
|
if rs, err = s.dao.QqCache(c, p.Tp); err != nil { |
|
log.Error("s.dao.QqCache tp(%d) error(%v) ", p.Tp, err) |
|
} |
|
} else if rs, err = s.dao.Qq(c, params, p.Route); err != nil { |
|
sports.PromError("QQ接口错误", "s.dao.Qq route(%s) error(%v)", p.Route, err) |
|
} |
|
if rs == nil { |
|
err = ecode.ActivityServerTimeout |
|
} |
|
return |
|
} |
|
|
|
// News get qq news. |
|
func (s *Service) News(c context.Context, params url.Values, p *mdlsp.ParamNews) (rs *mdlsp.QqRes, err error) { |
|
if rs, err = s.dao.QqNews(c, params, p.Route); err != nil { |
|
sports.PromError("QQ接口错误", "s.dao.Qq error(%v)", err) |
|
} |
|
if rs == nil { |
|
err = ecode.ActivityServerTimeout |
|
} |
|
return |
|
}
|
|
|