mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	增加流量包相关表
This commit is contained in:
		@@ -14,10 +14,10 @@ func TestServerDailyStatDAO_SaveStats(t *testing.T) {
 | 
				
			|||||||
	var tx *dbs.Tx
 | 
						var tx *dbs.Tx
 | 
				
			||||||
	stats := []*pb.ServerDailyStat{
 | 
						stats := []*pb.ServerDailyStat{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ServerId:  1,
 | 
								ServerId:     1,
 | 
				
			||||||
			RegionId:  2,
 | 
								NodeRegionId: 2,
 | 
				
			||||||
			Bytes:     1,
 | 
								Bytes:        1,
 | 
				
			||||||
			CreatedAt: 1607671488,
 | 
								CreatedAt:    1607671488,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err := NewServerDailyStatDAO().SaveStats(tx, stats)
 | 
						err := NewServerDailyStatDAO().SaveStats(tx, stats)
 | 
				
			||||||
@@ -31,10 +31,10 @@ func TestServerDailyStatDAO_SaveStats2(t *testing.T) {
 | 
				
			|||||||
	var tx *dbs.Tx
 | 
						var tx *dbs.Tx
 | 
				
			||||||
	stats := []*pb.ServerDailyStat{
 | 
						stats := []*pb.ServerDailyStat{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ServerId:  1,
 | 
								ServerId:     1,
 | 
				
			||||||
			RegionId:  3,
 | 
								NodeRegionId: 3,
 | 
				
			||||||
			Bytes:     1,
 | 
								Bytes:        1,
 | 
				
			||||||
			CreatedAt: 1607671488,
 | 
								CreatedAt:    1607671488,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err := NewServerDailyStatDAO().SaveStats(tx, stats)
 | 
						err := NewServerDailyStatDAO().SaveStats(tx, stats)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										63
									
								
								internal/db/models/traffic_package_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								internal/db/models/traffic_package_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						TrafficPackageStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						TrafficPackageStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackageDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackageDAO() *TrafficPackageDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&TrafficPackageDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeTrafficPackages",
 | 
				
			||||||
 | 
								Model:  new(TrafficPackage),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*TrafficPackageDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedTrafficPackageDAO *TrafficPackageDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedTrafficPackageDAO = NewTrafficPackageDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableTrafficPackage 启用条目
 | 
				
			||||||
 | 
					func (this *TrafficPackageDAO) EnableTrafficPackage(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", TrafficPackageStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableTrafficPackage 禁用条目
 | 
				
			||||||
 | 
					func (this *TrafficPackageDAO) DisableTrafficPackage(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", TrafficPackageStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledTrafficPackage 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *TrafficPackageDAO) FindEnabledTrafficPackage(tx *dbs.Tx, id int64) (*TrafficPackage, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							State(TrafficPackageStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*TrafficPackage), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/traffic_package_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/traffic_package_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package models_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										24
									
								
								internal/db/models/traffic_package_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								internal/db/models/traffic_package_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TrafficPackage 流量包
 | 
				
			||||||
 | 
					type TrafficPackage struct {
 | 
				
			||||||
 | 
						Id    uint32 `field:"id"`    // ID
 | 
				
			||||||
 | 
						Size  uint32 `field:"size"`  // 尺寸
 | 
				
			||||||
 | 
						Unit  string `field:"unit"`  // 单位(gb|tb等)
 | 
				
			||||||
 | 
						Bytes uint64 `field:"bytes"` // 字节
 | 
				
			||||||
 | 
						IsOn  bool   `field:"isOn"`  // 是否启用
 | 
				
			||||||
 | 
						State uint8  `field:"state"` // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackageOperator struct {
 | 
				
			||||||
 | 
						Id    any // ID
 | 
				
			||||||
 | 
						Size  any // 尺寸
 | 
				
			||||||
 | 
						Unit  any // 单位(gb|tb等)
 | 
				
			||||||
 | 
						Bytes any // 字节
 | 
				
			||||||
 | 
						IsOn  any // 是否启用
 | 
				
			||||||
 | 
						State any // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackageOperator() *TrafficPackageOperator {
 | 
				
			||||||
 | 
						return &TrafficPackageOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/traffic_package_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/traffic_package_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
							
								
								
									
										63
									
								
								internal/db/models/traffic_package_period_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								internal/db/models/traffic_package_period_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						TrafficPackagePeriodStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						TrafficPackagePeriodStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackagePeriodDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackagePeriodDAO() *TrafficPackagePeriodDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&TrafficPackagePeriodDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeTrafficPackagePeriods",
 | 
				
			||||||
 | 
								Model:  new(TrafficPackagePeriod),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*TrafficPackagePeriodDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedTrafficPackagePeriodDAO *TrafficPackagePeriodDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedTrafficPackagePeriodDAO = NewTrafficPackagePeriodDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableTrafficPackagePeriod 启用条目
 | 
				
			||||||
 | 
					func (this *TrafficPackagePeriodDAO) EnableTrafficPackagePeriod(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", TrafficPackagePeriodStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableTrafficPackagePeriod 禁用条目
 | 
				
			||||||
 | 
					func (this *TrafficPackagePeriodDAO) DisableTrafficPackagePeriod(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", TrafficPackagePeriodStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledTrafficPackagePeriod 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *TrafficPackagePeriodDAO) FindEnabledTrafficPackagePeriod(tx *dbs.Tx, id int64) (*TrafficPackagePeriod, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							State(TrafficPackagePeriodStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*TrafficPackagePeriod), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/traffic_package_period_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/traffic_package_period_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package models_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										24
									
								
								internal/db/models/traffic_package_period_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								internal/db/models/traffic_package_period_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TrafficPackagePeriod 流量包有效期
 | 
				
			||||||
 | 
					type TrafficPackagePeriod struct {
 | 
				
			||||||
 | 
						Id     uint32 `field:"id"`     // ID
 | 
				
			||||||
 | 
						IsOn   bool   `field:"isOn"`   // 是否启用
 | 
				
			||||||
 | 
						Count  uint32 `field:"count"`  // 数量
 | 
				
			||||||
 | 
						Unit   string `field:"unit"`   // 单位:month, year
 | 
				
			||||||
 | 
						Months uint32 `field:"months"` // 月数
 | 
				
			||||||
 | 
						State  uint8  `field:"state"`  // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackagePeriodOperator struct {
 | 
				
			||||||
 | 
						Id     any // ID
 | 
				
			||||||
 | 
						IsOn   any // 是否启用
 | 
				
			||||||
 | 
						Count  any // 数量
 | 
				
			||||||
 | 
						Unit   any // 单位:month, year
 | 
				
			||||||
 | 
						Months any // 月数
 | 
				
			||||||
 | 
						State  any // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackagePeriodOperator() *TrafficPackagePeriodOperator {
 | 
				
			||||||
 | 
						return &TrafficPackagePeriodOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/traffic_package_period_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/traffic_package_period_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
							
								
								
									
										28
									
								
								internal/db/models/traffic_package_price_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								internal/db/models/traffic_package_price_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackagePriceDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackagePriceDAO() *TrafficPackagePriceDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&TrafficPackagePriceDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeTrafficPackagePrices",
 | 
				
			||||||
 | 
								Model:  new(TrafficPackagePrice),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*TrafficPackagePriceDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedTrafficPackagePriceDAO *TrafficPackagePriceDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedTrafficPackagePriceDAO = NewTrafficPackagePriceDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/traffic_package_price_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/traffic_package_price_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package models_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										24
									
								
								internal/db/models/traffic_package_price_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								internal/db/models/traffic_package_price_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TrafficPackagePrice 流量包价格
 | 
				
			||||||
 | 
					type TrafficPackagePrice struct {
 | 
				
			||||||
 | 
						Id            uint32  `field:"id"`            // ID
 | 
				
			||||||
 | 
						PackageId     uint32  `field:"packageId"`     // 套餐ID
 | 
				
			||||||
 | 
						RegionId      uint32  `field:"regionId"`      // 区域ID
 | 
				
			||||||
 | 
						PeriodId      uint32  `field:"periodId"`      // 有效期ID
 | 
				
			||||||
 | 
						Price         float64 `field:"price"`         // 价格
 | 
				
			||||||
 | 
						DiscountPrice float64 `field:"discountPrice"` // 折后价格
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type TrafficPackagePriceOperator struct {
 | 
				
			||||||
 | 
						Id            any // ID
 | 
				
			||||||
 | 
						PackageId     any // 套餐ID
 | 
				
			||||||
 | 
						RegionId      any // 区域ID
 | 
				
			||||||
 | 
						PeriodId      any // 有效期ID
 | 
				
			||||||
 | 
						Price         any // 价格
 | 
				
			||||||
 | 
						DiscountPrice any // 折后价格
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewTrafficPackagePriceOperator() *TrafficPackagePriceOperator {
 | 
				
			||||||
 | 
						return &TrafficPackagePriceOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/traffic_package_price_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/traffic_package_price_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
@@ -1,30 +1,36 @@
 | 
				
			|||||||
package models
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 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
 | 
				
			||||||
	BandwidthPercentile uint8   `field:"bandwidthPercentile"` // 带宽百分位
 | 
						BandwidthPercentile   uint8    `field:"bandwidthPercentile"`   // 带宽百分位
 | 
				
			||||||
	TrafficGB           float64 `field:"trafficGB"`           // 流量GB
 | 
						TrafficGB             float64  `field:"trafficGB"`             // 流量GB
 | 
				
			||||||
	PricePerUnit        float64 `field:"pricePerUnit"`        // 单位价格
 | 
						TrafficPackageGB      float64  `field:"trafficPackageGB"`      // 使用的流量包GB
 | 
				
			||||||
	PriceType           string  `field:"priceType"`           // 计费方式:traffic|bandwidth
 | 
						UserTrafficPackageIds dbs.JSON `field:"userTrafficPackageIds"` // 使用的流量包ID
 | 
				
			||||||
	State               uint8   `field:"state"`               // 状态
 | 
						PricePerUnit          float64  `field:"pricePerUnit"`          // 单位价格
 | 
				
			||||||
 | 
						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
 | 
				
			||||||
	BandwidthPercentile any // 带宽百分位
 | 
						BandwidthPercentile   any // 带宽百分位
 | 
				
			||||||
	TrafficGB           any // 流量GB
 | 
						TrafficGB             any // 流量GB
 | 
				
			||||||
	PricePerUnit        any // 单位价格
 | 
						TrafficPackageGB      any // 使用的流量包GB
 | 
				
			||||||
	PriceType           any // 计费方式:traffic|bandwidth
 | 
						UserTrafficPackageIds any // 使用的流量包ID
 | 
				
			||||||
	State               any // 状态
 | 
						PricePerUnit          any // 单位价格
 | 
				
			||||||
 | 
						PriceType             any // 计费方式:traffic|bandwidth
 | 
				
			||||||
 | 
						State                 any // 状态
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewUserTrafficBillOperator() *UserTrafficBillOperator {
 | 
					func NewUserTrafficBillOperator() *UserTrafficBillOperator {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										63
									
								
								internal/db/models/user_traffic_package_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								internal/db/models/user_traffic_package_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						UserTrafficPackageStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						UserTrafficPackageStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type UserTrafficPackageDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewUserTrafficPackageDAO() *UserTrafficPackageDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&UserTrafficPackageDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeUserTrafficPackages",
 | 
				
			||||||
 | 
								Model:  new(UserTrafficPackage),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*UserTrafficPackageDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedUserTrafficPackageDAO *UserTrafficPackageDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedUserTrafficPackageDAO = NewUserTrafficPackageDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableUserTrafficPackage 启用条目
 | 
				
			||||||
 | 
					func (this *UserTrafficPackageDAO) EnableUserTrafficPackage(tx *dbs.Tx, id uint64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", UserTrafficPackageStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableUserTrafficPackage 禁用条目
 | 
				
			||||||
 | 
					func (this *UserTrafficPackageDAO) DisableUserTrafficPackage(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", UserTrafficPackageStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledUserTrafficPackage 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *UserTrafficPackageDAO) FindEnabledUserTrafficPackage(tx *dbs.Tx, id int64) (*UserTrafficPackage, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							State(UserTrafficPackageStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*UserTrafficPackage), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/user_traffic_package_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/user_traffic_package_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package models_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										40
									
								
								internal/db/models/user_traffic_package_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								internal/db/models/user_traffic_package_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UserTrafficPackage 用户购买的流量包
 | 
				
			||||||
 | 
					type UserTrafficPackage struct {
 | 
				
			||||||
 | 
						Id          uint64 `field:"id"`          // ID
 | 
				
			||||||
 | 
						AdminId     uint32 `field:"adminId"`     // 管理员ID
 | 
				
			||||||
 | 
						UserId      uint64 `field:"userId"`      // 用户ID
 | 
				
			||||||
 | 
						PackageId   uint32 `field:"packageId"`   // 流量包ID
 | 
				
			||||||
 | 
						TotalBytes  uint64 `field:"totalBytes"`  // 总字节数
 | 
				
			||||||
 | 
						UsedBytes   uint64 `field:"usedBytes"`   // 已使用字节数
 | 
				
			||||||
 | 
						RegionId    uint32 `field:"regionId"`    // 区域ID
 | 
				
			||||||
 | 
						PeriodId    uint32 `field:"periodId"`    // 有效期ID
 | 
				
			||||||
 | 
						PeriodCount uint32 `field:"periodCount"` // 有效期数量
 | 
				
			||||||
 | 
						PeriodUnit  string `field:"periodUnit"`  // 有效期单位
 | 
				
			||||||
 | 
						DayFrom     string `field:"dayFrom"`     // 开始日期
 | 
				
			||||||
 | 
						DayTo       string `field:"dayTo"`       // 结束日期
 | 
				
			||||||
 | 
						CreatedAt   uint64 `field:"createdAt"`   // 创建时间
 | 
				
			||||||
 | 
						State       uint8  `field:"state"`       // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type UserTrafficPackageOperator struct {
 | 
				
			||||||
 | 
						Id          any // ID
 | 
				
			||||||
 | 
						AdminId     any // 管理员ID
 | 
				
			||||||
 | 
						UserId      any // 用户ID
 | 
				
			||||||
 | 
						PackageId   any // 流量包ID
 | 
				
			||||||
 | 
						TotalBytes  any // 总字节数
 | 
				
			||||||
 | 
						UsedBytes   any // 已使用字节数
 | 
				
			||||||
 | 
						RegionId    any // 区域ID
 | 
				
			||||||
 | 
						PeriodId    any // 有效期ID
 | 
				
			||||||
 | 
						PeriodCount any // 有效期数量
 | 
				
			||||||
 | 
						PeriodUnit  any // 有效期单位
 | 
				
			||||||
 | 
						DayFrom     any // 开始日期
 | 
				
			||||||
 | 
						DayTo       any // 结束日期
 | 
				
			||||||
 | 
						CreatedAt   any // 创建时间
 | 
				
			||||||
 | 
						State       any // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewUserTrafficPackageOperator() *UserTrafficPackageOperator {
 | 
				
			||||||
 | 
						return &UserTrafficPackageOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/user_traffic_package_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/user_traffic_package_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package models
 | 
				
			||||||
@@ -129,7 +129,7 @@ func (this *NodeRegionService) UpdateNodeRegionOrders(ctx context.Context, req *
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// FindEnabledNodeRegion 查找单个区域信息
 | 
					// FindEnabledNodeRegion 查找单个区域信息
 | 
				
			||||||
func (this *NodeRegionService) FindEnabledNodeRegion(ctx context.Context, req *pb.FindEnabledNodeRegionRequest) (*pb.FindEnabledNodeRegionResponse, error) {
 | 
					func (this *NodeRegionService) FindEnabledNodeRegion(ctx context.Context, req *pb.FindEnabledNodeRegionRequest) (*pb.FindEnabledNodeRegionResponse, error) {
 | 
				
			||||||
	_, err := this.ValidateAdmin(ctx)
 | 
						_, _, err := this.ValidateAdminAndUser(ctx, false)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user