浏览代码

Merge branch 'feature/edb_chart_page' of eta_server/eta_hub into debug

鲍自强 5 月之前
父节点
当前提交
292318a6ad
共有 4 个文件被更改,包括 168 次插入14 次删除
  1. 59 12
      controllers/chart.go
  2. 47 0
      controllers/edb.go
  3. 31 1
      models/data_manage/chart_info.go
  4. 31 1
      models/data_manage/edb_info.go

+ 59 - 12
controllers/chart.go

@@ -5,6 +5,8 @@ import (
 	"eta/eta_hub/models/data_manage"
 	"eta/eta_hub/services"
 	"eta/eta_hub/utils"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // ChartController 图表
@@ -92,16 +94,61 @@ func (this *ChartController) List() {
 	}()
 
 	classifyId, _ := this.GetInt("ClassifyId")
-	if classifyId <= 0 {
-		br.Msg = "参数有误"
-		return
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	cond := ` AND source = ?`
+	pars := make([]interface{}, 0)
+	pars = append(pars, utils.CHART_SOURCE_DEFAULT)
+	if classifyId > 0 {
+		cond += ` AND chart_classify_id = ?`
+		pars = append(pars, classifyId)
 	}
 
 	chartOb := new(data_manage.ChartInfo)
-	cond := ` AND chart_classify_id = ? AND source = ?`
-	pars := make([]interface{}, 0)
-	pars = append(pars, classifyId, utils.CHART_SOURCE_DEFAULT)
-	charts, e := chartOb.GetItemsByCondition(cond, pars, []string{}, "sort ASC")
+	if pageSize > 0 {
+		if currentIndex <= 0 {
+			currentIndex = 1
+		}
+		startSize := utils.StartIndex(currentIndex, pageSize)
+		total, err := chartOb.GetItemTotal(cond, pars)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "ChartList GetItemTotal err: " + err.Error()
+			return
+		}
+		resp := new(data_manage.ChartInfoItemResp)
+		if total == 0 {
+			resp.List = make([]*data_manage.ChartInfoItem, 0)
+			resp.Paging = paging.GetPaging(currentIndex, pageSize, 0)
+
+			br.Data = resp
+			br.Ret = 200
+			br.Msg = "获取成功"
+			return
+		}
+		charts, e := chartOb.GetItemsPageByCondition(cond, pars, []string{}, "", startSize, pageSize)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "ChartList GetItemsPageByCondition err: " + e.Error()
+			return
+		}
+
+		list := make([]*data_manage.ChartInfoItem, 0)
+		for _, v := range charts {
+			list = append(list, data_manage.FormatChartInfo2Item(v))
+		}
+		page := paging.GetPaging(currentIndex, pageSize, total)
+		resp.List = list
+		resp.Paging = page
+
+		br.Data = resp
+		br.Ret = 200
+		br.Msg = "获取成功"
+		return
+	}
+
+	charts, e := chartOb.GetItemsByCondition(cond, pars, []string{}, "sort ASC, create_time DESC")
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "ChartList GetItemsByCondition err: " + e.Error()
@@ -117,11 +164,11 @@ func (this *ChartController) List() {
 	br.Msg = "获取成功"
 }
 
