浏览代码

fix:列表接口添加排序

Roc 11 月之前
父节点
当前提交
7957ae2623

+ 28 - 6
controllers/data_manage/business_data.go

@@ -63,11 +63,19 @@ func (c *EdbBusinessController) List() {
 		c.Data["json"] = br
 		c.ServeJSON()
 	}()
-	pageSize, _ := c.GetInt("PageSize")
-	currentIndex, _ := c.GetInt("CurrentIndex")
-	keywords := c.GetString("Keywords")
-	frequency := c.GetString("Frequency")
-	source, _ := c.GetInt("Source") //分类
+
+	req := &request.BusinessDataListReq{}
+	if e := c.ParseForm(req); e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "参数解析失败, Err: " + e.Error()
+		return
+	}
+
+	pageSize := req.PageSize
+	currentIndex := req.CurrentIndex
+	keywords := req.Keywords
+	frequency := req.Frequency
+	source := req.Source
 
 	var startSize int
 	if pageSize <= 0 {
@@ -113,6 +121,20 @@ func (c *EdbBusinessController) List() {
 		pars = append(pars, source)
 	}
 
+	// 排序, 默认创建时间倒序
+	orderFields := map[int]string{
+		0: data_manage.BaseFromBusinessIndexCols.CreateTime, 1: data_manage.BaseFromBusinessIndexCols.StartDate,
+		2: data_manage.BaseFromBusinessIndexCols.EndDate,
+	}
+	orderType := map[int]string{0: "DESC", 1: "ASC", 2: "DESC"}
+	orderRule := ``
+
+	_, ok1 := orderFields[req.SortField]
+	_, ok2 := orderType[req.SortRule]
+	if ok1 && ok2 {
+		orderRule = fmt.Sprintf("%s %s", orderFields[req.SortField], orderType[req.SortRule])
+	}
+
 	obj := data_manage.BaseFromBusinessIndex{}
 
 	total, err := obj.GetListCount(condition, pars)
@@ -121,7 +143,7 @@ func (c *EdbBusinessController) List() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-	list, err := obj.GetPageItemsByCondition(condition, pars, startSize, pageSize)
+	list, err := obj.GetPageItemsByCondition(condition, pars, orderRule, startSize, pageSize)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()

+ 7 - 2
models/data_manage/base_from_business_index.go

@@ -148,12 +148,17 @@ type BaseFromBusinessIndexItem struct {
 	EdbExist                int    `description:"指标库是否已添加:0-否;1-是"`
 }
 
-func (m *BaseFromBusinessIndex) GetPageItemsByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*BaseFromBusinessIndexItem, err error) {
+func (m *BaseFromBusinessIndex) GetPageItemsByCondition(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (items []*BaseFromBusinessIndexItem, err error) {
 	sql := `select a.*,b.edb_info_id,b.unique_code as edb_unique_code,b.classify_id as edb_classify_id FROM base_from_business_index AS a LEFT JOIN edb_info b on a.index_code=b.edb_code AND b.source=? WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` order by a.base_from_business_index_id desc limit ?,? `
+	if orderRule == `` {
+		sql += ` order by a.base_from_business_index_id desc`
+	} else {
+		sql += ` order by ` + orderRule
+	}
+	sql += ` limit ?,? `
 	o := orm.NewOrmUsingDB("data")
 	_, err = o.Raw(sql, utils.DATA_SOURCE_BUSINESS, pars, startSize, pageSize).QueryRows(&items)
 

+ 2 - 0
models/data_manage/request/business_data.go

@@ -8,6 +8,8 @@ type BusinessDataListReq struct {
 	Source       int    `form:"Source" description:"来源id"`
 	Keywords     string `form:"Keywords" description:"指标ID/指标名称"`
 	ListAll      bool   `form:"ListAll" description:"列表全选"`
+	SortField    int    `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
+	SortRule     int    `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
 }
 
 // BusinessDataBatchAddCheckReq 外部(商家)指标批量添加校验