增加当日统计接口

This commit is contained in:
刘祥超
2022-04-07 19:46:50 +08:00
parent adcb33fce4
commit fe448e6556
3 changed files with 67 additions and 0 deletions

View File

@@ -112,6 +112,18 @@ func (this *TrafficDailyStatDAO) FindDailyStats(tx *dbs.Tx, dayFrom string, dayT
return result, nil return result, nil
} }
// FindDailyStat 查找某天的统计
func (this *TrafficDailyStatDAO) FindDailyStat(tx *dbs.Tx, day string) (*TrafficDailyStat, error) {
one, err := this.Query(tx).
Attr("day", day).
Find()
if err != nil || one == nil {
return nil, err
}
return one.(*TrafficDailyStat), nil
}
// Clean 清理历史数据 // Clean 清理历史数据
func (this *TrafficDailyStatDAO) Clean(tx *dbs.Tx, days int) error { func (this *TrafficDailyStatDAO) Clean(tx *dbs.Tx, days int) error {
var day = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -days)) var day = timeutil.Format("Ymd", time.Now().AddDate(0, 0, -days))

View File

@@ -564,6 +564,12 @@ func (this *APINode) registerServices(server *grpc.Server) {
this.rest(instance) this.rest(instance)
} }
{
instance := this.serviceInstance(&services.TrafficDailyStatService{}).(*services.TrafficDailyStatService)
pb.RegisterTrafficDailyStatServiceServer(server, instance)
this.rest(instance)
}
APINodeServicesRegister(this, server) APINodeServicesRegister(this, server)
// TODO check service names // TODO check service names

View File

@@ -0,0 +1,49 @@
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
timeutil "github.com/iwind/TeaGo/utils/time"
)
// TrafficDailyStatService 按日统计服务
type TrafficDailyStatService struct {
BaseService
}
// FindTrafficDailyStatWithDay 查找某日统计
func (this *TrafficDailyStatService) FindTrafficDailyStatWithDay(ctx context.Context, req *pb.FindTrafficDailyStatWithDayRequest) (*pb.FindTrafficDailyStatWithDayResponse, error) {
_, err := this.ValidateAdmin(ctx, 0)
if err != nil {
return nil, err
}
var tx = this.NullTx()
var day = timeutil.Format("Ymd")
stat, err := stats.SharedTrafficDailyStatDAO.FindDailyStat(tx, day)
if err != nil {
return nil, err
}
if stat == nil {
return &pb.FindTrafficDailyStatWithDayResponse{
TrafficDailyStat: nil,
}, nil
}
return &pb.FindTrafficDailyStatWithDayResponse{
TrafficDailyStat: &pb.TrafficDailyStat{
Id: int64(stat.Id),
Day: stat.Day,
CachedBytes: int64(stat.CachedBytes),
Bytes: int64(stat.Bytes),
CountRequests: int64(stat.CountRequests),
CountCachedRequests: int64(stat.CountCachedRequests),
CountAttackRequests: int64(stat.CountAttackRequests),
AttackBytes: int64(stat.AttackBytes),
},
}, nil
}