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
 | 
			
		||||
	stats := []*pb.ServerDailyStat{
 | 
			
		||||
		{
 | 
			
		||||
			ServerId:  1,
 | 
			
		||||
			RegionId:  2,
 | 
			
		||||
			Bytes:     1,
 | 
			
		||||
			CreatedAt: 1607671488,
 | 
			
		||||
			ServerId:     1,
 | 
			
		||||
			NodeRegionId: 2,
 | 
			
		||||
			Bytes:        1,
 | 
			
		||||
			CreatedAt:    1607671488,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	err := NewServerDailyStatDAO().SaveStats(tx, stats)
 | 
			
		||||
@@ -31,10 +31,10 @@ func TestServerDailyStatDAO_SaveStats2(t *testing.T) {
 | 
			
		||||
	var tx *dbs.Tx
 | 
			
		||||
	stats := []*pb.ServerDailyStat{
 | 
			
		||||
		{
 | 
			
		||||
			ServerId:  1,
 | 
			
		||||
			RegionId:  3,
 | 
			
		||||
			Bytes:     1,
 | 
			
		||||
			CreatedAt: 1607671488,
 | 
			
		||||
			ServerId:     1,
 | 
			
		||||
			NodeRegionId: 3,
 | 
			
		||||
			Bytes:        1,
 | 
			
		||||
			CreatedAt:    1607671488,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
import "github.com/iwind/TeaGo/dbs"
 | 
			
		||||
 | 
			
		||||
// UserTrafficBill 用户流量/带宽账单
 | 
			
		||||
type UserTrafficBill struct {
 | 
			
		||||
	Id                  uint64  `field:"id"`                  // ID
 | 
			
		||||
	BillId              uint64  `field:"billId"`              // 主账单ID
 | 
			
		||||
	RegionId            uint32  `field:"regionId"`            // 区域ID
 | 
			
		||||
	Amount              float64 `field:"amount"`              // 金额
 | 
			
		||||
	BandwidthMB         float64 `field:"bandwidthMB"`         // 带宽MB
 | 
			
		||||
	BandwidthPercentile uint8   `field:"bandwidthPercentile"` // 带宽百分位
 | 
			
		||||
	TrafficGB           float64 `field:"trafficGB"`           // 流量GB
 | 
			
		||||
	PricePerUnit        float64 `field:"pricePerUnit"`        // 单位价格
 | 
			
		||||
	PriceType           string  `field:"priceType"`           // 计费方式:traffic|bandwidth
 | 
			
		||||
	State               uint8   `field:"state"`               // 状态
 | 
			
		||||
	Id                    uint64   `field:"id"`                    // ID
 | 
			
		||||
	BillId                uint64   `field:"billId"`                // 主账单ID
 | 
			
		||||
	RegionId              uint32   `field:"regionId"`              // 区域ID
 | 
			
		||||
	Amount                float64  `field:"amount"`                // 金额
 | 
			
		||||
	BandwidthMB           float64  `field:"bandwidthMB"`           // 带宽MB
 | 
			
		||||
	BandwidthPercentile   uint8    `field:"bandwidthPercentile"`   // 带宽百分位
 | 
			
		||||
	TrafficGB             float64  `field:"trafficGB"`             // 流量GB
 | 
			
		||||
	TrafficPackageGB      float64  `field:"trafficPackageGB"`      // 使用的流量包GB
 | 
			
		||||
	UserTrafficPackageIds dbs.JSON `field:"userTrafficPackageIds"` // 使用的流量包ID
 | 
			
		||||
	PricePerUnit          float64  `field:"pricePerUnit"`          // 单位价格
 | 
			
		||||
	PriceType             string   `field:"priceType"`             // 计费方式:traffic|bandwidth
 | 
			
		||||
	State                 uint8    `field:"state"`                 // 状态
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserTrafficBillOperator struct {
 | 
			
		||||
	Id                  any // ID
 | 
			
		||||
	BillId              any // 主账单ID
 | 
			
		||||
	RegionId            any // 区域ID
 | 
			
		||||
	Amount              any // 金额
 | 
			
		||||
	BandwidthMB         any // 带宽MB
 | 
			
		||||
	BandwidthPercentile any // 带宽百分位
 | 
			
		||||
	TrafficGB           any // 流量GB
 | 
			
		||||
	PricePerUnit        any // 单位价格
 | 
			
		||||
	PriceType           any // 计费方式:traffic|bandwidth
 | 
			
		||||
	State               any // 状态
 | 
			
		||||
	Id                    any // ID
 | 
			
		||||
	BillId                any // 主账单ID
 | 
			
		||||
	RegionId              any // 区域ID
 | 
			
		||||
	Amount                any // 金额
 | 
			
		||||
	BandwidthMB           any // 带宽MB
 | 
			
		||||
	BandwidthPercentile   any // 带宽百分位
 | 
			
		||||
	TrafficGB             any // 流量GB
 | 
			
		||||
	TrafficPackageGB      any // 使用的流量包GB
 | 
			
		||||
	UserTrafficPackageIds any // 使用的流量包ID
 | 
			
		||||
	PricePerUnit          any // 单位价格
 | 
			
		||||
	PriceType             any // 计费方式:traffic|bandwidth
 | 
			
		||||
	State                 any // 状态
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 查找单个区域信息
 | 
			
		||||
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 {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user