mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-07 10:40:25 +08:00
优化代码
This commit is contained in:
@@ -120,8 +120,8 @@ func (this *NodeRegionDAO) FindAllEnabledRegionPrices(tx *dbs.Tx) (result []*Nod
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindAllEnabledAndOnRegions 列出所有启用的区域
|
// FindAllAvailableRegions 列出所有启用的区域
|
||||||
func (this *NodeRegionDAO) FindAllEnabledAndOnRegions(tx *dbs.Tx) (result []*NodeRegion, err error) {
|
func (this *NodeRegionDAO) FindAllAvailableRegions(tx *dbs.Tx) (result []*NodeRegion, err error) {
|
||||||
_, err = this.Query(tx).
|
_, err = this.Query(tx).
|
||||||
State(NodeRegionStateEnabled).
|
State(NodeRegionStateEnabled).
|
||||||
Attr("isOn", true).
|
Attr("isOn", true).
|
||||||
@@ -132,6 +132,25 @@ func (this *NodeRegionDAO) FindAllEnabledAndOnRegions(tx *dbs.Tx) (result []*Nod
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindAllRegionIds 查找所有区域ID
|
||||||
|
func (this *NodeRegionDAO) FindAllRegionIds(tx *dbs.Tx) ([]int64, error) {
|
||||||
|
ones, err := this.Query(tx).
|
||||||
|
ResultPk().
|
||||||
|
State(NodeRegionStateEnabled).
|
||||||
|
Desc("order").
|
||||||
|
AscPk().
|
||||||
|
FindAll()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var regionIds = []int64{}
|
||||||
|
for _, one := range ones {
|
||||||
|
regionIds = append(regionIds, int64(one.(*NodeRegion).Id))
|
||||||
|
}
|
||||||
|
return regionIds, nil
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateRegionOrders 排序
|
// UpdateRegionOrders 排序
|
||||||
func (this *NodeRegionDAO) UpdateRegionOrders(tx *dbs.Tx, regionIds []int64) error {
|
func (this *NodeRegionDAO) UpdateRegionOrders(tx *dbs.Tx, regionIds []int64) error {
|
||||||
order := len(regionIds)
|
order := len(regionIds)
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ func (this *ServerDailyStatDAO) SaveStats(tx *dbs.Tx, stats []*pb.ServerDailySta
|
|||||||
InsertOrUpdate(maps.Map{
|
InsertOrUpdate(maps.Map{
|
||||||
"userId": serverUserId,
|
"userId": serverUserId,
|
||||||
"serverId": stat.ServerId,
|
"serverId": stat.ServerId,
|
||||||
"regionId": stat.RegionId,
|
"regionId": stat.NodeRegionId,
|
||||||
"bytes": stat.Bytes,
|
"bytes": stat.Bytes,
|
||||||
"cachedBytes": stat.CachedBytes,
|
"cachedBytes": stat.CachedBytes,
|
||||||
"countRequests": stat.CountRequests,
|
"countRequests": stat.CountRequests,
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ type UserTrafficBill struct {
|
|||||||
RegionId uint32 `field:"regionId"` // 区域ID
|
RegionId uint32 `field:"regionId"` // 区域ID
|
||||||
Amount float64 `field:"amount"` // 金额
|
Amount float64 `field:"amount"` // 金额
|
||||||
BandwidthMB float64 `field:"bandwidthMB"` // 带宽MB
|
BandwidthMB float64 `field:"bandwidthMB"` // 带宽MB
|
||||||
|
BandwidthPercentile uint8 `field:"bandwidthPercentile"` // 带宽百分位
|
||||||
TrafficGB float64 `field:"trafficGB"` // 流量GB
|
TrafficGB float64 `field:"trafficGB"` // 流量GB
|
||||||
PricePerUnit float64 `field:"pricePerUnit"` // 单位价格
|
PricePerUnit float64 `field:"pricePerUnit"` // 单位价格
|
||||||
PriceType string `field:"priceType"` // 计费方式:traffic|bandwidth
|
PriceType string `field:"priceType"` // 计费方式:traffic|bandwidth
|
||||||
@@ -19,6 +20,7 @@ type UserTrafficBillOperator struct {
|
|||||||
RegionId any // 区域ID
|
RegionId any // 区域ID
|
||||||
Amount any // 金额
|
Amount any // 金额
|
||||||
BandwidthMB any // 带宽MB
|
BandwidthMB any // 带宽MB
|
||||||
|
BandwidthPercentile any // 带宽百分位
|
||||||
TrafficGB any // 流量GB
|
TrafficGB any // 流量GB
|
||||||
PricePerUnit any // 单位价格
|
PricePerUnit any // 单位价格
|
||||||
PriceType any // 计费方式:traffic|bandwidth
|
PriceType any // 计费方式:traffic|bandwidth
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ func (this *NodeRegionService) FindAllAvailableNodeRegions(ctx context.Context,
|
|||||||
|
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
|
||||||
regions, err := models.SharedNodeRegionDAO.FindAllEnabledAndOnRegions(tx)
|
regions, err := models.SharedNodeRegionDAO.FindAllAvailableRegions(tx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result := []*pb.NodeRegion{}
|
var result = []*pb.NodeRegion{}
|
||||||
for _, region := range regions {
|
for _, region := range regions {
|
||||||
result = append(result, &pb.NodeRegion{
|
result = append(result, &pb.NodeRegion{
|
||||||
Id: int64(region.Id),
|
Id: int64(region.Id),
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ func init() {
|
|||||||
|
|
||||||
// 更新用户的带宽峰值
|
// 更新用户的带宽峰值
|
||||||
if stat.UserId > 0 {
|
if stat.UserId > 0 {
|
||||||
err = models.SharedUserBandwidthStatDAO.UpdateUserBandwidth(tx, stat.UserId, stat.RegionId, stat.Day, stat.TimeAt, stat.Bytes)
|
err = models.SharedUserBandwidthStatDAO.UpdateUserBandwidth(tx, stat.UserId, stat.NodeRegionId, stat.Day, stat.TimeAt, stat.Bytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
remotelogs.Error("SharedUserBandwidthStatDAO", "dump bandwidth stats failed: "+err.Error())
|
remotelogs.Error("SharedUserBandwidthStatDAO", "dump bandwidth stats failed: "+err.Error())
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ func (this *ServerBandwidthStatService) UploadServerBandwidthStats(ctx context.C
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, stat := range req.ServerBandwidthStats {
|
for _, stat := range req.ServerBandwidthStats {
|
||||||
var key = ServerBandwidthCacheKey(stat.ServerId, stat.RegionId, stat.Day, stat.TimeAt)
|
var key = ServerBandwidthCacheKey(stat.ServerId, stat.NodeRegionId, stat.Day, stat.TimeAt)
|
||||||
serverBandwidthStatsLocker.Lock()
|
serverBandwidthStatsLocker.Lock()
|
||||||
oldStat, ok := serverBandwidthStatsMap[key]
|
oldStat, ok := serverBandwidthStatsMap[key]
|
||||||
if ok {
|
if ok {
|
||||||
@@ -127,7 +127,7 @@ func (this *ServerBandwidthStatService) UploadServerBandwidthStats(ctx context.C
|
|||||||
} else {
|
} else {
|
||||||
serverBandwidthStatsMap[key] = &pb.ServerBandwidthStat{
|
serverBandwidthStatsMap[key] = &pb.ServerBandwidthStat{
|
||||||
Id: 0,
|
Id: 0,
|
||||||
RegionId: stat.RegionId,
|
NodeRegionId: stat.NodeRegionId,
|
||||||
UserId: stat.UserId,
|
UserId: stat.UserId,
|
||||||
ServerId: stat.ServerId,
|
ServerId: stat.ServerId,
|
||||||
Day: stat.Day,
|
Day: stat.Day,
|
||||||
@@ -271,10 +271,10 @@ func (this *ServerBandwidthStatService) FindDailyServerBandwidthStatsBetweenDays
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { // 用户统计
|
} else { // 用户统计
|
||||||
pbStats, err = models.SharedUserBandwidthStatDAO.FindUserBandwidthStatsBetweenDays(tx, req.UserId, req.RegionId, req.DayFrom, req.DayTo)
|
pbStats, err = models.SharedUserBandwidthStatDAO.FindUserBandwidthStatsBetweenDays(tx, req.UserId, req.NodeRegionId, req.DayFrom, req.DayTo)
|
||||||
|
|
||||||
// nth
|
// nth
|
||||||
stat, err := models.SharedUserBandwidthStatDAO.FindPercentileBetweenDays(tx, req.UserId, req.RegionId, req.DayFrom, req.DayTo, req.Percentile)
|
stat, err := models.SharedUserBandwidthStatDAO.FindPercentileBetweenDays(tx, req.UserId, req.NodeRegionId, req.DayFrom, req.DayTo, req.Percentile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ func (this *ServerDailyStatService) FindLatestServerDailyStats(ctx context.Conte
|
|||||||
if req.Days > 0 {
|
if req.Days > 0 {
|
||||||
for i := int32(0); i < req.Days; i++ {
|
for i := int32(0); i < req.Days; i++ {
|
||||||
dayString := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -int(i)))
|
dayString := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -int(i)))
|
||||||
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, 0, req.ServerId, req.RegionId, dayString, dayString)
|
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, 0, req.ServerId, req.NodeRegionId, dayString, dayString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -286,7 +286,7 @@ func (this *ServerDailyStatService) FindServerDailyStatsBetweenDays(ctx context.
|
|||||||
return nil, errors.New("invalid dayTo '" + req.DayTo + "'")
|
return nil, errors.New("invalid dayTo '" + req.DayTo + "'")
|
||||||
}
|
}
|
||||||
|
|
||||||
dailyStats, err := models.SharedServerDailyStatDAO.FindStatsBetweenDays(tx, req.UserId, req.ServerId, req.RegionId, req.DayFrom, req.DayTo)
|
dailyStats, err := models.SharedServerDailyStatDAO.FindStatsBetweenDays(tx, req.UserId, req.ServerId, req.NodeRegionId, req.DayFrom, req.DayTo)
|
||||||
var pbStats = []*pb.FindServerDailyStatsBetweenDaysResponse_Stat{}
|
var pbStats = []*pb.FindServerDailyStatsBetweenDaysResponse_Stat{}
|
||||||
for _, stat := range dailyStats {
|
for _, stat := range dailyStats {
|
||||||
// 防止数据出错
|
// 防止数据出错
|
||||||
@@ -396,7 +396,7 @@ func (this *ServerDailyStatService) SumServerDailyStats(ctx context.Context, req
|
|||||||
req.DayTo = req.DayFrom
|
req.DayTo = req.DayFrom
|
||||||
}
|
}
|
||||||
|
|
||||||
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, req.UserId, req.ServerId, req.RegionId, req.DayFrom, req.DayTo)
|
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, req.UserId, req.ServerId, req.NodeRegionId, req.DayFrom, req.DayTo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user