Browse Source

fix:撤销

Roc 2 months ago
parent
commit
61c06210c4
2 changed files with 86 additions and 30 deletions
  1. 83 29
      controllers/data_manage/public_chart.go
  2. 3 1
      controllers/data_manage/public_edb.go

+ 83 - 29
controllers/data_manage/public_chart.go

@@ -2,14 +2,18 @@ package data_manage
 
 import (
 	"encoding/json"
+	"eta_gn/eta_api/cache"
 	"eta_gn/eta_api/controllers"
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/data_manage"
+	"eta_gn/eta_api/models/data_manage/data_approve"
 	"eta_gn/eta_api/models/data_manage/request"
+	"eta_gn/eta_api/models/system"
 	"eta_gn/eta_api/services/data"
 	dataApproveSerice "eta_gn/eta_api/services/data/data_approve"
 	"eta_gn/eta_api/services/elastic"
 	"eta_gn/eta_api/utils"
+	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strconv"
 	"strings"
@@ -175,49 +179,99 @@ func (c *ChartPublicController) Cancel() {
 		return
 	}
 
-	var req request.SetChartPublicReq
-	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	chartInfo, err := data_manage.GetChartInfoById(chartInfoId)
 	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		br.Msg = "保存失败!"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
 		return
 	}
 
-	if len(req.ChartInfoList) <= 0 {
-		br.Msg = `请选择图表`
-		br.IsSendEmail = false
+	// 判断图表公共状态
+	if !utils.InArrayByInt([]int{utils.DataPublicSuccess, utils.DataPublicReject, utils.DataPublicCommit}, chartInfo.PublicStatus) {
+		br.Msg = "保存失败,图表公开状态异常!"
+		br.ErrMsg = "保存失败,图表公开状态异常,public_status:" + fmt.Sprint(chartInfo.PublicStatus)
 		return
 	}
 
-	// 待处理的资产
-	dataPublicItemList := make([]dataApproveSerice.SetDataPublicItem, 0)
-
-	// 校验是否重复存在已公开、已提交的图表
-	{
-		chartInfoIdList := make([]int, 0)
-		for _, item := range req.ChartInfoList {
-			chartInfoIdList = append(chartInfoIdList, item.ChartInfoId)
-
-			dataPublicItemList = append(dataPublicItemList, dataApproveSerice.SetDataPublicItem{
-				DataId:     item.ChartInfoId,
-				ClassifyId: item.ClassifyId,
-			})
-		}
-
-		list, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
+	// 如果公开状态是:已驳回、已提交,那么直接去撤销审批单
+	if utils.InArrayByInt([]int{utils.DataPublicReject, utils.DataPublicCommit}, chartInfo.PublicStatus) {
+		obj := data_approve.DataApproveRelation{}
+		dataApproveId, err := obj.GetDataApproveIdByDataId(chartInfoId, utils.DataApproveTypeChart)
 		if err != nil {
 			br.Msg = "保存失败!"
-			br.ErrMsg = "获取图表数据失败,Err:" + err.Error()
+			br.ErrMsg = "获取审批单失败,Err:" + err.Error()
 			return
 		}
-		for _, v := range list {
-			if v.PublicStatus != utils.DataPublicDefault {
-				br.Msg = `选择图表中存在已经公开/提交审批的图表,请仅选择未公开图表!`
-				br.IsSendEmail = false
+		// 撤销审批
+		msg, e := dataApproveSerice.DataApproveCancel(dataApproveId, sysUser.AdminId, sysUser.RealName)
+		if e != nil {
+			if msg != "" {
+				br.Msg = msg
+			} else {
+				br.Msg = "操作失败"
+			}
+			br.ErrMsg = "撤销审批失败, Err: " + e.Error()
+			return
+		}
+	}
+
+	checkUserIdList := []int{sysUser.AdminId}
+	noReferenced, otherUserIdList, err, tips := data.CheckChartReferencedByOthers([]int{chartInfo.ChartInfoId}, []string{chartInfo.UniqueCode}, checkUserIdList)
+	if err != nil {
+		br.Msg = "保存失败"
+		if tips != "" {
+			br.Msg = tips
+		}
+		br.ErrMsg = "撤销图表公开失败,查找图表的关联用户失败,Err:" + err.Error()
+		return
+	}
+
+	if !noReferenced {
+		userNameStr := ``
+		if len(otherUserIdList) > 0 {
+			userNameList := make([]string, 0)
+			userList, err := system.GetAdminListByIdList(otherUserIdList)
+			if err != nil {
+				br.Msg = "保存失败"
+				if tips != "" {
+					br.Msg = tips
+				}
+				br.ErrMsg = "撤销图表公开失败,查找用户信息失败,Err:" + err.Error()
 				return
 			}
+			for _, userInfo := range userList {
+				userNameList = append(userNameList, userInfo.RealName)
+			}
+			userNameStr = strings.Join(userNameList, ",")
+		}
+		msg := `图表被其他用户使用,无法撤销公开`
+		if userNameStr != "" {
+			msg = fmt.Sprintf(`图表被用户%s使用,无法撤销公开`, userNameStr)
+		}
+		if tips != "" {
+			msg = fmt.Sprintf(`%s,用户为:%s,无法撤销公开`, tips, userNameStr)
 		}
+		br.Msg = msg
+		br.ErrMsg = "图表被其他用户共享,无法撤销公开,ChartInfoId:" + strconv.Itoa(chartInfo.ChartInfoId)
+		br.IsSendEmail = false
+		return
 	}
+
+	chartInfo.PublicStatus = utils.DataPublicDefault
+	chartInfo.ChartPublicClassifyId = 0
+	err = chartInfo.Update([]string{"PublicStatus", "ChartPublicClassifyId"})
+	if err != nil {
+		br.Msg = "保存失败"
+		br.ErrMsg = "取消图表公共失败,Err:" + err.Error()
+		return
+	}
+
+	// 修改ES数据
+	data.AddOrEditChartInfoToEs(chartInfo.ChartInfoId)
+
+	// 图表收藏操作处理
+	go cache.AddDataCollectHandler(chartInfo.ChartInfoId, utils.DataCollectTypeChart)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "保存成功"
@@ -276,7 +330,7 @@ func (c *ChartPublicController) ListByEs() {
 		classifyMap := make(map[int]*data_manage.ChartClassify)
 		publicClassifyMap := make(map[int]*data_manage.ChartPublicClassify)
 
-		// 指标id,分类id,公共分类id
+		// 图表id,分类id,公共分类id
 		chartInfoIdList := make([]int, 0)
 		tmpClassifyIdList := make([]int, 0)
 		tmpPublicClassifyIdList := make([]int, 0)

+ 3 - 1
controllers/data_manage/public_edb.go

@@ -2,6 +2,7 @@ package data_manage
 
 import (
 	"encoding/json"
+	"eta_gn/eta_api/cache"
 	"eta_gn/eta_api/controllers"
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/data_manage"
@@ -267,7 +268,8 @@ func (c *EdbPublicController) Cancel() {
 	// 修改ES数据
 	data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
 
-	// TODO 取消公共的时候,需要清除对应用户的收藏状态
+	// 指标收藏操作处理
+	go cache.AddDataCollectHandler(edbInfo.EdbInfoId, utils.DataCollectTypeEdb)
 
 	br.Ret = 200
 	br.Success = true