mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 18:10:25 +08:00
增加流量包相关表
This commit is contained in:
@@ -15,7 +15,7 @@ func TestServerDailyStatDAO_SaveStats(t *testing.T) {
|
||||
stats := []*pb.ServerDailyStat{
|
||||
{
|
||||
ServerId: 1,
|
||||
RegionId: 2,
|
||||
NodeRegionId: 2,
|
||||
Bytes: 1,
|
||||
CreatedAt: 1607671488,
|
||||
},
|
||||
@@ -32,7 +32,7 @@ func TestServerDailyStatDAO_SaveStats2(t *testing.T) {
|
||||
stats := []*pb.ServerDailyStat{
|
||||
{
|
||||
ServerId: 1,
|
||||
RegionId: 3,
|
||||
NodeRegionId: 3,
|
||||
Bytes: 1,
|
||||
CreatedAt: 1607671488,
|
||||
},
|
||||
|
||||
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,5 +1,7 @@
|
||||
package models
|
||||
|
||||
import "github.com/iwind/TeaGo/dbs"
|
||||
|
||||
// UserTrafficBill 用户流量/带宽账单
|
||||
type UserTrafficBill struct {
|
||||
Id uint64 `field:"id"` // ID
|
||||
@@ -9,6 +11,8 @@ type UserTrafficBill struct {
|
||||
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"` // 状态
|
||||
@@ -22,6 +26,8 @@ type UserTrafficBillOperator struct {
|
||||
BandwidthMB any // 带宽MB
|
||||
BandwidthPercentile any // 带宽百分位
|
||||
TrafficGB any // 流量GB
|
||||
TrafficPackageGB any // 使用的流量包GB
|
||||
UserTrafficPackageIds any // 使用的流量包ID
|
||||
PricePerUnit any // 单位价格
|
||||
PriceType any // 计费方式:traffic|bandwidth
|
||||
State any // 状态
|
||||
|
||||
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