Browse Source

Merge branch 'sandbox'

zwxi 1 năm trước cách đây
mục cha
commit
31973716f8

+ 72 - 40
controllers/sandbox/sandbox.go

@@ -998,32 +998,42 @@ func (this *SandboxController) EditSandboxClassify() {
 		return
 	}
 
-	item, err := sandbox.GetSandboxClassifyById(req.SandboxClassifyId)
+	//item, err := sandbox.GetSandboxClassifyById(req.SandboxClassifyId)
+	//if err != nil {
+	//	br.Msg = "保存失败"
+	//	br.Msg = "获取分类信息失败,Err:" + err.Error()
+	//	return
+	//}
+
+	//count, err := sandbox.GetSandboxClassifyCount(req.SandboxClassifyName, item.ParentId)
+	//if err != nil {
+	//	br.Msg = "判断名称是否已存在失败"
+	//	br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
+	//	return
+	//}
+	//if count > 0 {
+	//	br.Msg = "分类名称已存在,请重新输入"
+	//	br.IsSendEmail = false
+	//	return
+	//}
+
+	err = sandbox.EditSandboxClassify(req.SandboxClassifyId, req.ChartPermissionId, req.SandboxClassifyName, req.ChartPermissionName)
 	if err != nil {
 		br.Msg = "保存失败"
-		br.Msg = "获取分类信息失败,Err:" + err.Error()
+		br.ErrMsg = "保存失败,Err:" + err.Error()
 		return
 	}
-
-	if item.SandboxClassifyName != req.SandboxClassifyName {
-		count, err := sandbox.GetSandboxClassifyCount(req.SandboxClassifyName, item.ParentId)
-		if err != nil {
-			br.Msg = "判断名称是否已存在失败"
-			br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
-			return
-		}
-		if count > 0 {
-			br.Msg = "分类名称已存在,请重新输入"
-			br.IsSendEmail = false
-			return
-		}
-
-		err = sandbox.EditSandboxClassify(req.SandboxClassifyId, req.SandboxClassifyName)
-		if err != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "保存失败,Err:" + err.Error()
-			return
-		}
+	ids, err := sandbox.GetSandboxClassifySubcategories(req.SandboxClassifyId)
+	if err != nil {
+		br.Msg = "查询子级分类id失败"
+		br.ErrMsg = "查询子级分类id失败,Err:" + err.Error()
+		return
+	}
+	err  = sandbox.UpdateSandboxClassifyChartPermissionById(req.ChartPermissionId, req.ChartPermissionName, ids)
+	if err != nil {
+		br.Msg = "修改子级分类错误"
+		br.ErrMsg = "修改子级分类错误,Err:" + err.Error()
+		return
 	}
 	br.Ret = 200
 	br.Msg = "保存成功"
@@ -1246,19 +1256,20 @@ func (this *SandboxController) ChartClassifyMove() {
 		}
 
 		//如果改变了分类,那么移动该图表数据
+		// 11/22 ETA逻辑优化去除名称重复限制
 		if sandboxInfo.SandboxClassifyId != req.ParentClassifyId {
-			//查询需要修改的分类下是否存在同一个图表名称
-			tmpSandboxInfo, tmpErr := sandbox.GetSandboxByClassifyIdAndName(req.ParentClassifyId, sandboxInfo.Name)
-			if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
-				br.Msg = "移动失败"
-				br.ErrMsg = "移动失败,Err:" + tmpErr.Error()
-				return
-			}
-			if tmpSandboxInfo != nil {
-				br.Msg = "移动失败,同一个分类下沙盘名称不允许重复"
-				br.ErrMsg = "移动失败,同一个分类下沙盘名称不允许重复"
-				return
-			}
+			////查询需要修改的分类下是否存在同一个图表名称
+			//tmpSandboxInfo, tmpErr := sandbox.GetSandboxByClassifyIdAndName(req.ParentClassifyId, sandboxInfo.Name)
+			//if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+			//	br.Msg = "移动失败"
+			//	br.ErrMsg = "移动失败,Err:" + tmpErr.Error()
+			//	return
+			//}
+			//if tmpSandboxInfo != nil {
+			//	br.Msg = "移动失败,同一个分类下沙盘名称不允许重复"
+			//	br.ErrMsg = "移动失败,同一个分类下沙盘名称不允许重复"
+			//	return
+			//}
 			err = sandbox.MoveSandbox(req.SandboxId, req.ParentClassifyId)
 			if err != nil {
 				br.Msg = "移动失败"
@@ -1622,6 +1633,26 @@ func (this *SandboxController) ChartClassifyMove() {
 				br.ErrMsg = "修改失败,Err:" + err.Error()
 				return
 			}
+			if req.ParentClassifyId > 0 {
+				ids, err := sandbox.GetSandboxClassifySubcategories(req.ClassifyId)
+				if err != nil {
+					br.Msg = "查询子级分类id失败"
+					br.ErrMsg = "查询子级分类id失败,Err:" + err.Error()
+					return
+				}
+				parentChartClassifyInfo, err := sandbox.GetSandboxClassifyById(req.ParentClassifyId)
+				if err != nil {
+					br.Msg = "移动失败"
+					br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
+					return
+				}
+				err  = sandbox.UpdateSandboxClassifyChartPermissionById(parentChartClassifyInfo.ChartPermissionId, parentChartClassifyInfo.ChartPermissionName, ids)
+				if err != nil {
+					br.Msg = "修改子级分类错误"
+					br.ErrMsg = "修改子级分类错误,Err:" + err.Error()
+					return
+				}
+			}
 		}
 	}
 
