Create & Init Project...
This commit is contained in:
159
app/interface/main/creative/service/academy/service.go
Normal file
159
app/interface/main/creative/service/academy/service.go
Normal file
@ -0,0 +1,159 @@
|
||||
package academy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"go-common/app/interface/main/creative/conf"
|
||||
"go-common/app/interface/main/creative/dao/academy"
|
||||
"go-common/app/interface/main/creative/dao/archive"
|
||||
"go-common/app/interface/main/creative/dao/article"
|
||||
"go-common/app/interface/main/creative/dao/resource"
|
||||
acaMdl "go-common/app/interface/main/creative/model/academy"
|
||||
"go-common/app/interface/main/creative/service"
|
||||
|
||||
"go-common/library/log"
|
||||
)
|
||||
|
||||
//Service struct
|
||||
type Service struct {
|
||||
c *conf.Config
|
||||
aca *academy.Dao
|
||||
arc *archive.Dao
|
||||
art *article.Dao
|
||||
resource *resource.Dao
|
||||
TagsCache map[string][]*acaMdl.Tag
|
||||
TagMapCache map[int64]*acaMdl.Tag
|
||||
parentChildMapCache map[int64]*acaMdl.Tag
|
||||
ResourceMapCache map[int64]struct{}
|
||||
OccCache []*acaMdl.Occupation
|
||||
OccMapCache map[int64]*acaMdl.Occupation
|
||||
SkillCache []*acaMdl.Skill
|
||||
SkillMapCache map[int64]*acaMdl.Skill
|
||||
OfficialID int64
|
||||
EditorChoiceID int64
|
||||
NewbCourseID int64
|
||||
ResourceID int64
|
||||
//for recommend
|
||||
Seed int64
|
||||
RecommendArcs []*acaMdl.RecArchive
|
||||
//task
|
||||
p *service.Public
|
||||
//keywords
|
||||
KWsCache []interface{}
|
||||
}
|
||||
|
||||
//New get service
|
||||
func New(c *conf.Config, rpcdaos *service.RPCDaos, p *service.Public) *Service {
|
||||
s := &Service{
|
||||
c: c,
|
||||
aca: academy.New(c),
|
||||
arc: rpcdaos.Arc,
|
||||
art: rpcdaos.Art,
|
||||
resource: resource.New(c),
|
||||
OccMapCache: make(map[int64]*acaMdl.Occupation),
|
||||
SkillMapCache: make(map[int64]*acaMdl.Skill),
|
||||
OfficialID: c.Academy.OfficialID,
|
||||
EditorChoiceID: c.Academy.EditorChoiceID,
|
||||
NewbCourseID: c.Academy.NewbCourseID,
|
||||
ResourceID: c.Academy.ResourceID,
|
||||
p: p,
|
||||
}
|
||||
s.loadTags()
|
||||
s.loadOccupations()
|
||||
s.loadSkills()
|
||||
s.loadResources()
|
||||
s.loadKeyWords()
|
||||
go s.loadProc()
|
||||
return s
|
||||
}
|
||||
|
||||
// Ping service
|
||||
func (s *Service) Ping(c context.Context) (err error) {
|
||||
if err = s.aca.Ping(c); err != nil {
|
||||
log.Error("s.aca.Ping err(%v)", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Close dao
|
||||
func (s *Service) Close() {
|
||||
s.aca.Close()
|
||||
}
|
||||
|
||||
// loadproc
|
||||
func (s *Service) loadProc() {
|
||||
for {
|
||||
time.Sleep(3 * time.Minute)
|
||||
s.loadTags()
|
||||
s.loadOccupations()
|
||||
s.loadSkills()
|
||||
s.loadResources()
|
||||
s.loadKeyWords()
|
||||
}
|
||||
}
|
||||
|
||||
//load tags
|
||||
func (s *Service) loadTags() {
|
||||
tgList, tgMap, pcMap, err := s.aca.TagList(context.Background())
|
||||
if err != nil {
|
||||
log.Error("s.aca.TagList error(%v)", err)
|
||||
return
|
||||
}
|
||||
s.TagsCache = tgList
|
||||
s.TagMapCache = tgMap
|
||||
s.parentChildMapCache = pcMap
|
||||
}
|
||||
|
||||
//load occupations
|
||||
func (s *Service) loadOccupations() {
|
||||
ocs, err := s.aca.Occupations(context.Background())
|
||||
if err != nil {
|
||||
log.Error("s.aca.Occupations error(%v)", err)
|
||||
return
|
||||
}
|
||||
s.OccCache = ocs
|
||||
|
||||
for _, v := range s.OccCache {
|
||||
s.OccMapCache[v.ID] = v
|
||||
}
|
||||
}
|
||||
|
||||
//load skills
|
||||
func (s *Service) loadSkills() {
|
||||
sks, err := s.aca.Skills(context.Background())
|
||||
if err != nil {
|
||||
log.Error("s.aca.Skills error(%v)", err)
|
||||
return
|
||||
}
|
||||
s.SkillCache = sks
|
||||
|
||||
for _, v := range s.SkillCache {
|
||||
s.SkillMapCache[v.ID] = v
|
||||
}
|
||||
}
|
||||
|
||||
//load skills
|
||||
func (s *Service) loadResources() {
|
||||
res, err := s.resource.Resource(context.Background(), int(s.ResourceID))
|
||||
if err != nil {
|
||||
log.Error("loadResources ResourceID(%d) error(%v)", int(s.ResourceID), err)
|
||||
return
|
||||
}
|
||||
if res == nil {
|
||||
return
|
||||
}
|
||||
s.ResourceMapCache = res
|
||||
}
|
||||
|
||||
//load keywords
|
||||
func (s *Service) loadKeyWords() {
|
||||
res, err := s.aca.Keywords(context.Background())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if res == nil {
|
||||
return
|
||||
}
|
||||
s.KWsCache = acaMdl.Trees(res, "ID", "ParentID", "Children")
|
||||
}
|
Reference in New Issue
Block a user