Browse Source

新增关键词替换方法

hsun 2 months ago
parent
commit
ee2324d09c

+ 69 - 62
models/data_manage/chart_info.go

@@ -6,6 +6,7 @@ import (
 	"eta/eta_api/models/mgo"
 	"eta/eta_api/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -450,6 +451,11 @@ type EdbDataList struct {
 	Value         float64 `description:"数据值"`
 }
 
+func (e *EdbDataList) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+	return
+}
+
 // GetEdbDataList
 // @Description: 获取指标的数据(日期正序返回)
 // @author: Roc
@@ -567,14 +573,14 @@ type EdbDataListByUniqueCode struct {
 	Value         float64 `description:"数据值"`
 }
 
-func GetEdbDataLunarList(endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
-	tableName := "edb_data_quarter"
-	sql := `SELECT edb_data_id,edb_info_id,data_time,TRUNCATE(value,2) AS value,data_timestamp FROM %s WHERE edb_info_id=? AND data_time>=? AND data_time<=? ORDER BY data_time ASC `
-	sql = fmt.Sprintf(sql, tableName)
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Raw(sql, endInfoId, startDate, endDate).Find(&list).Error
-	return
-}
+//func GetEdbDataLunarList(endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+//	tableName := "edb_data_quarter"
+//	sql := `SELECT edb_data_id,edb_info_id,data_time,TRUNCATE(value,2) AS value,data_timestamp FROM %s WHERE edb_info_id=? AND data_time>=? AND data_time<=? ORDER BY data_time ASC `
+//	sql = fmt.Sprintf(sql, tableName)
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Raw(sql, endInfoId, startDate, endDate).Find(&list).Error
+//	return
+//}
 
 // GetEdbDataListMinAndMax
 // @Description: 根据条件数据库中获取指标数据最小值和最大值
@@ -636,6 +642,7 @@ func getEdbDataListMinAndMaxByMysql(source, subSource, edbInfoId int, startDate,
 		sql += condition
 	}
 
+	sql = utils.ReplaceDriverKeywords("", sql)
 	err = o.Raw(sql, pars...).Row().Scan(&minData, &maxData)
 	return
 }
