Browse Source

转移分类时,更新图表

xyxie 2 months ago
parent
commit
8e736624ba
4 changed files with 198 additions and 2 deletions
  1. 6 0
      controllers/chart_classify.go
  2. 38 0
      models/chart_collect/chart.go
  3. 150 0
      services/chart_collect_elastic.go
  4. 4 2
      utils/config.go

+ 6 - 0
controllers/chart_classify.go

@@ -1056,6 +1056,12 @@ func (this *ChartClassifyController) ModifyChartClassify() {
 		return
 	}
 
+	go func() {
+		for _, id := range chartIds {
+			services.EsAddOrEditChartInfo(id)
+			services.EsAddOrEditChartCollectByChartInfoId(id)
+		}
+	}()
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"

+ 38 - 0
models/chart_collect/chart.go

@@ -129,3 +129,41 @@ func GetChartCollectByUserIdChartInfoId(userId, chartInfoId int) (item *ChartCol
 	err = o.Raw(sql, userId, chartInfoId).QueryRow(&item)
 	return
 }
+
+type ChartCollectEsItem struct {
+	UserChartInfoId           string
+	ChartInfoId               int       `description:"图表id"`
+	UserId                    int       `description:"用户id"`
+	CollectTime               time.Time `description:"收藏时间"`
+	ChartName                 string    `description:"来源名称"`
+	ChartNameEn               string    `description:"英文图表名称"`
+	ChartImage                string    `description:"图表图片"`
+	UniqueCode                string    `description:"图表唯一编码"`
+	ChartClassifyId           int       `description:"图表分类id"`
+	SysUserId                 int
+	SysUserRealName           string
+	CreateTime                time.Time
+	ModifyTime                time.Time
+	ChartSource               int
+	CollectClassifyIds        string
+	ChartCollectClassifyNames string
+}
+
+// GetChartCollectByChartInfoIdAndUserIdByCondition 获图表收藏数据
+func GetChartCollectByChartInfoIdAndUserIdByCondition(condition string, pars []interface{}) (item []*ChartCollectEsItem, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.user_id, CONCAT(a.user_id,"_", a.chart_info_id) as user_chart_info_id, max(a.collect_time) as collect_time,
+        	b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_image,b.unique_code,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.create_time,b.modify_time,b.source as chart_source,
+        	GROUP_CONCAT(DISTINCT d.classify_name) AS chart_collect_classify_names,GROUP_CONCAT(DISTINCT d.collect_classify_id) AS collect_classify_ids
+			FROM  chart_collect AS a
+			INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
+			INNER JOIN chart_collect_classify AS d ON a.collect_classify_id=d.collect_classify_id
+			WHERE 1=1 `
+
+	if condition != "" {
+		sql += condition
+	}
+	sql += " GROUP BY a.chart_info_id,a.user_id ORDER BY a.collect_time Desc, a.chart_collect_id DESC "
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}

+ 150 - 0
services/chart_collect_elastic.go

@@ -0,0 +1,150 @@
+package services
+
+import (
+	"eta/eta_forum_admin/models/chart_collect"
+	"eta/eta_forum_admin/services/elastic"
+	"eta/eta_forum_admin/utils"
+	"fmt"
+	"strconv"
+	"strings"
+)
+
+// EsAddOrEditChartCollectByChartInfoId 新增和修改ES中的收藏图表数据
+func EsAddOrEditChartCollectByChartInfoId(chartInfoId int) {
+	errMsg := make([]string, 0)
+	defer func() {
+		if len(errMsg) > 0 {
+			fmt.Println("新增和修改ES中的图表数据失败:", strings.Join(errMsg, "\n"))
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+	condition += " and a.chart_info_id = ? "
+	pars = append(pars, chartInfoId)
+
+	allList, err := chart_collect.GetChartCollectByChartInfoIdAndUserIdByCondition(condition, pars)
+	if err != nil {
+		errMsg = append(errMsg, fmt.Sprintf("EsAddOrEditChartCollectByChartInfoId Err:%s", err.Error()))
+		return
+	}
+	for _, v := range allList {
+		//添加es
+		v.CollectClassifyIds += ","
+		err = elastic.EsAddOrEditDataInterface(utils.CHART_COLLECT_INDEX_NAME, v.UserChartInfoId, v)
+		if err != nil {
+			errMsg = append(errMsg, fmt.Sprintf("图表收藏:%s,添加Es失败,err:%s", v.UserChartInfoId, err.Error()))
+		}
+
+	}
+	return
+}
+
+// EsAddOrEditChartCollectByChartInfoIdUserId 新增和修改ES中的收藏图表数据
+func EsAddOrEditChartCollectByChartInfoIdUserId(chartInfoId, userId int) {
+	errMsg := make([]string, 0)
+	defer func() {
+		if len(errMsg) > 0 {
+			fmt.Println("新增和修改ES中的图表数据失败:", strings.Join(errMsg, "\n"))
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+	condition += " and a.chart_info_id = ? and a.user_id = ? "
+	pars = append(pars, chartInfoId, userId)
+
+	allList, err := chart_collect.GetChartCollectByChartInfoIdAndUserIdByCondition(condition, pars)
+	if err != nil {
+		errMsg = append(errMsg, fmt.Sprintf("EsAddOrEditChartCollectByChartInfoId Err:%s", err.Error()))
+		return
+	}
+	for _, v := range allList {
+		//添加es
+		v.CollectClassifyIds += ","
+		fmt.Println(v)
+		err = elastic.EsAddOrEditDataInterface(utils.CHART_COLLECT_INDEX_NAME, v.UserChartInfoId, v)
+		if err != nil {
+			errMsg = append(errMsg, fmt.Sprintf("图表收藏:%s,添加Es失败,err:%s", v.UserChartInfoId, err.Error()))
+		}
+
+	}
+	return
+}
+
+// EsDeleteChartCollectByChartInfoIdUserId 取消收藏
+func EsDeleteChartCollectByChartInfoIdUserId(chartInfoId, userId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("删除ES中的图表数据失败:", err.Error())
+		}
+	}()
+	//添加es
+	// 先删除,再新增
+	userChartInfoId := strconv.Itoa(userId) + "_" + strconv.Itoa(chartInfoId)
+	err = elastic.EsDeleteDataV2(utils.CHART_COLLECT_INDEX_NAME, userChartInfoId)
+	if err != nil {
+		err = fmt.Errorf(fmt.Sprintf("图表收藏:%s,删除Es失败,err:%s", userChartInfoId, err.Error()))
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition += " and a.chart_info_id = ? and a.user_id = ? "
+	pars = append(pars, chartInfoId, userId)
+
+	allList, err := chart_collect.GetChartCollectByChartInfoIdAndUserIdByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+	for _, v := range allList {
+		//添加es
+		v.CollectClassifyIds += ","
+		err = elastic.EsAddOrEditDataInterface(utils.CHART_COLLECT_INDEX_NAME, v.UserChartInfoId, v)
+		if err != nil {
+			err = fmt.Errorf("图表收藏:%s,添加Es失败,err:%s", v.UserChartInfoId, err.Error())
+			return
+		}
+	}
+
+	return
+}
+
+// EsDeleteChartCollectByChartInfoIdUserIds 删除图表时,删除图表的收藏记录
+func EsDeleteChartCollectByChartInfoIdUserIds(userChartInfoIds []string) {
+	if len(userChartInfoIds) == 0 {
+		return
+	}
+	errMsg := make([]string, 0)
+	defer func() {
+		if len(errMsg) > 0 {
+			fmt.Println("EsDeleteMyChartInfoByMyChartIds, 删除ES中的我的图表数据失败:", strings.Join(errMsg, "\n"))
+		}
+	}()
+	for _, v := range userChartInfoIds {
+		id := v
+		if e := elastic.EsDeleteDataV2(utils.CHART_COLLECT_INDEX_NAME, id); e != nil {
+			errMsg = append(errMsg, fmt.Sprintf("myChartId:%d,删除Es失败,err:%s", v, e.Error()))
+		}
+	}
+	return
+}
+
+func AddAllChartCollectData() {
+	var condition string
+	var pars []interface{}
+
+	allList, err := chart_collect.GetChartCollectByChartInfoIdAndUserIdByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+	for _, v := range allList {
+		//添加es
+		v.CollectClassifyIds += ","
+		err = elastic.EsAddOrEditDataInterface(utils.CHART_COLLECT_INDEX_NAME, v.UserChartInfoId, v)
+		if err != nil {
+			err = fmt.Errorf("图表收藏:%s,添加Es失败,err:%s", v.UserChartInfoId, err.Error())
+			return
+		}
+	}
+}

+ 4 - 2
utils/config.go

@@ -28,8 +28,9 @@ var (
 
 // ES索引配置
 var (
-	DATA_INDEX_NAME  string //数据指标库索引
-	CHART_INDEX_NAME string //研究图库索引
+	DATA_INDEX_NAME          string //数据指标库索引
+	CHART_INDEX_NAME         string //研究图库索引
+	CHART_COLLECT_INDEX_NAME string
 )
 
 // 弘则
@@ -211,6 +212,7 @@ func init() {
 	{
 		DATA_INDEX_NAME = config["data_index_name"]
 		CHART_INDEX_NAME = config["chart_index_name"]
+		CHART_COLLECT_INDEX_NAME = config["chart_collect_index_name"]
 	}
 
 	// 静态文件目录