优化代码/删除不需要的代码

This commit is contained in:
刘祥超
2022-10-14 10:03:29 +08:00
parent 5d4da6cccb
commit b0b6b5984f
42 changed files with 554 additions and 1256 deletions

View File

@@ -5,10 +5,10 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/lists"
"regexp"
"sync"
)
@@ -168,7 +168,7 @@ func (this *HTTPAccessLogService) FindHTTPAccessLogPartitions(ctx context.Contex
return nil, err
}
if !regexp.MustCompile(`^\d{8}$`).MatchString(req.Day) {
if !regexputils.YYYYMMDD.MatchString(req.Day) {
return nil, errors.New("invalid 'day': " + req.Day)
}

View File

@@ -1,142 +0,0 @@
package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
// NodePriceItemService 节点区域价格相关服务
type NodePriceItemService struct {
BaseService
}
// CreateNodePriceItem 创建区域价格
func (this *NodePriceItemService) CreateNodePriceItem(ctx context.Context, req *pb.CreateNodePriceItemRequest) (*pb.CreateNodePriceItemResponse, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
itemId, err := models.SharedNodePriceItemDAO.CreateItem(tx, req.Name, req.Type, req.BitsFrom, req.BitsTo)
if err != nil {
return nil, err
}
return &pb.CreateNodePriceItemResponse{NodePriceItemId: itemId}, nil
}
// UpdateNodePriceItem 修改区域价格
func (this *NodePriceItemService) UpdateNodePriceItem(ctx context.Context, req *pb.UpdateNodePriceItemRequest) (*pb.RPCSuccess, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
err = models.SharedNodePriceItemDAO.UpdateItem(tx, req.NodePriceItemId, req.Name, req.BitsFrom, req.BitsTo)
if err != nil {
return nil, err
}
return this.Success()
}
// DeleteNodePriceItem 删除区域价格
func (this *NodePriceItemService) DeleteNodePriceItem(ctx context.Context, req *pb.DeleteNodePriceItemRequest) (*pb.RPCSuccess, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
err = models.SharedNodePriceItemDAO.DisableNodePriceItem(tx, req.NodePriceItemId)
if err != nil {
return nil, err
}
return this.Success()
}
// FindAllEnabledNodePriceItems 查找所有区域价格
func (this *NodePriceItemService) FindAllEnabledNodePriceItems(ctx context.Context, req *pb.FindAllEnabledNodePriceItemsRequest) (*pb.FindAllEnabledNodePriceItemsResponse, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
prices, err := models.SharedNodePriceItemDAO.FindAllEnabledRegionPrices(tx, req.Type)
if err != nil {
return nil, err
}
result := []*pb.NodePriceItem{}
for _, price := range prices {
result = append(result, &pb.NodePriceItem{
Id: int64(price.Id),
IsOn: price.IsOn,
Name: price.Name,
Type: price.Type,
BitsFrom: int64(price.BitsFrom),
BitsTo: int64(price.BitsTo),
})
}
return &pb.FindAllEnabledNodePriceItemsResponse{NodePriceItems: result}, nil
}
// FindAllAvailableNodePriceItems 查找所有启用的区域价格
func (this *NodePriceItemService) FindAllAvailableNodePriceItems(ctx context.Context, req *pb.FindAllAvailableNodePriceItemsRequest) (*pb.FindAllAvailableNodePriceItemsResponse, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
prices, err := models.SharedNodePriceItemDAO.FindAllEnabledAndOnRegionPrices(tx, req.Type)
if err != nil {
return nil, err
}
result := []*pb.NodePriceItem{}
for _, price := range prices {
result = append(result, &pb.NodePriceItem{
Id: int64(price.Id),
IsOn: price.IsOn,
Name: price.Name,
Type: price.Type,
BitsFrom: int64(price.BitsFrom),
BitsTo: int64(price.BitsTo),
})
}
return &pb.FindAllAvailableNodePriceItemsResponse{NodePriceItems: result}, nil
}
// FindEnabledNodePriceItem 查找单个区域信息
func (this *NodePriceItemService) FindEnabledNodePriceItem(ctx context.Context, req *pb.FindEnabledNodePriceItemRequest) (*pb.FindEnabledNodePriceItemResponse, error) {
_, err := this.ValidateAdmin(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
price, err := models.SharedNodePriceItemDAO.FindEnabledNodePriceItem(tx, req.NodePriceItemId)
if err != nil {
return nil, err
}
if price == nil {
return &pb.FindEnabledNodePriceItemResponse{NodePriceItem: nil}, nil
}
return &pb.FindEnabledNodePriceItemResponse{NodePriceItem: &pb.NodePriceItem{
Id: int64(price.Id),
IsOn: price.IsOn,
Name: price.Name,
Type: price.Type,
BitsFrom: int64(price.BitsFrom),
BitsTo: int64(price.BitsTo),
}}, nil
}

View File

@@ -8,16 +8,16 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/types"
"regexp"
"strings"
"sync"
"time"
)
var serverBandwidthStatsMap = map[string]*pb.ServerBandwidthStat{} // key => bandwidth
var serverBandwidthStatsMap = map[string]*pb.ServerBandwidthStat{} // server key => bandwidth
var serverBandwidthStatsLocker = &sync.Mutex{}
func init() {
@@ -74,9 +74,9 @@ func init() {
}
}
// 更新服务的带宽峰值
// 更新用户的带宽峰值
if stat.UserId > 0 {
err = models.SharedUserBandwidthStatDAO.UpdateUserBandwidth(tx, stat.UserId, stat.Day, stat.TimeAt, stat.Bytes)
err = models.SharedUserBandwidthStatDAO.UpdateUserBandwidth(tx, stat.UserId, stat.RegionId, stat.Day, stat.TimeAt, stat.Bytes)
if err != nil {
remotelogs.Error("SharedUserBandwidthStatDAO", "dump bandwidth stats failed: "+err.Error())
}
@@ -89,18 +89,18 @@ func init() {
}
// ServerBandwidthCacheKey 组合缓存Key
func ServerBandwidthCacheKey(serverId int64, day string, timeAt string) string {
return types.String(serverId) + "@" + day + "@" + timeAt
func ServerBandwidthCacheKey(serverId int64, regionId int64, day string, timeAt string) string {
return types.String(serverId) + "@" + types.String(regionId) + "@" + day + "@" + timeAt
}
func ServerBandwidthGetCacheBytes(serverId int64, day string, timeAt string) int64 {
var key = ServerBandwidthCacheKey(serverId, day, timeAt)
func ServerBandwidthGetCacheBytes(serverId int64, timeAt string) int64 {
var bytes int64 = 0
serverBandwidthStatsLocker.Lock()
stat, ok := serverBandwidthStatsMap[key]
if ok {
bytes = stat.Bytes
for _, stat := range serverBandwidthStatsMap {
if stat.ServerId == serverId && stat.TimeAt == timeAt {
bytes += stat.Bytes
}
}
serverBandwidthStatsLocker.Unlock()
@@ -119,7 +119,7 @@ func (this *ServerBandwidthStatService) UploadServerBandwidthStats(ctx context.C
}
for _, stat := range req.ServerBandwidthStats {
var key = ServerBandwidthCacheKey(stat.ServerId, stat.Day, stat.TimeAt)
var key = ServerBandwidthCacheKey(stat.ServerId, stat.RegionId, stat.Day, stat.TimeAt)
serverBandwidthStatsLocker.Lock()
oldStat, ok := serverBandwidthStatsMap[key]
if ok {
@@ -127,6 +127,7 @@ func (this *ServerBandwidthStatService) UploadServerBandwidthStats(ctx context.C
} else {
serverBandwidthStatsMap[key] = &pb.ServerBandwidthStat{
Id: 0,
RegionId: stat.RegionId,
UserId: stat.UserId,
ServerId: stat.ServerId,
Day: stat.Day,
@@ -244,11 +245,10 @@ func (this *ServerBandwidthStatService) FindDailyServerBandwidthStatsBetweenDays
req.DayFrom = strings.ReplaceAll(req.DayFrom, "-", "")
req.DayTo = strings.ReplaceAll(req.DayTo, "-", "")
var dayReg = regexp.MustCompile(`^\d{8}$`)
if !dayReg.MatchString(req.DayFrom) {
if !regexputils.YYYYMMDD.MatchString(req.DayFrom) {
return nil, errors.New("invalid dayFrom '" + req.DayFrom + "'")
}
if !dayReg.MatchString(req.DayTo) {
if !regexputils.YYYYMMDD.MatchString(req.DayTo) {
return nil, errors.New("invalid dayTo '" + req.DayTo + "'")
}
@@ -271,10 +271,10 @@ func (this *ServerBandwidthStatService) FindDailyServerBandwidthStatsBetweenDays
}
}
} else { // 用户统计
pbStats, err = models.SharedUserBandwidthStatDAO.FindUserBandwidthStatsBetweenDays(tx, req.UserId, req.DayFrom, req.DayTo)
pbStats, err = models.SharedUserBandwidthStatDAO.FindUserBandwidthStatsBetweenDays(tx, req.UserId, req.RegionId, req.DayFrom, req.DayTo)
// nth
stat, err := models.SharedUserBandwidthStatDAO.FindPercentileBetweenDays(tx, req.UserId, req.DayFrom, req.DayTo, req.Percentile)
stat, err := models.SharedUserBandwidthStatDAO.FindPercentileBetweenDays(tx, req.UserId, req.RegionId, req.DayFrom, req.DayTo, req.Percentile)
if err != nil {
return nil, err
}

View File

@@ -6,11 +6,11 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/dbs"
timeutil "github.com/iwind/TeaGo/utils/time"
"math"
"regexp"
"strings"
"time"
)
@@ -239,7 +239,7 @@ func (this *ServerDailyStatService) FindLatestServerDailyStats(ctx context.Conte
if req.Days > 0 {
for i := int32(0); i < req.Days; i++ {
dayString := timeutil.Format("Ymd", time.Now().AddDate(0, 0, -int(i)))
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, 0, req.ServerId, dayString, dayString)
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, 0, req.ServerId, req.RegionId, dayString, dayString)
if err != nil {
return nil, err
}
@@ -277,17 +277,16 @@ func (this *ServerDailyStatService) FindServerDailyStatsBetweenDays(ctx context.
}
}
var reg = regexp.MustCompile(`^\d{8}$`)
req.DayFrom = strings.ReplaceAll(req.DayFrom, "-", "")
req.DayTo = strings.ReplaceAll(req.DayTo, "-", "")
if !reg.MatchString(req.DayFrom) {
if !regexputils.YYYYMMDD.MatchString(req.DayFrom) {
return nil, errors.New("invalid dayFrom '" + req.DayFrom + "'")
}
if !reg.MatchString(req.DayTo) {
if !regexputils.YYYYMMDD.MatchString(req.DayTo) {
return nil, errors.New("invalid dayTo '" + req.DayTo + "'")
}
dailyStats, err := models.SharedServerDailyStatDAO.FindStatsBetweenDays(tx, req.UserId, req.ServerId, req.DayFrom, req.DayTo)
dailyStats, err := models.SharedServerDailyStatDAO.FindStatsBetweenDays(tx, req.UserId, req.ServerId, req.RegionId, req.DayFrom, req.DayTo)
var pbStats = []*pb.FindServerDailyStatsBetweenDaysResponse_Stat{}
for _, stat := range dailyStats {
// 防止数据出错
@@ -378,19 +377,18 @@ func (this *ServerDailyStatService) SumServerDailyStats(ctx context.Context, req
req.DayFrom = strings.ReplaceAll(req.DayFrom, "-", "")
req.DayTo = strings.ReplaceAll(req.DayTo, "-", "")
var dayReg = regexp.MustCompile(`^\d{8}$`)
if len(req.Day) > 0 {
if !dayReg.MatchString(req.Day) {
if !regexputils.YYYYMMDD.MatchString(req.Day) {
return nil, errors.New("invalid day '" + req.Day + "'")
}
req.DayFrom = req.Day
req.DayTo = req.Day
} else if len(req.DayFrom) > 0 && len(req.DayTo) > 0 {
if !dayReg.MatchString(req.DayFrom) {
if !regexputils.YYYYMMDD.MatchString(req.DayFrom) {
return nil, errors.New("invalid dayFrom '" + req.DayFrom + "'")
}
if !dayReg.MatchString(req.DayTo) {
if !regexputils.YYYYMMDD.MatchString(req.DayTo) {
return nil, errors.New("invalid dayTo '" + req.DayTo + "'")
}
} else {
@@ -398,7 +396,7 @@ func (this *ServerDailyStatService) SumServerDailyStats(ctx context.Context, req
req.DayTo = req.DayFrom
}
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, req.UserId, req.ServerId, req.DayFrom, req.DayTo)
stat, err := models.SharedServerDailyStatDAO.SumDailyStat(tx, req.UserId, req.ServerId, req.RegionId, req.DayFrom, req.DayTo)
if err != nil {
return nil, err
}
@@ -439,7 +437,7 @@ func (this *ServerDailyStatService) SumServerMonthlyStats(ctx context.Context, r
// 某月统计
var month = timeutil.Format("Ym")
if regexp.MustCompile(`^\d{6}$`).MatchString(req.Month) {
if regexputils.YYYYMM.MatchString(req.Month) {
month = req.Month
}

View File

@@ -487,7 +487,7 @@ func (this *ServerStatBoardService) ComposeServerStatBoard(ctx context.Context,
if ok {
pbBandwidthStats = append(pbBandwidthStats, stat)
} else {
var bytes = ServerBandwidthGetCacheBytes(req.ServerId, minute.Day, minute.Minute) // 从当前缓存中读取
var bytes = ServerBandwidthGetCacheBytes(req.ServerId, minute.Minute) // 从当前缓存中读取
pbBandwidthStats = append(pbBandwidthStats, &pb.ServerBandwidthStat{
Id: 0,
ServerId: req.ServerId,

View File

@@ -3,10 +3,7 @@ package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
"github.com/iwind/TeaGo/lists"
)
type SysSettingService struct {
@@ -35,28 +32,12 @@ func (this *SysSettingService) UpdateSysSetting(ctx context.Context, req *pb.Upd
// ReadSysSetting 读取配置
func (this *SysSettingService) ReadSysSetting(ctx context.Context, req *pb.ReadSysSettingRequest) (*pb.ReadSysSettingResponse, error) {
// 校验请求
_, userId, err := this.ValidateAdminAndUser(ctx, false)
_, _, err := this.ValidateAdminAndUser(ctx, false)
if err != nil {
return nil, err
}
var tx = this.NullTx()
// 检查权限
if userId > 0 {
// TODO 限制用户只能为专有用户比如1_000_000_000
if !lists.ContainsString([]string{
systemconfigs.SettingCodeUserRegisterConfig,
systemconfigs.SettingCodeUserServerConfig,
systemconfigs.SettingCodeUserUIConfig,
systemconfigs.SettingCodeNSUserConfig,
systemconfigs.SettingCodeUserOrderConfig,
systemconfigs.SettingCodeServerGlobalConfig,
}, req.Code) {
return nil, errors.New("can not read setting code '" + req.Code + "'")
}
}
valueJSON, err := models.SharedSysSettingDAO.ReadSetting(tx, req.Code)
if err != nil {
return nil, err