mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-02 22:10:26 +08:00
143 lines
4.0 KiB
Go
143 lines
4.0 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
)
|
|
|
|
// NodePriceItemService 节点区域价格相关服务
|
|
type NodePriceItemService struct {
|
|
BaseService
|
|
}
|
|
|
|
// CreateNodePriceItem 创建区域价格
|
|
func (this *NodePriceItemService) CreateNodePriceItem(ctx context.Context, req *pb.CreateNodePriceItemRequest) (*pb.CreateNodePriceItemResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
itemId, err := models.SharedNodePriceItemDAO.CreateItem(tx, req.Name, req.Type, req.BitsFrom, req.BitsTo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &pb.CreateNodePriceItemResponse{NodePriceItemId: itemId}, nil
|
|
}
|
|
|
|
// UpdateNodePriceItem 修改区域价格
|
|
func (this *NodePriceItemService) UpdateNodePriceItem(ctx context.Context, req *pb.UpdateNodePriceItemRequest) (*pb.RPCSuccess, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
err = models.SharedNodePriceItemDAO.UpdateItem(tx, req.NodePriceItemId, req.Name, req.BitsFrom, req.BitsTo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return this.Success()
|
|
}
|
|
|
|
// DeleteNodePriceItem 删除区域价格
|
|
func (this *NodePriceItemService) DeleteNodePriceItem(ctx context.Context, req *pb.DeleteNodePriceItemRequest) (*pb.RPCSuccess, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
err = models.SharedNodePriceItemDAO.DisableNodePriceItem(tx, req.NodePriceItemId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return this.Success()
|
|
}
|
|
|
|
// FindAllEnabledNodePriceItems 查找所有区域价格
|
|
func (this *NodePriceItemService) FindAllEnabledNodePriceItems(ctx context.Context, req *pb.FindAllEnabledNodePriceItemsRequest) (*pb.FindAllEnabledNodePriceItemsResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
prices, err := models.SharedNodePriceItemDAO.FindAllEnabledRegionPrices(tx, req.Type)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := []*pb.NodePriceItem{}
|
|
for _, price := range prices {
|
|
result = append(result, &pb.NodePriceItem{
|
|
Id: int64(price.Id),
|
|
IsOn: price.IsOn,
|
|
Name: price.Name,
|
|
Type: price.Type,
|
|
BitsFrom: int64(price.BitsFrom),
|
|
BitsTo: int64(price.BitsTo),
|
|
})
|
|
}
|
|
|
|
return &pb.FindAllEnabledNodePriceItemsResponse{NodePriceItems: result}, nil
|
|
}
|
|
|
|
// FindAllAvailableNodePriceItems 查找所有启用的区域价格
|
|
func (this *NodePriceItemService) FindAllAvailableNodePriceItems(ctx context.Context, req *pb.FindAllAvailableNodePriceItemsRequest) (*pb.FindAllAvailableNodePriceItemsResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
prices, err := models.SharedNodePriceItemDAO.FindAllEnabledAndOnRegionPrices(tx, req.Type)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := []*pb.NodePriceItem{}
|
|
for _, price := range prices {
|
|
result = append(result, &pb.NodePriceItem{
|
|
Id: int64(price.Id),
|
|
IsOn: price.IsOn,
|
|
Name: price.Name,
|
|
Type: price.Type,
|
|
BitsFrom: int64(price.BitsFrom),
|
|
BitsTo: int64(price.BitsTo),
|
|
})
|
|
}
|
|
|
|
return &pb.FindAllAvailableNodePriceItemsResponse{NodePriceItems: result}, nil
|
|
}
|
|
|
|
// FindEnabledNodePriceItem 查找单个区域信息
|
|
func (this *NodePriceItemService) FindEnabledNodePriceItem(ctx context.Context, req *pb.FindEnabledNodePriceItemRequest) (*pb.FindEnabledNodePriceItemResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var tx = this.NullTx()
|
|
|
|
price, err := models.SharedNodePriceItemDAO.FindEnabledNodePriceItem(tx, req.NodePriceItemId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if price == nil {
|
|
return &pb.FindEnabledNodePriceItemResponse{NodePriceItem: nil}, nil
|
|
}
|
|
return &pb.FindEnabledNodePriceItemResponse{NodePriceItem: &pb.NodePriceItem{
|
|
Id: int64(price.Id),
|
|
IsOn: price.IsOn,
|
|
Name: price.Name,
|
|
Type: price.Type,
|
|
BitsFrom: int64(price.BitsFrom),
|
|
BitsTo: int64(price.BitsTo),
|
|
}}, nil
|
|
}
|