mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 01:50:25 +08:00
初步完成高防相关管理对象
This commit is contained in:
71
internal/db/models/ad_network_dao.go
Normal file
71
internal/db/models/ad_network_dao.go
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ADNetworkStateEnabled = 1 // 已启用
|
||||||
|
ADNetworkStateDisabled = 0 // 已禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
type ADNetworkDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewADNetworkDAO() *ADNetworkDAO {
|
||||||
|
return dbs.NewDAO(&ADNetworkDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeADNetworks",
|
||||||
|
Model: new(ADNetwork),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ADNetworkDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedADNetworkDAO *ADNetworkDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedADNetworkDAO = NewADNetworkDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableADNetwork 启用条目
|
||||||
|
func (this *ADNetworkDAO) EnableADNetwork(tx *dbs.Tx, id uint32) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADNetworkStateEnabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisableADNetwork 禁用条目
|
||||||
|
func (this *ADNetworkDAO) DisableADNetwork(tx *dbs.Tx, id int64) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADNetworkStateDisabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindEnabledADNetwork 查找启用中的条目
|
||||||
|
func (this *ADNetworkDAO) FindEnabledADNetwork(tx *dbs.Tx, id int64) (*ADNetwork, error) {
|
||||||
|
result, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
State(ADNetworkStateEnabled).
|
||||||
|
Find()
|
||||||
|
if result == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(*ADNetwork), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindADNetworkName 根据主键查找名称
|
||||||
|
func (this *ADNetworkDAO) FindADNetworkName(tx *dbs.Tx, id uint32) (string, error) {
|
||||||
|
return this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Result("name").
|
||||||
|
FindStringCol("")
|
||||||
|
}
|
||||||
6
internal/db/models/ad_network_dao_test.go
Normal file
6
internal/db/models/ad_network_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/ad_network_model.go
Normal file
24
internal/db/models/ad_network_model.go
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
// ADNetwork 高防线路
|
||||||
|
type ADNetwork struct {
|
||||||
|
Id uint32 `field:"id"` // ID
|
||||||
|
IsOn bool `field:"isOn"` // 是否启用
|
||||||
|
Name string `field:"name"` // 名称
|
||||||
|
Description string `field:"description"` // 描述
|
||||||
|
Order uint32 `field:"order"` // 排序
|
||||||
|
State uint8 `field:"state"` // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
type ADNetworkOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
IsOn any // 是否启用
|
||||||
|
Name any // 名称
|
||||||
|
Description any // 描述
|
||||||
|
Order any // 排序
|
||||||
|
State any // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewADNetworkOperator() *ADNetworkOperator {
|
||||||
|
return &ADNetworkOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/ad_network_model_ext.go
Normal file
1
internal/db/models/ad_network_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
71
internal/db/models/ad_package_dao.go
Normal file
71
internal/db/models/ad_package_dao.go
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ADPackageStateEnabled = 1 // 已启用
|
||||||
|
ADPackageStateDisabled = 0 // 已禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
type ADPackageDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewADPackageDAO() *ADPackageDAO {
|
||||||
|
return dbs.NewDAO(&ADPackageDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeADPackages",
|
||||||
|
Model: new(ADPackage),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ADPackageDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedADPackageDAO *ADPackageDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedADPackageDAO = NewADPackageDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableADPackage 启用条目
|
||||||
|
func (this *ADPackageDAO) EnableADPackage(tx *dbs.Tx, id uint32) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADPackageStateEnabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisableADPackage 禁用条目
|
||||||
|
func (this *ADPackageDAO) DisableADPackage(tx *dbs.Tx, id int64) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADPackageStateDisabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindEnabledADPackage 查找启用中的条目
|
||||||
|
func (this *ADPackageDAO) FindEnabledADPackage(tx *dbs.Tx, id int64) (*ADPackage, error) {
|
||||||
|
result, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
State(ADPackageStateEnabled).
|
||||||
|
Find()
|
||||||
|
if result == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(*ADPackage), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindADPackageName 根据主键查找名称
|
||||||
|
func (this *ADPackageDAO) FindADPackageName(tx *dbs.Tx, id uint32) (string, error) {
|
||||||
|
return this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Result("name").
|
||||||
|
FindStringCol("")
|
||||||
|
}
|
||||||
6
internal/db/models/ad_package_dao_test.go
Normal file
6
internal/db/models/ad_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"
|
||||||
|
)
|
||||||
54
internal/db/models/ad_package_instance_dao.go
Normal file
54
internal/db/models/ad_package_instance_dao.go
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ADPackageInstanceStateEnabled = 1 // 已启用
|
||||||
|
ADPackageInstanceStateDisabled = 0 // 已禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
type ADPackageInstanceDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewADPackageInstanceDAO() *ADPackageInstanceDAO {
|
||||||
|
return dbs.NewDAO(&ADPackageInstanceDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeADPackageInstances",
|
||||||
|
Model: new(ADPackageInstance),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ADPackageInstanceDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedADPackageInstanceDAO *ADPackageInstanceDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedADPackageInstanceDAO = NewADPackageInstanceDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableADPackageInstance 启用条目
|
||||||
|
func (this *ADPackageInstanceDAO) EnableADPackageInstance(tx *dbs.Tx, id int64) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADPackageInstanceStateEnabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindEnabledADPackageInstance 查找启用中的条目
|
||||||
|
func (this *ADPackageInstanceDAO) FindEnabledADPackageInstance(tx *dbs.Tx, id int64) (*ADPackageInstance, error) {
|
||||||
|
result, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
State(ADPackageInstanceStateEnabled).
|
||||||
|
Find()
|
||||||
|
if result == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(*ADPackageInstance), err
|
||||||
|
}
|
||||||
6
internal/db/models/ad_package_instance_dao_test.go
Normal file
6
internal/db/models/ad_package_instance_dao_test.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package models_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
_ "github.com/iwind/TeaGo/bootstrap"
|
||||||
|
)
|
||||||
36
internal/db/models/ad_package_instance_model.go
Normal file
36
internal/db/models/ad_package_instance_model.go
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import "github.com/iwind/TeaGo/dbs"
|
||||||
|
|
||||||
|
// ADPackageInstance 高防实例
|
||||||
|
type ADPackageInstance struct {
|
||||||
|
Id uint32 `field:"id"` // ID
|
||||||
|
IsOn bool `field:"isOn"` // 是否启用
|
||||||
|
PackageId uint32 `field:"packageId"` // 规格ID
|
||||||
|
ClusterId uint32 `field:"clusterId"` // 集群ID
|
||||||
|
NodeIds dbs.JSON `field:"nodeIds"` // 节点ID
|
||||||
|
IpAddresses dbs.JSON `field:"ipAddresses"` // IP地址
|
||||||
|
UserId uint64 `field:"userId"` // 用户ID
|
||||||
|
UserDayTo string `field:"userDayTo"` // 用户有效期YYYYMMDD
|
||||||
|
UserInstanceId uint64 `field:"userInstanceId"` // 用户实例ID
|
||||||
|
State uint8 `field:"state"` // 状态
|
||||||
|
ObjectCodes dbs.JSON `field:"objectCodes"` // 防护对象
|
||||||
|
}
|
||||||
|
|
||||||
|
type ADPackageInstanceOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
IsOn any // 是否启用
|
||||||
|
PackageId any // 规格ID
|
||||||
|
ClusterId any // 集群ID
|
||||||
|
NodeIds any // 节点ID
|
||||||
|
IpAddresses any // IP地址
|
||||||
|
UserId any // 用户ID
|
||||||
|
UserDayTo any // 用户有效期YYYYMMDD
|
||||||
|
UserInstanceId any // 用户实例ID
|
||||||
|
State any // 状态
|
||||||
|
ObjectCodes any // 防护对象
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewADPackageInstanceOperator() *ADPackageInstanceOperator {
|
||||||
|
return &ADPackageInstanceOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/ad_package_instance_model_ext.go
Normal file
1
internal/db/models/ad_package_instance_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
32
internal/db/models/ad_package_model.go
Normal file
32
internal/db/models/ad_package_model.go
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
// ADPackage 高防产品规格
|
||||||
|
type ADPackage struct {
|
||||||
|
Id uint32 `field:"id"` // ID
|
||||||
|
IsOn bool `field:"isOn"` // 是否启用
|
||||||
|
NetworkId uint32 `field:"networkId"` // 线路ID
|
||||||
|
ProtectionBandwidthSize uint32 `field:"protectionBandwidthSize"` // 防护带宽尺寸
|
||||||
|
ProtectionBandwidthUnit string `field:"protectionBandwidthUnit"` // 防护带宽单位
|
||||||
|
ProtectionBandwidthBits uint64 `field:"protectionBandwidthBits"` // 防护带宽比特
|
||||||
|
ServerBandwidthSize uint32 `field:"serverBandwidthSize"` // 业务带宽尺寸
|
||||||
|
ServerBandwidthUnit string `field:"serverBandwidthUnit"` // 业务带宽单位
|
||||||
|
ServerBandwidthBits uint64 `field:"serverBandwidthBits"` // 业务带宽比特
|
||||||
|
State uint8 `field:"state"` // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
type ADPackageOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
IsOn any // 是否启用
|
||||||
|
NetworkId any // 线路ID
|
||||||
|
ProtectionBandwidthSize any // 防护带宽尺寸
|
||||||
|
ProtectionBandwidthUnit any // 防护带宽单位
|
||||||
|
ProtectionBandwidthBits any // 防护带宽比特
|
||||||
|
ServerBandwidthSize any // 业务带宽尺寸
|
||||||
|
ServerBandwidthUnit any // 业务带宽单位
|
||||||
|
ServerBandwidthBits any // 业务带宽比特
|
||||||
|
State any // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewADPackageOperator() *ADPackageOperator {
|
||||||
|
return &ADPackageOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/ad_package_model_ext.go
Normal file
1
internal/db/models/ad_package_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
63
internal/db/models/ad_package_period_dao.go
Normal file
63
internal/db/models/ad_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 (
|
||||||
|
ADPackagePeriodStateEnabled = 1 // 已启用
|
||||||
|
ADPackagePeriodStateDisabled = 0 // 已禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
type ADPackagePeriodDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewADPackagePeriodDAO() *ADPackagePeriodDAO {
|
||||||
|
return dbs.NewDAO(&ADPackagePeriodDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeADPackagePeriods",
|
||||||
|
Model: new(ADPackagePeriod),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ADPackagePeriodDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedADPackagePeriodDAO *ADPackagePeriodDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedADPackagePeriodDAO = NewADPackagePeriodDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableADPackagePeriod 启用条目
|
||||||
|
func (this *ADPackagePeriodDAO) EnableADPackagePeriod(tx *dbs.Tx, id uint32) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADPackagePeriodStateEnabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisableADPackagePeriod 禁用条目
|
||||||
|
func (this *ADPackagePeriodDAO) DisableADPackagePeriod(tx *dbs.Tx, id int64) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", ADPackagePeriodStateDisabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindEnabledADPackagePeriod 查找启用中的条目
|
||||||
|
func (this *ADPackagePeriodDAO) FindEnabledADPackagePeriod(tx *dbs.Tx, id int64) (*ADPackagePeriod, error) {
|
||||||
|
result, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
State(ADPackagePeriodStateEnabled).
|
||||||
|
Find()
|
||||||
|
if result == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.(*ADPackagePeriod), err
|
||||||
|
}
|
||||||
6
internal/db/models/ad_package_period_dao_test.go
Normal file
6
internal/db/models/ad_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/ad_package_period_model.go
Normal file
24
internal/db/models/ad_package_period_model.go
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
// ADPackagePeriod 高防产品有效期
|
||||||
|
type ADPackagePeriod 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 ADPackagePeriodOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
IsOn any // 是否启用
|
||||||
|
Count any // 数量
|
||||||
|
Unit any // 单位:month, year
|
||||||
|
Months any // 月数
|
||||||
|
State any // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewADPackagePeriodOperator() *ADPackagePeriodOperator {
|
||||||
|
return &ADPackagePeriodOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/ad_package_period_model_ext.go
Normal file
1
internal/db/models/ad_package_period_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
28
internal/db/models/ad_package_price_dao.go
Normal file
28
internal/db/models/ad_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 ADPackagePriceDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewADPackagePriceDAO() *ADPackagePriceDAO {
|
||||||
|
return dbs.NewDAO(&ADPackagePriceDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeADPackagePrices",
|
||||||
|
Model: new(ADPackagePrice),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*ADPackagePriceDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedADPackagePriceDAO *ADPackagePriceDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedADPackagePriceDAO = NewADPackagePriceDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
6
internal/db/models/ad_package_price_dao_test.go
Normal file
6
internal/db/models/ad_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"
|
||||||
|
)
|
||||||
22
internal/db/models/ad_package_price_model.go
Normal file
22
internal/db/models/ad_package_price_model.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
// ADPackagePrice 流量包价格
|
||||||
|
type ADPackagePrice struct {
|
||||||
|
Id uint32 `field:"id"` // ID
|
||||||
|
PackageId uint32 `field:"packageId"` // 高防产品ID
|
||||||
|
PeriodId uint32 `field:"periodId"` // 有效期ID
|
||||||
|
Price float64 `field:"price"` // 价格
|
||||||
|
DiscountPrice float64 `field:"discountPrice"` // 折后价格
|
||||||
|
}
|
||||||
|
|
||||||
|
type ADPackagePriceOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
PackageId any // 高防产品ID
|
||||||
|
PeriodId any // 有效期ID
|
||||||
|
Price any // 价格
|
||||||
|
DiscountPrice any // 折后价格
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewADPackagePriceOperator() *ADPackagePriceOperator {
|
||||||
|
return &ADPackagePriceOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/ad_package_price_model_ext.go
Normal file
1
internal/db/models/ad_package_price_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
@@ -40,6 +40,7 @@ type NodeCluster struct {
|
|||||||
GlobalServerConfig dbs.JSON `field:"globalServerConfig"` // 全局服务配置
|
GlobalServerConfig dbs.JSON `field:"globalServerConfig"` // 全局服务配置
|
||||||
AutoRemoteStart bool `field:"autoRemoteStart"` // 自动远程启动
|
AutoRemoteStart bool `field:"autoRemoteStart"` // 自动远程启动
|
||||||
AutoInstallNftables bool `field:"autoInstallNftables"` // 自动安装nftables
|
AutoInstallNftables bool `field:"autoInstallNftables"` // 自动安装nftables
|
||||||
|
IsAD bool `field:"isAD"` // 是否为高防集群
|
||||||
}
|
}
|
||||||
|
|
||||||
type NodeClusterOperator struct {
|
type NodeClusterOperator struct {
|
||||||
@@ -79,6 +80,7 @@ type NodeClusterOperator struct {
|
|||||||
GlobalServerConfig any // 全局服务配置
|
GlobalServerConfig any // 全局服务配置
|
||||||
AutoRemoteStart any // 自动远程启动
|
AutoRemoteStart any // 自动远程启动
|
||||||
AutoInstallNftables any // 自动安装nftables
|
AutoInstallNftables any // 自动安装nftables
|
||||||
|
IsAD any // 是否为高防集群
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNodeClusterOperator() *NodeClusterOperator {
|
func NewNodeClusterOperator() *NodeClusterOperator {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils/sizes"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils/sizes"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils/ttlcache"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils/ttlcache"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/zero"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||||
@@ -971,12 +972,32 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils
|
|||||||
}
|
}
|
||||||
config.AllowedIPs = append(config.AllowedIPs, apiNodeIPs...)
|
config.AllowedIPs = append(config.AllowedIPs, apiNodeIPs...)
|
||||||
|
|
||||||
|
// 所属集群
|
||||||
|
var primaryClusterId = int64(node.ClusterId)
|
||||||
|
var clusterIds = []int64{primaryClusterId}
|
||||||
|
clusterIds = append(clusterIds, node.DecodeSecondaryClusterIds()...)
|
||||||
|
|
||||||
// 获取所有的服务
|
// 获取所有的服务
|
||||||
servers, err := SharedServerDAO.FindAllEnabledServersWithNode(tx, int64(node.Id))
|
servers, err := SharedServerDAO.FindAllEnabledServersWithNode(tx, int64(node.Id))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取集群上的其他服务
|
||||||
|
var serverIdMap = map[int64]zero.Zero{}
|
||||||
|
for _, server := range servers {
|
||||||
|
serverIdMap[int64(server.Id)] = zero.Zero{}
|
||||||
|
}
|
||||||
|
for _, clusterId := range clusterIds {
|
||||||
|
clusterServers, err := this.loadServersFromCluster(tx, clusterId, serverIdMap)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, clusterServer := range clusterServers {
|
||||||
|
servers = append(servers, clusterServer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, false, cacheMap, true, false)
|
serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, false, cacheMap, true, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1016,9 +1037,6 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils
|
|||||||
config.GlobalConfig = globalConfig
|
config.GlobalConfig = globalConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
var primaryClusterId = int64(node.ClusterId)
|
|
||||||
var clusterIds = []int64{primaryClusterId}
|
|
||||||
clusterIds = append(clusterIds, node.DecodeSecondaryClusterIds()...)
|
|
||||||
var clusterIndex = 0
|
var clusterIndex = 0
|
||||||
config.WebPImagePolicies = map[int64]*nodeconfigs.WebPImagePolicy{}
|
config.WebPImagePolicies = map[int64]*nodeconfigs.WebPImagePolicy{}
|
||||||
config.UAMPolicies = map[int64]*nodeconfigs.UAMPolicy{}
|
config.UAMPolicies = map[int64]*nodeconfigs.UAMPolicy{}
|
||||||
|
|||||||
@@ -6,10 +6,15 @@ package models
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
||||||
|
"github.com/TeaOSLab/EdgeAPI/internal/zero"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||||
"github.com/iwind/TeaGo/dbs"
|
"github.com/iwind/TeaGo/dbs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (this *NodeDAO) loadServersFromCluster(tx *dbs.Tx, clusterId int64, serverIdMap map[int64]zero.Zero) ([]*Server, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (this *NodeDAO) composeExtConfig(tx *dbs.Tx, config *nodeconfigs.NodeConfig, clusterIds []int64, cacheMap *utils.CacheMap) error {
|
func (this *NodeDAO) composeExtConfig(tx *dbs.Tx, config *nodeconfigs.NodeConfig, clusterIds []int64, cacheMap *utils.CacheMap) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,7 +154,6 @@ func (this *NodeTaskDAO) ExtractNodeClusterTask(tx *dbs.Tx, clusterId int64, use
|
|||||||
_, err = this.Query(tx).
|
_, err = this.Query(tx).
|
||||||
Attr("role", nodeconfigs.NodeRoleNode).
|
Attr("role", nodeconfigs.NodeRoleNode).
|
||||||
Attr("clusterId", clusterId).
|
Attr("clusterId", clusterId).
|
||||||
Param("clusterIdString", types.String(clusterId)).
|
|
||||||
Where("nodeId> 0").
|
Where("nodeId> 0").
|
||||||
Attr("type", taskType).
|
Attr("type", taskType).
|
||||||
Delete()
|
Delete()
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ func (this *ServerDAO) FindEnabledServerBasic(tx *dbs.Tx, serverId int64) (*Serv
|
|||||||
result, err := this.Query(tx).
|
result, err := this.Query(tx).
|
||||||
Pk(serverId).
|
Pk(serverId).
|
||||||
State(ServerStateEnabled).
|
State(ServerStateEnabled).
|
||||||
Result("id", "name", "description", "isOn", "type", "clusterId").
|
Result("id", "name", "description", "isOn", "type", "clusterId", "userId").
|
||||||
Find()
|
Find()
|
||||||
if result == nil {
|
if result == nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
42
internal/db/models/user_ad_instance_dao.go
Normal file
42
internal/db/models/user_ad_instance_dao.go
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/iwind/TeaGo/Tea"
|
||||||
|
"github.com/iwind/TeaGo/dbs"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
UserADInstanceStateEnabled = 1 // 已启用
|
||||||
|
UserADInstanceStateDisabled = 0 // 已禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
type UserADInstanceDAO dbs.DAO
|
||||||
|
|
||||||
|
func NewUserADInstanceDAO() *UserADInstanceDAO {
|
||||||
|
return dbs.NewDAO(&UserADInstanceDAO{
|
||||||
|
DAOObject: dbs.DAOObject{
|
||||||
|
DB: Tea.Env,
|
||||||
|
Table: "edgeUserADInstances",
|
||||||
|
Model: new(UserADInstance),
|
||||||
|
PkName: "id",
|
||||||
|
},
|
||||||
|
}).(*UserADInstanceDAO)
|
||||||
|
}
|
||||||
|
|
||||||
|
var SharedUserADInstanceDAO *UserADInstanceDAO
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
dbs.OnReady(func() {
|
||||||
|
SharedUserADInstanceDAO = NewUserADInstanceDAO()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableUserADInstance 启用条目
|
||||||
|
func (this *UserADInstanceDAO) EnableUserADInstance(tx *dbs.Tx, id uint64) error {
|
||||||
|
_, err := this.Query(tx).
|
||||||
|
Pk(id).
|
||||||
|
Set("state", UserADInstanceStateEnabled).
|
||||||
|
Update()
|
||||||
|
return err
|
||||||
|
}
|
||||||
6
internal/db/models/user_ad_instance_dao_test.go
Normal file
6
internal/db/models/user_ad_instance_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_ad_instance_model.go
Normal file
40
internal/db/models/user_ad_instance_model.go
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import "github.com/iwind/TeaGo/dbs"
|
||||||
|
|
||||||
|
// UserADInstance 高防实例
|
||||||
|
type UserADInstance struct {
|
||||||
|
Id uint64 `field:"id"` // ID
|
||||||
|
AdminId uint32 `field:"adminId"` // 管理员ID
|
||||||
|
UserId uint64 `field:"userId"` // 用户ID
|
||||||
|
InstanceId uint32 `field:"instanceId"` // 高防实例ID
|
||||||
|
PeriodId uint32 `field:"periodId"` // 有效期
|
||||||
|
PeriodCount uint32 `field:"periodCount"` // 有效期数量
|
||||||
|
PeriodUnit string `field:"periodUnit"` // 有效期单位
|
||||||
|
DayFrom string `field:"dayFrom"` // 开始日期
|
||||||
|
DayTo string `field:"dayTo"` // 结束日期
|
||||||
|
MaxObjects uint32 `field:"maxObjects"` // 最多防护对象数
|
||||||
|
ObjectCodes dbs.JSON `field:"objectCodes"` // 防护对象
|
||||||
|
CreatedAt uint64 `field:"createdAt"` // 创建时间
|
||||||
|
State uint8 `field:"state"` // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserADInstanceOperator struct {
|
||||||
|
Id any // ID
|
||||||
|
AdminId any // 管理员ID
|
||||||
|
UserId any // 用户ID
|
||||||
|
InstanceId any // 高防实例ID
|
||||||
|
PeriodId any // 有效期
|
||||||
|
PeriodCount any // 有效期数量
|
||||||
|
PeriodUnit any // 有效期单位
|
||||||
|
DayFrom any // 开始日期
|
||||||
|
DayTo any // 结束日期
|
||||||
|
MaxObjects any // 最多防护对象数
|
||||||
|
ObjectCodes any // 防护对象
|
||||||
|
CreatedAt any // 创建时间
|
||||||
|
State any // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUserADInstanceOperator() *UserADInstanceOperator {
|
||||||
|
return &UserADInstanceOperator{}
|
||||||
|
}
|
||||||
1
internal/db/models/user_ad_instance_model_ext.go
Normal file
1
internal/db/models/user_ad_instance_model_ext.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package models
|
||||||
@@ -134,7 +134,7 @@ func (this *UserDAO) FindEnabledBasicUser(tx *dbs.Tx, id int64) (*User, error) {
|
|||||||
result, err := this.Query(tx).
|
result, err := this.Query(tx).
|
||||||
Pk(id).
|
Pk(id).
|
||||||
Attr("state", UserStateEnabled).
|
Attr("state", UserStateEnabled).
|
||||||
Result("id", "fullname", "username").
|
Result("id", "fullname", "username", "isOn").
|
||||||
Find()
|
Find()
|
||||||
if result == nil {
|
if result == nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user