@@ -1792,13 +1823,14 @@ func (this *SandboxController) SaveV2() {
 			PicUrl:            utils.TrimStr(req.PicUrl),
 			ModifyTime:        time.Now(),
 			SandboxClassifyId: req.SandboxClassifyId,
+			Style:             req.Style,
 		}
 		//缩略图为空时不更新
 		var updateSandboxColumn = []string{}
-		if req.PicUrl == ""{
-			updateSandboxColumn = []string{"Content", "MindmapData", "ModifyTime", "SandboxClassifyId"}
+		if req.PicUrl == "" {
+			updateSandboxColumn = []string{"Content", "MindmapData", "ModifyTime", "SandboxClassifyId", "Style"}
 		} else {
-			updateSandboxColumn = []string{"Content", "MindmapData", "PicUrl", "ModifyTime", "SandboxClassifyId"}
+			updateSandboxColumn = []string{"Content", "MindmapData", "PicUrl", "ModifyTime", "SandboxClassifyId", "Style"}
 		}
 		err = sandboxInfo.Update(updateSandboxColumn)
 		if err != nil {
@@ -1890,7 +1922,7 @@ func (this *SandboxController) GetSandboxDetail() {
 	}
 
 	//获取沙盘数据详情(已保存的)
-	sandboxVersionInfo, err := sandbox.GetSandboxById(sandboxId)
+	sandboxInfo, err := sandbox.GetSandboxById(sandboxId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
@@ -1900,7 +1932,7 @@ func (this *SandboxController) GetSandboxDetail() {
 	br.Ret = 200
 	br.Success = true
 	br.Msg = msg
-	br.Data = sandboxVersionInfo
+	br.Data = sandboxInfo
 }
 
 //// SandboxClassifyItems
@@ -2372,4 +2404,4 @@ func (this *SandboxController) LinkEdbInfoCheck() {
 	br.Msg = "检测成功"
 	br.Success = true
 	br.Data = resp
-}
+}

+ 1 - 0
models/sandbox/request/sandbox.go

@@ -32,6 +32,7 @@ type AddAndEditSandboxV2 struct {
 	SandboxId         int    `description:"沙盘id"`
 	Name              string `description:"沙盘名称"`
 	Content           string `description:"沙盘内容"`
+	Style             int    `description:"风格"`
 	MindmapData       string `description:"思维导图内容"`
 	PicUrl            string `description:"沙盘图片地址"`
 	SvgData           string `description:"沙盘svg图片数据"`

+ 1 - 0
models/sandbox/sandbox.go

@@ -42,6 +42,7 @@ type Sandbox struct {
 	CreateTime        time.Time `description:"创建时间"`
 	SandboxClassifyId int       `description:"分类id"`
 	Sort              int       `description:"排序"`
+	Style             int       `description:"风格"`
 }
 
 // Update 沙盘字段变更

+ 35 - 4
models/sandbox/sandbox_classify.go

@@ -55,6 +55,8 @@ type SandboxClassifyItems struct {
 	Level               int       `description:"层级"`
 	Sort                int       `description:"排序字段,越小越靠前,默认值:10"`
 	SandboxId           int       `description:"沙盘id"`
+	ChartPermissionId   int       `description:"品种id"`
+	ChartPermissionName string    `description:"品种名称"`
 	Children            []*SandboxClassifyItems
 }
 
@@ -88,6 +90,8 @@ func GetSandboxClassifyMaxSort(parentId int) (sort int, err error) {
 type EditSandboxClassifyReq struct {
 	SandboxClassifyName string `description:"分类名称"`
 	SandboxClassifyId   int    `description:"分类id"`
+	ChartPermissionId   int    `description:"品种id"`
+	ChartPermissionName string `description:"品种名称"`
 }
 
 func GetSandboxClassifyById(classifyId int) (item *SandboxClassify, err error) {
@@ -97,10 +101,10 @@ func GetSandboxClassifyById(classifyId int) (item *SandboxClassify, err error) {
 	return
 }
 
-func EditSandboxClassify(classifyId int, sandboxClassifyName string) (err error) {
+func EditSandboxClassify(classifyId, ChartPermissionId int, sandboxClassifyName, ChartPermissionName string) (err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := `UPDATE sandbox_classify SET sandbox_classify_name=?,modify_time=NOW() WHERE sandbox_classify_id=? `
-	_, err = o.Raw(sql, sandboxClassifyName, classifyId).Exec()
+	sql := `UPDATE sandbox_classify SET sandbox_classify_name=?,chart_permission_id = ?, chart_permission_name = ?, modify_time=NOW() WHERE sandbox_classify_id=? `
+	_, err = o.Raw(sql, sandboxClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Exec()
 	return
 }
 
@@ -205,6 +209,8 @@ func GetSandboxClassifyAndInfoByParentId(parentId int) (items []*SandboxClassify
 	sys_user_real_name AS sys_user_name,
 	sort,
 	level,
+	chart_permission_id,
+	chart_permission_name,
 	0 AS is_delete
 FROM
 	sandbox_classify 
@@ -221,6 +227,8 @@ SELECT
 	sys_user_name,
 	sort,
 	0 AS level,
+	chart_permission_id,
+	chart_permission_name,
 	is_delete 
 FROM
 	sandbox 
@@ -239,9 +247,32 @@ type SandboxLinkCheckReq struct {
 	ReportIdList    []int `description:"报告id列表"`
 }
 
-
 type SandboxLinkCheckResp struct {
 	EdbInfoIdList   []int `description:"指标id列表"`
 	ChartInfoIdList []int `description:"图库id列表"`
 	ReportIdList    []int `description:"报告id列表"`
+}
+
+// 获取所有子级分类id
+func GetSandboxClassifySubcategories(classifyId int) (Ids string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT GROUP_CONCAT(sandbox_classify_id) AS ids
+FROM (
+SELECT @pv := ? AS sandbox_classify_id
+UNION ALL
+SELECT sc.sandbox_classify_id
+FROM sandbox_classify sc
+JOIN (SELECT @pv := ?) initial
+WHERE sc.parent_id = @pv
+) subcategories; `
+	err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
+	return
+}
+
+// UpdateSandboxClassifyChartPermissionById 根据沙盘id更新品种
+func UpdateSandboxClassifyChartPermissionById(ChartPermissionId int, ChartPermissionName, Ids string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` UPDATE sandbox_classify SET chart_permission_id = ?, chart_permission_name = ? WHERE sandbox_classify_id IN ( `+Ids +` ) `
+	_, err = o.Raw(sql, ChartPermissionId, ChartPermissionName).Exec()
+	return
 }

+ 3 - 3
services/sandbox/sandbox.go

@@ -692,7 +692,7 @@ func GetSandboxClassifyListForMe(adminInfo system.Admin, resp *sandbox.SandboxCl
 	for _, v := range sandboxAll {
 		if _, ok := sandListMap[v.SandboxClassifyId]; !ok {
 			list := make([]*sandbox.SandboxClassifyItems, 0)
-			list  = append(list, v)
+			list = append(list, v)
 			sandListMap[v.SandboxClassifyId] = list
 		} else {
 			sandListMap[v.SandboxClassifyId] = append(sandListMap[v.SandboxClassifyId], v)
@@ -778,6 +778,7 @@ func AddSandboxV2(req request.AddAndEditSandboxV2, opUserId int, opUserName stri
 		CreateTime:        time.Now(),
 		SandboxClassifyId: req.SandboxClassifyId,
 		Sort:              0,
+		Style:             req.Style,
 	}
 
 	//新增沙盘
@@ -790,8 +791,7 @@ func AddSandboxV2(req request.AddAndEditSandboxV2, opUserId int, opUserName stri
 	return
 }
 
-
-func SandboxItemsMakeTree(allNode []*sandbox.SandboxClassifyItems, sandListMap map[int][]*sandbox.SandboxClassifyItems, sandboxClassifyId int) (nodeAll []*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, sandListMap, sandboxClassifyId)