From 321a054df227ca6388decb4b663e493c86ade8c6 Mon Sep 17 00:00:00 2001 From: jagger Date: Fri, 31 May 2024 17:09:00 +0800 Subject: [PATCH 1/3] fix bug Signed-off-by: jagger Former-commit-id: afd3e450e10a2fc1d7779633540d4f1bf8b8478f --- api/desc/core/pcm-core.api | 1 + .../dictionary/listdictitembycodelogic.go | 19 +++++++++- .../logic/dictionary/listdictitemlogic.go | 37 ++++++++++++++++++- api/internal/types/types.go | 19 +++++----- 4 files changed, 65 insertions(+), 11 deletions(-) diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index 57042231..5d08b5e0 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -955,6 +955,7 @@ type ( ParentId string `json:"parentId,omitempty"` Status string `json:"status,omitempty" db:"status"` CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"` + Children []DictItemInfo `json:"children,omitempty" gorm:"-"` } DictItemReq { diff --git a/api/internal/logic/dictionary/listdictitembycodelogic.go b/api/internal/logic/dictionary/listdictitembycodelogic.go index 0fd16b86..aedb6d71 100644 --- a/api/internal/logic/dictionary/listdictitembycodelogic.go +++ b/api/internal/logic/dictionary/listdictitembycodelogic.go @@ -3,6 +3,7 @@ package dictionary import ( "context" "github.com/pkg/errors" + "sort" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" @@ -38,6 +39,22 @@ func (l *ListDictItemByCodeLogic) ListDictItemByCode(req *types.DictCodeReq) (re logx.Errorf("ListDictItemByCode()=> failed %s", err.Error()) return nil, errors.New("description Failed to query dictionary entry data") } - resp.List = dictList + + // 找出第一级字典项,(父字典项id为0) + dictItemFormat := make([]types.DictItemInfo, 0) + for _, item := range dictList { + if item.ParentId == "0" { + dictItemFormat = append(dictItemFormat, item) + } + } + // 排序 + sort.Slice(dictItemFormat, func(i, j int) bool { + return dictItemFormat[i].SortOrder < dictItemFormat[j].SortOrder + }) + + // 递归找出一级路由下面的子路由 + getTreeMap(dictItemFormat, dictList) + + resp.List = dictItemFormat return resp, nil } diff --git a/api/internal/logic/dictionary/listdictitemlogic.go b/api/internal/logic/dictionary/listdictitemlogic.go index a0dc04ee..5554c83f 100644 --- a/api/internal/logic/dictionary/listdictitemlogic.go +++ b/api/internal/logic/dictionary/listdictitemlogic.go @@ -4,6 +4,7 @@ import ( "context" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" + "sort" "github.com/zeromicro/go-zero/core/logx" ) @@ -56,10 +57,44 @@ func (l *ListDictItemLogic) ListDictItem(req *types.DictItemReq) (resp *types.Pa db = db.Limit(limit).Offset(offset) err = db.Order("sort_order").Find(&dictList).Error - resp.List = dictList + // 找出第一级字典项,(父字典项id为0) + dictItemFormat := make([]types.DictItemInfo, 0) + for _, item := range dictList { + if item.ParentId == "0" { + dictItemFormat = append(dictItemFormat, item) + } + } + // 排序 + sort.Slice(dictItemFormat, func(i, j int) bool { + return dictItemFormat[i].SortOrder < dictItemFormat[j].SortOrder + }) + + // 递归找出一级路由下面的子路由 + getTreeMap(dictItemFormat, dictList) + + resp.List = dictItemFormat resp.PageSize = req.PageSize resp.PageNum = req.PageNum resp.Total = total return resp, nil } + +func getTreeMap(dictItemFormat []types.DictItemInfo, dictItems []types.DictItemInfo) { + for index, itemF := range dictItemFormat { + for _, dictItem := range dictItems { + if itemF.Id == dictItem.ParentId { + // itemF 只是个复制值 + //itemF.Children = append(itemF.Children, dictItem) + dictItemFormat[index].Children = append(dictItemFormat[index].Children, dictItem) + } + } + if len(dictItemFormat[index].Children) > 0 { + // 排序 + sort.Slice(dictItemFormat[index].Children, func(i, j int) bool { + return dictItemFormat[index].Children[i].SortOrder < dictItemFormat[index].Children[j].SortOrder + }) + getTreeMap(dictItemFormat[index].Children, dictItems) + } + } +} diff --git a/api/internal/types/types.go b/api/internal/types/types.go index dc8a3da8..68d8747b 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -882,15 +882,16 @@ type Dicts struct { } type DictItemInfo struct { - Id string `json:"id,omitempty"` - DictId string `json:"dictId,omitempty"` - ItemText string `json:"itemText,omitempty"` - ItemValue string `json:"itemValue,omitempty"` - Description string `json:"description,omitempty"` - SortOrder string `json:"sortOrder,omitempty"` - ParentId string `json:"parentId,omitempty"` - Status string `json:"status,omitempty" db:"status"` - CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"` + Id string `json:"id,omitempty"` + DictId string `json:"dictId,omitempty"` + ItemText string `json:"itemText,omitempty"` + ItemValue string `json:"itemValue,omitempty"` + Description string `json:"description,omitempty"` + SortOrder string `json:"sortOrder,omitempty"` + ParentId string `json:"parentId,omitempty"` + Status string `json:"status,omitempty" db:"status"` + CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"` + Children []DictItemInfo `json:"children,omitempty" gorm:"-"` } type DictItemReq struct { From d8e8370e5b5e724918201474517afd46f2ec625d Mon Sep 17 00:00:00 2001 From: jagger Date: Tue, 4 Jun 2024 15:23:16 +0800 Subject: [PATCH 2/3] fix bug Signed-off-by: jagger Former-commit-id: 53039ebcdb46e353f2dcec112389cad7c3b91432 --- .../logic/adapters/createadapterlogic.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/api/internal/logic/adapters/createadapterlogic.go b/api/internal/logic/adapters/createadapterlogic.go index f8b22b82..2b884f2f 100644 --- a/api/internal/logic/adapters/createadapterlogic.go +++ b/api/internal/logic/adapters/createadapterlogic.go @@ -2,10 +2,12 @@ package adapters import ( "context" + "github.com/pkg/errors" "github.com/zeromicro/go-zero/core/logx" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils" + "gorm.io/gorm" "time" ) @@ -26,6 +28,21 @@ func NewCreateAdapterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Cre func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *types.AdapterResp, err error) { adapter := types.AdapterInfo{} utils.Convert(req, &adapter) + //check name + exist := l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&types.AdapterInfo{}).Error + if !errors.Is(exist, gorm.ErrRecordNotFound) { + return nil, errors.New("name already exists") + } + //check type + sql := `select t_dict_item.item_value + from t_dict + join t_dict_item on t_dict.id = t_dict_item.dict_id + where dict_code = 'adapter_type' and item_value = ? + and t_dict_item.parent_id != 0` + err = l.svcCtx.DbEngin.Raw(sql, req.Type).First(&types.DictItemInfo{}).Error + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.New("Type error, please check!") + } adapter.Id = utils.GenSnowflakeIDStr() adapter.CreateTime = time.Now().Format("2006-01-02 15:04:05") result := l.svcCtx.DbEngin.Table("t_adapter").Create(&adapter) From e29002b4d66f673b53217c72353b642d2cf551ea Mon Sep 17 00:00:00 2001 From: jagger Date: Tue, 4 Jun 2024 17:36:24 +0800 Subject: [PATCH 3/3] fix bug Signed-off-by: jagger Former-commit-id: a6d78147813b92708df308d1c24f717af41168bd --- api/desc/core/pcm-core.api | 8 +- .../logic/adapters/clusterlistlogic.go | 3 + .../logic/adapters/createadapterlogic.go | 17 +++- .../logic/adapters/getclustersumlogic.go | 8 +- api/internal/logic/core/taskdetailslogic.go | 5 +- .../logic/dictionary/listdictitemlogic.go | 12 --- api/internal/types/types.go | 86 ++++++++++--------- 7 files changed, 78 insertions(+), 61 deletions(-) diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index 5d08b5e0..e5e144d4 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -712,6 +712,7 @@ type ( Id string `form:"id,optional" db:"id"` Name string `form:"name,optional"` Type string `form:"type,optional"` + ResourceType string `form:"resourceType,optional"` Nickname string `form:"nickname,optional"` Version string `form:"version,optional"` Server string `form:"server,optional"` @@ -721,6 +722,7 @@ type ( Id string `form:"id,optional" db:"id"` Name string `form:"name,optional"` Type string `form:"type,optional"` + ResourceType string `form:"resourceType,optional"` Nickname string `form:"nickname,optional"` Version string `form:"version,optional"` Server string `form:"server,optional"` @@ -729,6 +731,7 @@ type ( Id string `json:"id,optional" db:"id"` Name string `json:"name,optional"` Type string `json:"type,optional"` + ResourceType string `json:"resourceType,optional"` Nickname string `json:"nickname,optional"` Version string `json:"version,optional"` Server string `json:"server,optional"` @@ -737,6 +740,7 @@ type ( Id string `json:"id,optional" db:"id"` Name string `json:"name"` Type string `json:"type"` + ResourceType string `json:"resourceType"` Nickname string `json:"nickname"` Version string `json:"version"` Server string `json:"server"` @@ -748,6 +752,7 @@ type ( Id string `json:"id,omitempty" db:"id"` Name string `json:"name,omitempty" db:"name"` Type string `json:"type,omitempty" db:"type"` + ResourceType string `json:"resourceType,omitempty" db:"resource_type"` Nickname string `json:"nickname,omitempty" db:"nickname"` Version string `json:"version,omitempty" db:"version"` Server string `json:"server,omitempty" db:"server"` @@ -766,6 +771,7 @@ type ( Id string `json:"id,omitempty" db:"id"` Name string `json:"name,omitempty" db:"name"` Type string `json:"type,omitempty" db:"type"` + ResourceType string `json:"resourceType" db:"resource_type"` Nickname string `json:"nickname,omitempty" db:"nickname"` Version string `json:"version,omitempty" db:"version"` Server string `json:"server,omitempty" db:"server"` @@ -797,6 +803,7 @@ type ( Type string `form:"type,optional"` ProducerDict string `form:"producerDict,optional"` RegionDict string `form:"regionDict,optional"` + ResourceType string `form:"resourceType,optional"` PageInfo } @@ -968,7 +975,6 @@ type ( Type string `form:"type,optional"` ParentId string `form:"parentId,optional"` Status string `form:"status,optional"` - PageInfo } DictItemEditReq { diff --git a/api/internal/logic/adapters/clusterlistlogic.go b/api/internal/logic/adapters/clusterlistlogic.go index 78f5b500..fb3f25e3 100644 --- a/api/internal/logic/adapters/clusterlistlogic.go +++ b/api/internal/logic/adapters/clusterlistlogic.go @@ -55,6 +55,9 @@ func (l *ClusterListLogic) ClusterList(req *types.ClusterReq) (resp *types.PageR if req.Type != "" { db = db.Where("t_adapter.type = ?", req.Type) } + if req.ResourceType != "" { + db = db.Where("t_adapter.resource_type = ?", req.ResourceType) + } //count total var total int64 diff --git a/api/internal/logic/adapters/createadapterlogic.go b/api/internal/logic/adapters/createadapterlogic.go index 2b884f2f..6febb282 100644 --- a/api/internal/logic/adapters/createadapterlogic.go +++ b/api/internal/logic/adapters/createadapterlogic.go @@ -34,14 +34,27 @@ func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *t return nil, errors.New("name already exists") } //check type + var arr = [...]string{"0", "1", "2"} + found := false + for _, str := range arr { + if str == req.Type { + found = true + break + } + } + if found == false { + return nil, errors.New("type not found") + } + + //check resourceTypeDict sql := `select t_dict_item.item_value from t_dict join t_dict_item on t_dict.id = t_dict_item.dict_id where dict_code = 'adapter_type' and item_value = ? and t_dict_item.parent_id != 0` - err = l.svcCtx.DbEngin.Raw(sql, req.Type).First(&types.DictItemInfo{}).Error + err = l.svcCtx.DbEngin.Raw(sql, req.ResourceType).First(&types.DictItemInfo{}).Error if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errors.New("Type error, please check!") + return nil, errors.New("resourceType error, please check!") } adapter.Id = utils.GenSnowflakeIDStr() adapter.CreateTime = time.Now().Format("2006-01-02 15:04:05") diff --git a/api/internal/logic/adapters/getclustersumlogic.go b/api/internal/logic/adapters/getclustersumlogic.go index 4a934fed..6beab051 100644 --- a/api/internal/logic/adapters/getclustersumlogic.go +++ b/api/internal/logic/adapters/getclustersumlogic.go @@ -32,28 +32,28 @@ func (l *GetClusterSumLogic) GetClusterSum(req *types.ClusterSumReq) (resp *type var vmSum int // var TaskSum int // // - sqlStr := "SELECT COUNT(*) FROM `t_adapter` t where t.type = 0" + sqlStr := "SELECT COUNT(*) FROM `t_adapter` t where t.type ='0' and deleted_at is null" tx := l.svcCtx.DbEngin.Raw(sqlStr).Scan(&AdapterSum) if tx.Error != nil { logx.Error(err) return nil, tx.Error } //vm - sqlStrVm := "SELECT COUNT(*) FROM `t_adapter` t left join t_cluster tc on t.id=tc.adapter_id where t.type='3' and tc.deleted_at is null" + sqlStrVm := "SELECT COUNT(*) FROM `t_adapter` t left join t_cluster tc on t.id=tc.adapter_id where t.type = '0' and t.resource_type='02' and tc.deleted_at is null" txClusterVm := l.svcCtx.DbEngin.Raw(sqlStrVm).Scan(&vmSum) if txClusterVm.Error != nil { logx.Error(err) return nil, txClusterVm.Error } //pod - sqlStrPod := "SELECT COUNT(*) FROM `t_adapter` t left join t_cluster tc on t.id=tc.adapter_id where t.type='0' and tc.deleted_at is null" + sqlStrPod := "SELECT COUNT(*) FROM `t_adapter` t left join t_cluster tc on t.id=tc.adapter_id where t.type = '0' and t.resource_type='02' and tc.deleted_at is null" txClusterPod := l.svcCtx.DbEngin.Raw(sqlStrPod).Scan(&podSum) if txClusterPod.Error != nil { logx.Error(err) return nil, txClusterPod.Error } // - sqlStrTask := "SELECT COUNT(*) FROM `task`" + sqlStrTask := "SELECT COUNT(*) FROM `task` where adapter_type_dict = '0'" txTask := l.svcCtx.DbEngin.Raw(sqlStrTask).Scan(&TaskSum) if txTask.Error != nil { logx.Error(err) diff --git a/api/internal/logic/core/taskdetailslogic.go b/api/internal/logic/core/taskdetailslogic.go index fb1a3ecd..c08edaaa 100644 --- a/api/internal/logic/core/taskdetailslogic.go +++ b/api/internal/logic/core/taskdetailslogic.go @@ -37,12 +37,13 @@ func (l *TaskDetailsLogic) TaskDetails(req *types.FId) (resp *types.TaskDetailsR switch task.AdapterTypeDict { case 0: l.svcCtx.DbEngin.Table("task_cloud").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) + if len(clusterIds) <= 0 { + l.svcCtx.DbEngin.Table("task_vm").Select("cluster_id").Where("task_id", task.Id).Find(&clusterIds) + } case 1: l.svcCtx.DbEngin.Table("task_ai").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) case 2: l.svcCtx.DbEngin.Table("task_hpc").Select("cluster_id").Where("task_id", task.Id).Scan(&clusterIds) - case 3: - l.svcCtx.DbEngin.Table("task_vm").Select("cluster_id").Where("task_id", task.Id).Find(&clusterIds) } err = l.svcCtx.DbEngin.Table("t_cluster").Where("id in ?", clusterIds).Scan(&cList).Error if err != nil { diff --git a/api/internal/logic/dictionary/listdictitemlogic.go b/api/internal/logic/dictionary/listdictitemlogic.go index 5554c83f..047a8296 100644 --- a/api/internal/logic/dictionary/listdictitemlogic.go +++ b/api/internal/logic/dictionary/listdictitemlogic.go @@ -24,8 +24,6 @@ func NewListDictItemLogic(ctx context.Context, svcCtx *svc.ServiceContext) *List } func (l *ListDictItemLogic) ListDictItem(req *types.DictItemReq) (resp *types.PageResult, err error) { - limit := req.PageSize - offset := req.PageSize * (req.PageNum - 1) resp = &types.PageResult{} var dictList []types.DictItemInfo db := l.svcCtx.DbEngin.Model(&types.DictItemInfo{}).Table("t_dict_item") @@ -48,13 +46,6 @@ func (l *ListDictItemLogic) ListDictItem(req *types.DictItemReq) (resp *types.Pa if req.DictId != "" { db = db.Where("dict_id = ?", req.DictId) } - var total int64 - err = db.Count(&total).Error - - if err != nil { - return resp, err - } - db = db.Limit(limit).Offset(offset) err = db.Order("sort_order").Find(&dictList).Error // 找出第一级字典项,(父字典项id为0) @@ -73,9 +64,6 @@ func (l *ListDictItemLogic) ListDictItem(req *types.DictItemReq) (resp *types.Pa getTreeMap(dictItemFormat, dictList) resp.List = dictItemFormat - resp.PageSize = req.PageSize - resp.PageNum = req.PageNum - resp.Total = total return resp, nil } diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 68d8747b..1539f520 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -639,40 +639,44 @@ type AppResp struct { } type AdapterQueryReq struct { - Id string `form:"id,optional" db:"id"` - Name string `form:"name,optional"` - Type string `form:"type,optional"` - Nickname string `form:"nickname,optional"` - Version string `form:"version,optional"` - Server string `form:"server,optional"` + Id string `form:"id,optional" db:"id"` + Name string `form:"name,optional"` + Type string `form:"type,optional"` + ResourceType string `form:"resourceType,optional"` + Nickname string `form:"nickname,optional"` + Version string `form:"version,optional"` + Server string `form:"server,optional"` PageInfo } type AdapterRelationQueryReq struct { - Id string `form:"id,optional" db:"id"` - Name string `form:"name,optional"` - Type string `form:"type,optional"` - Nickname string `form:"nickname,optional"` - Version string `form:"version,optional"` - Server string `form:"server,optional"` + Id string `form:"id,optional" db:"id"` + Name string `form:"name,optional"` + Type string `form:"type,optional"` + ResourceType string `form:"resourceType,optional"` + Nickname string `form:"nickname,optional"` + Version string `form:"version,optional"` + Server string `form:"server,optional"` } type AdapterReq struct { - Id string `json:"id,optional" db:"id"` - Name string `json:"name,optional"` - Type string `json:"type,optional"` - Nickname string `json:"nickname,optional"` - Version string `json:"version,optional"` - Server string `json:"server,optional"` + Id string `json:"id,optional" db:"id"` + Name string `json:"name,optional"` + Type string `json:"type,optional"` + ResourceType string `json:"resourceType,optional"` + Nickname string `json:"nickname,optional"` + Version string `json:"version,optional"` + Server string `json:"server,optional"` } type AdapterCreateReq struct { - Id string `json:"id,optional" db:"id"` - Name string `json:"name"` - Type string `json:"type"` - Nickname string `json:"nickname"` - Version string `json:"version"` - Server string `json:"server"` + Id string `json:"id,optional" db:"id"` + Name string `json:"name"` + Type string `json:"type"` + ResourceType string `json:"resourceType"` + Nickname string `json:"nickname"` + Version string `json:"version"` + Server string `json:"server"` } type AdapterDelReq struct { @@ -680,13 +684,14 @@ type AdapterDelReq struct { } type AdapterInfo struct { - Id string `json:"id,omitempty" db:"id"` - Name string `json:"name,omitempty" db:"name"` - Type string `json:"type,omitempty" db:"type"` - Nickname string `json:"nickname,omitempty" db:"nickname"` - Version string `json:"version,omitempty" db:"version"` - Server string `json:"server,omitempty" db:"server"` - CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"` + Id string `json:"id,omitempty" db:"id"` + Name string `json:"name,omitempty" db:"name"` + Type string `json:"type,omitempty" db:"type"` + ResourceType string `json:"resourceType,omitempty" db:"resource_type"` + Nickname string `json:"nickname,omitempty" db:"nickname"` + Version string `json:"version,omitempty" db:"version"` + Server string `json:"server,omitempty" db:"server"` + CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"` } type AdapterResp struct { @@ -702,14 +707,15 @@ type AdapterRelationResp struct { } type AdapterRelation struct { - Id string `json:"id,omitempty" db:"id"` - Name string `json:"name,omitempty" db:"name"` - Type string `json:"type,omitempty" db:"type"` - Nickname string `json:"nickname,omitempty" db:"nickname"` - Version string `json:"version,omitempty" db:"version"` - Server string `json:"server,omitempty" db:"server"` - CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"` - Clusters []*ClusterInfo `json:"clusters,omitempty"` + Id string `json:"id,omitempty" db:"id"` + Name string `json:"name,omitempty" db:"name"` + Type string `json:"type,omitempty" db:"type"` + ResourceType string `json:"resourceType" db:"resource_type"` + Nickname string `json:"nickname,omitempty" db:"nickname"` + Version string `json:"version,omitempty" db:"version"` + Server string `json:"server,omitempty" db:"server"` + CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"` + Clusters []*ClusterInfo `json:"clusters,omitempty"` } type ClusterReq struct { @@ -734,6 +740,7 @@ type ClusterReq struct { Type string `form:"type,optional"` ProducerDict string `form:"producerDict,optional"` RegionDict string `form:"regionDict,optional"` + ResourceType string `form:"resourceType,optional"` PageInfo } @@ -904,7 +911,6 @@ type DictItemReq struct { Type string `form:"type,optional"` ParentId string `form:"parentId,optional"` Status string `form:"status,optional"` - PageInfo } type DictItemEditReq struct {