ziwen hace 1 año
padre
commit
5731daac50

+ 27 - 6
controllers/sandbox/sandbox.go

@@ -900,6 +900,7 @@ func (this *SandboxController) ListByQuote() {
 // SandboxClassifyItems
 // @Title 获取所有沙盘分类接口-不包含沙盘
 // @Description 获取所有沙盘分类接口-不包含沙盘
+// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
 // @Success 200 {object} data_manage.ChartClassifyListResp
 // @router /classify/list [get]
 func (this *SandboxController) SandboxClassifyItems() {
@@ -909,6 +910,28 @@ func (this *SandboxController) SandboxClassifyItems() {
 		this.ServeJSON()
 	}()
 
+	resp := new(sandbox.SandboxClassifyListResp)
+
+	isShowMe, _ := this.GetBool("IsShowMe")
+	if isShowMe {
+		errMsg, err := sandboxService.GetSandboxClassifyListForMe(*this.SysUser, resp)
+		if err != nil {
+			br.Msg = errMsg
+			br.ErrMsg = err.Error()
+			return
+		}
+		// 移除没有权限的图表
+		allNodes := sandboxService.HandleNoPermissionSandbox(resp.AllNodes, nil)
+		resp.AllNodes = allNodes
+
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+		fmt.Println("source my classify")
+		return
+	}
+
 	rootList, err := sandbox.GetSandboxClassifyByParentId(0)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
@@ -930,9 +953,7 @@ func (this *SandboxController) SandboxClassifyItems() {
 		nodeAll = append(nodeAll, rootNode)
 	}
 
-	resp := sandbox.SandboxClassifyListResp{
-		AllNodes: nodeAll,
-	}
+	resp.AllNodes = nodeAll
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -1086,7 +1107,7 @@ func (this *SandboxController) DeleteSandboxClassifyCheck() {
 		return
 	}
 
-	if req.SandboxClassifyId < 0 && req.SandboxInfoId <= 0 {
+	if req.SandboxClassifyId < 0 {
 		br.Msg = "参数错误"
 		br.IsSendEmail = false
 		return
@@ -1094,7 +1115,7 @@ func (this *SandboxController) DeleteSandboxClassifyCheck() {
 	var deleteStatus int
 	var tipsMsg string
 	//删除分类
-	if req.SandboxClassifyId > 0 && req.SandboxInfoId == 0 {
+	if req.SandboxClassifyId > 0 {
 		//判断沙盘分类下,是否含有沙盘
 		count, err := sandbox.GetSandboxInfoCountByClassifyId(req.SandboxClassifyId)
 		if err != nil {
@@ -1109,7 +1130,7 @@ func (this *SandboxController) DeleteSandboxClassifyCheck() {
 		}
 	}
 
-	if deleteStatus != 1 && req.SandboxInfoId == 0 {
+	if deleteStatus != 1 {
 		classifyCount, err := sandbox.GetSandboxInfoCountByClassifyId(req.SandboxClassifyId)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "删除失败"

+ 0 - 1
models/sandbox/sand_box_classify.go

@@ -102,7 +102,6 @@ func EditSandboxClassify(classifyId int, sandboxClassifyName string) (err error)
 
 type SandboxClassifyDeleteCheckReq struct {
 	SandboxClassifyId int `description:"分类id"`
-	SandboxInfoId     int `description:"指标id"`
 }
 
 func GetSandboxInfoCountByClassifyId(classifyId int) (count int, err error) {

+ 10 - 0
models/sandbox/sandbox.go

@@ -220,4 +220,14 @@ func CheckOpSandboxPermission(sysUser *system.Admin, createUserId int) (ok bool)
 		ok = true
 	}
 	return
+}
+
+// GetSandboxInfoByAdminId 获取所有我创建的沙盘,用于分类展示
+func GetSandboxInfoByAdminId(adminId int) (items []*SandboxClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT sandbox_id,sandbox_classify_id,name AS sandbox_classify_name,code,
+             sys_user_id,sys_user_real_name
+            FROM sandbox where sys_user_id = ? ORDER BY sort asc,create_time ASC `
+	_, err = o.Raw(sql, adminId).QueryRows(&items)
+	return
 }

+ 96 - 0
services/sandbox/sandbox.go

@@ -668,4 +668,100 @@ func ChartClassifyItemsMakeTree(sysUser *system.Admin, allNode []*sandbox.Sandbo
 		childrenArr := make([]*sandbox.SandboxClassifyItems, 0)
 		node.Children = childrenArr
 	}
+}
+
+// GetSandboxClassifyListForMe 获取我创建的沙盘
+func GetSandboxClassifyListForMe(adminInfo system.Admin, resp *sandbox.SandboxClassifyListResp) (errMsg string, err error) {
+	rootList, err := sandbox.GetSandboxClassifyByParentId(0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		errMsg = "获取失败"
+		return
+	}
+
+	classifyAll, err := sandbox.GetSandboxClassifyAll()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		errMsg = "获取失败"
+		return
+	}
+
+	allChartInfo, err := sandbox.GetSandboxInfoByAdminId(adminInfo.AdminId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		errMsg = "获取失败"
+		return
+	}
+
+	chartInfoMap := make(map[int][]*sandbox.SandboxClassifyItems)
+	for _, v := range allChartInfo {
+		chartInfoMap[v.SandboxClassifyId] = append(chartInfoMap[v.SandboxClassifyId], v)
+	}
+	rootChildMap := make(map[int][]*sandbox.SandboxClassifyItems)
+	for _, v := range classifyAll {
+		rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
+		if existItems, ok := chartInfoMap[v.SandboxClassifyId]; ok {
+			v.Children = existItems
+		} else {
+			items := make([]*sandbox.SandboxClassifyItems, 0)
+			v.Children = items
+		}
+	}
+	nodeAll := make([]*sandbox.SandboxClassifyItems, 0)
+	for _, v := range rootList {
+		if existItems, ok := rootChildMap[v.SandboxClassifyId]; ok {
+			v.Children = existItems
+		} else {
+			items := make([]*sandbox.SandboxClassifyItems, 0)
+			v.Children = items
+		}
+		nodeAll = append(nodeAll, v)
+	}
+	resp.AllNodes = nodeAll
+
+	return
+}
+
+// HandleNoPermissionSandbox 图表列表返回,将没有权限的图表移除
+func HandleNoPermissionSandbox(allNodes []*sandbox.SandboxClassifyItems, noPermissionChartIdMap map[int]bool) (newAllNodes []*sandbox.SandboxClassifyItems) {
+	// 移除没有权限的图表
+	newAllNodes = make([]*sandbox.SandboxClassifyItems, 0)
+	for _, node := range allNodes {
+		// 二级分类
+		tmpNodeInfo := *node
+		tmpNodeList := make([]*sandbox.SandboxClassifyItems, 0)
+		if node.Children != nil {
+			for _, chartList := range node.Children {
+				tmpInfo := *chartList
+				tmpList := make([]*sandbox.SandboxClassifyItems, 0)
+
+				if chartList.Children != nil {
+					for _, chartInfo := range chartList.Children {
+						thirdInfo := *chartInfo
+						thirdList := make([]*sandbox.SandboxClassifyItems, 0)
+						// 如果指标不可见,那么就不返回该指标
+						if _, ok := noPermissionChartIdMap[chartInfo.SandboxId]; ok {
+							continue
+						}
+						tmpList = append(tmpList, chartInfo)
+
+						if chartInfo.Children != nil {
+							for _, thirdChart := range chartInfo.Children {
+								// 如果指标不可见,那么就不返回该指标
+								if _, ok := noPermissionChartIdMap[chartInfo.SandboxId]; ok {
+									continue
+								}
+								thirdList = append(thirdList, thirdChart)
+							}
+						}
+						thirdInfo.Children = thirdList
+						tmpList = append(tmpList, &thirdInfo)
+					}
+				}
+				tmpInfo.Children = tmpList
+				tmpNodeList = append(tmpNodeList, &tmpInfo)
+			}
+		}
+		tmpNodeInfo.Children = tmpNodeList
+		newAllNodes = append(newAllNodes, &tmpNodeInfo)
+	}
+
+	return
 }