xyxie 4 months ago
parent
commit
7620c64b26

+ 94 - 70
controllers/material/material.go

@@ -84,18 +84,18 @@ func (this *MaterialController) MaterialClassifyItems() {
 	br.Data = resp
 }
 
-// @Title 新增素材库分类
-// @Description 新增材库分类接口
+// @Title 新增/编辑素材库分类
+// @Description 新增/编辑材库分类接口
 // @Param	request	body data_manage.AddChartClassifyReq true "type json string"
 // @Success 200 Ret=200 保存成功
-// @router /classify/add [post]
-func (this *MaterialController) AddMaterialClassify() {
+// @router /classify/save [post]
+func (this *MaterialController) SaveMaterialClassify() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	var req material.AddMaterialClassifyReq
+	var req material.SaveMaterialClassifyReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -113,36 +113,97 @@ func (this *MaterialController) AddMaterialClassify() {
 		return
 	}
 
-	count, err := material.GetMaterialClassifyCount(req.ClassifyName, req.ParentId)
-	if err != nil {
-		br.Msg = "判断名称是否已存在失败"
-		br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
-		return
-	}
-	if count > 0 {
-		br.Msg = "分类名称已存在,请重新输入"
-		br.IsSendEmail = false
-		return
+	level := 1
+	//levelPath := ""
+	if req.ParentId > 0 {
+		//查找父级分类
+		parentClassify, e := material.GetMaterialClassifyById(req.ParentId)
+		if e != nil {
+			br.Msg = "获取父级分类失败"
+			br.ErrMsg = "获取父级分类失败,Err:" + e.Error()
+			return
+		}
+		level = parentClassify.Level + 1
+		//levelPath = parentClassify.LevelPath
 	}
-	//获取该层级下最大的排序数
-	maxSort, err := material.GetMaterialClassifyMaxSort(req.ParentId)
-
-	classify := new(material.MaterialClassify)
-	classify.ParentId = req.ParentId
-	classify.ClassifyName = req.ClassifyName
-	classify.CreateTime = time.Now()
-	classify.ModifyTime = time.Now()
-	classify.SysUserId = this.SysUser.AdminId
-	classify.SysUserRealName = this.SysUser.RealName
-	classify.Level = req.Level + 1
-	classify.Sort = maxSort + 1
-
-	_, err = material.AddMaterialClassify(classify)
-	if err != nil {
-		br.Msg = "保存分类失败"
-		br.ErrMsg = "保存分类失败,Err:" + err.Error()
-		return
+
+	if req.ClassifyId > 0 {
+		// 只允许修改分类名称
+		item, e := material.GetMaterialClassifyById(req.ClassifyId)
+		if e != nil {
+			br.Msg = "保存失败"
+			br.Msg = "获取分类信息失败,Err:" + e.Error()
+			return
+		}
+		count, e := material.GetMaterialClassifyNameNotSelfCount(req.ClassifyId, req.ClassifyName, item.ParentId)
+		if e != nil {
+			br.Msg = "判断名称是否已存在失败"
+			br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
+			return
+		}
+		if count > 0 {
+			br.Msg = "分类名称已存在,请重新输入"
+			br.IsSendEmail = false
+			return
+		}
+		//levelPath = fmt.Sprintf("%s,%d", levelPath, req.ClassifyId)
+		//item.LevelPath = levelPath
+		//item.ParentId = req.ParentId
+		item.ClassifyName = req.ClassifyName
+		item.ModifyTime = time.Now()
+		//e = item.Update([]string{"LevelPath", "ParentId", "ClassifyName", "ModifyTime"})
+		e = item.Update([]string{"ClassifyName", "ModifyTime"})
+		if e != nil {
+			br.Msg = "保存分类失败"
+			br.ErrMsg = "保存分类失败,Err:" + e.Error()
+			return
+		}
+		//todo 更新子集的levelPath
+		/*e = material.UpdateMaterialClassifyLevelPath(req.ClassifyId, levelPath)
+		if e != nil {
+			br.Msg = "保存分类失败"
+			br.ErrMsg = "保存分类失败,Err:" + e.Error()
+			return
+		}*/
+	} else {
+		count, e := material.GetMaterialClassifyNameCount(req.ClassifyName, req.ParentId)
+		if e != nil {
+			br.Msg = "判断名称是否已存在失败"
+			br.ErrMsg = "判断名称是否已存在失败,Err:" + e.Error()
+			return
+		}
+		if count > 0 {
+			br.Msg = "分类名称已存在,请重新输入"
+			br.IsSendEmail = false
+			return
+		}
+
+		//获取该层级下最大的排序数
+		classify := new(material.MaterialClassify)
+		maxSort, _ := material.GetMaterialClassifyMaxSort(req.ParentId)
+		classify.ParentId = req.ParentId
+		classify.ClassifyName = req.ClassifyName
+		classify.CreateTime = time.Now()
+		classify.ModifyTime = time.Now()
+		classify.SysUserId = this.SysUser.AdminId
+		classify.SysUserRealName = this.SysUser.RealName
+		classify.Level = level
+		classify.Sort = maxSort + 1
+		classifyId, e := material.AddMaterialClassify(classify)
+		if e != nil {
+			br.Msg = "保存分类失败"
+			br.ErrMsg = "保存分类失败,Err:" + e.Error()
+			return
+		}
+		classify.LevelPath = fmt.Sprint(classifyId)
+		e = classify.Update([]string{"LevelPath"})
+		if e != nil {
+			br.Msg = "保存分类失败"
+			br.ErrMsg = "保存分类失败,Err:" + e.Error()
+			return
+		}
 	}
+
 	br.Ret = 200
 	br.Msg = "保存成功"
 	br.Success = true
@@ -178,43 +239,6 @@ func (this *MaterialController) EditMaterialClassify() {
 		return
 	}
 
-	//item, err := material.GetMaterialClassifyById(req.ClassifyId)
-	//if err != nil {
-	//	br.Msg = "保存失败"
-	//	br.Msg = "获取分类信息失败,Err:" + err.Error()
-	//	return
-	//}
-
-	//count, err := material.GetMaterialClassifyCount(req.ClassifyName, item.ParentId)
-	//if err != nil {
-	//	br.Msg = "判断名称是否已存在失败"
-	//	br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
-	//	return
-	//}
-	//if count > 0 {
-	//	br.Msg = "分类名称已存在,请重新输入"
-	//	br.IsSendEmail = false
-	//	return
-	//}
-
-	err = material.EditMaterialClassify(req.ClassifyId, req.ChartPermissionId, req.ClassifyName, req.ChartPermissionName)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	ids, err := material.GetMaterialClassifySubcategories(req.ClassifyId)
-	if err != nil {
-		br.Msg = "查询子级分类id失败"
-		br.ErrMsg = "查询子级分类id失败,Err:" + err.Error()
-		return
-	}
-	err = material.UpdateMaterialClassifyChartPermissionById(req.ChartPermissionId, req.ChartPermissionName, ids)
-	if err != nil {
-		br.Msg = "修改子级分类错误"
-		br.ErrMsg = "修改子级分类错误,Err:" + err.Error()
-		return
-	}
 	br.Ret = 200
 	br.Msg = "保存成功"
 	br.Success = true

+ 21 - 15
models/material/material_classify.go

@@ -16,6 +16,7 @@ type MaterialClassify struct {
 	SysUserRealName string    `description:"创建人姓名"`
 	Level           int       `description:"层级"`
 	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
+	LevelPath       string    `description:"层级路径"`
 }
 
 func AddMaterialClassify(item *MaterialClassify) (lastId int64, err error) {
@@ -57,25 +58,31 @@ type MaterialClassifyListResp struct {
 	AllNodes []*MaterialClassifyItems
 }
 
-type AddMaterialClassifyReq struct {
-	ClassifyName        string `description:"分类名称"`
-	ParentId            int    `description:"父级id,第一级传0"`
-	Level               int    `description:"层级,第一级传0,其余传上一级的层级"`
-	ChartPermissionId   int    `description:"品种id"`
-	ChartPermissionName string `description:"品种名称"`
+type SaveMaterialClassifyReq struct {
+	ClassifyId   int
+	ClassifyName string `description:"分类名称"`
+	ParentId     int    `description:"父级id,第一级传0"`
+	//Level               int    `description:"层级,第一级传0,其余传上一级的层级"`
 }
 
-func GetMaterialClassifyCount(ClassifyName string, parentId int) (count int, err error) {
+func GetMaterialClassifyNameCount(classifyName string, parentId int) (count int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT COUNT(1) AS count FROM material_classify WHERE parent_id=? AND classify_name=? `
-	err = o.Raw(sql, parentId, ClassifyName).QueryRow(&count)
+	err = o.Raw(sql, parentId, classifyName).QueryRow(&count)
+	return
+}
+
+func GetMaterialClassifyNameNotSelfCount(id int, classifyName string, parentId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT COUNT(1) AS count FROM material_classify WHERE classify_id !=? AND parent_id=? AND classify_name=? `
+	err = o.Raw(sql, id, parentId, classifyName).QueryRow(&count)
 	return
 }
 
 // GetMaterialClassifyMaxSort 获取沙盘分类下最大的排序数
 func GetMaterialClassifyMaxSort(parentId int) (sort int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT Max(sort) AS sort FROM material_classify WHERE parent_id=? `
+	sql := `SELECT MAX(sort) AS sort FROM material_classify WHERE parent_id=? `
 	err = o.Raw(sql, parentId).QueryRow(&sort)
 	return
 }
@@ -182,9 +189,9 @@ func GetFirstMaterialClassifyByParentId(parentId int) (item *MaterialClassify, e
 }
 
 // Update 更新沙盘分类基础信息
-func (MaterialClassify *MaterialClassify) Update(cols []string) (err error) {
+func (m *MaterialClassify) Update(cols []string) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(MaterialClassify, cols...)
+	_, err = o.Update(m, cols...)
 	return
 }
 
@@ -269,10 +276,9 @@ WHERE sc.parent_id = @pv
 	return
 }
 
-// UpdateMaterialClassifyChartPermissionById 根据沙盘id更新品种
-func UpdateMaterialClassifyChartPermissionById(ChartPermissionId int, ChartPermissionName, Ids string) (err error) {
+func GetMaterialClassifyByLevelPath(levelPath string) (items []*MaterialClassify, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := ` UPDATE material_classify SET chart_permission_id = ?, chart_permission_name = ? WHERE classify_id IN ( ` + Ids + ` ) `
-	_, err = o.Raw(sql, ChartPermissionId, ChartPermissionName).Exec()
+	sql := `SELECT * FROM material_classify where level_path like "` + levelPath + `%"`
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }

+ 9 - 9
routers/commentsRouter.go

@@ -7360,15 +7360,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
-        beego.ControllerComments{
-            Method: "AddMaterialClassify",
-            Router: `/classify/add`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
         beego.ControllerComments{
             Method: "DeleteMaterialClassify",
@@ -7414,6 +7405,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
+        beego.ControllerComments{
+            Method: "SaveMaterialClassify",
+            Router: `/classify/save`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
         beego.ControllerComments{
             Method: "MaterialClassifyList",

+ 2 - 2
services/material/material.go

@@ -176,13 +176,13 @@ func materialClassifyHaveChildV2(allNode []*material.MaterialClassifyItems, node
 // DeleteMaterial 删除沙盘
 func DeleteMaterial(materialId int) (err error) {
 	// 获取沙盘主表信息
-	materialInfo, err := materialId.GetMaterialById(materialId)
+	/*materialInfo, err := materialId.dele(materialId)
 	if err != nil {
 		return
 	}
 
 	materialInfo.IsDelete = 1
 	var updateMaterialColumn = []string{"IsDelete"}
-	err = materialInfo.Update(updateMaterialColumn)
+	err = materialInfo.Update(updateMaterialColumn)*/
 	return
 }