mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 18:10:25 +08:00
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
|
|
package services
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
|
||
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||
|
|
)
|
||
|
|
|
||
|
|
// 操作系统统计
|
||
|
|
type ServerClientSystemMonthlyStatService struct {
|
||
|
|
BaseService
|
||
|
|
}
|
||
|
|
|
||
|
|
// 查找前N个操作系统
|
||
|
|
func (this *ServerClientSystemMonthlyStatService) FindTopServerClientSystemMonthlyStats(ctx context.Context, req *pb.FindTopServerClientSystemMonthlyStatsRequest) (*pb.FindTopServerClientSystemMonthlyStatsResponse, error) {
|
||
|
|
_, userId, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
if userId > 0 {
|
||
|
|
err = models.SharedServerDAO.CheckUserServer(nil, userId, req.ServerId)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
var tx = this.NullTx()
|
||
|
|
statList, err := stats.SharedServerClientSystemMonthlyStatDAO.ListStats(tx, req.ServerId, req.Month, req.Offset, req.Size)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
pbStats := []*pb.FindTopServerClientSystemMonthlyStatsResponse_Stat{}
|
||
|
|
for _, stat := range statList {
|
||
|
|
pbStat := &pb.FindTopServerClientSystemMonthlyStatsResponse_Stat{
|
||
|
|
Count: int64(stat.Count),
|
||
|
|
Version: stat.Version,
|
||
|
|
}
|
||
|
|
system, err := models.SharedClientSystemDAO.FindEnabledClientSystem(tx, int64(stat.SystemId))
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
if system == nil {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
pbStat.ClientSystem = &pb.ClientSystem{
|
||
|
|
Id: int64(system.Id),
|
||
|
|
Name: system.Name,
|
||
|
|
}
|
||
|
|
pbStats = append(pbStats, pbStat)
|
||
|
|
}
|
||
|
|
return &pb.FindTopServerClientSystemMonthlyStatsResponse{Stats: pbStats}, nil
|
||
|
|
}
|