ziwen 1 year ago
parent
commit
460a76f03f
2 changed files with 54 additions and 36 deletions
  1. 19 35
      controllers/sandbox/sandbox.go
  2. 35 1
      models/sandbox/sand_box_classify.go

+ 19 - 35
controllers/sandbox/sandbox.go

@@ -4,12 +4,10 @@ import (
 	"encoding/json"
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
-	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/sandbox"
 	"eta/eta_api/models/sandbox/request"
 	"eta/eta_api/models/sandbox/response"
 	"eta/eta_api/models/system"
-	"eta/eta_api/services/data"
 	sandboxService "eta/eta_api/services/sandbox"
 	"eta/eta_api/utils"
 	"fmt"
@@ -1262,7 +1260,7 @@ func (this *SandboxController) ChartClassifyMove() {
 		return
 	}
 
-	var req data_manage.MoveChartClassifyReq
+	var req sandbox.MoveSandboxClassifyReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -1276,47 +1274,33 @@ func (this *SandboxController) ChartClassifyMove() {
 		return
 	}
 	//判断分类是否存在
-	chartClassifyInfo, err := data_manage.GetChartClassifyById(req.ClassifyId)
+	sandboxClassifyInfo, err := sandbox.GetSandboxClassifyById(req.ClassifyId)
 	if err != nil {
 		br.Msg = "移动失败"
 		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
 		return
 	}
-	// 权限校验
-	{
-		button := data.GetChartClassifyOpButton(this.SysUser, chartClassifyInfo.SysUserId)
-		if !button.OpButton {
-			br.Msg = "无操作权限"
-			br.IsSendEmail = false
-			return
-		}
-	}
 
-	if chartClassifyInfo.Source != utils.CHART_SOURCE_DEFAULT {
-		br.Msg = "分类异常"
-		br.ErrMsg = "分类异常,不是ETA图库的分类"
-		return
-	}
 	updateCol := make([]string, 0)
 
 	//判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
-	if chartClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
-		parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ParentClassifyId)
+	if sandboxClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
+		parentChartClassifyInfo, err := sandbox.GetSandboxClassifyById(req.ParentClassifyId)
 		if err != nil {
 			br.Msg = "移动失败"
 			br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
 			return
 		}
