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.
106 lines
2.4 KiB
106 lines
2.4 KiB
package app |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
"go-common/app/interface/main/creative/conf" |
|
"go-common/app/interface/main/creative/dao/app" |
|
"go-common/app/interface/main/creative/dao/message" |
|
appDML "go-common/app/interface/main/creative/model/app" |
|
msgDML "go-common/app/interface/main/creative/model/message" |
|
"go-common/app/interface/main/creative/service" |
|
"go-common/library/log" |
|
) |
|
|
|
//Service struct. |
|
type Service struct { |
|
c *conf.Config |
|
app *app.Dao |
|
msg *message.Dao |
|
PortalIntro, PortalNotice []*appDML.PortalMeta |
|
CameraCfg map[string]interface{} |
|
p *service.Public |
|
} |
|
|
|
func (s *Service) initCameraCfg() { |
|
s.CameraCfg = map[string]interface{}{ |
|
"videoup_min_sec": 5, |
|
"videoup_max_sec": 300, |
|
"dyna_min_sec": 5, |
|
"dyna_max_sec": 300, |
|
"coo_min_sec": 5, |
|
"coo_max_sec": 300, |
|
} |
|
} |
|
|
|
//New get service. |
|
func New(c *conf.Config, rpcdaos *service.RPCDaos, p *service.Public) *Service { |
|
s := &Service{ |
|
c: c, |
|
msg: message.New(c), |
|
app: app.New(c), |
|
PortalIntro: make([]*appDML.PortalMeta, 0), |
|
PortalNotice: make([]*appDML.PortalMeta, 0), |
|
p: p, |
|
} |
|
s.initCameraCfg() |
|
s.loadPortal() |
|
go s.loadproc() |
|
return s |
|
} |
|
|
|
// Ping service |
|
func (s *Service) Ping(c context.Context) (err error) { |
|
if err = s.app.Ping(c); err != nil { |
|
log.Error("s.appDao.PingDb err(%v)", err) |
|
} |
|
return |
|
} |
|
|
|
// Close dao |
|
func (s *Service) Close() { |
|
s.app.Close() |
|
} |
|
|
|
// loadproc |
|
func (s *Service) loadproc() { |
|
for { |
|
time.Sleep(2 * time.Minute) |
|
s.loadPortal() |
|
} |
|
} |
|
|
|
//load db |
|
func (s *Service) loadPortal() { |
|
intro, err := s.app.Portals(context.TODO(), appDML.PortalIntro) |
|
if err != nil { |
|
log.Error("s.app.intro error(%v)", err) |
|
return |
|
} |
|
s.PortalIntro = intro |
|
// 创作激励 + 征稿公告 |
|
notice, err := s.app.Portals(context.TODO(), appDML.PortalIntro) |
|
if err != nil { |
|
log.Error("s.app.notice error(%v)", err) |
|
return |
|
} |
|
s.PortalNotice = notice |
|
} |
|
|
|
// TopMsg fn. |
|
func (s *Service) TopMsg(c context.Context, mid int64, build int, os, app, ak, ck, ip string) (data []*msgDML.Message, err error) { |
|
if build > 5332000 && os == "android" { |
|
return |
|
} else if build > 8220 && app == "iphone" { |
|
return |
|
} else if build > 7339 && build < 8000 && app == "iphone_b" { |
|
return |
|
} |
|
data, err = s.msg.GetUpList(c, mid, ak, ck, ip) |
|
topLen := 1 |
|
if len(data) > topLen { |
|
data = data[:topLen] |
|
} |
|
return |
|
}
|
|
|