|
@@ -12,6 +12,7 @@ import (
|
|
|
"eta_gn/eta_api/services/data"
|
|
|
"eta_gn/eta_api/services/data/data_manage_permission"
|
|
|
"eta_gn/eta_api/services/data/excel"
|
|
|
+ "eta_gn/eta_api/services/elastic"
|
|
|
"eta_gn/eta_api/services/eta_forum"
|
|
|
"eta_gn/eta_api/utils"
|
|
|
"fmt"
|
|
@@ -2115,6 +2116,9 @@ func (this *ChartInfoController) ChartInfoSearch() {
|
|
|
// @Title 图表模糊搜索(从es获取)
|
|
|
// @Description 图表模糊搜索(从es获取)
|
|
|
// @Param Keyword query string true "图表名称"
|
|
|
+// @Param ChartAuth query int false "图表权限:0-全部;1-我的;2-公共"
|
|
|
+// @Param ChartCollect query int false "图表收藏状态:0-全部;1-已收藏"
|
|
|
+// @Param ClassifyId query int false "父级分类id"
|
|
|
// @Success 200 {object} data_manage.ChartInfo
|
|
|
// @router /chart_info/search_by_es [get]
|
|
|
func (this *ChartInfoController) ChartInfoSearchByEs() {
|
|
@@ -2123,6 +2127,7 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
|
|
|
this.Data["json"] = br
|
|
|
this.ServeJSON()
|
|
|
}()
|
|
|
+ resp := data_manage.ChartInfoListByEsRespV2{}
|
|
|
|
|
|
sysUser := this.SysUser
|
|
|
if sysUser == nil {
|
|
@@ -2144,144 +2149,178 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
|
|
|
startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
|
|
|
keyword := this.GetString("Keyword")
|
|
|
+ if keyword == `` {
|
|
|
+ keyword = this.GetString("KeyWord")
|
|
|
+ }
|
|
|
|
|
|
showSysId := sysUser.AdminId
|
|
|
|
|
|
- var searchList []*data_manage.ChartInfo
|
|
|
+ var searchList []*data_manage.ChartInfoView
|
|
|
var total int64
|
|
|
var err error
|
|
|
|
|
|
- // 获取当前账号的不可见指标
|
|
|
- noPermissionChartIdList := make([]int, 0)
|
|
|
- {
|
|
|
- obj := data_manage.EdbInfoNoPermissionAdmin{}
|
|
|
- confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
|
|
|
- if err != nil && !utils.IsErrNoRow(err) {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- for _, v := range confList {
|
|
|
- noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
|
|
|
+ chartAuth, _ := this.GetInt("ChartAuth", 0) // 图表权限范围,0-全部;1-我的;2-公共
|
|
|
+
|
|
|
+ chartCollect, _ := this.GetInt("ChartCollect", 0) // 图表收藏状态:0-全部;1-已收藏
|
|
|
+
|
|
|
+ // 筛选分类id列表
|
|
|
+ searchClassifyIdList := make([]int, 0)
|
|
|
+ searchPublicClassifyIdList := make([]int, 0)
|
|
|
+ // 父级分类id
|
|
|
+ classifyId, _ := this.GetInt("ClassifyId")
|
|
|
+ if classifyId > 0 {
|
|
|
+ switch chartAuth {
|
|
|
+ case 1: // 1-我的;2-公共
|
|
|
+ allChildClassifyItemList, err, _ := data.GetAllChartChildClassifyByParentId(classifyId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ searchClassifyIdList = append(searchClassifyIdList, classifyId)
|
|
|
+ for _, v := range allChildClassifyItemList {
|
|
|
+ searchClassifyIdList = append(searchClassifyIdList, v.ChartClassifyId)
|
|
|
+ }
|
|
|
+ case 2: // 1-我的;2-公共
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+ allChildClassifyItemList, err, _ := obj.GetAllChildClassifyByParentId(classifyId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ searchPublicClassifyIdList = append(searchPublicClassifyIdList, classifyId)
|
|
|
+ for _, v := range allChildClassifyItemList {
|
|
|
+ searchPublicClassifyIdList = append(searchPublicClassifyIdList, v.ChartPublicClassifyId)
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 是否走ES
|
|
|
- isEs := false
|
|
|
- if keyword != "" {
|
|
|
- searchList, total, err = data.EsSearchChartInfo(keyword, showSysId, []int{utils.CHART_SOURCE_DEFAULT}, noPermissionChartIdList, startSize, pageSize)
|
|
|
- isEs = true
|
|
|
- } else {
|
|
|
- total, searchList, err = data_manage.ChartInfoSearchByEmptyKeyWord(showSysId, []int{utils.CHART_SOURCE_DEFAULT}, noPermissionChartIdList, startSize, pageSize)
|
|
|
- if err != nil && !utils.IsErrNoRow(err) {
|
|
|
+ // 收藏的指标id
|
|
|
+ collectChartInfoIdList := make([]int, 0)
|
|
|
+ if chartCollect == 1 {
|
|
|
+ collectChartInfoIdList, err = data_manage.GetUserAllCollectChartInfoIdList(this.SysUser.AdminId)
|
|
|
+ if err != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
|
|
|
+ br.ErrMsg = "获取收藏指标配置数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- finalList := make([]*data_manage.ChartInfoMore, 0)
|
|
|
- if len(searchList) > 0 {
|
|
|
- // 涉及分类id
|
|
|
- classifyIdList := make([]int, 0)
|
|
|
- // 图表id
|
|
|
- chartInfoIdList := make([]int, 0)
|
|
|
+ sortMap := make(map[string]string)
|
|
|
+ // 如果没有搜索关键词,则默认根据图表创建时间倒序排序
|
|
|
+ if keyword == `` {
|
|
|
+ sortMap["ChartInfoId"] = `desc`
|
|
|
+ }
|
|
|
|
|
|
- chartInfoIds := ""
|
|
|
- chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
|
|
|
+ // 是否走ES
|
|
|
+ total, searchList, err = elastic.SearchChartInfoDataV2(keyword, showSysId, chartAuth, []int{utils.CHART_SOURCE_DEFAULT}, collectChartInfoIdList, searchClassifyIdList, searchPublicClassifyIdList, sortMap, startSize, pageSize)
|
|
|
|
|
|
- for _, v := range searchList {
|
|
|
- chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
|
|
|
- classifyIdList = append(classifyIdList, v.ChartClassifyId)
|
|
|
- chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
|
|
|
+ if len(searchList) <= 0 {
|
|
|
+ searchList = make([]*data_manage.ChartInfoView, 0)
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, int(total))
|
|
|
+ resp.Paging = page
|
|
|
+ resp.List = searchList
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 涉及分类id
|
|
|
+ classifyIdList := make([]int, 0)
|
|
|
+ // 图表id
|
|
|
+ chartInfoIdList := make([]int, 0)
|
|
|
+
|
|
|
+ for _, v := range searchList {
|
|
|
+ classifyIdList = append(classifyIdList, v.ChartClassifyId)
|
|
|
+ chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当前列表中的分类map
|
|
|
+ chartClassifyMap := make(map[int]*data_manage.ChartClassify)
|
|
|
+
|
|
|
+ // 图表分类
|
|
|
+ {
|
|
|
+ chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
- if chartInfoIds != "" {
|
|
|
- chartInfoIds = strings.Trim(chartInfoIds, ",")
|
|
|
- //判断是否需要展示英文标识
|
|
|
- edbList, e := data_manage.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)
|
|
|
- }
|
|
|
+ for _, v := range chartClassifyList {
|
|
|
+ chartClassifyMap[v.ChartClassifyId] = v
|
|
|
}
|
|
|
- // 当前列表中的分类map
|
|
|
- chartClassifyMap := make(map[int]*data_manage.ChartClassify)
|
|
|
+ }
|
|
|
|
|
|
- // 图表分类
|
|
|
- {
|
|
|
- chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- for _, v := range chartClassifyList {
|
|
|
- chartClassifyMap[v.ChartClassifyId] = v
|
|
|
- }
|
|
|
+ // 查询收藏
|
|
|
+ collectEdbMap := make(map[int][]int)
|
|
|
+ collectNameEdbMap := make(map[int][]string)
|
|
|
+ {
|
|
|
+ obj := data_manage.ChartCollect{}
|
|
|
+ collectList, err := obj.GetItemsByUserIdAndChartInfoIdList(this.SysUser.AdminId, chartInfoIdList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取指标信息失败"
|
|
|
+ br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
- // 图表
|
|
|
- if isEs {
|
|
|
- // 当前列表中的图表map
|
|
|
- chartInfoMap := make(map[int]*data_manage.ChartInfo)
|
|
|
- tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- for _, tmpChartInfo := range tmpChartList {
|
|
|
- chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
|
|
|
+ for _, v := range collectList {
|
|
|
+ collectIdList, ok := collectEdbMap[v.ChartInfoId]
|
|
|
+ if !ok {
|
|
|
+ collectIdList = make([]int, 0)
|
|
|
}
|
|
|
- for _, v := range searchList {
|
|
|
- // 图表权限
|
|
|
- chartViewInfo, ok := chartInfoMap[v.ChartInfoId]
|
|
|
- if !ok {
|
|
|
- continue
|
|
|
- }
|
|
|
- v.IsJoinPermission = chartViewInfo.IsJoinPermission
|
|
|
+ collectEdbMap[v.ChartInfoId] = append(collectIdList, v.ChartCollectClassifyId)
|
|
|
+
|
|
|
+ collectNameList, ok := collectNameEdbMap[v.ChartInfoId]
|
|
|
+ if !ok {
|
|
|
+ collectNameList = make([]string, 0)
|
|
|
}
|
|
|
+ collectNameEdbMap[v.ChartInfoId] = append(collectNameList, v.ClassifyName)
|
|
|
}
|
|
|
|
|
|
- // 已授权图表和分类id
|
|
|
- permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUser.AdminId, 0, 0)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图表
|
|
|
+ {
|
|
|
+ // 当前列表中的图表map
|
|
|
+ chartInfoMap := make(map[int]*data_manage.ChartInfo)
|
|
|
+ tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "已授权图表和分类id失败,Err:" + err.Error()
|
|
|
+ br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ for _, tmpChartInfo := range tmpChartList {
|
|
|
+ chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
|
|
|
+ }
|
|
|
for _, v := range searchList {
|
|
|
- tmp := new(data_manage.ChartInfoMore)
|
|
|
- tmp.ChartInfo = *v
|
|
|
- //判断是否需要展示英文标识
|
|
|
- if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
|
|
|
- tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)
|
|
|
+ if collectIdList, ok := collectEdbMap[v.ChartInfoId]; ok {
|
|
|
+ v.CollectClassifyIdList = collectIdList
|
|
|
+ } else {
|
|
|
+ v.CollectClassifyIdList = []int{}
|
|
|
}
|
|
|
|
|
|
- // 图表权限
|
|
|
- if currClassify, ok := chartClassifyMap[v.ChartClassifyId]; ok {
|
|
|
- tmp.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
|
|
|
+ if collectNameList, ok := collectNameEdbMap[v.ChartInfoId]; ok {
|
|
|
+ v.CollectClassifyNameList = collectNameList
|
|
|
+ } else {
|
|
|
+ v.CollectClassifyNameList = []string{}
|
|
|
}
|
|
|
|
|
|
- finalList = append(finalList, tmp)
|
|
|
+ // 图表权限
|
|
|
+ if chartViewInfo, ok := chartInfoMap[v.ChartInfoId]; ok {
|
|
|
+ v.IsJoinPermission = chartViewInfo.IsJoinPermission
|
|
|
+ }
|
|
|
+ v.HaveOperaAuth = true
|
|
|
}
|
|
|
}
|
|
|
- //新增搜索词记录
|
|
|
- {
|
|
|
- searchKeyword := new(data_manage.SearchKeyword)
|
|
|
- searchKeyword.KeyWord = keyword
|
|
|
- searchKeyword.CreateTime = time.Now()
|
|
|
- go data_manage.AddSearchKeyword(searchKeyword)
|
|
|
- }
|
|
|
|
|
|
page := paging.GetPaging(currentIndex, pageSize, int(total))
|
|
|
- resp := data_manage.ChartInfoListByEsResp{
|
|
|
+ resp = data_manage.ChartInfoListByEsRespV2{
|
|
|
Paging: page,
|
|
|
- List: finalList,
|
|
|
+ List: searchList,
|
|
|
}
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|