Browse Source

Merge branch 'ETA_1.1.5' into debug

ziwen 1 year ago
parent
commit
0e956d529a

+ 74 - 93
controllers/sandbox/sandbox.go

@@ -813,92 +813,9 @@ func (this *SandboxController) ListByQuote() {
 	br.Data = resp
 }
 
-//// ChartClassifyListV2
-//// @Title 沙盘分类列表
-//// @Description 沙盘分类列表接口
-//// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
-//// @Success 200 {object} data_manage.ChartClassifyListResp
-//// @router /classify/list [get]
-//func (this *SandboxController) ClassifyList() {
-//	br := new(models.BaseResponse).Init()
-//	defer func() {
-//		this.Data["json"] = br
-//		this.ServeJSON()
-//	}()
-//	resp := new(sandbox.SandboxClassifyListResp)
-//
-//	rootList, err := sandbox.GetSandboxClassifyByParentId(0)
-//	if err != nil && err.Error() != utils.ErrNoRow() {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	classifyAll, err := sandbox.GetSandboxClassifyAll()
-//	if err != nil && err.Error() != utils.ErrNoRow() {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	sandboxClassifyId, _ := this.GetInt("SandboxClassifyId")
-//	if sandboxClassifyId <= 0 {
-//		br.Msg = "参数错误"
-//		return
-//	}
-//
-//	allSandboxInfo, err := sandbox.GetSandboxAll(sandboxClassifyId)
-//	if err != nil && err.Error() != utils.ErrNoRow() {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取沙盘信息失败,Err:" + err.Error()
-//		return
-//	}
-//
-//
-//	sandboxInfoMap := make(map[int][]*sandbox.SandboxClassifyItems)
-//	for _, v := range allSandboxInfo {
-//		sandboxInfoMap[v.SandboxClassifyId] = append(sandboxInfoMap[v.SandboxClassifyId], v)
-//	}
-//	rootChildMap := make(map[int][]*sandbox.SandboxClassifyItems)
-//	for _, v := range classifyAll {
-//		rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
-//		if existItems, ok := sandboxInfoMap[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)
-//	}
-//	//
-//	//
-//	//nodeAll := make([]*data_manage.ChartClassifyItems, 0)
-//	//for k := range rootList {
-//	//	rootNode := rootList[k]
-//	//	data.ChartClassifyListMakeTree(classifyAll, rootNode)
-//	//	nodeAll = append(nodeAll, rootNode)
-//	//}
-//	resp.AllNodes = nodeAll
-//
-//
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "获取成功"
-//	br.Data = resp
-//}
-
 // SandboxClassifyItems
-// @Title 获取所有沙盘分类接口-包含沙盘
-// @Description 获取所有沙盘分类接口-包含沙盘
+// @Title 获取所有沙盘分类接口-包含沙盘
+// @Description 获取所有沙盘分类接口-包含沙盘
 // @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
 // @Success 200 {object} data_manage.ChartClassifyListResp
 // @router /classify/list [get]
@@ -910,18 +827,19 @@ func (this *SandboxController) SandboxClassifyItems() {
 	}()
 
 	resp := new(sandbox.SandboxClassifyListResp)
