|
@@ -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 = "移动成功"
|
|
|
+}
|