Browse Source

Merge remote-tracking branch 'origin/eta/1.3.1' into debug

# Conflicts:
#	.gitignore
#	models/data_manage/edb_info.go
#	utils/common.go
Roc 1 year ago
parent
commit
2ad67aabd0

+ 1 - 1
.gitignore

@@ -17,4 +17,4 @@
 eta_api.exe
 eta_api.exe~
 /static/tmpFile/*
-/etalogs
+etalogs/

+ 129 - 0
controllers/data_manage/cross_variety/classify.go

@@ -423,3 +423,132 @@ func (c *ClassifyController) DeleteChartClassify() {
 	br.Data = resp
 	br.IsAddLog = true
 }
+
+// ChartClassifyMove
+// @Title 相关性图表分类移动接口
+// @Description 相关性图表分类移动接口
+// @Success 200 {object} data_manage.MoveChartClassifyReq
+// @router /classify/move [post]
+func (c *ClassifyController) ChartClassifyMove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req data_manage.MoveChartClassifyReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.ClassifyId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "分类id小于等于0"
+		return
+	}
+	//判断分类是否存在
+	chartClassifyInfo, err := data_manage.GetChartClassifyById(req.ClassifyId)
+	if err != nil {
+		br.Msg = "移动失败"
+		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
+		return
+	}
+	if chartClassifyInfo.Source != utils.CHART_SOURCE_CROSS_HEDGING {
+		br.Msg = "分类异常"
+		br.ErrMsg = "分类异常,不是跨品种分析图表的分类"
+		return
+	}
+	updateCol := make([]string, 0)
+
+	//如果有传入 上一个兄弟节点分类id
+	if req.PrevClassifyId > 0 {
+		//上一个兄弟节点
+		prevClassify, err := data_manage.GetChartClassifyById(req.PrevClassifyId)
+		if err != nil {
+			br.Msg = "移动失败"
+			br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
+			return
+		}
+		if prevClassify.Source != utils.CHART_SOURCE_CROSS_HEDGING {
+			br.Msg = "上级节点分类异常"
+			br.ErrMsg = "上级节点分类异常,不是跨品种分析图表的分类"
+			return
+		}
+
+		//如果是移动在两个兄弟节点之间
+		if req.NextClassifyId > 0 {
+			//下一个兄弟节点
+			nextClassify, err := data_manage.GetChartClassifyById(req.NextClassifyId)
+			if err != nil {
+				br.Msg = "移动失败"
+				br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
+				return
+			}
+			//如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
+			if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == chartClassifyInfo.Sort {
+				//变更兄弟节点的排序
+				updateSortStr := `sort + 2`
+				_ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, prevClassify.ChartClassifyId, prevClassify.Sort, updateSortStr)
+			} else {
+				//如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
+				if nextClassify.Sort-prevClassify.Sort == 1 {
+					//变更兄弟节点的排序
+					updateSortStr := `sort + 1`
+					_ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
+				}
+			}
+		}
+
+		chartClassifyInfo.Sort = prevClassify.Sort + 1
+		chartClassifyInfo.ModifyTime = time.Now()
+		updateCol = append(updateCol, "Sort", "ModifyTime")
+
+	} else {
+		firstClassify, err := data_manage.GetFirstChartClassifyByParentIdAndSource(chartClassifyInfo.ParentId, chartClassifyInfo.Source)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "移动失败"
+			br.ErrMsg = "获取跨品种分析图表分类排序第一条的分类信息失败,Err:" + err.Error()
+			return
+		}
+		if firstClassify != nil && firstClassify.Source != utils.CHART_SOURCE_CROSS_HEDGING {
+			br.Msg = "上级节点分类异常"
+			br.ErrMsg = "上级节点分类异常,不是跨品种分析图表的分类"
+			return
+		}
+
+		//如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
+		if firstClassify != nil && firstClassify.Sort == 0 {
+			updateSortStr := ` sort + 1 `
+			_ = data_manage.UpdateChartClassifySortByParentId(firstClassify.ParentId, firstClassify.ChartClassifyId-1, 0, updateSortStr)
+		}
+
+		chartClassifyInfo.Sort = 0 //那就是排在第一位
+		chartClassifyInfo.ModifyTime = time.Now()
+		updateCol = append(updateCol, "Sort", "ModifyTime")
+	}
+
+	//更新
+	if len(updateCol) > 0 {
+		err = chartClassifyInfo.Update(updateCol)
+		if err != nil {
+			br.Msg = "移动失败"
+			br.ErrMsg = "修改失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "移动成功"
+}

+ 8 - 0
models/data_manage/chart_classify.go

@@ -215,6 +215,14 @@ func GetFirstChartClassifyByParentId(parentId int) (item *ChartClassify, err err
 	return
 }
 
+// GetFirstChartClassifyByParentIdAndSource 获取当前父级图表分类下的排序第一条的数据
+func GetFirstChartClassifyByParentIdAndSource(parentId, source int) (item *ChartClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM chart_classify WHERE parent_id=?  and source = ? order by sort asc,chart_classify_id asc limit 1`
+	err = o.Raw(sql, parentId, source).QueryRow(&item)
+	return
+}
+
 // UpdateChartClassifySortByParentId 根据图表父类id更新排序
 func UpdateChartClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
 	o := orm.NewOrmUsingDB("data")

+ 2 - 2
models/data_manage/cross_variety/chart_tag_variety.go

@@ -201,8 +201,8 @@ func SaveVarietyEdb(chartTagId int, list []request.VarietyEdbReq, sysUserId int,
 	// 删除不要了的
 	if len(existMap) > 0 {
 		idStrList := make([]string, 0)
-		for id, _ := range existMap {
-			idStrList = append(idStrList, fmt.Sprint(id))
+		for _, v := range existMap {
+			idStrList = append(idStrList, fmt.Sprint(v.Id))
 		}
 		removeIdStr := strings.Join(idStrList, `,`)
 		sql = fmt.Sprintf(` DELETE FROM chart_tag_variety WHERE id in (%s) `, removeIdStr)

+ 9 - 0
routers/commentsRouter.go

@@ -322,6 +322,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ClassifyController"],
+        beego.ControllerComments{
+            Method: "ChartClassifyMove",
+            Router: `/classify/move`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:TagController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:TagController"],
         beego.ControllerComments{
             Method: "Add",

+ 21 - 21
utils/common.go

@@ -2142,6 +2142,27 @@ func DealDateTimeZero(t time.Time, format string) (timeStr string) {
 	return
 }
 
+// IsPercentage
+// @Description: 判断一个字符串是否是百分比的字符串,并返回百分比的值(比如:50%,返回true 50)
+// @author: Roc
+// @datetime 2023-11-29 14:00:31
+// @param input string
+// @return bool
+// @return string
+func IsPercentage(input string) (bool, string) {
+	percentagePattern := `^(\d{1,2}(\.\d{1,2})?)%$`
+	match, _ := regexp.MatchString(percentagePattern, input)
+
+	if match {
+		// 提取百分比值
+		re := regexp.MustCompile(percentagePattern)
+		match := re.FindStringSubmatch(input)
+		return true, match[1]
+	}
+
+	return false, ""
+}
+
 // GetLikeKeyword
 //
 //	@Description: 获取sql查询中的like查询字段
@@ -2172,24 +2193,3 @@ func GetLikeKeywordPars(pars []interface{}, keyword string, num int) (newPars []
 	}
 	return
 }
-
-// IsPercentage
-// @Description: 判断一个字符串是否是百分比的字符串,并返回百分比的值(比如:50%,返回true 50)
-// @author: Roc
-// @datetime 2023-11-29 14:00:31
-// @param input string
-// @return bool
-// @return string
-func IsPercentage(input string) (bool, string) {
-	percentagePattern := `^(\d{1,2}(\.\d{1,2})?)%$`
-	match, _ := regexp.MatchString(percentagePattern, input)
-
-	if match {
-		// 提取百分比值
-		re := regexp.MustCompile(percentagePattern)
-		match := re.FindStringSubmatch(input)
-		return true, match[1]
-	}
-
-	return false, ""
-}