Browse Source

指标库图库移动重名校验

hsun 1 year ago
parent
commit
2bf5d122ea

+ 20 - 0
controllers/data_manage/chart_classify.go

@@ -747,6 +747,9 @@ func (this *ChartClassifyController) DeleteChartClassify() {
 func (this *ChartClassifyController) ChartClassifyMove() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
@@ -775,10 +778,27 @@ func (this *ChartClassifyController) ChartClassifyMove() {
 	//判断分类是否存在
 	chartClassifyInfo, err := data_manage.GetChartClassifyById(req.ClassifyId)
 	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "分类不存在,请刷新页面"
+			return
+		}
 		br.Msg = "移动失败"
 		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
 		return
 	}
+
+	// 校验移动的父级目录下是否有重名分类
+	exists, e := data_manage.GetChartClassifyByParentIdAndName(req.ParentClassifyId, chartClassifyInfo.ChartClassifyName)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		br.Msg = "移动失败"
+		br.ErrMsg = "获取父级目录下的同名分类失败, Err: " + e.Error()
+		return
+	}
+	if exists != nil {
+		br.Msg = "移动失败,分类名称已存在"
+		return
+	}
+
 	// 权限校验
 	{
 		button := data.GetChartClassifyOpButton(this.SysUser, chartClassifyInfo.SysUserId)

+ 8 - 0
models/data_manage/chart_classify.go

@@ -317,3 +317,11 @@ func GetCrossVarietyChartClassifyBySysUserId(sysUserId int) (item *ChartClassify
 	err = o.Raw(sql, utils.CHART_SOURCE_CROSS_HEDGING, sysUserId).QueryRow(&item)
 	return
 }
+
+// GetChartClassifyByParentIdAndName 根据父级ID和名称获取分类
+func GetChartClassifyByParentIdAndName(parentId int, classifyName string) (item *ChartClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_classify WHERE parent_id = ? AND chart_classify_name = ? LIMIT 1`
+	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	return
+}

+ 8 - 0
models/data_manage/edb_classify.go

@@ -544,3 +544,11 @@ where classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
 	}
 	return
 }
+
+// GetEdbClassifyByParentIdAndName 根据父级ID和名称获取分类
+func GetEdbClassifyByParentIdAndName(parentId int, classifyName string) (item *EdbClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM edb_classify WHERE parent_id = ? AND classify_name = ? LIMIT 1`
+	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	return
+}

+ 12 - 0
services/data/edb_classify.go

@@ -797,6 +797,18 @@ func MoveEdbClassify(req data_manage.MoveEdbClassifyReq, sysUser *system.Admin,
 			err = errors.New(errMsg)
 			return
 		}
+		// 如果是移动目录, 那么校验一下父级目录下是否有重名目录
+		exists, e := data_manage.GetEdbClassifyByParentIdAndName(parentClassifyId, edbClassifyInfo.ClassifyName)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			errMsg = "移动失败"
+			err = fmt.Errorf("获取父级分类下的同名分类失败, Err: %s", e.Error())
+			return
+		}
+		if exists != nil {
+			errMsg = "移动失败,分类名称已存在"
+			return
+		}
+
 		// 权限校验
 		{
 			if edbClassifyInfo.ClassifyType == 0 { // 普通指标