-		chartClassifyInfo.ParentId = parentChartClassifyInfo.ChartClassifyId
-		chartClassifyInfo.Level = parentChartClassifyInfo.Level + 1
-		chartClassifyInfo.ModifyTime = time.Now()
+		sandboxClassifyInfo.ParentId = parentChartClassifyInfo.SandboxClassifyId
+		sandboxClassifyInfo.Level = parentChartClassifyInfo.Level + 1
+		sandboxClassifyInfo.ModifyTime = time.Now()
 		updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
 	}
 
 	//如果有传入 上一个兄弟节点分类id
 	if req.PrevClassifyId > 0 {
 		//上一个兄弟节点
-		prevClassify, err := data_manage.GetChartClassifyById(req.PrevClassifyId)
+		prevClassify, err := sandbox.GetSandboxClassifyById(req.PrevClassifyId)
 		if err != nil {
 			br.Msg = "移动失败"
 			br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
@@ -1326,33 +1310,33 @@ func (this *SandboxController) ChartClassifyMove() {
 		//如果是移动在两个兄弟节点之间
 		if req.NextClassifyId > 0 {
 			//下一个兄弟节点
-			nextClassify, err := data_manage.GetChartClassifyById(req.NextClassifyId)
+			nextClassify, err := sandbox.GetSandboxClassifyById(req.NextClassifyId)
 			if err != nil {
 				br.Msg = "移动失败"
 				br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
 				return
 			}
 			//如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
-			if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == chartClassifyInfo.Sort {
+			if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == sandboxClassifyInfo.Sort {
 				//变更兄弟节点的排序
 				updateSortStr := `sort + 2`
-				_ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, prevClassify.ChartClassifyId, prevClassify.Sort, updateSortStr)
+				_ = sandbox.UpdateSandboxClassifySortByParentId(prevClassify.ParentId, prevClassify.SandboxClassifyId, prevClassify.Sort, updateSortStr)
 			} else {
 				//如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
 				if nextClassify.Sort-prevClassify.Sort == 1 {
 					//变更兄弟节点的排序
 					updateSortStr := `sort + 1`
-					_ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
+					_ = sandbox.UpdateSandboxClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
 				}
 			}
 		}
 
-		chartClassifyInfo.Sort = prevClassify.Sort + 1
-		chartClassifyInfo.ModifyTime = time.Now()
+		sandboxClassifyInfo.Sort = prevClassify.Sort + 1
+		sandboxClassifyInfo.ModifyTime = time.Now()
 		updateCol = append(updateCol, "Sort", "ModifyTime")
 
 	} else {
-		firstClassify, err := data_manage.GetFirstChartClassifyByParentId(chartClassifyInfo.ParentId)
+		firstClassify, err := sandbox.GetFirstSandboxClassifyByParentId(sandboxClassifyInfo.ParentId)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "移动失败"
 			br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error()
@@ -1362,17 +1346,17 @@ func (this *SandboxController) ChartClassifyMove() {
 		//如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
 		if firstClassify != nil && firstClassify.Sort == 0 {
 			updateSortStr := ` sort + 1 `
-			_ = data_manage.UpdateChartClassifySortByParentId(firstClassify.ParentId, firstClassify.ChartClassifyId-1, 0, updateSortStr)
+			_ = sandbox.UpdateSandboxClassifySortByParentId(firstClassify.ParentId, firstClassify.SandboxClassifyId-1, 0, updateSortStr)
 		}
 
-		chartClassifyInfo.Sort = 0 //那就是排在第一位
-		chartClassifyInfo.ModifyTime = time.Now()
+		sandboxClassifyInfo.Sort = 0 //那就是排在第一位
+		sandboxClassifyInfo.ModifyTime = time.Now()
 		updateCol = append(updateCol, "Sort", "ModifyTime")
 	}
 
 	//更新
 	if len(updateCol) > 0 {
-		err = chartClassifyInfo.Update(updateCol)
+		err = sandboxClassifyInfo.Update(updateCol)
 		if err != nil {
 			br.Msg = "移动失败"
 			br.ErrMsg = "修改失败,Err:" + err.Error()

+ 35 - 1
models/sandbox/sand_box_classify.go

@@ -1,7 +1,8 @@
 package sandbox
 
 import (
-"github.com/beego/beego/v2/client/orm"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
 "time"
 )
 
@@ -152,3 +153,36 @@ func DeleteSandboxClassify(classifyId int) (err error) {
 	return
 }
 
+// MoveSandboxClassifyReq 移动沙盘分类请求参数
+type MoveSandboxClassifyReq struct {
+	ClassifyId       int `description:"分类id"`
+	ParentClassifyId int `description:"父级分类id"`
+	PrevClassifyId   int `description:"上一个兄弟节点分类id"`
+	NextClassifyId   int `description:"下一个兄弟节点分类id"`
+}
+
+// UpdateSandboxClassifySortByParentId 根据沙盘父类id更新排序
+func UpdateSandboxClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` update sandbox_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
+	if classifyId > 0 {
+		sql += ` or ( sandbox_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
+	}
+	_, err = o.Raw(sql, parentId, nowSort).Exec()
+	return
+}
+
+// GetFirstSandboxClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
+func GetFirstSandboxClassifyByParentId(parentId int) (item *SandboxClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM sandbox_classify WHERE parent_id=? order by sort asc,sandbox_classify_id asc limit 1`
+	err = o.Raw(sql, parentId).QueryRow(&item)
+	return
+}
+
+// Update 更新沙盘分类基础信息
+func (sandboxClassify *SandboxClassify) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(sandboxClassify, cols...)
+	return
+}