统计在线人数

This commit is contained in:
hawklin2017 2026-04-22 14:52:46 +08:00
parent 3f4755faca
commit 8540f4760d
2 changed files with 12 additions and 6 deletions

View File

@ -132,7 +132,7 @@ func newGinRouter(ctx context.Context, client discovery.SvcDiscoveryRegistry, co
r.Use(gzip.Gzip(gzip.BestSpeed))
}
r.Use(prommetricsGin(), gin.RecoveryWithWriter(gin.DefaultErrorWriter, mw.GinPanicErr), mw.CorsHandler(), mw.GinParseOperationID(), GinParseToken(rpcli.NewAuthClient(authConn)))
u := NewUserApi(user.NewUserClient(userConn), client, config.Share.RpcRegisterName)
u := NewUserApi(user.NewUserClient(userConn), client, config.Share.RpcRegisterName, config.Share.IMAdminUserID)
m := NewMessageApi(msg.NewMsgClient(msgConn), rpcli.NewUserClient(userConn), config.Share.IMAdminUserID)
cp := NewCaptchaApi(pbcaptcha.NewCaptchaClient(captchaConn))
bl := NewUserGlobalBlackApi(blacklistCtrl, userDB, config.Share.IMAdminUserID, rpcli.NewAuthClient(authConn))

View File

@ -16,6 +16,7 @@ package api
import (
"github.com/gin-gonic/gin"
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/protocol/constant"
"github.com/openimsdk/protocol/msggateway"
@ -28,9 +29,10 @@ import (
)
type UserApi struct {
Client user.UserClient
discov discovery.SvcDiscoveryRegistry
config config.RpcRegisterName
Client user.UserClient
discov discovery.SvcDiscoveryRegistry
config config.RpcRegisterName
imAdminUserID []string
}
type GetSelfLoginPlatformsResp struct {
@ -47,8 +49,8 @@ type GetOnlineUserCountResp struct {
OnlineUserCount int64 `json:"onlineUserCount"`
}
func NewUserApi(client user.UserClient, discov discovery.SvcDiscoveryRegistry, config config.RpcRegisterName) UserApi {
return UserApi{Client: client, discov: discov, config: config}
func NewUserApi(client user.UserClient, discov discovery.SvcDiscoveryRegistry, config config.RpcRegisterName, imAdminUserID []string) UserApi {
return UserApi{Client: client, discov: discov, config: config, imAdminUserID: imAdminUserID}
}
func (u *UserApi) UserRegister(c *gin.Context) {
@ -146,6 +148,10 @@ func (u *UserApi) UserRegisterCount(c *gin.Context) {
// GetOnlineUserCount Get current online user count.
func (u *UserApi) GetOnlineUserCount(c *gin.Context) {
if err := authverify.CheckAdmin(c, u.imAdminUserID); err != nil {
apiresp.GinError(c, err)
return
}
cursor := uint64(0)
var count int64
for {