添加基础统计信息数据

This commit is contained in:
junleea 2025-03-31 15:36:34 +08:00
parent 77777ceff2
commit 56229303a4
5 changed files with 74 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import (
"encoding/json"
"gorm.io/gorm"
"log"
"time"
)
type Session struct {
@ -133,3 +134,32 @@ func FindSessionMessageCountByUserID(userID int) []SessionMessageCount {
}
return sessionMessageCounts
}
// 获取会话数,问答数,今日问答数
func FindBaseSessionMessageStatisticsInfo() (int64, int64, int64, error) {
//所有会话数
var sessionCount int64
var messageCount int64
var todayMessageCount int64
today := time.Now().Truncate(24 * time.Hour)
var db2 *gorm.DB
if proto.Config.SERVER_SQL_LOG {
db2 = DB.Debug()
} else {
db2 = DB
}
// 查询会话数量
if err := db2.Model(&Session{}).Count(&sessionCount).Error; err != nil {
return 0, 0, 0, err
}
// 查询消息数量
if err := db2.Model(&Message{}).Count(&messageCount).Error; err != nil {
return 0, 0, 0, err
}
// 查询今天的消息数量
if err := db2.Model(&Message{}).Where("created_at > ?", today).Count(&todayMessageCount).Error; err != nil {
return 0, 0, 0, err
}
return sessionCount, messageCount, todayMessageCount, nil
}

View File

@ -188,3 +188,9 @@ func UserStatisticsData(userID int) UserStatistics {
DB.Model(&Message{}).Where("from_id = ?", userID).Count(&userStatistics.MessageCount)
return userStatistics
}
func FindUserNum() int64 {
var count int64
DB.Model(&User{}).Count(&count)
return count
}

View File

@ -53,6 +53,7 @@ func SetUpToolGroup(router *gin.Engine) {
toolGroup.POST("/monitor", SetDeviceStatusV2)
//发送邮件
toolGroup.POST("/send_mail", SendMailTool)
toolGroup.POST("/dashboard", DashBoardStatistics)
}
func SetDeviceStatusV2(c *gin.Context) {
@ -403,3 +404,12 @@ func SendMailTool(c *gin.Context) {
}
}
func DashBoardStatistics(c *gin.Context) {
//用户统计信息
rbase := service.GetBaseDashboardInfo()
var resp proto.DashBoardStatisticsResp
resp.DashBoardStatisticsSt = rbase
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success", "data": resp})
return
}

13
proto/tool.go Normal file
View File

@ -0,0 +1,13 @@
package proto
// 基础统计信息,会话数,问答数,用户数,今日处理问答数
type DashBoardStatisticsSt struct {
SessionNum int64 `json:"session_num"`
MessageCount int64 `json:"message_count"`
UserCount int64 `json:"user_count"`
TodayMessageCount int64 `json:"today_message_count"`
}
type DashBoardStatisticsResp struct {
DashBoardStatisticsSt DashBoardStatisticsSt `json:"dashboard_statistics_st"`
}

View File

@ -1,9 +1,11 @@
package service
import (
"StuAcaWorksAI/dao"
"StuAcaWorksAI/proto"
"StuAcaWorksAI/worker"
"fmt"
"log"
"regexp"
"time"
)
@ -113,3 +115,16 @@ func CheckEmail(email string) bool {
reg := regexp.MustCompile(pattern)
return reg.MatchString(email)
}
// 获取基础信息统计信息
func GetBaseDashboardInfo() proto.DashBoardStatisticsSt {
var res proto.DashBoardStatisticsSt
var err error
res.SessionNum, res.MessageCount, res.TodayMessageCount, err = dao.FindBaseSessionMessageStatisticsInfo()
if err != nil {
log.Println("get base dashboard info error:", err)
}
// 获取用户数
res.UserCount = dao.FindUserNum()
return res
}