Browse Source

分类管理

xyxie 4 months ago
parent
commit
f15790181f

+ 39 - 28
controllers/material/material.go

@@ -9,6 +9,7 @@ import (
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"strings"
 	"time"
 )
 
@@ -280,11 +281,12 @@ func (this *MaterialController) EditMaterialClassify() {
 	br.IsAddLog = true
 }
 
+// DeleteMaterialClassifyCheck
 // @Title 删除素材库检测接口
 // @Description 删除素材库检测接口
 // @Param	request	body data_manage.ChartClassifyDeleteCheckResp true "type json string"
 // @Success 200 Ret=200 检测成功
-// @router /classify/delete/check [post]
+// @router /classify/del/check [post]
 func (this *MaterialController) DeleteMaterialClassifyCheck() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -307,33 +309,34 @@ func (this *MaterialController) DeleteMaterialClassifyCheck() {
 	var deleteStatus int
 	var tipsMsg string
 	//删除分类
-	if req.ClassifyId > 0 {
+	// 查询当前的分类
+	classifyInfo, err := material.GetMaterialClassifyById(req.ClassifyId)
+	if err != nil {
+		br.Msg = "分类不存在"
+		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
+		return
+	}
+	classifyIds := strings.Split(classifyInfo.LevelPath, ",")
+	if len(classifyIds) > 0 {
 		//判断素材库分类下,是否含有素材库
-		count, err := material.GetMaterialInfoCountByClassifyId(req.ClassifyId)
-		if err != nil {
+		count, e := material.GetMaterialInfoCountByClassifyIds(classifyIds)
+		if e != nil {
 			br.Msg = "删除失败"
-			br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
+			br.ErrMsg = "分类下是否含有指标失败,Err:" + e.Error()
 			return
 		}
 
 		if count > 0 {
 			deleteStatus = 1
 			tipsMsg = "该分类下关联素材库不可删除"
+		} else {
+			if len(classifyIds) > 1 {
+				deleteStatus = 2
+				tipsMsg = "确认删除当前目录及包含的子目录吗"
+			}
 		}
 	}
 
-	if deleteStatus != 1 {
-		classifyCount, err := material.GetMaterialInfoCountByClassifyId(req.ClassifyId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "删除失败"
-			br.ErrMsg = "分类下是否含有素材库失败,Err:" + err.Error()
-			return
-		}
-		if classifyCount > 0 {
-			deleteStatus = 2
-			tipsMsg = "确认删除当前目录及包含的子目录吗"
-		}
-	}
 	if deleteStatus == 0 {
 		tipsMsg = "可删除,进行删除操作"
 	}
@@ -347,11 +350,12 @@ func (this *MaterialController) DeleteMaterialClassifyCheck() {
 	br.Data = resp
 }
 
+// DeleteMaterialClassify
 // @Title 删除素材库分类/素材库
 // @Description 删除素材库分类/素材库接口
 // @Param	request	body data_manage.DeleteChartClassifyReq true "type json string"
 // @Success 200 Ret=200 删除成功
-// @router /classify/delete [post]
+// @router /classify/del [post]
 func (this *MaterialController) DeleteMaterialClassify() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -375,19 +379,26 @@ func (this *MaterialController) DeleteMaterialClassify() {
 		return
 	}
 
-	if req.ClassifyId < 0 && req.MaterialId <= 0 {
+	if req.ClassifyId < 0 {
 		br.Msg = "参数错误"
 		br.IsSendEmail = false
 		return
 	}
 
-	//删除分类
-	if req.ClassifyId > 0 && req.MaterialId == 0 {
-		//判断是否含有指标
-		count, err := material.GetMaterialInfoCountByClassifyId(req.MaterialId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+	// 查询当前的分类
+	classifyInfo, err := material.GetMaterialClassifyById(req.ClassifyId)
+	if err != nil {
+		br.Msg = "分类不存在"
+		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
+		return
+	}
+	classifyIds := strings.Split(classifyInfo.LevelPath, ",")
+	if len(classifyIds) > 0 {
+		//判断素材库分类下,是否含有素材库
+		count, e := material.GetMaterialInfoCountByClassifyIds(classifyIds)
+		if e != nil {
 			br.Msg = "删除失败"
-			br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
+			br.ErrMsg = "分类下是否含有指标失败,Err:" + e.Error()
 			return
 		}
 
@@ -397,7 +408,7 @@ func (this *MaterialController) DeleteMaterialClassify() {
 			return
 		}
 
-		err = material.DeleteMaterialClassify(req.ClassifyId)
+		err = material.DeleteMaterialClassify(classifyIds)
 		if err != nil {
 			br.Msg = "删除失败"
 			br.ErrMsg = "删除失败,Err:" + err.Error()
@@ -406,7 +417,7 @@ func (this *MaterialController) DeleteMaterialClassify() {
 	}
 
 	//删除素材库
-	if req.MaterialId > 0 {
+	/*if req.MaterialId > 0 {
 		materialInfo, err := material.GetMaterialById(req.MaterialId)
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -428,7 +439,7 @@ func (this *MaterialController) DeleteMaterialClassify() {
 			br.Msg = err.Error()
 			return
 		}
-	}
+	}*/
 	br.Ret = 200
 	br.Msg = "删除成功"
 	br.Success = true

+ 7 - 0
models/material/material.go

@@ -319,3 +319,10 @@ type RenameMaterialReq struct {
 	MaterialId   int    `description:"素材id"`
 	MaterialName string `description:"素材名称"`
 }
+
+func GetMaterialInfoCountByClassifyIds(classifyIds []string) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` SELECT COUNT(1) AS count FROM material WHERE classify_id in(` + utils.GetOrmInReplace(len(classifyIds)) + `)`
+	err = o.Raw(sql, classifyIds).QueryRow(&count)
+	return
+}

+ 5 - 33
models/material/material_classify.go

@@ -1,6 +1,7 @@
 package material
 
 import (
+	"eta/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
@@ -109,24 +110,6 @@ type MaterialClassifyDeleteCheckReq struct {
 	ClassifyId int `description:"分类id"`
 }
 
-func GetMaterialInfoCountByClassifyId(classifyId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := ` SELECT COUNT(1) AS count FROM sandbox AS a
-				WHERE a.classify_id IN(
-				SELECT t.classify_id FROM 
-				(
-				SELECT rd.*
-				FROM (SELECT * FROM material_classify WHERE parent_id IS NOT NULL) rd,
-					 (SELECT @pid := ?) pd 
-				WHERE FIND_IN_SET(parent_id, @pid) > 0 
-				  AND @pid := CONCAT(@pid, ',', classify_id) 
-				UNION SELECT * FROM material_classify WHERE classify_id = @pid 
-				)AS t
-				) AND a.is_delete = 0 `
-	err = o.Raw(sql, classifyId).QueryRow(&count)
-	return
-}
-
 type MaterialClassifyDeleteCheckResp struct {
 	DeleteStatus int    `description:"检测状态:0:默认值,如果为0,继续走其他校验,1:该分类下关联图表不可删除,2:确认删除当前目录及包含的子目录吗"`
 	TipsMsg      string `description:"提示信息"`
@@ -134,24 +117,13 @@ type MaterialClassifyDeleteCheckResp struct {
 
 type DeleteMaterialClassifyReq struct {
 	ClassifyId int `description:"分类id"`
-	MaterialId int `description:"素材id"`
+	//	MaterialId int `description:"素材id"`
 }
 
-func DeleteMaterialClassify(classifyId int) (err error) {
+func DeleteMaterialClassify(classifyIds []string) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := ` DELETE FROM material_classify
-				WHERE classify_id IN(
-				SELECT t.classify_id FROM
-				(
-				SELECT rd.*
-				FROM (SELECT * FROM material_classify WHERE parent_id IS NOT NULL) rd,
-				(SELECT @pid := ?) pd
-				WHERE FIND_IN_SET(parent_id, @pid) > 0
-				AND @pid := CONCAT(@pid, ',', classify_id)
-				UNION SELECT * FROM material_classify WHERE classify_id = @pid
-				)AS t
-				) `
-	_, err = o.Raw(sql, classifyId).Exec()
+	sql := ` DELETE FROM material_classify WHERE classify_id IN(` + utils.GetOrmInReplace(len(classifyIds)) + `) `
+	_, err = o.Raw(sql, classifyIds).Exec()
 	return
 }
 

+ 2 - 2
routers/commentsRouter.go

@@ -7372,7 +7372,7 @@ func init() {
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
         beego.ControllerComments{
             Method: "DeleteMaterialClassify",
-            Router: `/classify/delete`,
+            Router: `/classify/del`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
@@ -7381,7 +7381,7 @@ func init() {
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
         beego.ControllerComments{
             Method: "DeleteMaterialClassifyCheck",
-            Router: `/classify/delete/check`,
+            Router: `/classify/del/check`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,