|
@@ -0,0 +1,380 @@
|
|
|
+package data_manage
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "eta_gn/eta_api/controllers"
|
|
|
+ "eta_gn/eta_api/models"
|
|
|
+ "eta_gn/eta_api/models/data_manage"
|
|
|
+ "eta_gn/eta_api/models/data_manage/request"
|
|
|
+ "eta_gn/eta_api/models/data_manage/response"
|
|
|
+ "eta_gn/eta_api/services/data/data_manage_permission"
|
|
|
+ "eta_gn/eta_api/services/elastic"
|
|
|
+ "eta_gn/eta_api/utils"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+type EdbInfoShareController struct {
|
|
|
+ controllers.BaseAuthController
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (c *EdbInfoShareController) UserList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoId, _ := c.GetInt("EdbInfoId")
|
|
|
+ if edbInfoId <= 0 {
|
|
|
+ br.Msg = "参数错误"
|
|
|
+ br.ErrMsg = "参数错误"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _, err := data_manage.GetEdbInfoById(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ resp := response.EdbInfoShareUserResp{}
|
|
|
+
|
|
|
+ obj := data_manage.EdbInfoShare{}
|
|
|
+ list, err := obj.GetListByEdbInfoId(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = `获取失败`
|
|
|
+ br.ErrMsg = `获取失败:` + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.List = list
|
|
|
+ if len(list) > 0 {
|
|
|
+ resp.ShareType = list[0].ShareType
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (c *EdbInfoShareController) Save() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req request.SetEdbInfoShareReq
|
|
|
+ err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := response.EdbInfoShareUserResp{}
|
|
|
+
|
|
|
+ obj := data_manage.EdbInfoShare{}
|
|
|
+ err = obj.SaveEdbInfoShare([]int{req.EdbInfoId}, req.UserIdList, req.ShareType)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = `保存失败`
|
|
|
+ br.ErrMsg = `保存失败:` + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "保存成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (c *EdbInfoShareController) EdbInfoFilterByEs() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ pageSize, _ := c.GetInt("PageSize")
|
|
|
+ currentIndex, _ := c.GetInt("CurrentIndex")
|
|
|
+
|
|
|
+ var total int64
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ keyWord := c.GetString("KeyWord")
|
|
|
+ keyWord = strings.TrimSpace(keyWord)
|
|
|
+ filterSource, _ := c.GetInt("FilterSource")
|
|
|
+ if filterSource <= 0 {
|
|
|
+ filterSource = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ source, _ := c.GetInt("Source")
|
|
|
+
|
|
|
+ frequency := c.GetString("Frequency")
|
|
|
+
|
|
|
+ isAddPredictEdb, _ := c.GetBool("IsAddPredictEdb")
|
|
|
+
|
|
|
+ edbType, _ := c.GetInt("EdbType", 0)
|
|
|
+
|
|
|
+ var edbInfoList []*data_manage.EdbInfoList
|
|
|
+ var err error
|
|
|
+
|
|
|
+
|
|
|
+ noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(c.SysUser.AdminId, utils.EDB_INFO_TYPE, edbType)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ isEs := false
|
|
|
+ if keyWord != "" {
|
|
|
+ var keyWordArr []string
|
|
|
+ keyWordArr = append(keyWordArr, keyWord)
|
|
|
+
|
|
|
+ newKeyWord := strings.Split(keyWord, " ")
|
|
|
+ keyWordArr = append(keyWordArr, newKeyWord...)
|
|
|
+
|
|
|
+
|
|
|
+ if !isAddPredictEdb {
|
|
|
+ total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 0, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, edbType)
|
|
|
+ } else {
|
|
|
+
|
|
|
+ total, edbInfoList, err = elastic.SearchAddPredictEdbInfoData(utils.DATA_INDEX_NAME, keyWord, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, startSize, pageSize, edbType)
|
|
|
+ }
|
|
|
+ isEs = true
|
|
|
+ } else {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ condition += ` AND edb_info_type = ? `
|
|
|
+ pars = append(pars, 0)
|
|
|
+
|
|
|
+
|
|
|
+ lenNoPermissionEdbInfoIdList := len(noPermissionEdbInfoIdList)
|
|
|
+ if lenNoPermissionEdbInfoIdList > 0 {
|
|
|
+ condition += ` AND edb_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionEdbInfoIdList) + `) `
|
|
|
+ pars = append(pars, noPermissionEdbInfoIdList)
|
|
|
+ }
|
|
|
+
|
|
|
+ lenNoPermissionEdbClassifyIdList := len(noPermissionEdbClassifyIdList)
|
|
|
+ if lenNoPermissionEdbClassifyIdList > 0 {
|
|
|
+ condition += ` AND classify_id not in (` + utils.GetOrmInReplace(lenNoPermissionEdbClassifyIdList) + `) `
|
|
|
+ pars = append(pars, noPermissionEdbClassifyIdList)
|
|
|
+ }
|
|
|
+
|
|
|
+ switch filterSource {
|
|
|
+ case 2:
|
|
|
+ condition += ` AND frequency='月度' `
|
|
|
+ case 3:
|
|
|
+ condition += ` AND frequency <> '日度' `
|
|
|
+ case 4:
|
|
|
+ condition += ` AND edb_type = 1 `
|
|
|
+ case 5:
|
|
|
+ condition += ` AND source = 6 `
|
|
|
+ case 6:
|
|
|
+ condition += ` AND frequency != ? `
|
|
|
+ pars = append(pars, "年度")
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if frequency != "" {
|
|
|
+ condition += ` AND frequency = ? `
|
|
|
+ pars = append(pars, frequency)
|
|
|
+ }
|
|
|
+
|
|
|
+ if source > 0 && filterSource != 5 {
|
|
|
+ condition += ` AND source = ? `
|
|
|
+ pars = append(pars, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ if isAddPredictEdb {
|
|
|
+ condition += ` AND frequency in ("日度","周度","月度") `
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if edbType > 0 {
|
|
|
+ condition += ` AND edb_type = ? `
|
|
|
+ pars = append(pars, edbType)
|
|
|
+ }
|
|
|
+
|
|
|
+ total, edbInfoList, err = data_manage.GetEdbInfoFilterList(condition, pars, startSize, pageSize)
|
|
|
+ }
|
|
|
+ if err != nil {
|
|
|
+ edbInfoList = make([]*data_manage.EdbInfoList, 0)
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, int(total))
|
|
|
+
|
|
|
+ edbInfoListLen := len(edbInfoList)
|
|
|
+
|
|
|
+ classifyIdList := make([]int, 0)
|
|
|
+ for i := 0; i < edbInfoListLen; i++ {
|
|
|
+ edbInfoList[i].ConvertToResp()
|
|
|
+ edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName
|
|
|
+ classifyIdList = append(classifyIdList, edbInfoList[i].ClassifyId)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ classifyMap := make(map[int]*data_manage.EdbClassify)
|
|
|
+ if edbInfoListLen > 0 {
|
|
|
+ classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range classifyList {
|
|
|
+ classifyMap[v.ClassifyId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(c.SysUser.AdminId, 0, 0)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if isEs {
|
|
|
+ edbInfoIdList := make([]int, 0)
|
|
|
+ for i := 0; i < edbInfoListLen; i++ {
|
|
|
+ edbInfoIdList = append(edbInfoIdList, edbInfoList[i].EdbInfoId)
|
|
|
+ tmpEdbInfo := edbInfoList[i]
|
|
|
+ if currClassify, ok := classifyMap[tmpEdbInfo.ClassifyId]; ok {
|
|
|
+ edbInfoList[i].HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfo.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfo.EdbInfoId, tmpEdbInfo.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 i := 0; i < edbInfoListLen; i++ {
|
|
|
+ tmpEdbInfo, ok := edbInfoMap[edbInfoList[i].EdbInfoId]
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ edbInfoList[i].IsJoinPermission = tmpEdbInfo.IsJoinPermission
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for i := 0; i < edbInfoListLen; i++ {
|
|
|
+ tmpEdbInfoItem := edbInfoList[i]
|
|
|
+ if currClassify, ok := classifyMap[tmpEdbInfoItem.ClassifyId]; ok {
|
|
|
+ edbInfoList[i].HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfoItem.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfoItem.EdbInfoId, tmpEdbInfoItem.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < edbInfoListLen; i++ {
|
|
|
+ for j := 0; j < edbInfoListLen; j++ {
|
|
|
+ if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) &&
|
|
|
+ (edbInfoList[i].EdbInfoId != edbInfoList[j].EdbInfoId) &&
|
|
|
+ !(strings.Contains(edbInfoList[i].EdbName, edbInfoList[i].SourceName)) {
|
|
|
+ edbInfoList[i].EdbName = edbInfoList[i].EdbName + "(" + edbInfoList[i].SourceName + ")"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ searchKeyword := new(data_manage.SearchKeyword)
|
|
|
+ searchKeyword.KeyWord = keyWord
|
|
|
+ searchKeyword.CreateTime = time.Now()
|
|
|
+ go data_manage.AddSearchKeyword(searchKeyword)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ respList := make([]*data_manage.EdbInfoList, 0)
|
|
|
+ for _, v := range edbInfoList {
|
|
|
+ if v.HaveOperaAuth {
|
|
|
+ respList = append(respList, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := data_manage.EdbInfoFilterDataResp{
|
|
|
+ Paging: page,
|
|
|
+ List: respList,
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|