+	sandboxClassifyId, _ := this.GetInt("SandboxClassifyId")
 
 	isShowMe, _ := this.GetBool("IsShowMe")
 	if isShowMe {
-		errMsg, err := sandboxService.GetSandboxClassifyListForMe(*this.SysUser, resp)
+		errMsg, err := sandboxService.GetSandboxClassifyListForMe(*this.SysUser, resp, sandboxClassifyId)
 		if err != nil {
 			br.Msg = errMsg
 			br.ErrMsg = err.Error()
 			return
 		}
 		// 移除没有权限的图表
-		allNodes := sandboxService.HandleNoPermissionSandbox(resp.AllNodes, nil)
-		resp.AllNodes = allNodes
+		//allNodes := sandboxService.HandleNoPermissionSandbox(resp.AllNodes, nil)
+		//resp.AllNodes = allNodes
 
 		br.Ret = 200
 		br.Success = true
@@ -931,21 +849,21 @@ func (this *SandboxController) SandboxClassifyItems() {
 		return
 	}
 
-	rootList, err := sandbox.GetSandboxClassifyByParentId(0)
+	rootList, err := sandbox.GetSandboxClassifyByParentId(sandboxClassifyId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
 
-	classifyAll, err := sandbox.GetSandboxClassifyAll()
+	classifyAll, err := sandbox.GetSandboxClassifyByParentId(sandboxClassifyId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
 
-	sandboxAll, err := sandbox.GetSandboxAll()
+	sandboxAll, err := sandbox.GetSandboxItemsByClassifyId(sandboxClassifyId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -972,9 +890,9 @@ func (this *SandboxController) SandboxClassifyItems() {
 	//for k := range nodeAll {
 	//
 	//}
-	sandboxService.SandboxItemsMakeTree(nodeAll,nil, sandListMap)
+	newAll := sandboxService.SandboxItemsMakeTree(nodeAll, sandListMap, sandboxClassifyId)
 
-	resp.AllNodes = nodeAll
+	resp.AllNodes = newAll
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -1558,4 +1476,67 @@ func (this *SandboxController) SaveV2() {
 	br.Success = true
 	br.Msg = msg
 	br.Data = sandboxResp
+}
+
+// Delete
+// @Title 删除沙盘
+// @Description 删除沙盘接口
+// @Param	request	body request.DeleteSandbox true "type json string"
+// @Success 200 标记成功
+// @router /deleteV2 [post]
+func (this *SandboxController) DeleteV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req request.DeleteSandbox
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.SandboxId <= 0 {
+		br.Msg = "缺少沙盘编号"
+		return
+	}
+
+	/*key := fmt.Sprint(`crm:sandbox:edit:`, req.SandboxId)
+	opUserId, _ := utils.Rc.RedisInt(key)
+	//如果当前有人操作,且获取当前操作人不是本人,那么不允许删除
+	if opUserId > 0 && opUserId != this.SysUser.AdminId {
+		br.Msg = "当前有其他人正在编辑,不允许删除该沙盘"
+		return
+	}*/
+	markStatus, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, this.SysUser.AdminId, 2, this.SysUser.RealName)
+	if err != nil {
+		br.Msg = "查询标记状态失败"
+		br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
+		return
+	}
+	if markStatus.Status == 1 {
+		br.Msg = fmt.Sprintf("当前%s正在编辑,不允许删除该沙盘", markStatus.Editor)
+		return
+	}
+
+	//删除沙盘
+	err = sandboxService.DeleteSandbox(req.SandboxId)
+	if err != nil {
+		br.Msg = err.Error()
+		return
+	}
+
+	msg := "删除成功"
+	br.Ret = 200
+	br.Success = true
+	br.Msg = msg
 }

+ 1 - 1
models/sandbox/sand_box_classify.go

@@ -51,7 +51,7 @@ type SandboxClassifyItems struct {
 	CreateTime          time.Time `description:"创建时间"`
 	ModifyTime          time.Time `description:"修改时间"`
 	SysUserId           int       `description:"创建人id"`
-	SysUserRealName     string    `description:"创建人姓名"`
+	SysUserName     string    `description:"创建人姓名"`
 	Level               int       `description:"层级"`
 	Sort                int       `description:"排序字段,越小越靠前,默认值:10"`
 	SandboxId           int       `description:"沙盘id"`

+ 9 - 1
models/sandbox/sandbox.go

@@ -243,7 +243,7 @@ func CheckOpSandboxPermission(sysUser *system.Admin, createUserId int) (ok bool)
 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
+             sys_user_id,sys_user_name
             FROM sandbox where sys_user_id = ? ORDER BY sort asc,create_time ASC `
 	_, err = o.Raw(sql, adminId).QueryRows(&items)
 	return
@@ -298,4 +298,12 @@ func AddSandbox(item *Sandbox) (lastId int64, err error) {
 	o := orm.NewOrmUsingDB("data")
 	lastId, err = o.Insert(item)
 	return
+}
+
+func GetSandboxItemsByClassifyId(sandboxClassifyId int) (list []*SandboxClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT sandbox_id,sandbox_classify_id,name AS sandbox_classify_name, sort
+		FROM sandbox  WHERE sandbox_classify_id = ?`
+	_, err = o.Raw(sql,sandboxClassifyId).QueryRows(&list)
+	return
 }

+ 31 - 28
services/sandbox/sandbox.go

@@ -669,50 +669,47 @@ func SandboxClassifyItemsMakeTree(sysUser *system.Admin, allNode []*sandbox.Sand
 }
 
 // GetSandboxClassifyListForMe 获取我创建的沙盘
-func GetSandboxClassifyListForMe(adminInfo system.Admin, resp *sandbox.SandboxClassifyListResp) (errMsg string, err error) {
-	rootList, err := sandbox.GetSandboxClassifyByParentId(0)
+func GetSandboxClassifyListForMe(adminInfo system.Admin, resp *sandbox.SandboxClassifyListResp, sandboxClassifyId int) (errMsg string, err error) {
+	rootList, err := sandbox.GetSandboxClassifyByParentId(sandboxClassifyId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		errMsg = "获取失败"
 		return
 	}
 
-	classifyAll, err := sandbox.GetSandboxClassifyAll()
+	classifyAll, err := sandbox.GetSandboxClassifyByParentId(sandboxClassifyId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		errMsg = "获取失败"
 		return
 	}
 
-	allChartInfo, err := sandbox.GetSandboxInfoByAdminId(adminInfo.AdminId)
+	sandboxAll, 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
+	sandListMap := make(map[int][]*sandbox.SandboxClassifyItems)
+	for _, v := range sandboxAll {
+		if _, ok := sandListMap[v.SandboxClassifyId]; !ok {
+			list := make([]*sandbox.SandboxClassifyItems, 0)
+			list  = append(list, v)
+			sandListMap[v.SandboxClassifyId] = list
 		} else {
-			items := make([]*sandbox.SandboxClassifyItems, 0)
-			v.Children = items
+			sandListMap[v.SandboxClassifyId] = append(sandListMap[v.SandboxClassifyId], v)
 		}
 	}
+
 	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)
+	for k := range rootList {
+		rootNode := rootList[k]
+		SandboxClassifyItemsMakeTree(&adminInfo, classifyAll, rootNode)
+		nodeAll = append(nodeAll, rootNode)
 	}
-	resp.AllNodes = nodeAll
+	//for k := range nodeAll {
+	//
+	//}
+	newAll := SandboxItemsMakeTree(nodeAll, sandListMap, sandboxClassifyId)
+	resp.AllNodes = newAll
 
 	return
 }
@@ -793,15 +790,21 @@ func AddSandboxV2(req request.AddAndEditSandboxV2, opUserId int, opUserName stri
 }
 
 
-func SandboxItemsMakeTree(allNode []*sandbox.SandboxClassifyItems, node *sandbox.SandboxClassifyItems, sandListMap map[int][]*sandbox.SandboxClassifyItems) {
+func SandboxItemsMakeTree(allNode []*sandbox.SandboxClassifyItems, sandListMap map[int][]*sandbox.SandboxClassifyItems, sandboxClassifyId int) (nodeAll []*sandbox.SandboxClassifyItems){
 	for k := range allNode {
 		if len(allNode[k].Children) > 0 {
-			SandboxItemsMakeTree(allNode[k].Children, allNode[k], sandListMap)
-			allNode[k].Children = append(allNode[k].Children, sandListMap[allNode[k].SandboxClassifyId]...)
+			SandboxItemsMakeTree(allNode[k].Children, sandListMap, sandboxClassifyId)
+			allNode = append(allNode, sandListMap[allNode[k].ParentId]...)
+			nodeAll = allNode
 		} else {
-			allNode[k].Children = append(allNode[k].Children, sandListMap[allNode[k].SandboxClassifyId]...)
+			allNode = append(allNode, sandListMap[allNode[k].ParentId]...)
+			nodeAll = allNode
 		}
 	}
+	if len(allNode) == 0 {
+		nodeAll = append(nodeAll, sandListMap[sandboxClassifyId]...)
+	}
+	return
 }
 
 func SandboxClassifyHaveChild(allNode []*sandbox.SandboxClassifyItems, node *sandbox.SandboxClassifyItems) (childs []*sandbox.SandboxClassifyItems, yes bool) {