对服务增加基础的数据统计/部分代码分Package

This commit is contained in:
GoEdgeLab
2021-01-25 16:40:03 +08:00
parent f1c325713d
commit 2f9fe99088
106 changed files with 2095 additions and 148 deletions

View File

@@ -0,0 +1,57 @@
package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/regions"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
// 地区月份统计
type ServerRegionCountryMonthlyStatService struct {
BaseService
}
// 查找前N个地区
func (this *ServerRegionCountryMonthlyStatService) FindTopServerRegionCountryMonthlyStats(ctx context.Context, req *pb.FindTopServerRegionCountryMonthlyStatsRequest) (*pb.FindTopServerRegionCountryMonthlyStatsResponse, 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.SharedServerRegionCountryMonthlyStatDAO.ListStats(tx, req.ServerId, req.Month, req.Offset, req.Size)
if err != nil {
return nil, err
}
pbStats := []*pb.FindTopServerRegionCountryMonthlyStatsResponse_Stat{}
for _, stat := range statList {
pbStat := &pb.FindTopServerRegionCountryMonthlyStatsResponse_Stat{
Count: int64(stat.Count),
}
country, err := regions.SharedRegionCountryDAO.FindEnabledRegionCountry(tx, int64(stat.CountryId))
if err != nil {
return nil, err
}
if country == nil {
continue
}
pbStat.RegionCountry = &pb.RegionCountry{
Id: int64(country.Id),
Name: country.Name,
}
pbStats = append(pbStats, pbStat)
}
return &pb.FindTopServerRegionCountryMonthlyStatsResponse{Stats: pbStats}, nil
}