Quellcode durchsuchen

Merge branch 'feature/knowledge' into dm

xyxie vor 6 Monaten
Ursprung
Commit
7310c23557

+ 123 - 44
controllers/knowledge/classify.go

@@ -7,6 +7,7 @@ import (
 	"eta_gn/eta_api/models/knowledge"
 	knowledgeServ "eta_gn/eta_api/services/knowledge"
 	"eta_gn/eta_api/utils"
+	"fmt"
 )
 
 // 分类
@@ -96,53 +97,74 @@ func (this *ClassifyController) CheckDeleteClassify() {
 		return
 	}
 
-	//判断分类是否关联了报告
-	if classify.ParentId > 0 {
-		count, err := knowledgeObj.GetResourceCountByClassifyId(classifyId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + err.Error()
-			return
-		}
-		if count > 0 {
-			resp.Code = 2
-			resp.Msg = "该分类有关联报告,不允许删除"
-			br.Data = resp
-			br.Ret = 200
-			br.Msg = "该分类有关联报告,不允许删除"
-			br.Success = true
-			return
-		}
-	} else {
-		subCount, err := knowledgeObj.GetClassifySubCountByClassifyId(classifyId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+	count, err := knowledgeObj.GetResourceCountByClassifyId(classifyId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	if count > 0 {
+		resp.Code = 2
+		resp.Msg = "该分类有关联事件,不允许删除"
+		br.Data = resp
+		br.Ret = 200
+		br.Msg = "该分类有关联事件,不允许删除"
+		br.Success = true
+		return
+	}
+	// 查询所有子分类
+	classifyIds, e := knowledgeObj.GetChildClassifyIdByParentId(classifyId)
+	if e != nil && !utils.IsErrNoRow(e) {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
+		return
+	}
+	if len(classifyIds) > 0 {
+		condition := fmt.Sprintf(` AND classify_id IN (?) `)
+		var pars []interface{}
+		pars = append(pars, classifyIds)
+		childCount, err := knowledge.GetKnowledgeResourceListCount(condition, pars)
+		if err != nil && !utils.IsErrNoRow(err) {
+			br.Msg = "删除失败"
+			br.ErrMsg = "查询分类下表格数量失败,Err:" + err.Error()
 			return
 		}
-		if subCount > 0 {
+
+		if childCount > 0 {
 			resp.Code = 3
-			resp.Msg = "二级分类有关联报告,不允许删除"
+			resp.Msg = "子分类有关联事件,不允许删除"
 			br.Data = resp
 			br.Ret = 200
-			br.Msg = "二级分类有关联报告,不允许删除"
+			br.Msg = "子分类有关联事件,不允许删除"
 			br.Success = true
 			return
 		}
-		subTotal, err := knowledgeObj.GetClassifySubCountByParentId(classifyId)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		// 查询三级分类下是否有事件,如果有也不允许删除
+		classifyIds, e = knowledgeObj.GetChildClassifyIdByParentIds(classifyIds)
+		if e != nil && !utils.IsErrNoRow(e) {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
 			return
 		}
-		if subTotal > 0 {
-			resp.Code = 4
-			resp.Msg = "请先删除该分类下关联分类"
-			br.Data = resp
-			br.Ret = 200
-			br.Msg = "请先删除该分类下关联分类"
-			br.Success = true
-			return
+		if len(classifyIds) > 0 {
+			condition = fmt.Sprintf(` AND classify_id IN (?) `)
+			pars = make([]interface{}, 0)
+			pars = append(pars, classifyIds)
+			childCount, e = knowledge.GetKnowledgeResourceListCount(condition, pars)
+			if e != nil && !utils.IsErrNoRow(e) {
+				br.Msg = "删除失败"
+				br.ErrMsg = "查询分类下表格数量失败,Err:" + e.Error()
+				return
+			}
+			if childCount > 0 {
+				resp.Code = 3
+				resp.Msg = "子分类有关联事件,不允许删除"
+				br.Data = resp
+				br.Ret = 200
+				br.Msg = "子分类有关联事件,不允许删除"
+				br.Success = true
+				return
+			}
 		}
 	}
 
@@ -176,12 +198,12 @@ func (this *ClassifyController) Delete() {
 		br.Msg = "参数错误"
 		return
 	}
-	//todo 是否需要删除接口
-	/*br.Msg = "报告分类不允许删除"
-	br.IsSendEmail = false
-	return*/
+	//todo 是否需要删除
 	knowledgeObj := new(knowledge.KnowledgeClassify)
-	item, err := knowledgeObj.GetClassifyById(req.ClassifyId)
+	classifyId := req.ClassifyId
+	deleteClassifyIds := make([]int, 0)
+	deleteClassifyIds = append(deleteClassifyIds, classifyId)
+	classify, err := knowledgeObj.GetClassifyById(req.ClassifyId)
 	if err != nil {
 		if utils.IsErrNoRow(err) {
 			br.Msg = "分类不存在"
@@ -191,12 +213,69 @@ func (this *ClassifyController) Delete() {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-	if item.ResourceType != req.ResourceType {
+	if classify.ResourceType != req.ResourceType {
 		br.Msg = "资源类型不匹配"
 		return
 	}
+	count, err := knowledgeObj.GetResourceCountByClassifyId(classifyId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	if count > 0 {
+		br.Msg = "该分类有关联事件,不允许删除"
+		return
+	}
+	// 查询所有子分类
+	classifyIds, e := knowledgeObj.GetChildClassifyIdByParentId(classifyId)
+	if e != nil && !utils.IsErrNoRow(e) {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
+		return
+	}
+	if len(classifyIds) > 0 {
+		condition := fmt.Sprintf(` AND classify_id IN (?) `)
+		var pars []interface{}
+		pars = append(pars, classifyIds)
+		childCount, err := knowledge.GetKnowledgeResourceListCount(condition, pars)
+		if err != nil && !utils.IsErrNoRow(err) {
+			br.Msg = "删除失败"
+			br.ErrMsg = "查询分类下表格数量失败,Err:" + err.Error()
+			return
+		}
+
+		if childCount > 0 {
+			br.Msg = "子分类有关联事件,不允许删除"
+			return
+		}
+		deleteClassifyIds = append(deleteClassifyIds, classifyIds...)
+		// 查询三级分类下是否有事件,如果有也不允许删除
+		classifyIds, e = knowledgeObj.GetChildClassifyIdByParentIds(classifyIds)
+		if e != nil && !utils.IsErrNoRow(e) {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
+			return
+		}
+		if len(classifyIds) > 0 {
+			condition = fmt.Sprintf(` AND classify_id IN (?) `)
+			pars = make([]interface{}, 0)
+			pars = append(pars, classifyIds)
+			childCount, e = knowledge.GetKnowledgeResourceListCount(condition, pars)
+			if e != nil && !utils.IsErrNoRow(e) {
+				br.Msg = "删除失败"
+				br.ErrMsg = "查询分类下表格数量失败,Err:" + e.Error()
+				return
+			}
+			if childCount > 0 {
+				br.Msg = "子分类有关联事件,不允许删除"
+				return
+			}
+			deleteClassifyIds = append(deleteClassifyIds, classifyIds...)
+		}
+	}
 
-	err = knowledgeObj.Delete(req.ClassifyId)
+	err = knowledgeObj.DeleteByIds(deleteClassifyIds)
 	if err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除失败,Err:" + err.Error()

+ 22 - 3
models/knowledge/knowledge_classify.go

@@ -52,6 +52,7 @@ func (k *KnowledgeClassify) GetResourceCountByClassifyId(classifyId int) (count
 	return
 }
 
+// GetClassifySubCountByClassifyId 查询当前分类下的子分类是否关联事件
 func (k *KnowledgeClassify) GetClassifySubCountByClassifyId(classifyId int) (count int, err error) {
 
 	sql := `SELECT COUNT(1) as num FROM knowledge_classify AS a
@@ -71,11 +72,29 @@ func (k *KnowledgeClassify) GetClassifySubCountByParentId(classifyId int) (count
 	return
 }
 
+func (k *KnowledgeClassify) GetChildClassifyIdByParentId(classifyId int) (ids []int, err error) {
+	sqlCount := `
+	SELECT classify_id FROM %s AS a
+	WHERE a.parent_id=? `
+	sqlCount = fmt.Sprintf(sqlCount, k.TableName())
+	err = global.DmSQL["rddp"].Raw(sqlCount, classifyId).Scan(&ids).Error
+	return
+}
+
+func (k *KnowledgeClassify) GetChildClassifyIdByParentIds(classifyIds []int) (ids []int, err error) {
+	sqlCount := `
+	SELECT classify_id FROM %s AS a
+	WHERE a.parent_id in (?) `
+	sqlCount = fmt.Sprintf(sqlCount, k.TableName())
+	err = global.DmSQL["rddp"].Raw(sqlCount, classifyIds).Scan(&ids).Error
+	return
+}
+
 // 删除分类
-func (k *KnowledgeClassify) Delete(classifyId int) (err error) {
-	sql := `DELETE FROM %s WHERE classify_id =? `
+func (k *KnowledgeClassify) DeleteByIds(classifyIds []int) (err error) {
+	sql := `DELETE FROM %s WHERE classify_id in (?) `
 	sql = fmt.Sprintf(sql, k.TableName())
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
+	err = global.DmSQL["rddp"].Exec(sql, classifyIds).Error
 	if err != nil {
 		return
 	}

+ 1 - 2
services/knowledge/classify.go

@@ -421,7 +421,6 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
 	}
 	item.ClassifyName = classifyName
 
-	// todo 修改父级,修改level,只允许修改同级别
 	item.ParentId = parentId
 	item.ModifyTime = time.Now().Local()
 	cols := make([]string, 0)
@@ -430,7 +429,7 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
 	if err != nil {
 		return
 	}
-	// todo 修改父级分类下相关的事件,找到当前分类的最小分类,把上一级的报告挪到最小分类上
+	// 修改父级分类下相关的事件,找到当前分类的最小分类,把上一级的报告挪到最小分类上
 	// 如果父级分类不为空的话,那么就标记有子级分类,同时
 	if parentClassifyItem != nil {
 		/*parentClassifyItem.HasChild = 1

+ 1 - 2
services/knowledge/resource.go

@@ -411,9 +411,8 @@ func ImportResourceData(path string, resourceType int, sysUser *system.Admin) (s
 		name := fmt.Sprintf("%s/%s/%s", v.RootName, v.ParentName, v.ClassifyName)
 		classifyNameMap[name] = v.ClassifyId
 	}
-	// todo 获取所有tag
+
 	tagNameMap := make(map[string]int)
-	// todo 获取所有tag
 	tagList, err := tagObj.GetAllTag(resourceType)
 	for _, v := range tagList {
 		tagNameMap[v.TagName] = v.TagId

+ 0 - 3
services/knowledge/tag.go

@@ -242,9 +242,6 @@ func EditKnowledgeTag(TagId, resourceType int, TagName string) (err error, errMs
 	}
 	item.TagName = TagName
 
-	// ETA1.8.3:不允许修改上级标签  2024-6-17 13:21:01
-	//
-	// todo 修改父级,修改level,只允许修改同级别
 	item.ModifyTime = time.Now().Local()
 	cols := make([]string, 0)
 	cols = append(cols, "TagName", "ModifyTime")