|
@@ -6,6 +6,8 @@ import (
|
|
|
"eta/eta_forum_admin/services"
|
|
|
"eta/eta_forum_admin/utils"
|
|
|
"fmt"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -213,3 +215,148 @@ func (this *ChartInfoController) ChartInfoDetail() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+// ChartInfoSearchByEs
|
|
|
+// @Title 图表模糊搜索(从es获取)
|
|
|
+// @Description 图表模糊搜索(从es获取)
|
|
|
+// @Param Keyword query string true "图表名称"
|
|
|
+// @Param IsShowMe query bool true "是否只看我的,true、false"
|
|
|
+// @Success 200 {object} models.ChartInfo
|
|
|
+// @router /search_by_es [get]
|
|
|
+func (this *ChartInfoController) ChartInfoSearchByEs() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+
|
|
|
+ //只看我的
|
|
|
+ sysUserIds := this.GetString("SysUserIds")
|
|
|
+ adminIdsSlice := make([]int, 0)
|
|
|
+ if sysUserIds != "" {
|
|
|
+ adminIds := strings.Split(sysUserIds, ",")
|
|
|
+ if len(adminIds) == 0 {
|
|
|
+ br.Msg = "请选择正确的创建人"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, adminId := range adminIds {
|
|
|
+ adminIdInt, e := strconv.Atoi(adminId)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "请选择正确的创建人"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ adminIdsSlice = append(adminIdsSlice, adminIdInt)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var searchList []*models.ChartInfo
|
|
|
+ var total int64
|
|
|
+ var err error
|
|
|
+
|
|
|
+ if keyword != "" {
|
|
|
+ searchList, total, err = services.EsSearchChartInfo(keyword, adminIdsSlice, []int{utils.CHART_SOURCE_DEFAULT}, startSize, pageSize)
|
|
|
+ } else {
|
|
|
+ total, searchList, err = models.ChartInfoSearchByEmptyKeyWord(adminIdsSlice, []int{utils.CHART_SOURCE_DEFAULT}, startSize, pageSize)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ finalList := make([]*models.ChartInfoMore, 0)
|
|
|
+ if len(searchList) > 0 {
|
|
|
+ // 涉及分类id
|
|
|
+ classifyIdList := make([]int, 0)
|
|
|
+ // 图表id
|
|
|
+ chartInfoIdList := make([]int, 0)
|
|
|
+
|
|
|
+ chartInfoIds := ""
|
|
|
+ chartEdbMap := make(map[int][]*models.ChartEdbInfoMapping)
|
|
|
+
|
|
|
+ for _, v := range searchList {
|
|
|
+ chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
|
|
|
+ classifyIdList = append(classifyIdList, v.ChartClassifyId)
|
|
|
+ chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
|
|
|
+ }
|
|
|
+ if chartInfoIds != "" {
|
|
|
+ chartInfoIds = strings.Trim(chartInfoIds, ",")
|
|
|
+ //判断是否需要展示英文标识
|
|
|
+ edbList, e := models.GetChartEdbMappingListByChartInfoIds(chartInfoIds)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取图表,指标信息失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range edbList {
|
|
|
+ chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 当前列表中的分类map
|
|
|
+ chartClassifyMap := make(map[int]*models.ChartClassify)
|
|
|
+
|
|
|
+ // 图表分类
|
|
|
+ {
|
|
|
+ chartClassifyList, err := models.GetChartClassifyByIdList(classifyIdList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range chartClassifyList {
|
|
|
+ chartClassifyMap[v.ChartClassifyId] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range searchList {
|
|
|
+ tmp := new(models.ChartInfoMore)
|
|
|
+ tmp.ChartInfo = *v
|
|
|
+ //判断是否需要展示英文标识
|
|
|
+ if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
|
|
|
+ tmp.IsEnChart = services.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图表权限
|
|
|
+
|
|
|
+ finalList = append(finalList, tmp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //新增搜索词记录
|
|
|
+ {
|
|
|
+ searchKeyword := new(models.SearchKeyword)
|
|
|
+ searchKeyword.KeyWord = keyword
|
|
|
+ searchKeyword.CreateTime = time.Now()
|
|
|
+ go models.AddSearchKeyword(searchKeyword)
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, int(total))
|
|
|
+ resp := models.ChartInfoListByEsResp{
|
|
|
+ Paging: page,
|
|
|
+ List: finalList,
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|