mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-25 00:10:26 +08:00
优化代码/删除不需要的代码
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user