|
@@ -481,9 +481,9 @@ func (c *EdbPublicController) ListByEs() {
|
|
|
startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
|
|
|
// 获取查询参数
|
|
|
- keyword, searchEdbPublicList, sourceList, edbClassifyIdList, edbTypeList, edbInfoType, edbAuth, sortMap := getSearchPar(req)
|
|
|
+ keyword, searchEdbPublicList, sourceList, edbClassifyIdList, publicClassifyIdList, edbTypeList, edbInfoType, edbAuth, sortMap := data.GetSearchPar(req)
|
|
|
|
|
|
- total, edbInfoList, err := elastic.SearchEdbInfoDataByPublic(keyword, startSize, pageSize, searchEdbPublicList, sourceList, edbClassifyIdList, edbTypeList, edbInfoType, edbAuth, c.SysUser.AdminId, sortMap)
|
|
|
+ total, edbInfoList, err := elastic.SearchEdbInfoDataByPublic(keyword, startSize, pageSize, searchEdbPublicList, sourceList, edbClassifyIdList, publicClassifyIdList, edbTypeList, edbInfoType, edbAuth, c.SysUser.AdminId, sortMap)
|
|
|
if err != nil {
|
|
|
edbInfoList = make([]*data_manage.EdbInfoList, 0)
|
|
|
}
|
|
@@ -565,59 +565,79 @@ func (c *EdbPublicController) AllListByEs() {
|
|
|
}
|
|
|
// 选择所有指标,所以需要通过es获取数据
|
|
|
|
|
|
+ // 选中的指标id列表
|
|
|
edbInfoList := make([]*data_manage.EdbInfoList, 0)
|
|
|
- tmpEdbInfoList, err := getAllEdbInfoListByPublic(req, c.SysUser.AdminId)
|
|
|
|
|
|
- // 如果有过滤指标,那么就过滤吧
|
|
|
- if len(req.NoEdbIdList) > 0 {
|
|
|
- noEdbIdMap := make(map[int]bool)
|
|
|
- for _, v := range req.NoEdbIdList {
|
|
|
- noEdbIdMap[v] = true
|
|
|
+ // 选择所有指标,所以需要通过es获取数据
|
|
|
+ if req.IsSelectAll {
|
|
|
+ tmpEdbInfoList, err := data.GetAllEdbInfoListBySearchPublicEdbReq(req.SearchPublicEdbReq, c.SysUser.AdminId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取指标列表失败!"
|
|
|
+ br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- for _, v := range tmpEdbInfoList {
|
|
|
- if _, ok := noEdbIdMap[v.EdbInfoId]; !ok {
|
|
|
- // 如果不在未选中的指标id列表中,那么就加入到选中的指标id列表
|
|
|
- edbInfoList = append(edbInfoList, v)
|
|
|
+ // 如果有过滤指标,那么就过滤吧
|
|
|
+ if len(req.NoEdbIdList) > 0 {
|
|
|
+ noEdbIdMap := make(map[int]bool)
|
|
|
+ for _, v := range req.NoEdbIdList {
|
|
|
+ noEdbIdMap[v] = true
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range tmpEdbInfoList {
|
|
|
+ if _, ok := noEdbIdMap[v.EdbInfoId]; !ok {
|
|
|
+ // 如果不在未选中的指标id列表中,那么就加入到选中的指标id列表
|
|
|
+ edbInfoList = append(edbInfoList, v)
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ edbInfoList = tmpEdbInfoList
|
|
|
}
|
|
|
- } else {
|
|
|
- edbInfoList = tmpEdbInfoList
|
|
|
- }
|
|
|
|
|
|
- edbInfoListLen := len(edbInfoList)
|
|
|
+ // 因为是ES查找的,所以需要重新查一下指标的信息,主要是为了把是否授权字段找出来
|
|
|
+ if len(edbInfoList) > 0 {
|
|
|
|
|
|
- // 因为是ES查找的,所以需要重新查一下指标的信息,主要是为了把是否授权字段找出来
|
|
|
- if len(edbInfoList) > 0 {
|
|
|
+ edbInfoIdList := make([]int, 0)
|
|
|
+ for _, v := range edbInfoList {
|
|
|
+ v.ConvertToResp()
|
|
|
+ v.EdbNameAlias = v.EdbName
|
|
|
+ v.HaveOperaAuth = true
|
|
|
+ edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
|
|
|
+ }
|
|
|
|
|
|
- edbInfoIdList := make([]int, 0)
|
|
|
- for _, v := range edbInfoList {
|
|
|
- v.ConvertToResp()
|
|
|
- v.EdbNameAlias = v.EdbName
|
|
|
- v.HaveOperaAuth = true
|
|
|
- edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
|
|
|
- }
|
|
|
+ tmpEdbList, err := data_manage.GetEdbInfoByIdList(edbInfoIdList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoMap := make(map[int]*data_manage.EdbInfo)
|
|
|
+ for _, v := range tmpEdbList {
|
|
|
+ edbInfoMap[v.EdbInfoId] = v
|
|
|
+ }
|
|
|
|
|
|
- tmpEdbList, err := data_manage.GetEdbInfoByIdList(edbInfoIdList)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取所有有权限的指标失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- edbInfoMap := make(map[int]*data_manage.EdbInfo)
|
|
|
- for _, v := range tmpEdbList {
|
|
|
- edbInfoMap[v.EdbInfoId] = v
|
|
|
+ for _, v := range edbInfoList {
|
|
|
+ tmpEdbInfo, ok := edbInfoMap[v.EdbInfoId]
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v.IsJoinPermission = tmpEdbInfo.IsJoinPermission
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- for _, v := range edbInfoList {
|
|
|
- tmpEdbInfo, ok := edbInfoMap[v.EdbInfoId]
|
|
|
- if !ok {
|
|
|
- continue
|
|
|
+ } else {
|
|
|
+ // 因为是ES查找的,所以需要重新查一下指标的信息,主要是为了把是否授权字段找出来
|
|
|
+ if len(req.EdbIdList) > 0 {
|
|
|
+ edbInfoList, err = data_manage.GetEdbInfoListByCond(` AND edb_info_id in (?) `, []interface{}{req.EdbIdList})
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
- v.IsJoinPermission = tmpEdbInfo.IsJoinPermission
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ edbInfoListLen := len(edbInfoList)
|
|
|
+
|
|
|
for i := 0; i < edbInfoListLen; i++ {
|
|
|
for j := 0; j < edbInfoListLen; j++ {
|
|
|
if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) &&
|
|
@@ -636,129 +656,3 @@ func (c *EdbPublicController) AllListByEs() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
-
|
|
|
-// getSearchPar
|
|
|
-// @Description: 获取查询参数
|
|
|
-// @author: Roc
|
|
|
-// @datetime 2024-12-05 14:13:25
|
|
|
-// @param req request.SearchPublicEdbReq
|
|
|
-// @return keyword string
|
|
|
-// @return searchEdbPublicList []int
|
|
|
-// @return sourceList []int
|
|
|
-// @return classifyIdList []int
|
|
|
-// @return edbTypeList []int
|
|
|
-// @return edbInfoType int
|
|
|
-// @return edbAuth int
|
|
|
-// @return sortMap map[string]string
|
|
|
-func getSearchPar(req request.SearchPublicEdbReq) (keyword string, searchEdbPublicList, sourceList, classifyIdList, edbTypeList []int, edbInfoType, edbAuth int, sortMap map[string]string) {
|
|
|
- keyword = req.Keyword
|
|
|
- keyword = strings.TrimSpace(keyword) //移除字符串首尾空格
|
|
|
-
|
|
|
- //指标来源
|
|
|
- sourceList = req.SourceList
|
|
|
-
|
|
|
- // 选择的分类
|
|
|
- classifyIdList = req.ClassifyIdList
|
|
|
-
|
|
|
- // 指标公开状态:1:未公开,2:已提交;3:已公开。可多选,默认是未公开
|
|
|
- edbPublicList := req.EdbPublicList
|
|
|
- if len(edbPublicList) <= 0 {
|
|
|
- edbPublicList = []int{1}
|
|
|
- }
|
|
|
-
|
|
|
- edbInfoType = 0 // 普通指标
|
|
|
- edbTypeList = []int{2} // 普通指标中的计算指标
|
|
|
- edbAuth = 1 // 选择范围是:只有我的指标
|
|
|
-
|
|
|
- searchEdbPublicList = make([]int, 0) // 0:全部,1:未公开,2:已提交;3:已公开
|
|
|
- if len(edbPublicList) > 0 && !utils.InArrayByInt(edbPublicList, 0) {
|
|
|
- // 不含全部
|
|
|
- for _, v := range edbPublicList {
|
|
|
- switch v {
|
|
|
- case 1: // 未公开
|
|
|
- searchEdbPublicList = append(searchEdbPublicList, utils.EdbPublicDefault)
|
|
|
- case 2: // 已提交
|
|
|
- searchEdbPublicList = append(searchEdbPublicList, utils.EdbPublicCommit, utils.EdbPublicReject)
|
|
|
- case 3: // 已公开
|
|
|
- searchEdbPublicList = append(searchEdbPublicList, utils.EdbPublicSuccess)
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- searchEdbPublicList = []int{0, 1, 2, 3}
|
|
|
- }
|
|
|
-
|
|
|
- sortMap = make(map[string]string)
|
|
|
- // 如果没有搜索关键词,则默认根据指标编码倒序排序
|
|
|
- if keyword == `` {
|
|
|
- sortMap["EdbInfoId"] = `desc`
|
|
|
- }
|
|
|
-
|
|
|
- return
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-// getAllEdbInfoListByPublic
|
|
|
-// @Description: 获取所有的指标列表
|
|
|
-// @author: Roc
|
|
|
-// @datetime 2024-12-04 15:43:14
|
|
|
-// @param req request.SetEdbChartPermissionReq
|
|
|
-// @param userId int
|
|
|
-// @return edbInfoIdList []*data_manage.EdbInfoList
|
|
|
-// @return err error
|
|
|
-func getAllEdbInfoListByPublic(req request.AllSearchPublicEdbReq, userId int) (edbInfoList []*data_manage.EdbInfoList, err error) {
|
|
|
- // 获取查询参数
|
|
|
- keyword, searchEdbPublicList, sourceList, edbClassifyIdList, edbTypeList, edbInfoType, edbAuth, sortMap := getSearchPar(req.SearchPublicEdbReq)
|
|
|
-
|
|
|
- _, edbInfoList, err = getAllEdbInfoDataByPublic(keyword, 1, searchEdbPublicList, sourceList, edbClassifyIdList, edbTypeList, edbInfoType, edbAuth, userId, sortMap)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// getAllEdbInfoDataByShared
|
|
|
-// @Description: 获取所有的指标列表(设置公开的时候)
|
|
|
-// @author: Roc
|
|
|
-// @datetime 2024-12-04 15:27:53
|
|
|
-// @param keyword string
|
|
|
-// @param currPage int
|
|
|
-// @param edbShare int
|
|
|
-// @param sourceList []int
|
|
|
-// @param classifyIdList []int
|
|
|
-// @param edbTypeList []int
|
|
|
-// @param edbInfoType int
|
|
|
-// @param edbAuth int
|
|
|
-// @param sysUserId int
|
|
|
-// @param sortMap map[string]string
|
|
|
-// @return total int64
|
|
|
-// @return list []*data_manage.EdbInfoList
|
|
|
-// @return err error
|
|
|
-func getAllEdbInfoDataByPublic(keyword string, currPage int, searchEdbPublicList, sourceList, classifyIdList, edbTypeList []int, edbInfoType, edbAuth, sysUserId int, sortMap map[string]string) (total int64, list []*data_manage.EdbInfoList, err error) {
|
|
|
- // 每页获取数据的数量
|
|
|
- pageSize := 5000
|
|
|
- var startSize int
|
|
|
- if currPage <= 0 {
|
|
|
- currPage = 1
|
|
|
- }
|
|
|
- startSize = paging.StartIndex(currPage, pageSize)
|
|
|
-
|
|
|
- total, list, err = elastic.SearchEdbInfoDataByPublic(keyword, startSize, pageSize, searchEdbPublicList, sourceList, classifyIdList, edbTypeList, edbInfoType, edbAuth, sysUserId, sortMap)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- page := paging.GetPaging(currPage, pageSize, int(total))
|
|
|
- if !page.IsEnd {
|
|
|
- _, nextList, tmpErr := getAllEdbInfoDataByPublic(keyword, page.NextIndex, searchEdbPublicList, sourceList, classifyIdList, edbTypeList, edbInfoType, edbAuth, sysUserId, sortMap)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- list = append(list, nextList...)
|
|
|
- }
|
|
|
-
|
|
|
- return
|
|
|
-}
|