Эх сурвалжийг харах

新增ETA图表位置接口

hsun 1 жил өмнө
parent
commit
d5de8a1950

+ 152 - 0
controllers/data_manage/my_chart.go

@@ -1810,3 +1810,155 @@ func generateMyChartClassifyName(myChartClassifyName string, count int, chartCla
 	}
 	return
 }
+
+// Locate
+// @Title ETA图表位置
+// @Description ETA图表位置
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   ChartClassifyId   query   int  true       "分类id"
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
+// @Success 200 {object} data_manage.ChartListResp
+// @router /chart/locate [get]
+func (this *MyChartController) Locate() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	classifyId, _ := this.GetInt("ChartClassifyId")
+	keyword := this.GetString("KeyWord")
+	mine, _ := this.GetBool("IsShowMe") // 只看我的
+
+	condition := ` AND source = ?`
+	pars := make([]interface{}, 0)
+	pars = append(pars, utils.CHART_SOURCE_DEFAULT) // 普通图表
+	orderRule := ``
+	{
+		if keyword != "" {
+			k := fmt.Sprint("%", keyword, "%")
+			condition += ` AND chart_name LIKE ?`
+			pars = append(pars, k)
+		}
+		if mine {
+			condition += ` AND sys_user_id = ?`
+			pars = append(pars, sysUser.AdminId)
+		}
+		if classifyId > 0 {
+			strIds, e := data_manage.GetChartClassify(classifyId)
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取图表分类信息失败, GetChartClassify Err: " + e.Error()
+				return
+			}
+			if strIds == "" {
+				br.Msg = "获取失败"
+				br.ErrMsg = "图表分类为空"
+				return
+			}
+			condition += fmt.Sprintf(` AND chart_classify_id IN (%s)`, strIds)
+			orderRule = `chart_classify_id`
+		}
+	}
+
+	// 当前账号的不可见指标
+	{
+		ids := make([]int, 0)
+		obj := data_manage.EdbInfoNoPermissionAdmin{}
+		conf, e := obj.GetAllChartListByAdminId(sysUser.AdminId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取不可见指标配置失败, Err: " + e.Error()
+			return
+		}
+		for _, v := range conf {
+			ids = append(ids, v.ChartInfoId)
+		}
+		if len(ids) > 0 {
+			condition += fmt.Sprintf(` AND chart_info_id NOT IN (%s)`, utils.GetOrmInReplace(len(ids)))
+			pars = append(pars, ids)
+		}
+	}
+
+	// 获取图表
+	list := make([]*data_manage.ChartInfoLocate, 0)
+	charts, e := data_manage.GetChartItems(condition, pars, orderRule)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表列表失败, Err: " + e.Error()
+		return
+	}
+	if len(charts) == 0 {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = list
+		return
+	}
+
+	// 二级分类
+	classifies, e := data_manage.GetSecondaryChartClassifyWithSort()
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表分类排序失败, Err: " + e.Error()
+		return
+	}
+	classifyIdName := make(map[int]string)
+	for _, c := range classifies {
+		classifyIdName[c.ChartClassifyId] = c.ChartClassifyName
+	}
+
+	// 分类ID大于0时, 优先分类排序, 其次图表排序
+	if classifyId > 0 {
+		for _, cl := range classifies {
+			for _, ch := range charts {
+				if ch.ChartClassifyId != cl.ChartClassifyId {
+					continue
+				}
+				v := new(data_manage.ChartInfoLocate)
+				v.ChartInfoId = ch.ChartInfoId
+				v.ChartName = ch.ChartName
+				v.ChartType = ch.ChartType
+				v.ChartClassifyId = ch.ChartClassifyId
+				v.ChartClassifyName = cl.ChartClassifyName
+				v.UniqueCode = ch.UniqueCode
+				v.Source = ch.Source
+				list = append(list, v)
+			}
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = list
+		return
+	}
+
+	// 分类ID为0时
+	for _, ch := range charts {
+		v := new(data_manage.ChartInfoLocate)
+		v.ChartInfoId = ch.ChartInfoId
+		v.ChartName = ch.ChartName
+		v.ChartType = ch.ChartType
+		v.ChartClassifyId = ch.ChartClassifyId
+		v.ChartClassifyName = classifyIdName[v.ChartClassifyId]
+		v.UniqueCode = ch.UniqueCode
+		v.Source = ch.Source
+		list = append(list, v)
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}

+ 14 - 1
models/data_manage/chart_classify.go

@@ -254,4 +254,17 @@ func GetChartClassifyAllFromETA() (items []*ChartClassifyItems, err error) {
 	sql := ` SELECT * FROM chart_classify WHERE parent_id<>0 AND source = 1 order by sort asc,chart_classify_id asc`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
-}
+}
+
+// GetSecondaryChartClassifyWithSort 获取二级分类-根据父级分类排序
+func GetSecondaryChartClassifyWithSort() (items []*ChartClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_classify AS a
+			LEFT JOIN (
+				SELECT chart_classify_id AS parent_classify_id, sort AS parent_sort FROM chart_classify WHERE parent_id = 0 AND source = 1
+			) AS b ON a.parent_id = b.parent_classify_id
+			WHERE parent_id > 0 AND source = 1
+			ORDER BY b.parent_sort, a.sort`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 13 - 0
models/data_manage/chart_info.go

@@ -1689,3 +1689,16 @@ type RollingCorrelationChartDataResp struct {
 	XDateTimeValue []string `description:"滚动相关性图的x轴数据,日期数据"`
 	YDataList      []YData  `description:"滚动相关性图的y轴数据"`
 }
+
+// ChartInfoLocate 图表位置响应体
+type ChartInfoLocate struct {
+	ChartInfoId       int    `description:"图表ID"`
+	ChartName         string `description:"图表名称"`
+	ChartType         int    `description:"图表类型"`
+	ChartClassifyId   int    `description:"图表分类id"`
+	ChartClassifyName string `description:"图表分类名称"`
+	UniqueCode        string `description:"图表唯一编码"`
+	Source            int    `description:"1:ETA图库;2:商品价格曲线;3:相关性图表"`
+	//PrevChartInfoId   int    `description:"上一张图表ID"`
+	//NextChartInfoId   int    `description:"下一张图表ID"`
+}

+ 15 - 0
models/data_manage/my_chart.go

@@ -845,3 +845,18 @@ func GetRelationChartListCountByCondition(condition string, pars []interface{})
 	err = o.Raw(sql, pars).QueryRow(&count)
 	return
 }
+
+func GetChartItems(cond string, pars []interface{}, orderRule string) (item []*ChartInfoView, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_info WHERE 1=1 `
+	if cond != "" {
+		sql += cond
+	}
+	order := ` ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = fmt.Sprintf(` ORDER BY %s`, orderRule)
+	}
+	sql += order
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -205,6 +205,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_ETA_mobile_api/controllers/data_manage:MyChartController"] = append(beego.GlobalControllerRouter["hongze/hongze_ETA_mobile_api/controllers/data_manage:MyChartController"],
+        beego.ControllerComments{
+            Method: "Locate",
+            Router: `/chart/locate`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_ETA_mobile_api/controllers/data_manage:MyChartController"] = append(beego.GlobalControllerRouter["hongze/hongze_ETA_mobile_api/controllers/data_manage:MyChartController"],
         beego.ControllerComments{
             Method: "ChartRecommendList",