12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package dao
- import (
- "context"
- "encoding/json"
- "fmt"
- "strconv"
- "go-common/app/interface/main/growup/model"
- article "go-common/app/interface/openplatform/article/model"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- // ArticleStat article stat
- func (d *Dao) ArticleStat(c context.Context, mid int64, ip string) (res article.UpStat, err error) {
- arg := &article.ArgMid{Mid: mid, RealIP: ip}
- if res, err = d.art.CreationUpStat(c, arg); err != nil {
- log.Error("d.art.CreationUpStat(%+v) error(%v)", arg, err)
- if _, er := strconv.ParseInt(err.Error(), 10, 64); er != nil {
- err = ecode.CreativeArticleRPCErr
- }
- }
- return
- }
- func (d *Dao) getUpBaseStatCache(c context.Context, mid int64, date string) (data *model.UpBaseStat, err error) {
- key := fmt.Sprintf("growup-up-status:%d-%s", mid, date)
- res, err := d.getCacheVal(c, key)
- if err != nil {
- log.Error("d.getCacheVal error(%v)", err)
- return
- }
- if res == nil {
- return
- }
- err = json.Unmarshal(res, &data)
- if err != nil {
- log.Error("json.Unmarshal(%v) error(%v)", res, err)
- }
- return
- }
- // setUpBaseStatCache add stat cache.
- func (d *Dao) setUpBaseStatCache(c context.Context, mid int64, date string, st *model.UpBaseStat) (err error) {
- key := fmt.Sprintf("growup-up-status:%d-%s", mid, date)
- v, err := json.Marshal(st)
- if err != nil {
- log.Error("json.Marshal error(%v)", err)
- return
- }
- return d.setCacheKV(c, key, v, d.redisExpire)
- }
- // UpStat get up stat from hbase
- func (d *Dao) UpStat(c context.Context, mid int64, dt string) (st *model.UpBaseStat, err error) {
- // try cache
- st, err = d.getUpBaseStatCache(c, mid, dt)
- if err != nil {
- log.Error("d.getUpBaseStatCache(%d) error(%v)", mid, err)
- return
- }
- if st != nil {
- return
- }
- // from hbase
- if st, err = d.BaseUpStat(c, mid, dt); st != nil {
- d.AddCache(func() {
- d.setUpBaseStatCache(context.TODO(), mid, dt, st)
- })
- }
- return
- }
|