优化代码

This commit is contained in:
GoEdgeLab
2022-10-14 16:16:42 +08:00
parent 4a880a5ab7
commit 060dc036c3
6 changed files with 58 additions and 37 deletions

View File

@@ -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)

View File

@@ -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,

View File

@@ -2,27 +2,29 @@ package models
// UserTrafficBill 用户流量/带宽账单 // UserTrafficBill 用户流量/带宽账单
type UserTrafficBill struct { type UserTrafficBill struct {
Id uint64 `field:"id"` // ID Id uint64 `field:"id"` // ID
BillId uint64 `field:"billId"` // 主账单ID BillId uint64 `field:"billId"` // 主账单ID
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
TrafficGB float64 `field:"trafficGB"` // 流量GB BandwidthPercentile uint8 `field:"bandwidthPercentile"` // 带宽百分位
PricePerUnit float64 `field:"pricePerUnit"` // 单位价格 TrafficGB float64 `field:"trafficGB"` // 流量GB
PriceType string `field:"priceType"` // 计费方式traffic|bandwidth PricePerUnit float64 `field:"pricePerUnit"` // 单位价格
State uint8 `field:"state"` // 状态 PriceType string `field:"priceType"` // 计费方式traffic|bandwidth
State uint8 `field:"state"` // 状态
} }
type UserTrafficBillOperator struct { type UserTrafficBillOperator struct {
Id any // ID Id any // ID
BillId any // 主账单ID BillId any // 主账单ID
RegionId any // 区域ID RegionId any // 区域ID
Amount any // 金额 Amount any // 金额
BandwidthMB any // 带宽MB BandwidthMB any // 带宽MB
TrafficGB any // 流量GB BandwidthPercentile any // 带宽百分位
PricePerUnit any // 单位价格 TrafficGB any // 流量GB
PriceType any // 计费方式traffic|bandwidth PricePerUnit any // 单位价格
State any // 状态 PriceType any // 计费方式traffic|bandwidth
State any // 状态
} }
func NewUserTrafficBillOperator() *UserTrafficBillOperator { func NewUserTrafficBillOperator() *UserTrafficBillOperator {

View File

@@ -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),

View File

@@ -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,20 +119,20 @@ 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 {
oldStat.Bytes += stat.Bytes oldStat.Bytes += stat.Bytes
} 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,
TimeAt: stat.TimeAt, TimeAt: stat.TimeAt,
Bytes: stat.Bytes, Bytes: stat.Bytes,
} }
} }
serverBandwidthStatsLocker.Unlock() serverBandwidthStatsLocker.Unlock()
@@ -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
} }

View File

@@ -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
} }