From 08b1c038f1c2ffb167b5245df971e879321868f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 24 Sep 2022 18:36:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=B5=81=E9=87=8F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A05=E5=88=86=E9=92=9F=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/server_daily_stat_dao.go | 16 ++++++++++ .../rpc/services/service_server_daily_stat.go | 32 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/internal/db/models/server_daily_stat_dao.go b/internal/db/models/server_daily_stat_dao.go index d841884c..155b0825 100644 --- a/internal/db/models/server_daily_stat_dao.go +++ b/internal/db/models/server_daily_stat_dao.go @@ -437,6 +437,22 @@ func (this *ServerDailyStatDAO) FindDailyStats(tx *dbs.Tx, serverId int64, dayFr return } +// FindStatsWithDay 按天查找5分钟级统计 +// day YYYYMMDD +func (this *ServerDailyStatDAO) FindStatsWithDay(tx *dbs.Tx, serverId int64, day string) (result []*ServerDailyStat, err error) { + if !regexp.MustCompile(`^\d{8}$`).MatchString(day) { + return + } + + _, err = this.Query(tx). + Attr("serverId", serverId). + Attr("day", day). + AscPk(). + Slice(&result). + FindAll() + return +} + // FindMonthlyStatsWithPlan 查找某月有套餐的流量 // month YYYYMM func (this *ServerDailyStatDAO) FindMonthlyStatsWithPlan(tx *dbs.Tx, month string) (result []*ServerDailyStat, err error) { diff --git a/internal/rpc/services/service_server_daily_stat.go b/internal/rpc/services/service_server_daily_stat.go index 760955f9..7cca3b06 100644 --- a/internal/rpc/services/service_server_daily_stat.go +++ b/internal/rpc/services/service_server_daily_stat.go @@ -192,6 +192,38 @@ func (this *ServerDailyStatService) FindLatestServerMinutelyStats(ctx context.Co return &pb.FindLatestServerMinutelyStatsResponse{Stats: result}, nil } +// FindServer5MinutelyStatsWithDay 读取某天的5分钟间隔流量 +func (this *ServerDailyStatService) FindServer5MinutelyStatsWithDay(ctx context.Context, req *pb.FindServer5MinutelyStatsWithDayRequest) (*pb.FindServer5MinutelyStatsWithDayResponse, error) { + _, err := this.ValidateAdmin(ctx) + if err != nil { + return nil, err + } + + var tx = this.NullTx() + if len(req.Day) == 0 { + req.Day = timeutil.Format("Ymd") + } + + dailyStats, err := models.SharedServerDailyStatDAO.FindStatsWithDay(tx, req.ServerId, req.Day) + if err != nil { + return nil, err + } + + var pbStats = []*pb.FindServer5MinutelyStatsWithDayResponse_Stat{} + for _, stat := range dailyStats { + pbStats = append(pbStats, &pb.FindServer5MinutelyStatsWithDayResponse_Stat{ + Day: stat.Day, + TimeFrom: stat.TimeFrom, + TimeTo: stat.TimeTo, + Bytes: int64(stat.Bytes), + CachedBytes: int64(stat.CachedBytes), + CountRequests: int64(stat.CountRequests), + CountCachedRequests: int64(stat.CountCachedRequests), + }) + } + return &pb.FindServer5MinutelyStatsWithDayResponse{Stats: pbStats}, nil +} + // FindLatestServerDailyStats 按天读取统计数据 func (this *ServerDailyStatService) FindLatestServerDailyStats(ctx context.Context, req *pb.FindLatestServerDailyStatsRequest) (*pb.FindLatestServerDailyStatsResponse, error) { _, err := this.ValidateAdmin(ctx)