123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package service
- import (
- "context"
- "fmt"
- artmdl "go-common/app/interface/openplatform/article/model"
- )
- var (
- _likeMessage = int64(1)
- )
- // SendMessage send message to uppper
- func (s *Service) SendMessage(c context.Context, aid int64, stat *artmdl.Stats) (err error) {
- var (
- title, msg string
- meta *artmdl.Meta
- max int64
- )
- if exist, _ := s.dao.ExpireMaxLikeCache(c, aid); exist {
- max, _ = s.dao.MaxLikeCache(c, aid)
- }
- if (stat.Like <= max) || (!shouldNofify(stat.Like)) {
- return
- }
- if meta, err = s.ArticleMeta(c, aid); (err != nil) || (meta == nil) {
- return
- }
- mid := meta.Author.Mid
- if len(s.c.Article.MessageMids) > 0 {
- var exist bool
- for _, m := range s.c.Article.MessageMids {
- if m == mid {
- exist = true
- break
- }
- }
- if !exist {
- return
- }
- }
- title = fmt.Sprintf("有%v人点赞了你的专栏文章", stat.Like)
- msg = fmt.Sprintf("有%v个小伙伴点赞你投稿的专栏文章“#{%s}{\"http://www.bilibili.com/read/cv%d\"}”~快去看看吧!#{点击前往}{\"http://www.bilibili.com/read/cv%d\"}", stat.Like, meta.Title, aid, aid)
- err = s.dao.SendMessage(c, _likeMessage, mid, aid, title, msg)
- cache.Save(func() {
- s.dao.SetMaxLikeCache(context.TODO(), aid, stat.Like)
- })
- return
- }
- func shouldNofify(n int64) (res bool) {
- switch {
- case n <= 0:
- res = false
- case n <= 10:
- res = true
- case n <= 100:
- res = (n%10 == 0)
- case n <= 1000:
- res = (n%100 == 0)
- default:
- res = (n%10000 == 0)
- }
- return
- }
|