mirror of https://github.com/rocboss/paopao-ce
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
// Copyright 2023 ROC. All rights reserved.
|
|
// Use of this source code is governed by a MIT style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package web
|
|
|
|
import (
|
|
"github.com/alimy/mir/v4"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/redis/rueidis"
|
|
api "github.com/rocboss/paopao-ce/auto/api/v1"
|
|
"github.com/rocboss/paopao-ce/internal/core"
|
|
"github.com/rocboss/paopao-ce/internal/model/web"
|
|
"github.com/rocboss/paopao-ce/internal/servants/base"
|
|
"github.com/rocboss/paopao-ce/internal/servants/chain"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var (
|
|
_ api.Relax = (*relaxSrv)(nil)
|
|
)
|
|
|
|
type relaxSrv struct {
|
|
api.UnimplementedRelaxServant
|
|
*base.DaoServant
|
|
wc core.WebCache
|
|
}
|
|
|
|
type relaxChain struct {
|
|
api.UnimplementedRelaxChain
|
|
}
|
|
|
|
func (s *relaxChain) ChainGetUnreadMsgCount() gin.HandlersChain {
|
|
return gin.HandlersChain{chain.OnlineUserMeasure()}
|
|
}
|
|
|
|
func (s *relaxSrv) Chain() gin.HandlersChain {
|
|
return gin.HandlersChain{chain.JwtSurely()}
|
|
}
|
|
|
|
func (s *relaxSrv) GetUnreadMsgCount(req *web.GetUnreadMsgCountReq) (*web.GetUnreadMsgCountResp, mir.Error) {
|
|
if data, xerr := s.wc.GetUnreadMsgCountResp(req.Uid); xerr == nil && len(data) > 0 {
|
|
// logrus.Debugln("GetUnreadMsgCount get resp from cache")
|
|
return &web.GetUnreadMsgCountResp{
|
|
JsonResp: data,
|
|
}, nil
|
|
} else if !rueidis.IsRedisNil(xerr) {
|
|
logrus.Warnf("GetUnreadMsgCount from cache occurs error: %s", xerr)
|
|
}
|
|
// 使用缓存机制特殊处理
|
|
onCacheUnreadMsgEvent(req.Uid)
|
|
return &web.GetUnreadMsgCountResp{}, nil
|
|
}
|
|
|
|
func newRelaxSrv(s *base.DaoServant, wc core.WebCache) api.Relax {
|
|
return &relaxSrv{
|
|
DaoServant: s,
|
|
wc: wc,
|
|
}
|
|
}
|
|
|
|
func newRelaxChain() api.RelaxChain {
|
|
return &relaxChain{}
|
|
}
|