增加流量包相关表

This commit is contained in:
刘祥超
2022-10-20 10:24:36 +08:00
parent aad0b01581
commit 425c0ec44c
19 changed files with 392 additions and 29 deletions

View File

@@ -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)

View 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
}

View File

@@ -0,0 +1,6 @@
package models_test
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/iwind/TeaGo/bootstrap"
)

View 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{}
}

View File

@@ -0,0 +1 @@
package models

View 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
}

View File

@@ -0,0 +1,6 @@
package models_test
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/iwind/TeaGo/bootstrap"
)

View 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{}
}

View File

@@ -0,0 +1 @@
package models

View 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()
})
}

View File

@@ -0,0 +1,6 @@
package models_test
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/iwind/TeaGo/bootstrap"
)

View 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{}
}

View File

@@ -0,0 +1 @@
package models

View File

@@ -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 {

View 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
}

View File

@@ -0,0 +1,6 @@
package models_test
import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/iwind/TeaGo/bootstrap"
)

View 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{}
}

View File

@@ -0,0 +1 @@
package models

View File

@@ -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
}