|
- package svc
-
- import (
- "applet/app/db"
- "applet/app/svc"
- "applet/app/utils/cache"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
- "code.fnuoos.com/EggPlanet/egg_system_rules.git/md"
- "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
- "context"
- "errors"
- "fmt"
- "github.com/gin-gonic/gin"
- "github.com/olivere/elastic/v7"
- "time"
- )
-
- func IsCanComment(c *gin.Context) (isCan bool, err error) {
- user := svc.GetUser(c)
- //1、检测是否已实名
- eggFriendCircleBasicDb := implement.NewEggFriendCircleBasicDb(db.Db)
- eggFriendCircleBasic, err := eggFriendCircleBasicDb.EggFriendCircleBasicGet()
- if err != nil {
- return
- }
- if eggFriendCircleBasic.CommentIsRealName == 1 && user.IsRealName == 0 {
- err = errors.New("当前未实名~")
- return
- }
-
- //2、检测是否在黑名单中
- eggFriendCircleUserBlackListDb := implement.NewEggFriendCircleUserBlackListDb(db.Db)
- eggFriendCircleUserBlackList, err := eggFriendCircleUserBlackListDb.EggFriendCircleUserBlackListGet(user.Id)
- if err != nil {
- return
- }
- if eggFriendCircleUserBlackList != nil {
- err = errors.New("已被拉入黑名单~")
- return
- }
-
- //3、检测是否已达次数
- now := time.Now()
- startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Format("2006-01-02 15:04:05")
- endOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).Add(24 * time.Hour).Format("2006-01-02 15:04:05")
- query := elastic.NewBoolQuery().
- Must(
- elastic.NewTermQuery("uid", user.Id),
- elastic.NewRangeQuery("created_at").Gte(startOfDay).Lt(endOfDay), // 根据你的索引结构调整字段名
- )
- searchResult, err := es.EsClient.Search().Index(md.EggFriendCircleCommentEsAlias).
- Query(query).
- Size(0). // 只关心总数,不实际返回文档
- Do(context.Background())
- if err != nil {
- return
- }
- total := searchResult.TotalHits()
- if int(total) >= eggFriendCircleBasic.CommentNumsEveryDay {
- err = errors.New("今日评论发布数量已达上限~")
- return
- }
- isCan = true
- return
- }
-
- func GetUserWithCommentLike(commentIndexId string, uid int64) (isLike bool, err error) {
- // 定义 Bitmap 的键名
- key := fmt.Sprintf(md.CommentLikeCacheKey, commentIndexId)
- isLiked, err := cache.GetBit(key, uid)
- if err != nil {
- return
- }
- if isLiked == 1 {
- isLike = true
- }
- return
- }
|