zwxi 1 year ago
parent
commit
2670d1759c

+ 89 - 2
controllers/data_manage/smm_api.go

@@ -6,6 +6,7 @@ import (
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"strings"
 )
 
 // SmmIndexList
@@ -29,10 +30,13 @@ func (this *EdbInfoController) SmmApiList() {
 	types := this.GetString("Types")
 	frequency := this.GetString("Frequency")
 	dataState := this.GetString("DataState")
+	keyword := this.GetString("Keyword")
+	indexCodes := this.GetString("IndexCodes")
 	sortType := this.GetString("SortType", "desc")
 	sortParam := this.GetString("SortParam")
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
+
 	var startSize int
 	if pageSize <= 0 {
 		pageSize = utils.PageSize20
@@ -57,19 +61,34 @@ func (this *EdbInfoController) SmmApiList() {
 	if dataState != "" {
 		if dataState == "normal" {
 			condition += " AND (data_state = 'normal' OR data_state = '') "
-			pars = append(pars, dataState)
+			pars = append(pars)
 		} else {
 			condition += " AND data_state = ? "
 			pars = append(pars, dataState)
 		}
 	}
 
+	if keyword != "" {
+		condition += " AND (index_name LIKE ? OR index_code LIKE ?) "
+		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+	}
+
+	if indexCodes != "" {
+		indexCodeArr := strings.Split(indexCodes,",")
+		indexCodeStr := ""
+		for _, v := range indexCodeArr {
+			indexCodeStr += "'" + v + "',"
+		}
+		condition += " AND index_code IN (" + indexCodeStr + ") "
+	}
+
 	sortStr := ``
 	if sortParam != `` {
-		sortStr = fmt.Sprintf("%s %s,modify_time desc ", sortParam, sortType)
+		sortStr = fmt.Sprintf("%s %s,modify_time desc ", utils.PascalToSnake(sortParam), sortType)
 	} else {
 		sortStr = " modify_time desc "
 	}
+
 	total, err := data_manage.GetSmmIndexDataListCount(condition, pars)
 	if err!= nil {
 		br.Msg = "获取指标总数失败"
@@ -97,3 +116,71 @@ func (this *EdbInfoController) SmmApiList() {
 	br.Msg = "获取成功"
 	br.Data = ret
 }
+
+// SmmApiTypeList
+// @Title 有色api数据分类列表
+// @Description 有色api数据分类列表
+// @Success 200 {object} data_manage.SmmClassify
+// @router /smm/api/type/list [get]
+func (this *EdbInfoController) SmmApiTypeList() {
+	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
+	}
+
+	typeList, err := data_manage.GetBaseFromSmmIndexTypeList()
+	if err != nil {
+		br.Msg = "获取指标列表失败"
+		br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
+		return
+	}
+
+	resp := make([]data_manage.TypeListRespItem, 0)
+
+	typeMap := make(map[string]map[string][]string)
+	//type2Map := make(map[string][]string)
+
+	//type2Map := make(map[string]data_manage.TypeListRespItem)
+
+	// 初始化
+	for _, v := range typeList {
+		if _, ok := typeMap[v.Type1];!ok {
+			typeMap[v.Type1] = make(map[string][]string)
+		} else {
+			if _, ok := typeMap[v.Type1][v.Type2];!ok {
+				typeMap[v.Type1][v.Type2] = make([]string, 0)
+			}
+		}
+	}
+
+	for _, v := range typeList {
+		typeMap[v.Type1][v.Type2] = append(typeMap[v.Type1][v.Type2], v.Type3)
+	}
+
+	for type1, type2Map := range typeMap {
+		var item data_manage.TypeListRespItem
+		item.Type = type1
+		for type2, type3List := range type2Map {
+			var child data_manage.TypeListRespItem
+			child.Type = type2
+			for _, type3 := range type3List {
+				child.Child = append(child.Child, data_manage.TypeListRespItem{type3,nil})
+			}
+			item.Child = append(item.Child, child)
+		}
+		resp = append(resp, item)
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 20 - 0
models/data_manage/base_from_smm.go

@@ -387,3 +387,23 @@ type BaseFromSmmIndexItem struct {
 	EndDate            string
 	TypeAll            string
 }
+
+type BaseFromSmmIndexTypeList struct {
+	Type1 string `orm:"column(type_1)"`
+	Type2 string `orm:"column(type_2)"`
+	Type3 string `orm:"column(type_3)"`
+}
+
+
+// GetBaseFromSmmIndexTypeList
+func GetBaseFromSmmIndexTypeList() (list []BaseFromSmmIndexTypeList, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT type_1,type_2, type_3 from base_from_smm_index GROUP BY type_1,type_2,type_3 `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+type TypeListRespItem struct {
+	Type string
+	Child []TypeListRespItem
+}

+ 9 - 0
routers/commentsRouter.go

@@ -3031,6 +3031,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "SmmApiTypeList",
+            Router: `/smm/api/type/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "SmmClassify",

+ 16 - 0
utils/common.go

@@ -28,6 +28,7 @@ import (
 	"strconv"
 	"strings"
 	"time"
+	"unicode"
 )
 
 // 随机数种子
@@ -2193,3 +2194,18 @@ func GetLikeKeywordPars(pars []interface{}, keyword string, num int) (newPars []
 	}
 	return
 }
+
+func PascalToSnake(s string) string {
+	var result []rune
+
+	for i, char := range s {
+		// 在大写字母前插入下划线,除非是第一个字母
+		if i > 0 && unicode.IsUpper(char) {
+			result = append(result, '_')
+		}
+		// 将字母转为小写
+		result = append(result, unicode.ToLower(char))
+	}
+
+	return string(result)
+}