40 lines
737 B
Go
40 lines
737 B
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"go-common/app/job/main/dm2/model"
|
||
|
"go-common/library/ecode"
|
||
|
"go-common/library/log"
|
||
|
)
|
||
|
|
||
|
func (s *Service) subject(c context.Context, tp int32, oid int64) (sub *model.Subject, err error) {
|
||
|
var cache = true
|
||
|
if sub, err = s.dao.SubjectCache(c, tp, oid); err != nil {
|
||
|
err = nil
|
||
|
cache = false
|
||
|
}
|
||
|
if sub == nil {
|
||
|
if sub, err = s.dao.Subject(c, tp, oid); err != nil {
|
||
|
return
|
||
|
}
|
||
|
if sub == nil {
|
||
|
sub = &model.Subject{
|
||
|
Type: tp,
|
||
|
Oid: oid,
|
||
|
}
|
||
|
}
|
||
|
if cache {
|
||
|
s.cache.Do(c, func(ctx context.Context) {
|
||
|
s.dao.AddSubjectCache(ctx, sub)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
if sub.ID == 0 {
|
||
|
err = ecode.NothingFound
|
||
|
log.Error("subject not exist,type:%d,oid:%d", tp, oid)
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|