-//Detail
-//@Title 图表详情
-//@Description 图表详情(这个接口的意义不大, 拿到数据也没啥用=_=!)
-//@Success 200 {object} models.Report
-//@router /detail [get]
+// Detail
+// @Title 图表详情
+// @Description 图表详情(这个接口的意义不大, 拿到数据也没啥用=_=!)
+// @Success 200 {object} models.Report
+// @router /detail [get]
 func (this *ChartController) Detail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {

+ 47 - 0
controllers/edb.go

@@ -7,6 +7,8 @@ import (
 	"eta/eta_hub/services/data"
 	"eta/eta_hub/utils"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // EdbController 指标
@@ -128,6 +130,8 @@ func (this *EdbController) List() {
 	}()
 
 	classifyId, _ := this.GetInt("ClassifyId")
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
 
 	edbOb := new(data_manage.EdbInfo)
 	cond := ``
@@ -136,6 +140,49 @@ func (this *EdbController) List() {
 		cond += ` AND classify_id = ?`
 		pars = append(pars, classifyId)
 	}
+	var startSize int
+	if pageSize > 0 {
+		if currentIndex <= 0 {
+			currentIndex = 1
+		}
+		startSize = utils.StartIndex(currentIndex, pageSize)
+		total, e := edbOb.GetItemsTotal(cond, pars)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "EdbList GetItemsTotal err: " + e.Error()
+			return
+		}
+		resp := new(data_manage.EdbInfoItemResp)
+		if total == 0 {
+			resp.List = make([]*data_manage.EdbInfoItem, 0)
+			resp.Paging = paging.GetPaging(currentIndex, pageSize, 0)
+			br.Data = resp
+			br.Ret = 200
+			br.Msg = "获取成功"
+			return
+		}
+		edbList, e := edbOb.GetItemsPageByCondition(cond, pars, []string{}, "create_time DESC, sort ASC", startSize, pageSize)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "EdbList GetItemsPageByCondition err: " + e.Error()
+			return
+		}
+
+		list := make([]*data_manage.EdbInfoItem, 0)
+		for _, v := range edbList {
+			list = append(list, data_manage.FormatEdbInfo2Item(v))
+		}
+		page := paging.GetPaging(currentIndex, pageSize, total)
+
+		resp.List = list
+		resp.Paging = page
+
+		br.Data = resp
+		br.Ret = 200
+		br.Msg = "获取成功"
+		return
+	}
+
 	edbList, e := edbOb.GetItemsByCondition(cond, pars, []string{}, "sort ASC, create_time DESC")
 	if e != nil {
 		br.Msg = "获取失败"

+ 31 - 1
models/data_manage/chart_info.go

@@ -3,9 +3,11 @@ package data_manage
 import (
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // ChartInfo 图库主表
@@ -57,6 +59,29 @@ func (m *ChartInfo) GetItemsByCondition(cond string, pars []interface{}, fieldAr
 	return
 }
 
+func (m *ChartInfo) GetItemTotal(cond string, pars []interface{}) (total int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT COUNT(*) FROM chart_info WHERE 1=1 %s`, cond)
+	err = o.Raw(sql, pars).QueryRow(&total)
+	return
+}
+
+func (m *ChartInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
+	sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 func (m *ChartInfo) GetItemByCode(code string) (item *ChartInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM chart_info WHERE unique_code = ? LIMIT 1`)
@@ -93,6 +118,11 @@ type ChartInfoItem struct {
 	ModifyTime        string `description:"更新时间"`
 }
 
+type ChartInfoItemResp struct {
+	List   []*ChartInfoItem   `description:"图表信息"`
+	Paging *paging.PagingItem `description:"分页信息"`
+}
+
 func FormatChartInfo2Item(origin *ChartInfo) (item *ChartInfoItem) {
 	if origin == nil {
 		return

+ 31 - 1
models/data_manage/edb_info.go

@@ -3,9 +3,11 @@ package data_manage
 import (
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 type EdbInfo struct {
@@ -69,6 +71,29 @@ func (m *EdbInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr
 	return
 }
 
+func (m *EdbInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*EdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM edb_info WHERE 1=1 %s %s`, fields, cond, order)
+	sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+func (m *EdbInfo) GetItemsTotal(cond string, pars []interface{}) (total int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT COUNT(*) FROM edb_info WHERE 1=1 %s`, cond)
+	err = o.Raw(sql, pars).QueryRow(&total)
+	return
+}
+
 func (m *EdbInfo) GetItemByUniCode(code string) (item *EdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM edb_info WHERE unique_code = ? LIMIT 1`)
@@ -114,6 +139,11 @@ type EdbInfoItem struct {
 	//EdbData      []*EdbDataItem `description:"指标数据"`
 }
 
+type EdbInfoItemResp struct {
+	List   []*EdbInfoItem     `description:"指标列表"`
+	Paging *paging.PagingItem `description:"分页"`
+}
+
 func FormatEdbInfo2Item(origin *EdbInfo) (item *EdbInfoItem) {
 	if origin == nil {
 		return