@@ -687,60 +694,60 @@ func getEdbDataListMinAndMaxByMongo(source, subSource, edbInfoId int, startDate,
 }
 
 type ChartEdbInfoMapping struct {
-	EdbInfoId           int     `description:"指标id"`
-	SourceName          string  `description:"来源名称"`
-	Source              int     `description:"来源id"`
-	SubSource           int     `description:"来源id"`
-	EdbCode             string  `description:"指标编码"`
-	EdbName             string  `description:"指标名称"`
-	EdbAliasName        string  `description:"指标名称(别名)"`
-	EdbNameEn           string  `description:"英文指标名称"`
-	EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
-	EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Frequency           string  `description:"频率"`
-	FrequencyEn         string  `description:"英文频率"`
-	Unit                string  `description:"单位"`
-	UnitEn              string  `description:"英文单位"`
-	StartDate           string  `description:"起始日期"`
-	EndDate             string  `description:"终止日期"`
-	ModifyTime          string  `description:"指标最后更新时间"`
-	ChartEdbMappingId   int     `description:"图表指标id"`
-	ChartInfoId         int     `description:"图表id"`
-	MaxData             float64 `description:"上限"`
-	MinData             float64 `description:"下限"`
-	IsOrder             bool    `description:"true:正序,false:逆序"`
-	IsAxis              int     `description:"1:左轴,0:右轴"`
-	EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
-	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
-	LeadValue           int     `description:"领先值"`
-	LeadUnit            string  `description:"领先单位"`
-	LeadUnitEn          string  `description:"领先英文单位"`
-	ChartStyle          string  `description:"图表类型"`
-	ChartColor          string  `description:"颜色"`
-	PredictChartColor   string  `description:"预测数据的颜色"`
-	ChartWidth          float64 `description:"线条大小"`
-	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
-	LatestDate          string  `description:"数据最新日期"`
-	LatestValue         float64 `description:"数据最新值"`
-	MoveLatestDate      string  `description:"移动后的数据最新日期"`
-	UniqueCode          string  `description:"指标唯一编码"`
-	MinValue            float64 `json:"-" description:"最小值"`
-	MaxValue            float64 `json:"-" description:"最大值"`
-	DataList            interface{}
-	IsNullData          bool    `json:"-" description:"是否空数据"`
-	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
-	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
-	ClassifyId          int     `description:"分类id"`
-	SubSourceName       string  `description:"子数据来源名称"`
-	IndicatorCode       string  `description:"指标代码"`
-	IsConvert           int     `description:"是否数据转换 0不转 1转"`
-	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue        float64 `description:"数据转换值"`
-	ConvertUnit         string  `description:"数据转换单位"`
-	ConvertEnUnit       string  `description:"数据转换单位"`
-	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth       bool    `description:"是否有数据权限,默认:false"`
-	UniqueFlag          string  `description:"唯一标识(与唯一编码不是一个东西)"`
+	EdbInfoId           int         `description:"指标id"`
+	SourceName          string      `description:"来源名称"`
+	Source              int         `description:"来源id"`
+	SubSource           int         `description:"来源id"`
+	EdbCode             string      `description:"指标编码"`
+	EdbName             string      `description:"指标名称"`
+	EdbAliasName        string      `description:"指标名称(别名)"`
+	EdbNameEn           string      `description:"英文指标名称"`
+	EdbAliasNameEn      string      `description:"英文指标名称(别名)"`
+	EdbType             int         `description:"指标类型:1:基础指标,2:计算指标"`
+	Frequency           string      `description:"频率"`
+	FrequencyEn         string      `description:"英文频率"`
+	Unit                string      `description:"单位"`
+	UnitEn              string      `description:"英文单位"`
+	StartDate           string      `description:"起始日期"`
+	EndDate             string      `description:"终止日期"`
+	ModifyTime          string      `description:"指标最后更新时间"`
+	ChartEdbMappingId   int         `description:"图表指标id"`
+	ChartInfoId         int         `description:"图表id"`
+	MaxData             float64     `description:"上限"`
+	MinData             float64     `description:"下限"`
+	IsOrder             bool        `description:"true:正序,false:逆序"`
+	IsAxis              int         `description:"1:左轴,0:右轴"`
+	EdbInfoType         int         `description:"1:标准指标,0:领先指标"`
+	EdbInfoCategoryType int         `description:"0:普通指标,1:预测指标"`
+	LeadValue           int         `description:"领先值"`
+	LeadUnit            string      `description:"领先单位"`
+	LeadUnitEn          string      `description:"领先英文单位"`
+	ChartStyle          string      `description:"图表类型"`
+	ChartColor          string      `description:"颜色"`
+	PredictChartColor   string      `description:"预测数据的颜色"`
+	ChartWidth          float64     `description:"线条大小"`
+	ChartType           int         `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
+	LatestDate          string      `description:"数据最新日期"`
+	LatestValue         float64     `description:"数据最新值"`
+	MoveLatestDate      string      `description:"移动后的数据最新日期"`
+	UniqueCode          string      `description:"指标唯一编码"`
+	MinValue            float64     `gorm:"-" json:"-" description:"最小值"`
+	MaxValue            float64     `gorm:"-" json:"-" description:"最大值"`
+	DataList            interface{} `gorm:"-"`
+	IsNullData          bool        `gorm:"-" json:"-" description:"是否空数据"`
+	MappingSource       int         `description:"1:ETA图库;2:商品价格曲线"`
+	RegionType          string      `description:"交易所来源,海外还是国内" json:"-"`
+	ClassifyId          int         `description:"分类id"`
+	SubSourceName       string      `description:"子数据来源名称"`
+	IndicatorCode       string      `description:"指标代码"`
+	IsConvert           int         `description:"是否数据转换 0不转 1转"`
+	ConvertType         int         `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64     `description:"数据转换值"`
+	ConvertUnit         string      `description:"数据转换单位"`
+	ConvertEnUnit       string      `description:"数据转换单位"`
+	IsJoinPermission    int         `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth       bool        `description:"是否有数据权限,默认:false"`
+	UniqueFlag          string      `description:"唯一标识(与唯一编码不是一个东西)"`
 }
 
 type QuarterData struct {

+ 1 - 0
models/data_manage/chart_theme/chart_theme_default_data.go

@@ -58,6 +58,7 @@ func (m *ChartThemeDefaultData) Update(cols []string) (err error) {
 // @return err error
 func GetChartThemeDefaultDataItemList(endInfoId int, startDate string) (list []*data_manage.EdbDataList, err error) {
 	sql := `SELECT edb_data_id,edb_info_id,data_time,value,data_timestamp FROM chart_theme_default_data WHERE edb_info_id=? `
+	sql = utils.ReplaceDriverKeywords("", sql)
 	var pars []interface{}
 	if startDate != "" {
 		sql += ` AND data_time>=? `

+ 4 - 4
models/target.go

@@ -242,10 +242,10 @@ func GetEdbinfoListCount(condition string, pars []interface{}, mobile string, ro
 }
 
 type EdbinfoItem struct {
-	TradeCode    string  `orm:"column(TRADE_CODE);pk" description:"指标code"`
-	SecName      string  `orm:"column(SEC_NAME);" description:"指标名称"`
-	Unit         string  `orm:"column(UNIT);" description:"单位"`
-	Remark       string  `orm:"column(REMARK);" description:"备注"`
+	TradeCode    string  `gorm:"column:TRADE_CODE;primaryKey" orm:"column(TRADE_CODE);pk" description:"指标code"`
+	SecName      string  `gorm:"column:SEC_NAME" orm:"column(SEC_NAME);" description:"指标名称"`
+	Unit         string  `gorm:"column:UNIT" orm:"column(UNIT);" description:"单位"`
+	Remark       string  `gorm:"column:REMARK" orm:"column(REMARK);" description:"备注"`
 	Frequency    string  `description:"频度"`
 	ClassifyId   int     `description:"分类id"`
 	ClassifyName string  `description:"分类名称"`

+ 22 - 0
utils/sql.go

@@ -3,6 +3,7 @@ package utils
 import (
 	"errors"
 	"fmt"
+	"regexp"
 )
 
 type Driver string
@@ -64,3 +65,24 @@ func NeedDateOrTimeFormat(driver string) bool {
 	}
 	return false
 }
+
+func ReplaceDriverKeywords(driver string, sql string) string {
+	dbDriver, _ := getDriverInstance(driver)
+	rules := map[Driver]map[string]string{
+		DM: {
+			"admin": `"admin"`,
+			"value": `"value"`,
+		},
+	}
+	replacements, ok := rules[dbDriver]
+	if !ok {
+		return sql
+	}
+	for keyword, replace := range replacements {
+		// 仅替换单独的单词,复合单词含关键词不管
+		pattern := fmt.Sprintf(`\b%s\b`, regexp.QuoteMeta(keyword))
+		re := regexp.MustCompile(pattern)
+		sql = re.ReplaceAllString(sql, replace)
+	}
+	return sql
+}