xyxie 1 سال پیش
والد
کامیت
4084ba72f2

+ 4 - 1
controllers/admin.go

@@ -37,9 +37,12 @@ func (this *AdminController) GetBusinessAdmin() {
 		return
 	}
 	list := make([]*system.BusinessAdmin, 0)
+	// todo 查询上传图表的所有用户ID
+
 	//查询机构下的用户
 	admin := new(system.Admin)
-	adminList, err := admin.GetItemsByCondition("", make([]interface{}, 0), []string{}, "")
+	cond := ""
+	adminList, err := admin.GetItemsByCondition(cond, make([]interface{}, 0), []string{}, "")
 	if err != nil {
 		br.Msg = "获取机构用户失败"
 		br.ErrMsg = err.Error()

+ 147 - 0
controllers/chart_info.go

@@ -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
+}

+ 1 - 1
controllers/edb_info.go

@@ -55,7 +55,7 @@ func (this *EdbInfoController) TraceEdbInfo() {
 		return
 	}
 
-	resp, err := services.TraceEdbInfoByEdbInfoId(edbInfo.EdbInfoId, this.SysUser.AdminId)
+	resp, err := services.TraceEdbInfoByEdbInfoId(edbInfo.EdbInfoId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败,Err:" + err.Error()

+ 10 - 9
models/chart_info.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_forum_admin/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"strconv"
 	"strings"
 	"time"
@@ -1164,7 +1165,7 @@ func ChartInfoSearchByKeyWord(keyword string, showSysId int) (searchList []*Char
 }
 
 // ChartInfoSearchByEmptyKeyWord 没有关键字的时候获取默认100条数据
-func ChartInfoSearchByEmptyKeyWord(showSysId int, sourceList []int, noPermissionChartIdList []int, startSize, pageSize int) (total int64, searchList []*ChartInfo, err error) {
+func ChartInfoSearchByEmptyKeyWord(showSysId []int, sourceList []int, startSize, pageSize int) (total int64, searchList []*ChartInfo, err error) {
 	num := len(sourceList)
 	o := orm.NewOrm()
 
@@ -1173,17 +1174,11 @@ func ChartInfoSearchByEmptyKeyWord(showSysId int, sourceList []int, noPermission
 	var basePars []interface{}
 	basePars = append(basePars, sourceList)
 
-	if showSysId > 0 {
-		baseSql += ` AND sys_user_id = ? `
+	if len(showSysId) > 0 {
+		baseSql += ` AND sys_user_id in (` + utils.GetOrmInReplace(len(showSysId)) + `) `
 		basePars = append(basePars, showSysId)
 	}
 
-	lenNoPermissionChartIdList := len(noPermissionChartIdList)
-	if lenNoPermissionChartIdList > 0 {
-		baseSql += ` AND chart_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionChartIdList) + `) `
-		basePars = append(basePars, noPermissionChartIdList)
-	}
-
 	// 查找数量
 	totalSql := " SELECT count(1) as total " + baseSql
 	err = o.Raw(totalSql, basePars).QueryRow(&total)
@@ -2035,3 +2030,9 @@ func GetChartInfoRefreshDataByChartInfoIdSlice(chartInfoIdSlice []string) (baseE
 	}
 	return
 }
+
+// ChartInfoListByEsResp 图表数据Es搜索返回
+type ChartInfoListByEsResp struct {
+	Paging *paging.PagingItem
+	List   []*ChartInfoMore
+}

+ 1 - 0
models/db.go

@@ -33,6 +33,7 @@ func initChart() {
 		new(ChartTheme),
 		new(ChartThemeType),
 		new(ChartInfoLog),
+		new(SearchKeyword),
 	)
 }
 

+ 18 - 0
models/search_keyword.go

@@ -0,0 +1,18 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type SearchKeyword struct {
+	Id         int `orm:"column(id);pk"`
+	KeyWord    string
+	CreateTime time.Time
+}
+
+func AddSearchKeyword(item *SearchKeyword) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -106,6 +106,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "ChartInfoSearchByEs",
+            Router: `/search_by_es`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:EdbInfoController"],
         beego.ControllerComments{
             Method: "TraceEdbInfo",

+ 2 - 2
services/chart_info_elastic.go

@@ -124,7 +124,7 @@ func EsDeleteChartInfo(chartInfoId int) {
 }
 
 // EsSearchChartInfo 搜索图表信息
-func EsSearchChartInfo(keyword string, showSysId int, sourceList []int, noPermissionChartIdList []int, startSize, pageSize int) (list []*models.ChartInfo, total int64, err error) {
-	list, total, err = elastic.SearchChartInfoData(utils.CHART_INDEX_NAME, keyword, showSysId, sourceList, noPermissionChartIdList, startSize, pageSize)
+func EsSearchChartInfo(keyword string, showSysId []int, sourceList []int, startSize, pageSize int) (list []*models.ChartInfo, total int64, err error) {
+	list, total, err = elastic.SearchChartInfoData(utils.CHART_INDEX_NAME, keyword, showSysId, sourceList, startSize, pageSize)
 	return
 }

+ 1 - 1
services/edb_info.go

@@ -234,7 +234,7 @@ func DeleteEdbInfo(edbInfoId int) (err error, errMsg string) {
 }
 
 // TraceEdbInfoByEdbInfoId 指标追溯
-func TraceEdbInfoByEdbInfoId(edbInfoId, sysUserId int) (traceEdbInfo models.TraceEdbInfoResp, err error) {
+func TraceEdbInfoByEdbInfoId(edbInfoId int) (traceEdbInfo models.TraceEdbInfoResp, err error) {
 	edbInfo, err := models.GetEdbInfoById(edbInfoId)
 	if err != nil {
 		return

+ 3 - 13
services/elastic/elastic.go

@@ -899,7 +899,7 @@ func EsDeleteDataV2(indexName, docId string) (err error) {
 }
 
 // SearchChartInfoData 查询es中的图表数据
-func SearchChartInfoData(indexName, keywordStr string, showSysId int, sourceList []int, noPermissionChartIdList []int, from, size int) (list []*models.ChartInfo, total int64, err error) {
+func SearchChartInfoData(indexName, keywordStr string, showSysId []int, sourceList []int, from, size int) (list []*models.ChartInfo, total int64, err error) {
 	list = make([]*models.ChartInfo, 0)
 	defer func() {
 		if err != nil {
@@ -924,9 +924,9 @@ func SearchChartInfoData(indexName, keywordStr string, showSysId int, sourceList
 	mustNotMap := make([]interface{}, 0)
 
 	//指标来源
-	if showSysId > 0 {
+	if len(showSysId) > 0 {
 		mustMap = append(mustMap, map[string]interface{}{
-			"term": map[string]interface{}{
+			"terms": map[string]interface{}{
 				"SysUserId": showSysId,
 				//"Frequency.keyword": "月度",
 			},
@@ -979,16 +979,6 @@ func SearchChartInfoData(indexName, keywordStr string, showSysId int, sourceList
 		"bool": shouldMap,
 	})
 
-	// noPermissionEdbInfoIdList 无权限指标id
-	if len(noPermissionChartIdList) > 0 {
-		mustNotMap = append(mustNotMap, map[string]interface{}{
-			"terms": map[string]interface{}{
-				"ChartInfoId": noPermissionChartIdList,
-				//"Frequency.keyword": "月度",
-			},
-		})
-	}
-
 	queryMap := map[string]interface{}{
 		"query": map[string]interface{}{
 			"bool": map[string]interface{}{