mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	优化代码
This commit is contained in:
		@@ -228,18 +228,9 @@ func (this *HTTPWebDAO) ComposeWebConfig(webId int64) (*serverconfigs.HTTPWebCon
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		for _, cacheRef := range cacheConfig.CacheRefs {
 | 
			
		||||
			if cacheRef.CachePolicyId > 0 {
 | 
			
		||||
				cachePolicy, err := SharedHTTPCachePolicyDAO.ComposeCachePolicy(cacheRef.CachePolicyId)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
				if cachePolicy != nil {
 | 
			
		||||
					cacheRef.CachePolicy = cachePolicy
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		config.Cache = cacheConfig
 | 
			
		||||
 | 
			
		||||
		// 暂不支持自定义缓存策略设置,因为同一个集群下的服务需要集中管理
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 防火墙配置
 | 
			
		||||
@@ -251,17 +242,7 @@ func (this *HTTPWebDAO) ComposeWebConfig(webId int64) (*serverconfigs.HTTPWebCon
 | 
			
		||||
		}
 | 
			
		||||
		config.FirewallRef = firewallRef
 | 
			
		||||
 | 
			
		||||
		if firewallRef.FirewallPolicyId > 0 {
 | 
			
		||||
			firewallPolicy, err := SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(firewallRef.FirewallPolicyId)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if firewallPolicy == nil {
 | 
			
		||||
				config.FirewallRef = nil
 | 
			
		||||
			} else {
 | 
			
		||||
				config.FirewallPolicy = firewallPolicy
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		// 暂不支持自定义防火墙策略设置,因为同一个集群下的服务需要集中管理
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 路径规则
 | 
			
		||||
 
 | 
			
		||||
@@ -609,6 +609,14 @@ func (this *NodeClusterDAO) FindAllEnabledNodeClustersWithHTTPFirewallPolicyId(h
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获取集群的WAF策略ID
 | 
			
		||||
func (this *NodeClusterDAO) FindClusterHTTPFirewallPolicyId(clusterId int64) (int64, error) {
 | 
			
		||||
	return this.Query().
 | 
			
		||||
		Pk(clusterId).
 | 
			
		||||
		Result("httpFirewallPolicyId").
 | 
			
		||||
		FindInt64Col(0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 设置集群的缓存策略
 | 
			
		||||
func (this *NodeClusterDAO) UpdateNodeClusterHTTPCachePolicyId(clusterId int64, httpCachePolicyId int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
@@ -618,6 +626,14 @@ func (this *NodeClusterDAO) UpdateNodeClusterHTTPCachePolicyId(clusterId int64,
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获取集群的缓存策略ID
 | 
			
		||||
func (this *NodeClusterDAO) FindClusterHTTPCachePolicyId(clusterId int64) (int64, error) {
 | 
			
		||||
	return this.Query().
 | 
			
		||||
		Pk(clusterId).
 | 
			
		||||
		Result("cachePolicyId").
 | 
			
		||||
		FindInt64Col(0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 设置集群的WAF策略
 | 
			
		||||
func (this *NodeClusterDAO) UpdateNodeClusterHTTPFirewallPolicyId(clusterId int64, httpFirewallPolicyId int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
 
 | 
			
		||||
@@ -143,7 +143,7 @@ func (this *NodeDAO) UpdateNodeLatestVersion(nodeId int64) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 批量更新节点版本
 | 
			
		||||
func (this *NodeDAO) UpdateAllNodesLatestVersionMatch(clusterId int64) error {
 | 
			
		||||
func (this *NodeDAO) IncreaseAllNodesLatestVersionMatch(clusterId int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
		Attr("clusterId", clusterId).
 | 
			
		||||
		Set("latestVersion", dbs.SQL("latestVersion+1")).
 | 
			
		||||
@@ -459,6 +459,7 @@ func (this *NodeDAO) UpdateNodeInstallStatus(nodeId int64, status *NodeInstallSt
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 组合配置
 | 
			
		||||
// TODO 提升运行速度
 | 
			
		||||
func (this *NodeDAO) ComposeNodeConfig(nodeId int64) (*nodeconfigs.NodeConfig, error) {
 | 
			
		||||
	node, err := this.FindEnabledNode(nodeId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -513,8 +514,39 @@ func (this *NodeDAO) ComposeNodeConfig(nodeId int64) (*nodeconfigs.NodeConfig, e
 | 
			
		||||
		config.GlobalConfig = globalConfig
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// WAF
 | 
			
		||||
	clusterId := int64(node.ClusterId)
 | 
			
		||||
	httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(clusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if httpFirewallPolicyId > 0 {
 | 
			
		||||
		firewallPolicy, err := SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(httpFirewallPolicyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		if firewallPolicy != nil {
 | 
			
		||||
			config.HTTPFirewallPolicy = firewallPolicy
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 缓存策略
 | 
			
		||||
	httpCachePolicyId, err := SharedNodeClusterDAO.FindClusterHTTPCachePolicyId(clusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if httpCachePolicyId > 0 {
 | 
			
		||||
		cachePolicy, err := SharedHTTPCachePolicyDAO.ComposeCachePolicy(httpCachePolicyId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		if cachePolicy != nil {
 | 
			
		||||
			config.HTTPCachePolicy = cachePolicy
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// TOA
 | 
			
		||||
	toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(int64(node.ClusterId))
 | 
			
		||||
	toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(clusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@ func (this *ServerChangeEvent) Run() error {
 | 
			
		||||
		if !isOk {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		err = SharedNodeDAO.UpdateAllNodesLatestVersionMatch(clusterId)
 | 
			
		||||
		err = SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(clusterId)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -70,15 +70,15 @@ func (this *MessageService) ListUnreadMessages(ctx context.Context, req *pb.List
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		result = append(result, &pb.Message{
 | 
			
		||||
			Id:         int64(message.Id),
 | 
			
		||||
			Type:       message.Type,
 | 
			
		||||
			Body:       message.Body,
 | 
			
		||||
			Level:      message.Level,
 | 
			
		||||
			ParamsJSON: []byte(message.Params),
 | 
			
		||||
			IsRead:     message.IsRead == 1,
 | 
			
		||||
			CreatedAt:  int64(message.CreatedAt),
 | 
			
		||||
			Cluster:    pbCluster,
 | 
			
		||||
			Node:       pbNode,
 | 
			
		||||
			Id:          int64(message.Id),
 | 
			
		||||
			Type:        message.Type,
 | 
			
		||||
			Body:        message.Body,
 | 
			
		||||
			Level:       message.Level,
 | 
			
		||||
			ParamsJSON:  []byte(message.Params),
 | 
			
		||||
			IsRead:      message.IsRead == 1,
 | 
			
		||||
			CreatedAt:   int64(message.CreatedAt),
 | 
			
		||||
			NodeCluster: pbCluster,
 | 
			
		||||
			Node:        pbNode,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -255,7 +255,7 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List
 | 
			
		||||
			Version:     int64(node.Version),
 | 
			
		||||
			IsInstalled: node.IsInstalled == 1,
 | 
			
		||||
			StatusJSON:  []byte(node.Status),
 | 
			
		||||
			Cluster: &pb.NodeCluster{
 | 
			
		||||
			NodeCluster: &pb.NodeCluster{
 | 
			
		||||
				Id:   int64(node.ClusterId),
 | 
			
		||||
				Name: clusterName,
 | 
			
		||||
			},
 | 
			
		||||
@@ -478,7 +478,7 @@ func (this *NodeService) FindEnabledNode(ctx context.Context, req *pb.FindEnable
 | 
			
		||||
		Secret:        node.Secret,
 | 
			
		||||
		InstallDir:    node.InstallDir,
 | 
			
		||||
		IsInstalled:   node.IsInstalled == 1,
 | 
			
		||||
		Cluster: &pb.NodeCluster{
 | 
			
		||||
		NodeCluster: &pb.NodeCluster{
 | 
			
		||||
			Id:   int64(node.ClusterId),
 | 
			
		||||
			Name: clusterName,
 | 
			
		||||
		},
 | 
			
		||||
@@ -744,7 +744,7 @@ func (this *NodeService) FindAllEnabledNodesWithGrantId(ctx context.Context, req
 | 
			
		||||
			Version:     int64(node.Version),
 | 
			
		||||
			IsInstalled: node.IsInstalled == 1,
 | 
			
		||||
			StatusJSON:  []byte(node.Status),
 | 
			
		||||
			Cluster: &pb.NodeCluster{
 | 
			
		||||
			NodeCluster: &pb.NodeCluster{
 | 
			
		||||
				Id:   int64(node.ClusterId),
 | 
			
		||||
				Name: clusterName,
 | 
			
		||||
			},
 | 
			
		||||
 
 | 
			
		||||
@@ -78,7 +78,7 @@ func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req
 | 
			
		||||
		return &pb.FindEnabledNodeClusterResponse{}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.FindEnabledNodeClusterResponse{Cluster: &pb.NodeCluster{
 | 
			
		||||
	return &pb.FindEnabledNodeClusterResponse{NodeCluster: &pb.NodeCluster{
 | 
			
		||||
		Id:                   int64(cluster.Id),
 | 
			
		||||
		Name:                 cluster.Name,
 | 
			
		||||
		CreatedAt:            int64(cluster.CreatedAt),
 | 
			
		||||
@@ -168,7 +168,7 @@ func (this *NodeClusterService) FindAllEnabledNodeClusters(ctx context.Context,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.FindAllEnabledNodeClustersResponse{
 | 
			
		||||
		Clusters: result,
 | 
			
		||||
		NodeClusters: result,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -185,7 +185,7 @@ func (this *NodeClusterService) FindAllChangedNodeClusters(ctx context.Context,
 | 
			
		||||
	}
 | 
			
		||||
	if len(clusterIds) == 0 {
 | 
			
		||||
		return &pb.FindAllChangedNodeClustersResponse{
 | 
			
		||||
			Clusters: []*pb.NodeCluster{},
 | 
			
		||||
			NodeClusters: []*pb.NodeCluster{},
 | 
			
		||||
		}, nil
 | 
			
		||||
	}
 | 
			
		||||
	result := []*pb.NodeCluster{}
 | 
			
		||||
@@ -205,7 +205,7 @@ func (this *NodeClusterService) FindAllChangedNodeClusters(ctx context.Context,
 | 
			
		||||
			Secret:    cluster.Secret,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindAllChangedNodeClustersResponse{Clusters: result}, nil
 | 
			
		||||
	return &pb.FindAllChangedNodeClustersResponse{NodeClusters: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 计算所有集群数量
 | 
			
		||||
@@ -250,7 +250,7 @@ func (this *NodeClusterService) ListEnabledNodeClusters(ctx context.Context, req
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.ListEnabledNodeClustersResponse{Clusters: result}, nil
 | 
			
		||||
	return &pb.ListEnabledNodeClustersResponse{NodeClusters: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找集群的健康检查配置
 | 
			
		||||
@@ -354,7 +354,7 @@ func (this *NodeClusterService) FindAllEnabledNodeClustersWithGrantId(ctx contex
 | 
			
		||||
			Secret:    cluster.Secret,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindAllEnabledNodeClustersWithGrantIdResponse{Clusters: result}, nil
 | 
			
		||||
	return &pb.FindAllEnabledNodeClustersWithGrantIdResponse{NodeClusters: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找集群的DNS配置
 | 
			
		||||
@@ -566,8 +566,8 @@ func (this *NodeClusterService) UpdateNodeClusterTOA(ctx context.Context, req *p
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 更新节点版本
 | 
			
		||||
	err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	// 增加节点版本号
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -655,6 +655,13 @@ func (this *NodeClusterService) UpdateNodeClusterHTTPCachePolicyId(ctx context.C
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 增加节点版本号
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -668,5 +675,12 @@ func (this *NodeClusterService) UpdateNodeClusterHTTPFirewallPolicyId(ctx contex
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 增加节点版本号
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ func (this *ServerService) CreateServer(ctx context.Context, req *pb.CreateServe
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 更新节点版本
 | 
			
		||||
	err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -75,14 +75,14 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update
 | 
			
		||||
 | 
			
		||||
	// 更新老的节点版本
 | 
			
		||||
	if req.NodeClusterId != int64(server.ClusterId) {
 | 
			
		||||
		err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(int64(server.ClusterId))
 | 
			
		||||
		err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(int64(server.ClusterId))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 更新新的节点版本
 | 
			
		||||
	err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -461,7 +461,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
 | 
			
		||||
			ServerNamesJSON: []byte(server.ServerNames),
 | 
			
		||||
			CreatedAt:       int64(server.CreatedAt),
 | 
			
		||||
			DnsName:         server.DnsName,
 | 
			
		||||
			Cluster: &pb.NodeCluster{
 | 
			
		||||
			NodeCluster: &pb.NodeCluster{
 | 
			
		||||
				Id:   int64(server.ClusterId),
 | 
			
		||||
				Name: clusterName,
 | 
			
		||||
			},
 | 
			
		||||
@@ -497,7 +497,7 @@ func (this *ServerService) DisableServer(ctx context.Context, req *pb.DisableSer
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 更新节点版本
 | 
			
		||||
	err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(int64(server.ClusterId))
 | 
			
		||||
	err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(int64(server.ClusterId))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -572,7 +572,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn
 | 
			
		||||
		IncludeNodes: []byte(server.IncludeNodes),
 | 
			
		||||
		ExcludeNodes: []byte(server.ExcludeNodes),
 | 
			
		||||
		CreatedAt:    int64(server.CreatedAt),
 | 
			
		||||
		Cluster: &pb.NodeCluster{
 | 
			
		||||
		NodeCluster: &pb.NodeCluster{
 | 
			
		||||
			Id:   int64(server.ClusterId),
 | 
			
		||||
			Name: clusterName,
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -99,16 +99,16 @@ func (this *UserService) ListEnabledUsers(ctx context.Context, req *pb.ListEnabl
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		result = append(result, &pb.User{
 | 
			
		||||
			Id:        int64(user.Id),
 | 
			
		||||
			Username:  user.Username,
 | 
			
		||||
			Fullname:  user.Fullname,
 | 
			
		||||
			Mobile:    user.Mobile,
 | 
			
		||||
			Tel:       user.Tel,
 | 
			
		||||
			Email:     user.Email,
 | 
			
		||||
			Remark:    user.Remark,
 | 
			
		||||
			IsOn:      user.IsOn == 1,
 | 
			
		||||
			CreatedAt: int64(user.CreatedAt),
 | 
			
		||||
			Cluster:   pbCluster,
 | 
			
		||||
			Id:          int64(user.Id),
 | 
			
		||||
			Username:    user.Username,
 | 
			
		||||
			Fullname:    user.Fullname,
 | 
			
		||||
			Mobile:      user.Mobile,
 | 
			
		||||
			Tel:         user.Tel,
 | 
			
		||||
			Email:       user.Email,
 | 
			
		||||
			Remark:      user.Remark,
 | 
			
		||||
			IsOn:        user.IsOn == 1,
 | 
			
		||||
			CreatedAt:   int64(user.CreatedAt),
 | 
			
		||||
			NodeCluster: pbCluster,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -144,16 +144,16 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.FindEnabledUserResponse{User: &pb.User{
 | 
			
		||||
		Id:        int64(user.Id),
 | 
			
		||||
		Username:  user.Username,
 | 
			
		||||
		Fullname:  user.Fullname,
 | 
			
		||||
		Mobile:    user.Mobile,
 | 
			
		||||
		Tel:       user.Tel,
 | 
			
		||||
		Email:     user.Email,
 | 
			
		||||
		Remark:    user.Remark,
 | 
			
		||||
		IsOn:      user.IsOn == 1,
 | 
			
		||||
		CreatedAt: int64(user.CreatedAt),
 | 
			
		||||
		Cluster:   pbCluster,
 | 
			
		||||
		Id:          int64(user.Id),
 | 
			
		||||
		Username:    user.Username,
 | 
			
		||||
		Fullname:    user.Fullname,
 | 
			
		||||
		Mobile:      user.Mobile,
 | 
			
		||||
		Tel:         user.Tel,
 | 
			
		||||
		Email:       user.Email,
 | 
			
		||||
		Remark:      user.Remark,
 | 
			
		||||
		IsOn:        user.IsOn == 1,
 | 
			
		||||
		CreatedAt:   int64(user.CreatedAt),
 | 
			
		||||
		NodeCluster: pbCluster,
 | 
			
		||||
	}}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user