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

Merge remote-tracking branch 'origin/dm'

Roc 2 сар өмнө
parent
commit
1f1488da31
100 өөрчлөгдсөн 3886 нэмэгдсэн , 3675 устгасан
  1. 16 0
      global/global.go
  2. 146 0
      global/initDb.go
  3. 5 1
      go.mod
  4. 10 2
      go.sum
  5. 2 0
      main.go
  6. 7 25
      models/admin.go
  7. 6 3
      models/admin_operate_record.go
  8. 5 4
      models/ai_predict_model/ai_predict_model_index.go
  9. 5 119
      models/business_conf.go
  10. 5 216
      models/classify.go
  11. 37 30
      models/data_manage/base_from_changes_visitors_covid.go
  12. 77 55
      models/data_manage/base_from_eia_steo.go
  13. 22 11
      models/data_manage/base_from_gie.go
  14. 81 35
      models/data_manage/base_from_gpr_risk.go
  15. 81 35
      models/data_manage/base_from_icpi.go
  16. 47 32
      models/data_manage/base_from_mysteel_chemical_index.go
  17. 78 38
      models/data_manage/base_from_smm.go
  18. 34 16
      models/data_manage/base_from_smm_index.go
  19. 23 28
      models/data_manage/base_from_ths_hf_index.go
  20. 30 12
      models/data_manage/base_from_trade_cffex.go
  21. 29 29
      models/data_manage/base_from_trade_dalian.go
  22. 62 32
      models/data_manage/base_from_trade_guangzhou.go
  23. 26 12
      models/data_manage/base_from_trade_ine.go
  24. 30 12
      models/data_manage/base_from_trade_shanghai.go
  25. 26 12
      models/data_manage/base_from_trade_zhengzhou.go
  26. 96 35
      models/data_manage/base_from_usda_fas.go
  27. 6 13
      models/data_manage/business_sys_interaction_log.go
  28. 72 61
      models/data_manage/chart_edb_mapping.go
  29. 19 10
      models/data_manage/chart_info.go
  30. 30 14
      models/data_manage/com_trade_data.go
  31. 11 14
      models/data_manage/com_trade_index.go
  32. 9 8
      models/data_manage/cross_variety/chart_info_cross_variety.go
  33. 4 4
      models/data_manage/cross_variety/chart_tag_variety.go
  34. 9 9
      models/data_manage/edb_classify.go
  35. 1 1
      models/data_manage/edb_data_base.go
  36. 41 32
      models/data_manage/edb_data_calculate.go
  37. 22 22
      models/data_manage/edb_data_calculate_ljztbpj.go
  38. 22 22
      models/data_manage/edb_data_calculate_zjpj.go
  39. 208 211
      models/data_manage/edb_data_cffex.go
  40. 176 185
      models/data_manage/edb_data_dl.go
  41. 37 30
      models/data_manage/edb_data_gl.go
  42. 65 74
      models/data_manage/edb_data_lt.go
  43. 67 71
      models/data_manage/edb_data_lz.go
  44. 156 165
      models/data_manage/edb_data_manual.go
  45. 42 47
      models/data_manage/edb_data_pb.go
  46. 6 10
      models/data_manage/edb_data_quarter.go
  47. 202 211
      models/data_manage/edb_data_sh.go
  48. 202 211
      models/data_manage/edb_data_shfe.go
  49. 34 39
      models/data_manage/edb_data_ths.go
  50. 40 45
      models/data_manage/edb_data_wind.go
  51. 141 156
      models/data_manage/edb_data_ys.go
  52. 176 185
      models/data_manage/edb_data_zz.go
  53. 100 54
      models/data_manage/edb_info.go
  54. 36 27
      models/data_manage/edb_info_calculate_mapping.go
  55. 14 13
      models/data_manage/edb_info_relation.go
  56. 13 5
      models/data_manage/edb_info_update_log.go
  57. 8 16
      models/data_manage/edb_refresh/edb_refresh_config.go
  58. 11 23
      models/data_manage/edb_refresh/edb_refresh_default_config.go
  59. 8 17
      models/data_manage/edb_refresh/edb_refresh_mapping.go
  60. 6 5
      models/data_manage/edb_refresh/edb_refresh_source.go
  61. 4 6
      models/data_manage/edb_source.go
  62. 21 15
      models/data_manage/edb_update_log.go
  63. 6 8
      models/data_manage/excel/excel_edb_mapping.go
  64. 5 4
      models/data_manage/excel/excel_info.go
  65. 25 28
      models/data_manage/factor_edb_series_chart_mapping.go
  66. 24 28
      models/data_manage/factor_edb_series_mapping.go
  67. 15 20
      models/data_manage/future_good/chart_info_future_good_profit.go
  68. 32 20
      models/data_manage/future_good/future_good_edb_info.go
  69. 4 6
      models/data_manage/holiday.go
  70. 27 13
      models/data_manage/meeting_probabilities.go
  71. 5 5
      models/data_manage/ppt_v2_save_log.go
  72. 4 3
      models/data_manage/report_save_log.go
  73. 133 95
      models/data_manage/trade_position_analysis.go
  74. 146 35
      models/data_manage/trade_position_analysis_guangzhou.go
  75. 7 6
      models/data_manage/user_record.go
  76. 77 76
      models/data_source/data_source.go
  77. 11 11
      models/db.go
  78. 4 11
      models/edbinfo_send_msg_record.go
  79. 34 18
      models/english_report.go
  80. 10 8
      models/fe_calendar/fe_calendar_matter.go
  81. 10 9
      models/index_notice.go
  82. 33 125
      models/report.go
  83. 16 27
      models/report/report_chapter_permission_mapping.go
  84. 13 22
      models/report_chapter.go
  85. 8 4
      models/report_state_record.go
  86. 8 25
      models/sandbox/sandbox.go
  87. 10 10
      models/smart_report.go
  88. 13 42
      models/wx_template_msg.go
  89. 81 92
      services/data/data_pb.go
  90. 5 1
      services/data/data_source.go
  91. 70 81
      services/data/data_wind.go
  92. 1 1
      services/data/edb_info_sync.go
  93. 7 2
      services/edb_refresh.go
  94. 1 1
      services/edb_relation.go
  95. 4 0
      services/english_report.go
  96. 10 1
      services/eta_bridge/handle_data.go
  97. 5 5
      services/eta_bridge/xy.go
  98. 6 6
      services/index_notice.go
  99. 7 0
      services/report.go
  100. 4 1
      services/smart_report.go

+ 16 - 0
global/global.go

@@ -0,0 +1,16 @@
+package global
+
+import (
+	_ "github.com/go-sql-driver/mysql"
+	"gorm.io/gorm"
+)
+
+var (
+	DbMap      map[string]*gorm.DB //数据库连接配置
+	DEFAULT_DB *gorm.DB            //默认数据库连接配置
+)
+
+func init() {
+	// 初始化数据库连接
+	InitDb()
+}

+ 146 - 0
global/initDb.go

@@ -0,0 +1,146 @@
+package global
+
+import (
+	"database/sql/driver"
+	_ "dm"
+	dm "dmgorm2"
+	"eta/eta_task/utils"
+	"fmt"
+	"gorm.io/driver/mysql"
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"gorm.io/gorm/schema"
+	"io"
+	"log"
+	"os"
+	"strings"
+	"time"
+)
+
+type LocalTime time.Time
+
+// InitDb
+// @Description: 数据库初始化
+func InitDb() {
+	dbMap := make(map[string]*gorm.DB)
+
+	//开启日志
+	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
+	if utils.RunMode == `dev` {               // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
+		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
+	}
+	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
+		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
+		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
+		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
+		Colorful:                  false,                  //是否颜色输出
+	})
+
+	// 默认库
+	connectDb(utils.MYSQL_URL, utils.DbNameIndex, newLogger, dbMap, true)
+
+	// 报告库
+	connectDb(utils.MYSQL_URL_RDDP, utils.DbNameReport, newLogger, dbMap, false)
+	// 手工数据库
+	connectDb(utils.MYSQL_URL_EDB, utils.DbNameManualIndex, newLogger, dbMap, false)
+	// 指标库
+	connectDb(utils.MYSQL_URL_DATA, utils.DbNameIndex, newLogger, dbMap, false)
+	// 钢联库
+	connectDb(utils.MYSQL_URL_GL, utils.DbNameGL, newLogger, dbMap, false)
+	// master库
+	connectDb(utils.MYSQL_URL_ETA, utils.DbNameMaster, newLogger, dbMap, false)
+	// 用户主库
+	if utils.MYSQL_WEEKLY_URL != `` && (utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox || utils.BusinessCode == utils.BusinessCodeDebug) {
+		connectDb(utils.MYSQL_WEEKLY_URL, utils.DbNameWeekly, newLogger, dbMap, false)
+	}
+
+	//全局赋值数据库链接
+	DbMap = dbMap
+
+}
+
+// connectDb
+// @Description: 达梦数据库连接
+// @param dsn
+// @param aliasName
+// @param newLogger
+// @param dbMap
+// @param isDefault
+func connectDb(dsn, aliasName string, newLogger logger.Interface, dbMap map[string]*gorm.DB, isDefault bool) {
+	//fmt.Println("dsn:", dsn, "  ==  ;aliasName:", aliasName)
+	if dsn == `` {
+		return
+	}
+
+	var dialector gorm.Dialector
+	switch utils.DbDriverName {
+	case utils.DbDriverByMysql:
+		if !strings.Contains(dsn, `parseTime`) {
+			dsn += `&parseTime=true`
+		}
+		dialector = mysql.Open(dsn)
+	case utils.DbDriverByDm:
+		dialector = dm.Open(dsn)
+	default:
+		panic(fmt.Errorf("数据库 链接异常,错误的数据库类型,数据库:%s", utils.DbDriverName))
+	}
+	db, err := gorm.Open(dialector, &gorm.Config{
+		Logger: newLogger,
+		NamingStrategy: schema.NamingStrategy{
+			SingularTable: true, // 表示使用单数表名,启用该选项后,GORM 将不会对表名进行复数化处理
+		},
+	})
+	if err != nil {
+		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
+		panic(fmt.Errorf("数据库 链接异常,数据库:%s;Err:%s", aliasName, err))
+	}
+	//创建连接池
+	sqlDB, err := db.DB()
+	if err != nil {
+		//global.LOG.Errorf("达梦 创建连接池失败,数据库:default;Err:", err)
+		panic(fmt.Errorf("数据库 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	dbMap[aliasName] = db
+
+	//默认数据库连接
+	if isDefault {
+		DEFAULT_DB = db
+	}
+
+	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
+	sqlDB.SetMaxIdleConns(50)
+
+	// SetMaxOpenConns 设置打开数据库连接的最大数量。
+	sqlDB.SetMaxOpenConns(100)
+
+	// SetConnMaxLifetime 设置了连接可复用的最大时间。
+	sqlDB.SetConnMaxLifetime(10 * time.Minute)
+
+}
+
+func (t *LocalTime) MarshalJSON() ([]byte, error) {
+	tTime := time.Time(*t)
+	if tTime.IsZero() {
+		return []byte("\"\""), nil
+	}
+	return []byte(fmt.Sprintf("\"%v\"", tTime.Format("2006-01-02 15:04:05"))), nil
+}
+
+func (t LocalTime) Value() (driver.Value, error) {
+	var zeroTime time.Time
+	tlt := time.Time(t)
+	//判断给定时间是否和默认零时间的时间戳相同
+	if tlt.UnixNano() == zeroTime.UnixNano() {
+		return nil, nil
+	}
+	return tlt, nil
+}
+
+func (t *LocalTime) Scan(v interface{}) error {
+	if value, ok := v.(time.Time); ok {
+		*t = LocalTime(value)
+		return nil
+	}
+	return fmt.Errorf("can not convert %v to timestamp", v)
+}

+ 5 - 1
go.mod

@@ -14,9 +14,10 @@ require (
 	github.com/olivere/elastic/v7 v7.0.32
 	github.com/rdlucklib/rdluck_tools v1.0.3
 	github.com/shopspring/decimal v1.3.1
-	github.com/tealeg/xlsx v1.0.5
 	golang.org/x/net v0.21.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
+	gorm.io/driver/mysql v1.5.7
+	gorm.io/gorm v1.25.12
 )
 
 require (
@@ -25,7 +26,10 @@ require (
 	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
 	github.com/golang/protobuf v1.5.3 // indirect
+	github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
 	github.com/hashicorp/golang-lru v0.5.4 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.5 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/kr/text v0.2.0 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect

+ 10 - 2
go.sum

@@ -78,6 +78,7 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
 github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
 github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -92,6 +93,10 @@ github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZH
 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -191,8 +196,6 @@ github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKs
 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
 github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
-github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
-github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
 github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
 github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
 github.com/ylywyn/jpush-api-go-client v0.0.0-20190906031852-8c4466c6e369/go.mod h1:Nv7wKD2/bCdKUFNKcJRa99a+1+aSLlCRJFriFYdjz/I=
@@ -293,3 +296,8 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
+gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
+gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
+gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=

+ 2 - 0
main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	_ "eta/eta_task/models"
 	_ "eta/eta_task/routers"
 	"eta/eta_task/services"
 	"eta/eta_task/services/alarm_msg"
@@ -20,6 +21,7 @@ func main() {
 		web.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 	}
 	go services.Task()
+
 	//services.TaskInit()
 	web.BConfig.RecoverFunc = Recover
 	web.Run()

+ 7 - 25
models/admin.go

@@ -1,9 +1,12 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+)
 
 type Admin struct {
-	AdminId      int
+	AdminId      int    `gorm:"column:admin_id;primaryKey;autoIncrement"`
 	AdminName    string `description:"系统用户名称"`
 	RealName     string `description:"系统用户姓名"`
 	Password     string `description:"密码"`
@@ -20,28 +23,7 @@ type Admin struct {
 
 func GetAdminByAdminId(adminId int) (item *Admin, err error) {
 	sql := `SELECT * FROM admin WHERE admin_id=? `
-	err = orm.NewOrm().Raw(sql, adminId).QueryRow(&item)
-	return
-}
-
-type AdminView struct {
-	AdminId      int
-	AdminName    string `description:"系统用户名称"`
-	RealName     string `description:"系统用户姓名"`
-	Password     string `description:"密码"`
-	Mobile       string `description:"手机号"`
-	RoleId       int    `description:"角色id"`
-	RoleName     string `description:"角色名称"`
-	RoleTypeCode string `description:"角色编码"`
-	DepartmentId int    `description:"部门id"`
-	GroupId      int    `description:"分组id"`
-	GroupName    string `description:"分组名称"`
-	Authority    int    `description:"管理权限,0:无,1:部门负责人,2:小组负责人"`
-	Position     string `description:"职位"`
-}
-
-func GetAdminList() (list []*AdminView, err error) {
-	sql := `SELECT * FROM admin `
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&list)
+	sql = utils.ReplaceDriverKeywords("", sql)
+	err = global.DbMap[utils.DbNameWeekly].Raw(sql, adminId).First(&item).Error
 	return
 }

+ 6 - 3
models/admin_operate_record.go

@@ -1,11 +1,14 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+)
 
 // ClearAdminOperateRecord 清理用户操作日志
 func ClearAdminOperateRecord(date string) (err error) {
-	o := orm.NewOrmUsingDB("eta")
+	o := global.DbMap[utils.DbNameMaster]
 	sql := `DELETE FROM admin_operate_record WHERE create_time <= ?`
-	_, err = o.Raw(sql, date).Exec()
+	err = o.Exec(sql, date).Error
 	return
 }

+ 5 - 4
models/ai_predict_model/ai_predict_model_index.go

@@ -1,15 +1,16 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // AiPredictModelIndex AI预测模型标的
 type AiPredictModelIndex struct {
-	AiPredictModelIndexId int       `orm:"column(ai_predict_model_index_id);pk"`
+	AiPredictModelIndexId int       `gorm:"column:ai_predict_model_index_id;primaryKey;autoIncrement"`
 	IndexName             string    `description:"标的名称"`
 	IndexCode             string    `description:"自生成的指标编码"`
 	ClassifyId            int       `description:"分类ID"`
@@ -76,7 +77,7 @@ func (m *AiPredictModelIndex) Cols() AiPredictModelIndexCols {
 }
 
 func (m *AiPredictModelIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AiPredictModelIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -86,6 +87,6 @@ func (m *AiPredictModelIndex) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 5 - 119
models/business_conf.go

@@ -1,11 +1,10 @@
 package models
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
-	"strings"
 	"time"
 )
 
@@ -27,7 +26,7 @@ const (
 
 // BusinessConf 商户配置表
 type BusinessConf struct {
-	Id         int    `orm:"column(id);pk"`
+	Id         int    `gorm:"column:id;primaryKey;autoIncrement"`
 	ConfKey    string `description:"配置Key"`
 	ConfVal    string `description:"配置值"`
 	ValType    int    `description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
@@ -40,101 +39,13 @@ func (m *BusinessConf) TableName() string {
 	return "business_conf"
 }
 
-func (m *BusinessConf) PrimaryId() string {
-	return "id"
-}
-
-func (m *BusinessConf) Create() (err error) {
-	o := orm.NewOrmUsingDB("eta")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.Id = int(id)
-	return
-}
-
-func (m *BusinessConf) CreateMulti(items []*BusinessConf) (err error) {
-	if len(items) == 0 {
-		return
-	}
-	o := orm.NewOrmUsingDB("eta")
-	_, err = o.InsertMulti(len(items), items)
-	return
-}
-
-func (m *BusinessConf) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("eta")
-	_, err = o.Update(m, cols...)
-	return
-}
-
-func (m *BusinessConf) Del() (err error) {
-	o := orm.NewOrmUsingDB("eta")
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.Id).Exec()
-	return
-}
-
-func (m *BusinessConf) GetItemById(id int) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
-	return
-}
-
-func (m *BusinessConf) GetItemByCondition(condition string, pars []interface{}) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&item)
-	return
-}
-
-func (m *BusinessConf) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("eta")
-	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
-	return
-}
-
-func (m *BusinessConf) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
-	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 %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
-	return
-}
-
-func (m *BusinessConf) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
-	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 %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
-	return
-}
-
 // GetBusinessConf 获取商家配置
 func GetBusinessConf() (list map[string]string, err error) {
 	list = make(map[string]string)
 
 	var items []*BusinessConf
-	o := orm.NewOrmUsingDB("eta")
 	sql := `SELECT * FROM business_conf`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql).Find(&items).Error
 	if err != nil {
 		return
 	}
@@ -149,35 +60,10 @@ func GetBusinessConf() (list map[string]string, err error) {
 	return
 }
 
-// BusinessConfUpdate 更新配置
-type BusinessConfUpdate struct {
-	ConfKey string
-	ConfVal string
-}
-
-// UpdateBusinessConfMulti 批量修改配置
-func UpdateBusinessConfMulti(items []BusinessConfUpdate) (err error) {
-	o := orm.NewOrmUsingDB("eta")
-	p, err := o.Raw("UPDATE business_conf SET conf_val = ? WHERE conf_key = ?").Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close()
-	}()
-	for _, v := range items {
-		_, err = p.Exec(v.ConfVal, v.ConfKey)
-		if err != nil {
-			return
-		}
-	}
-	return
-}
-
 func (m *BusinessConf) GetItemByConfKey(key string) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
+	o := global.DbMap[utils.DbNameMaster]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE conf_key = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, key).QueryRow(&item)
+	err = o.Raw(sql, key).First(&item).Error
 	return
 }
 

+ 5 - 216
models/classify.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 type Classify struct {
-	Id             int       `orm:"column(id);pk"`
+	Id             int       `gorm:"column:id;primaryKey;autoIncrement"`
 	ClassifyName   string    `description:"分类名称"`
 	Sort           int       `json:"-"`
 	ParentId       int       `description:"父级分类id"`
@@ -26,220 +26,9 @@ type Classify struct {
 	IsMassSend     int       `description:"1:群发,0:非群发"`
 }
 
-type ClassifyAddReq struct {
-	ClassifyName   string `description:"分类名称"`
-	ParentId       int    `description:"父级分类id,没有父级分类传0"`
-	Abstract       string `description:"栏目简介"`
-	Descript       string `description:"分享描述"`
-	ReportAuthor   string `description:"栏目作者"`
-	AuthorDescript string `description:"作者简介"`
-	ColumnImgUrl   string `description:"栏目配图"`
-	ReportImgUrl   string `description:"报告配图"`
-	HeadImgUrl     string `description:"头部banner"`
-	AvatarImgUrl   string `description:"头像"`
-	HomeImgUrl     string `description:"首页配图"`
-	ClassifyLabel  string `description:"分类标签"`
-}
-
-func GetClassifyByName(classifyName string, parentId int) (item *Classify, err error) {
-	sql := `SELECT * FROM classify WHERE classify_name=? AND parent_id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sql, classifyName, parentId).QueryRow(&item)
-	return
-}
-
 func GetClassifyById(classifyId int) (item *Classify, err error) {
 	sql := `SELECT * FROM classify WHERE id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sql, classifyId).QueryRow(&item)
-	return
-}
-
-// 添加分类
-func AddClassify(item *Classify) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Insert(item)
-	return
-}
-
-func GetReportCountByClassifyId(classifyId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT COUNT(1) AS count FROM report WHERE classify_id_second=? `
-	err = o.Raw(sql, classifyId).QueryRow(&count)
-	return
-}
-
-func GetClassifySubCountByClassifyId(classifyId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT COUNT(1) as num FROM classify AS a
-        INNER JOIN report AS b ON a.id=b.classify_id_second
-        WHERE a.parent_id=? `
-	err = o.Raw(sql, classifyId).QueryRow(&count)
-	return
-}
-
-func GetClassifySubCountByParentId(classifyId int) (count int, err error) {
-	sqlCount := `
-	SELECT COUNT(1) as num FROM classify AS a
-	WHERE a.parent_id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sqlCount, classifyId).QueryRow(&count)
-	return
-}
-
-// 删除分类
-func DeleteClassify(classifyId int) (err error) {
-	sql := `DELETE FROM classify WHERE id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, classifyId).Exec()
-	if err != nil {
-		return
-	}
-	deleteImgSql := `DELETE FROM banner WHERE classify_id=? `
-	_, err = o.Raw(deleteImgSql, classifyId).Exec()
-	return
-}
-
-// classifyName, abstract, descript string, parentId, classifyId int
-// 修改分类
-func EditClassify(req *EditClassifyReq) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `UPDATE classify SET classify_name = ?,abstract=?, parent_id= ?,descript=?,report_author=?,author_descript=?,column_img_url=?,head_img_url=?,avatar_img_url=?,report_img_url=?,home_img_url=?,classify_label=?, modify_time= NOW() WHERE id = ? `
-	_, err = o.Raw(sql, req.ClassifyName, req.Abstract, req.ParentId, req.Descript, req.ReportAuthor, req.AuthorDescript, req.ColumnImgUrl, req.HeadImgUrl, req.AvatarImgUrl, req.ReportImgUrl, req.HomeImgUrl, req.ClassifyLabel, req.ClassifyId).Exec()
-	return
-}
-
-//获取父级分类
-
-func ParentClassify() (items []*Classify, err error) {
-	sql := `SELECT * FROM classify WHERE parent_id=0 order by id desc `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-// 根据id获取分类详情
-func FindByIdClassify(classifyId int) (item *Classify, err error) {
-	sql := `SELECT * FROM classify WHERE id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sql, classifyId).QueryRow(&item)
-	return
-}
-
-type ClassifyList struct {
-	Id            int       `orm:"column(id);pk"`
-	ClassifyName  string    `description:"分类名称"`
-	Sort          int       `json:"-"`
-	ParentId      int       `description:"父级分类id"`
-	CreateTime    time.Time `description:"创建时间"`
-	ModifyTime    time.Time `description:"修改时间"`
-	Abstract      string    `description:"简介"`
-	Descript      string    `description:"描述"`
-	ClassifyLabel string    `description:"分类标签"`
-	Child         []*Classify
-}
-
-type ClassifyListResp struct {
-	List   []*ClassifyList
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// 获取分类列表
-func GetClassifyList(startSize, pageSize int, keyWord, companyType string) (items []*ClassifyList, err error) {
-	sql := ``
-	companyTypeSqlStr := ``
-	if companyType == "ficc" {
-		companyTypeSqlStr = " AND id != 40 AND parent_id != 40 "
-	} else if companyType == "权益" {
-		companyTypeSqlStr = " AND (id = 40 or parent_id = 40)  "
-	}
-	if keyWord != "" {
-		sql = `SELECT * FROM (
-                   SELECT * FROM classify
-                   WHERE parent_id=0 ` + companyTypeSqlStr + `  AND classify_name LIKE '%` + keyWord + `%'
-                   UNION
-                   SELECT * FROM classify
-                   WHERE id IN(SELECT parent_id FROM classify
-                   WHERE parent_id>0 ` + companyTypeSqlStr + `  AND classify_name LIKE '%` + keyWord + `%')
-                   )AS t
-                   ORDER BY create_time ASC
-                   LIMIT ?,? `
-	} else {
-		sql = `SELECT * FROM classify WHERE parent_id=0 ` + companyTypeSqlStr + ` ORDER BY create_time ASC LIMIT ?,? `
-	}
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
-	return
-}
-
-func GetClassifyListCount(keyWord, companyType string) (count int, err error) {
-	sqlCount := ``
-
-	companyTypeSqlStr := ``
-	if companyType == "ficc" {
-		companyTypeSqlStr = " AND id != 40 AND parent_id != 40 "
-	} else if companyType == "权益" {
-		companyTypeSqlStr = " AND (id = 40 or parent_id = 40)  "
-	}
-	if keyWord != "" {
-		sqlCount = `SELECT  COUNT(1) AS count FROM (
-               SELECT * FROM classify
-               WHERE parent_id=0 ` + companyTypeSqlStr + `  AND classify_name LIKE '%` + keyWord + `%'
-               UNION
-               SELECT * FROM classify
-               WHERE id IN(SELECT parent_id FROM classify
-               WHERE parent_id>0 ` + companyTypeSqlStr + `  AND classify_name LIKE '%` + keyWord + `%')
-               )AS t `
-
-	} else {
-		sqlCount = `SELECT COUNT(1) AS count FROM classify WHERE parent_id=0 ` + companyTypeSqlStr
-	}
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sqlCount).QueryRow(&count)
-	return
-}
-
-type CheckDeleteClassifyReq struct {
-	ClassifyId int `description:"分类ID"`
-}
-
-type CheckDeleteClassifyResp struct {
-	Code int    `description:"编码:0:检测成功,可进行删除,1:分类不存在,2:该分类有关联报告,不允许删除,3:二级分类有关联报告,不允许删除,4:该分类下有关联分类,是否确认全部删除"`
-	Msg  string `description:"描述信息"`
-}
-
-type DeleteClassifyReq struct {
-	ClassifyId int `description:"分类ID"`
-}
-
-type EditClassifyReq struct {
-	ClassifyId     int    `description:"分类ID"`
-	ClassifyName   string `description:"分类名称"`
-	ParentId       int    `description:"父级分类id"`
-	Abstract       string `description:"栏目简介"`
-	Descript       string `description:"分享描述"`
-	ReportAuthor   string `description:"栏目作者"`
-	AuthorDescript string `description:"作者简介"`
-	ColumnImgUrl   string `description:"栏目配图"`
-	HeadImgUrl     string `description:"头部banner"`
-	AvatarImgUrl   string `description:"头像"`
-	ReportImgUrl   string `description:"报告配图"`
-	HomeImgUrl     string `description:"首页配图"`
-	ClassifyLabel  string `description:"分类标签"`
-}
-
-type FindByIdClassifyReq struct {
-	ClassifyId int `description:"分类ID"`
-}
-
-func GetClassifyChild(parentId int, keyWord string) (items []*Classify, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := ``
-	if keyWord != "" {
-		sql = `SELECT * FROM classify WHERE parent_id=? AND classify_name LIKE '%` + keyWord + `%' ORDER BY create_time ASC `
-	} else {
-		sql = `SELECT * FROM classify WHERE parent_id=? ORDER BY create_time ASC `
-	}
-	_, err = o.Raw(sql, parentId).QueryRows(&items)
+	o := global.DbMap[utils.DbNameReport]
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }

+ 37 - 30
models/data_manage/base_from_changes_visitors_covid.go

@@ -1,48 +1,49 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
-// 谷歌出行指数
+// BaseFromChangesVisitorsCovid 谷歌出行指数
 type BaseFromChangesVisitorsCovid struct {
-	Id                  uint64    `orm:"column(id);pk"`    //序号
-	Entity              string    `orm:"column(entity)"`   //国家
-	Code                string    `orm:"column(code)"`     //国家编码
-	EdbCode             string    `orm:"column(edb_code)"` //指标ID
-	Day                 time.Time `orm:"column(day)"`      //统计的日期
-	RetailAndRecreation string    `orm:"column(retail_and_recreation)"`
-	GroceryAndPharmacy  string    `orm:"column(grocery_and_pharmacy)"`
-	Residential         string    `orm:"column(residential)"`
-	TransitStations     string    `orm:"column(transit_stations)"`
-	Parks               string    `orm:"column(parks)"`
-	Workplaces          string    `orm:"column(workplaces)"`
-	Total               string    `orm:"column(total)"`
-	CreateTime          time.Time `orm:"auto_now_add;column(create_time)"` //创建时间
-	ModifyTime          time.Time `orm:"auto_now_add;column(modify_time)"` //修改时间
+	Id                  uint64    `gorm:"column:id;primaryKey;autoIncrement"` //序号
+	Entity              string    `gorm:"column:entity"`                      //国家
+	Code                string    `gorm:"column:code"`                        //国家编码
+	EdbCode             string    `gorm:"column:edb_code"`                    //指标ID
+	Day                 time.Time `gorm:"column:day"`                         //统计的日期
+	RetailAndRecreation string    `gorm:"column:retail_and_recreation"`
+	GroceryAndPharmacy  string    `gorm:"column:grocery_and_pharmacy"`
+	Residential         string    `gorm:"column:residential"`
+	TransitStations     string    `gorm:"column:transit_stations"`
+	Parks               string    `gorm:"column:parks"`
+	Workplaces          string    `gorm:"column:workplaces"`
+	Total               string    `gorm:"column:total"`
+	CreateTime          time.Time `gorm:"column:create_time"` //创建时间
+	ModifyTime          time.Time `gorm:"column:modify_time"` //修改时间
 }
 
-// AddBaseFromChangesVisitorsCovidMulti 批量添加谷歌出行记录
+// AddBaseFromChangesVisitorsCovid 批量添加谷歌出行记录
 func AddBaseFromChangesVisitorsCovid(item *BaseFromChangesVisitorsCovid) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 // GetLatestBaseFromChangesVisitorsCovid 查询最新的日期
 func GetLatestBaseFromChangesVisitorsCovid() (item *BaseFromChangesVisitorsCovid, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_changes_visitors_covid order by day desc, id desc limit 1`
-	err = o.Raw(sql).QueryRow(&item)
+	err = o.Raw(sql).First(&item).Error
 	return
 }
 
 // GetBaseFromChangesVisitorsCovidByEntityDay 查询国家和统计日期查询记录是否存在
 func GetBaseFromChangesVisitorsCovidByEntityDay(entity, day string) (item *BaseFromChangesVisitorsCovid, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_changes_visitors_covid where entity=? and day=? limit 1`
-	err = o.Raw(sql, entity, day).QueryRow(&item)
+	err = o.Raw(sql, entity, day).First(&item).Error
 	return
 }
 
@@ -54,17 +55,23 @@ type ChangesVisitorsCovidIndexResp struct {
 	Data    []*BaseFromChangesVisitorsCovid
 }
 
-// 获取当天数据信息列表
 func GetChangesVisitorsCovidAll(dateTime string) (items []*BaseFromChangesVisitorsCovid, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_changes_visitors_covid WHERE day>=? `
-	_, err = o.Raw(sql, dateTime).QueryRows(&items)
+	err = o.Raw(sql, dateTime).Find(&items).Error
 	return
 }
 
-func GetChangesVisitorsCovidMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.day)as max_date FROM base_from_changes_visitors_covid as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetChangesVisitorsCovidMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT MAX(a.day) AS max_date FROM base_from_changes_visitors_covid AS a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 77 - 55
models/data_manage/base_from_eia_steo.go

@@ -1,16 +1,16 @@
 package data_manage
 
 import (
+	sql2 "database/sql"
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromEiaSteoIndex EiaSteo指标
 type BaseFromEiaSteoIndex struct {
-	BaseFromEiaSteoIndexId    int     `orm:"column(base_from_eia_steo_index_id);pk"`
+	BaseFromEiaSteoIndexId    int     `gorm:"column:base_from_eia_steo_index_id;primaryKey;autoIncrement"`
 	BaseFromEiaSteoClassifyId int     `description:"指标分类id"`
 	IndexCode                 string  `description:"指标编码"`
 	IndexName                 string  `description:"指标名称(中文名称)"`
@@ -31,52 +31,62 @@ type BaseFromEiaSteoIndex struct {
 }
 
 func AddBaseFromEiaSteoIndex(item *BaseFromEiaSteoIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromEiaSteoIndexId)
 	return
 }
 
 func InsertOrUpdateBaseFromEiaSteoIndex(item *BaseFromEiaSteoIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	result := o.FirstOrCreate(item, "base_from_eia_steo_index_id = ?", item.BaseFromEiaSteoIndexId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromEiaSteoIndexId = 0
+		result = o.Model(item).Where("base_from_eia_steo_index_id = ?", item.BaseFromEiaSteoIndexId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromEiaSteoIndexId), nil
 }
 
 // Add 新增指标
 func (item *BaseFromEiaSteoIndex) Add() (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.BaseFromEiaSteoIndexId = int(lastId)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func GetBaseFromEiaSteoIndexAll(dateStr string) (list []*BaseFromEiaSteoIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_eia_steo_index WHERE create_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func GetBaseFromEiaSteoIndexCodeListByDate(dateStr string) (list []string, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT index_code FROM base_from_eia_steo_index WHERE modify_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 // Update 更新作者基础信息
 func (item *BaseFromEiaSteoIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
 	return
 }
 
 // BaseFromEiaSteoClassify EiaSteo分类
 type BaseFromEiaSteoClassify struct {
-	BaseFromEiaSteoClassifyId int       `orm:"column(base_from_eia_steo_classify_id);pk"`
+	BaseFromEiaSteoClassifyId int       `gorm:"column:base_from_eia_steo_classify_id;primaryKey;autoIncrement"`
 	ClassifyName              string    `description:"分类名称(中文名称)"`
 	ClassifyNameOriginal      string    `description:"分类名称(原始名称)"`
 	ParentId                  int       `description:"父级id"`
@@ -85,20 +95,14 @@ type BaseFromEiaSteoClassify struct {
 	CreateTime                time.Time `description:"创建时间"`
 }
 
-// 新增分类
 func (item *BaseFromEiaSteoClassify) AddBaseFromEiaSteoClassify() (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.BaseFromEiaSteoClassifyId = int(lastId)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 // BaseFromEiaSteoData EiaSteo数据表
 type BaseFromEiaSteoData struct {
-	BaseFromEiaSteoDataId  int       `orm:"column(base_from_eia_steo_data_id);pk"`
+	BaseFromEiaSteoDataId  int       `gorm:"column:base_from_eia_steo_data_id;primaryKey;autoIncrement"`
 	BaseFromEiaSteoIndexId int       `description:"指标id"`
 	IndexCode              string    `description:"指标编码"`
 	DataTime               time.Time `description:"数据日期"`
@@ -108,34 +112,38 @@ type BaseFromEiaSteoData struct {
 }
 
 func (b *BaseFromEiaSteoData) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(b, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(b).Error
 	return
 }
 
 func AddBaseFromEiaSteoData(item *BaseFromEiaSteoData) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromEiaSteoDataId)
 	return
 }
 
 // GetBaseFromEiaSteoClassifyAll 获取所有的分类
 func GetBaseFromEiaSteoClassifyAll() (list []*BaseFromEiaSteoClassify, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_eia_steo_classify`
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func AddBaseEiaSteoClassify(item *BaseFromEiaSteoClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromEiaSteoClassifyId)
 	return
 }
 
 func (item *BaseFromEiaSteoClassify) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
 	return
 }
 
@@ -143,9 +151,9 @@ func BatchDeleteBaseFromEiaSteoClassify(id []int) (err error) {
 	if len(id) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `DELETE FROM base_from_eia_steo_classify WHERE base_from_eia_steo_classify_id IN (` + utils.GetOrmInReplace(len(id)) + `)`
-	_, err = o.Raw(sql, id).Exec()
+	err = o.Exec(sql, id).Error
 	return
 }
 
@@ -174,36 +182,50 @@ type EiaSteoClassifyDataResp struct {
 }
 
 func GetBaseFromEiaSteoIndexDataAll(dateStr string) (list []*BaseFromEiaSteoData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_eia_steo_data WHERE create_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func GetBaseFromEiaSteoIndexDataByIndexCode(indexCode, dateStr string) (list []*BaseFromEiaSteoData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_eia_steo_data WHERE index_code=? AND modify_time>=?`
-	_, err = o.Raw(sql, indexCode, dateStr).QueryRows(&list)
+	err = o.Raw(sql, indexCode, dateStr).Find(&list).Error
 	return
 }
 
 func GetBaseFromEiaSteoIndexDataByDate(dateStr string) (list []*BaseFromEiaSteoData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_eia_steo_data WHERE modify_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
-func GetBaseFromEiaSteoIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_eia_steo_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromEiaSteoIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT MAX(a.data_time) AS max_date FROM base_from_eia_steo_data AS a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
-func GetBaseFromEiaSteoIndexMaxCreateDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.create_time)as max_date FROM base_from_eia_steo_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromEiaSteoIndexMaxCreateDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT MAX(a.create_time) AS max_date FROM base_from_eia_steo_index AS a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 22 - 11
models/data_manage/base_from_gie.go

@@ -1,12 +1,14 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 type BaseFromTradeEicIndexV2 struct {
-	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	BaseFromEicIndexId     int `gorm:"column:base_from_eic_index_id;primaryKey;autoIncrement"`
 	Type                   string
 	EicCode                string
 	Name                   string
@@ -38,24 +40,33 @@ type BaseFromTradeEicIndexV2 struct {
 	ModifyTime             time.Time
 }
 
-
-func GetBaseFromEicIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.gas_day_start)as max_date FROM base_from_trade_eic_index_v2 as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromEicIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.gas_day_start) as max_date FROM base_from_trade_eic_index_v2 as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
 func GetBaseFromEicIndexAll(dateStr string) (list []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start >=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func AddBaseFromEicIndexV2(item *BaseFromTradeEicIndexV2) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromEicIndexId)
 	return
 }
 

+ 81 - 35
models/data_manage/base_from_gpr_risk.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromGprRiskIndex struct {
-	BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"`
+	BaseFromGprRiskIndexId int `gorm:"column:base_from_gpr_risk_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int
 	IndexCode              string
 	IndexName              string
@@ -21,9 +24,15 @@ type BaseFromGprRiskIndex struct {
 	ModifyTime             time.Time
 }
 
+func (m *BaseFromGprRiskIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 // BaseFromGprRiskClassify GprRisk原始数据分类表
 type BaseFromGprRiskClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId      int       `gorm:"column:classify_id;primaryKey;autoIncrement"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -34,10 +43,17 @@ type BaseFromGprRiskClassify struct {
 	CreateTime      time.Time `description:"创建时间"`
 }
 
-func GetBaseFromGprRiskIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromGprRiskIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.modify_time) AS max_date FROM base_from_gpr_risk_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
@@ -50,22 +66,34 @@ type GprRiskIndexResp struct {
 }
 
 func GetBaseFromGprRiskIndexAll(dateStr string) (list []*BaseFromGprRiskIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_gpr_risk_index WHERE end_date>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func (obj *BaseFromGprRiskIndex) AddBaseFromGprRiskIndex(item *BaseFromGprRiskIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func (obj *BaseFromGprRiskIndex) InsertOrUpdateBaseFromGprRiskIndex(item *BaseFromGprRiskIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	result := o.FirstOrCreate(item, "base_from_gpr_risk_index_id = ?", item.BaseFromGprRiskIndexId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromGprRiskIndexId = 0
+		result = o.Model(item).Where("base_from_gpr_risk_index_id = ?", item.BaseFromGprRiskIndexId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromGprRiskIndexId), nil
 }
 
 type GprRiskClassifyResp struct {
@@ -77,34 +105,53 @@ type GprRiskClassifyResp struct {
 }
 
 func GetBaseFromGprRiskClassifyAll() (list []*BaseFromGprRiskClassify, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_gpr_risk_classify `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func AddBaseFromGprRiskClassify(item *BaseFromGprRiskClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func InsertOrUpdateBaseFromGprRiskClassify(item *BaseFromGprRiskClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	result := o.FirstOrCreate(item, "classify_id = ?", item.ClassifyId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.ClassifyId = 0
+		result = o.Model(item).Where("classify_id = ?", item.ClassifyId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.ClassifyId), nil
 }
 
-// GetBaseFromComTradeMaxDate 获取GprRisk消费者指数最大数据
-func GetBaseFromGprRiskMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+// GetBaseFromGprRiskMaxDate 获取GprRisk消费者指数最大数据
+func GetBaseFromGprRiskMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.modify_time) as max_date FROM base_from_gpr_risk_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
 type BaseFromGprRiskData struct {
-	BaseFromGprRiskDataId  int       `orm:"column(base_from_gpr_risk_data_id);pk"`
+	BaseFromGprRiskDataId  int       `gorm:"column:base_from_gpr_risk_data_id;primaryKey;autoIncrement"`
 	BaseFromGprRiskIndexId int       `description:"指标id"`
 	IndexCode              string    `description:"指标编码"`
 	DataTime               string    `description:"日期"`
@@ -113,11 +160,11 @@ type BaseFromGprRiskData struct {
 	ModifyTime             time.Time `description:"修改时间"`
 }
 
-// GetAllComTradeDataList 获取GprRisk消费者指数数据
+// GetAllBaseFromGprRiskDataList 获取GprRisk消费者指数数据
 func GetAllBaseFromGprRiskDataList(startDate string) (list []*BaseFromGprRiskData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_gpr_risk_data WHERE modify_time>=?  ORDER BY base_from_gpr_risk_data_id ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
@@ -129,20 +176,19 @@ type BaseFromGprRiskDataResp struct {
 	Data    BaseFromGprRiskDataIndexAndDataResp
 }
 
-// ComTradeIndexDataResp 分页列表响应体
+// BaseFromGprRiskDataIndexAndDataResp 分页列表响应体
 type BaseFromGprRiskDataIndexAndDataResp struct {
 	List   []*BaseFromGprRiskData
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 
-// MultiAddBaseFromComTradeData 批量添加数据
+// MultiAddBaseFromGprRiskDataIndex 批量添加数据
 func MultiAddBaseFromGprRiskDataIndex(items []*BaseFromGprRiskData) (lastId int64, err error) {
 	num := len(items)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(num, items)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }

+ 81 - 35
models/data_manage/base_from_icpi.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromIcpiIndex struct {
-	BaseFromIcpiIndexId    int       `orm:"column(base_from_icpi_index_id);pk"`
+	BaseFromIcpiIndexId    int       `gorm:"column:base_from_icpi_index_id;primaryKey;autoIncrement"`
 	BaseFromIcpiClassifyId int       `description:"分类id"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -19,10 +22,17 @@ type BaseFromIcpiIndex struct {
 	LatestValue            float64   `description:"最新值"`
 }
 
-func GetBaseFromIcpiIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_icpi_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromIcpiIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) as max_date FROM base_from_icpi_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
@@ -35,26 +45,38 @@ type IcpiIndexResp struct {
 }
 
 func GetBaseFromIcpiIndexAll(dateStr string) (list []*BaseFromIcpiIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_icpi_index WHERE end_date>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func (obj *BaseFromIcpiIndex) AddBaseFromIcpiIndex(item *BaseFromIcpiIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func (obj *BaseFromIcpiIndex) InsertOrUpdateBaseFromIcpiIndex(item *BaseFromIcpiIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	result := o.FirstOrCreate(item, "base_from_icpi_index_id = ?", item.BaseFromIcpiIndexId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromIcpiIndexId = 0
+		result = o.Model(item).Where("base_from_icpi_index_id = ?", item.BaseFromIcpiIndexId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromIcpiIndexId), nil
 }
 
 type BaseFromIcpiClassify struct {
-	BaseFromIcpiClassifyId int    `orm:"column(base_from_icpi_classify_id);pk"`
+	BaseFromIcpiClassifyId int    `gorm:"column:base_from_icpi_classify_id;primaryKey;autoIncrement"`
 	ClassifyName           string `description:"分类名称"`
 	ClassifyNameEn         string `description:"英文名称"`
 	ParentId               int    `description:"上级id"`
@@ -62,6 +84,12 @@ type BaseFromIcpiClassify struct {
 	ModifyTime             string `description:"修改时间"`
 }
 
+func (m *BaseFromIcpiClassify) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 type IcpiClassifyResp struct {
 	Ret     int
 	Msg     string
@@ -71,34 +99,53 @@ type IcpiClassifyResp struct {
 }
 
 func GetBaseFromIcpiClassifyAll() (list []*BaseFromIcpiClassify, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_icpi_classify `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func AddBaseFromIcpiClassify(item *BaseFromIcpiClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func InsertOrUpdateBaseFromIcpiClassify(item *BaseFromIcpiClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	result := o.FirstOrCreate(item, "base_from_icpi_classify_id = ?", item.BaseFromIcpiClassifyId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromIcpiClassifyId = 0
+		result = o.Model(item).Where("base_from_icpi_classify_id = ?", item.BaseFromIcpiClassifyId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromIcpiClassifyId), nil
 }
 
-// GetBaseFromComTradeMaxDate 获取ICPI消费者指数最大数据
-func GetBaseFromIcpiMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.create_time)as max_date FROM base_from_icpi_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+// GetBaseFromIcpiMaxDate 获取ICPI消费者指数最大数据
+func GetBaseFromIcpiMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.create_time) as max_date FROM base_from_icpi_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
 type BaseFromIcpiData struct {
-	BaseFromIcpiDataId  int       `orm:"column(base_from_icpi_data_id);pk"`
+	BaseFromIcpiDataId  int       `gorm:"column:base_from_icpi_data_id;primaryKey;autoIncrement"`
 	BaseFromIcpiIndexId int       `description:"指标id"`
 	IndexCode           string    `description:"指标编码"`
 	DataTime            string    `description:"日期"`
@@ -107,11 +154,11 @@ type BaseFromIcpiData struct {
 	ModifyTime          time.Time `description:"修改时间"`
 }
 
-// GetAllComTradeDataList 获取ICPI消费者指数数据
+// GetAllBaseFromIcpiDataList 获取ICPI消费者指数数据
 func GetAllBaseFromIcpiDataList(startDate string) (list []*BaseFromIcpiData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_icpi_data WHERE create_time>=?  ORDER BY base_from_icpi_data_id ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
@@ -123,20 +170,19 @@ type BaseFromIcpiDataResp struct {
 	Data    BaseFromIcpiDataIndexAndDataResp
 }
 
-// ComTradeIndexDataResp 分页列表响应体
+// BaseFromIcpiDataIndexAndDataResp 分页列表响应体
 type BaseFromIcpiDataIndexAndDataResp struct {
 	List   []*BaseFromIcpiData
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 
-// MultiAddBaseFromComTradeData 批量添加数据
+// MultiAddBaseFromIcpiDataIndex 批量添加数据
 func MultiAddBaseFromIcpiDataIndex(items []*BaseFromIcpiData) (lastId int64, err error) {
 	num := len(items)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(num, items)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }

+ 47 - 32
models/data_manage/base_from_mysteel_chemical_index.go

@@ -1,31 +1,31 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 )
 
 type BaseFromMysteelChemicalIndexItem struct {
-	BaseFromMysteelChemicalIndexId    int32   `json:"base_from_mysteel_chemical_index_id"`
-	BaseFromMysteelChemicalClassifyId int32   `json:"base_from_mysteel_chemical_classify_id"` // 钢联化工指标分类id
-	IndexCode                         string  `json:"index_code"`                             // 指标编码
-	IndexName                         string  `json:"index_name"`                             // 指标名称
-	Unit                              string  `json:"unit"`                                   // 单位
-	Source                            string  `json:"source"`                                 // 数据来源
-	Frequency                         string  `json:"frequency"`                              // 频度
-	StartDate                         string  `json:"start_date"`                             // 开始日期
-	EndDate                           string  `json:"end_date"`                               // 结束日期
-	Describe                          string  `json:"describe"`                               // 指标描述
-	UpdateWeek                        string  `json:"update_week"`                            // 更新周期
-	UpdateTime                        string  `json:"update_time"`                            // 更新时间,多个时间点用英文,隔开
-	UpdateTime2                       string  `json:"update_time2"`                           // 更新时间2
-	SysUserId                         int32   `json:"sys_user_id"`                            // 创建人id
-	SysUserRealName                   string  `json:"sys_user_real_name"`                     // 创建人姓名
-	CreateTime                        string  `json:"create_time"`                            // 创建时间
-	ModifyTime                        string  `json:"modify_time"`                            // 修改时间
-	FilePath                          string  `json:"file_path"`                              // 文件存储路径
-	Sort                              int32   `json:"sort"`                                   // 排序
+	BaseFromMysteelChemicalIndexId    int32   `gorm:"column:base_from_mysteel_chemical_index_id;primaryKey;autoIncrement" json:"base_from_mysteel_chemical_index_id"`
+	BaseFromMysteelChemicalClassifyId int32   `json:"base_from_mysteel_chemical_classify_id"`  // 钢联化工指标分类id
+	IndexCode                         string  `json:"index_code"`                              // 指标编码
+	IndexName                         string  `json:"index_name"`                              // 指标名称
+	Unit                              string  `json:"unit"`                                    // 单位
+	Source                            string  `json:"source"`                                  // 数据来源
+	Frequency                         string  `json:"frequency"`                               // 频度
+	StartDate                         string  `json:"start_date"`                              // 开始日期
+	EndDate                           string  `json:"end_date"`                                // 结束日期
+	Describe                          string  `json:"describe"`                                // 指标描述
+	UpdateWeek                        string  `json:"update_week"`                             // 更新周期
+	UpdateTime                        string  `json:"update_time"`                             // 更新时间,多个时间点用英文,隔开
+	UpdateTime2                       string  `gorm:"column:update_time2" json:"update_time2"` // 更新时间2
+	SysUserId                         int32   `json:"sys_user_id"`                             // 创建人id
+	SysUserRealName                   string  `json:"sys_user_real_name"`                      // 创建人姓名
+	CreateTime                        string  `json:"create_time"`                             // 创建时间
+	ModifyTime                        string  `json:"modify_time"`                             // 修改时间
+	FilePath                          string  `json:"file_path"`                               // 文件存储路径
+	Sort                              int32   `json:"sort"`                                    // 排序
 	MergeFilePath                     string  `json:"merge_file_path"`
 	FileIndex                         int32   `json:"file_index"`
 	MergeUpdateWeek                   string  `json:"merge_update_week"`    // 合并文件的更新周
@@ -38,6 +38,22 @@ type BaseFromMysteelChemicalIndexItem struct {
 	EdbInfoId                         int     `json:"edb_info_id"`
 }
 
+func (m *BaseFromMysteelChemicalIndexItem) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
+func (m *BaseFromMysteelChemicalIndexItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 // GetBaseFromMysteelChemicalIndexItemByCode
 // @Description: 根据指标编码获取钢联指标详情
 // @author: Roc
@@ -46,10 +62,9 @@ type BaseFromMysteelChemicalIndexItem struct {
 // @return item *BaseFromMysteelChemicalIndexItem
 // @return err error
 func GetBaseFromMysteelChemicalIndexItemByCode(edbCode string) (item *BaseFromMysteelChemicalIndexItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE index_code = ?`
-	err = o.Raw(sql, edbCode).QueryRow(&item)
-
+	err = o.Raw(sql, edbCode).First(&item).Error
 	return
 }
 
@@ -58,34 +73,34 @@ func GetBaseFromMysteelChemicalIndexItems(frequencyList []string) (items []*Base
 	if num == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT b.*, e.edb_info_id FROM base_from_mysteel_chemical_index AS b
 	LEFT JOIN edb_info AS e
 	ON b.index_code = e.edb_code
 	WHERE b.source='api' AND b.frequency IN (` + utils.GetOrmInReplace(len(frequencyList)) + `)`
-	_, err = o.Raw(sql, frequencyList).QueryRows(&items)
+	err = o.Raw(sql, frequencyList).Find(&items).Error
 	return
 }
 
 // GetRefreshBaseFromMysteelChemicalIndexItemByCreateTime 获取正常刷新的钢联化工指标
 func GetRefreshBaseFromMysteelChemicalIndexItemByCreateTime(endDate string, startPage, pageSize int) (items []*BaseFromMysteelChemicalIndexItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE is_stop = 0 and create_time < ? Limit ?,?`
-	_, err = o.Raw(sql, endDate, startPage, pageSize).QueryRows(&items)
+	err = o.Raw(sql, endDate, startPage, pageSize).Find(&items).Error
 	return
 }
 
 // GetCountRefreshBaseFromMysteelChemicalIndexItemByCreateTime 获取正常刷新的钢联化工指标
 func GetCountRefreshBaseFromMysteelChemicalIndexItemByCreateTime(endDate string) (total int64, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT count(*) FROM base_from_mysteel_chemical_index WHERE is_stop = 0 and create_time < ?`
-	err = o.Raw(sql, endDate).QueryRow(&total)
+	err = o.Raw(sql, endDate).Scan(&total).Error
 	return
 }
 
 func SetStopRefreshMysteelChemicalIndex(ids []int32) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE base_from_mysteel_chemical_index SET is_stop = 1 WHERE base_from_mysteel_chemical_index_id IN (` + utils.GetOrmInReplace(len(ids)) + `) and is_stop=0`
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }

+ 78 - 38
models/data_manage/base_from_smm.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromSmm struct {
-	BaseFromSmmId int `orm:"column(base_from_smm_id);pk"`
+	BaseFromSmmId int `gorm:"column:base_from_smm_id;primaryKey;autoIncrement"`
 	Aid           int
 	Name          string
 	Interface     string
@@ -14,9 +17,9 @@ type BaseFromSmm struct {
 	ApiUpdateType string
 	ApiType       int
 	ApiTypeAll    string
-	Type1         string `orm:"column(type_1)"`
-	Type2         string `orm:"column(type_2)"`
-	Type3         string `orm:"column(type_3)"`
+	Type1         string `gorm:"column:type_1"`
+	Type2         string `gorm:"column:type_2"`
+	Type3         string `gorm:"column:type_3"`
 	ApiStartTime  string
 	ApiUpdateTime string
 	StartTime     string
@@ -33,29 +36,40 @@ type BaseFromSmm struct {
 	EndDate       string
 }
 
+func (m *BaseFromSmm) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.ApiStartTime = utils.GormDateStrToDateStr(m.ApiStartTime)
+	m.ApiUpdateTime = utils.GormDateStrToDateStr(m.ApiUpdateTime)
+	return
+}
+
 func AddBaseFromSmm(item *BaseFromSmm) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromSmmId)
 	return
 }
 
 func GetBaseFromSmmList() (list []*BaseFromSmm, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	//sql := `SELECT * FROM base_from_smm WHERE interface='cu_annual_copper_cathode_demand_supply_balance_in_china' `
 	sql := `SELECT * FROM base_from_smm WHERE end_date IS NOT NULL `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 type BaseFromSmmIndex struct {
-	BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
+	BaseFromSmmIndexId int `gorm:"column:base_from_smm_index_id;primaryKey;autoIncrement"`
 	Interface          string
 	Name               string
 	IndexCode          string
 	IndexName          string
-	Type1              string `orm:"column(type_1)"`
-	Type2              string `orm:"column(type_2)"`
-	Type3              string `orm:"column(type_3)"`
+	Type1              string `gorm:"column:type_1"`
+	Type2              string `gorm:"column:type_2"`
+	Type3              string `gorm:"column:type_3"`
 	Frequency          string
 	Unit               string
 	ApiStartTime       string
@@ -66,21 +80,28 @@ type BaseFromSmmIndex struct {
 	ModifyTime         time.Time
 }
 
+func (m *BaseFromSmmIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartTime = utils.GormDateStrToDateStr(m.StartTime)
+	m.FinishTime = utils.GormDateStrToDateStr(m.FinishTime)
+	m.ApiStartTime = utils.GormDateStrToDateStr(m.ApiStartTime)
+	m.ApiUpdateTime = utils.GormDateStrToDateStr(m.ApiUpdateTime)
+	return
+}
+
 func AddBaseFromSmmIndex(item *BaseFromSmmIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func GetBaseFromSmmIndex() (list []*BaseFromSmmIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_smm_index `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 type BaseFromSmmData struct {
-	SmmDataId          int `orm:"column(smm_data_id);pk"`
+	SmmDataId          int `gorm:"column:smm_data_id;primaryKey;autoIncrement"`
 	BaseFromSmmIndexId int
 	IndexCode          string
 	DataTime           string
@@ -90,70 +111,89 @@ type BaseFromSmmData struct {
 	DataTimestamp      int64
 }
 
+func (m *BaseFromSmmData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromSmmData(item *BaseFromSmmData) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func GetBaseFromSmmDataAll(indexCode string) (list []*BaseFromSmmData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_smm_data WHERE index_code=?`
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = o.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromSmmData(smmDataId int, value string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `UPDATE base_from_smm_data SET value=?,modify_time=NOW() WHERE smm_data_id=? `
-	_, err = o.Raw(sql, value, smmDataId).Exec()
+	err = o.Exec(sql, value, smmDataId).Error
 	return
 }
 
 func GetBaseFromSmmIndexByCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM base_from_smm_index WHERE interface=? `
-	_, err = o.Raw(sql, smmCode).QueryRows(&list)
+	err = o.Raw(sql, smmCode).Find(&list).Error
 	return
 }
 
-func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&min_date, &max_date)
+func GetBaseFromSmmMaxOrMinDate(indexCode string) (minDate, maxDate string, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT MIN(data_time) AS min_date, MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
+	var minNull, maxNull sql2.NullString
+	err = o.Raw(sql, indexCode).Row().Scan(&minNull, &maxNull)
+	if err != nil {
+		return
+	}
+	if minNull.Valid {
+		minDate = minNull.String
+	}
+	if maxNull.Valid {
+		maxDate = maxNull.String
+	}
 	return
 }
 
 func ModifyBaseFromSmmSmmType(baseFromSmmId int, smmType string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE base_from_smm SET smm_type=? WHERE base_from_smm_id=? `
-	_, err = o.Raw(sql, smmType, baseFromSmmId).Exec()
+	err = o.Exec(sql, smmType, baseFromSmmId).Error
 	return
 }
 
 func ModifyBaseFromSmmMinDateAndMaxDate(baseFromSmmIndexId, baseFromSmmId int, minDate, maxDate string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE base_from_smm_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_smm_index_id=? `
-	_, err = o.Raw(sql, minDate, maxDate, baseFromSmmIndexId).Exec()
+	err = o.Exec(sql, minDate, maxDate, baseFromSmmIndexId).Error
 	sql = ` UPDATE base_from_smm SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_smm_id=? `
-	_, err = o.Raw(sql, minDate, maxDate, baseFromSmmId).Exec()
+	err = o.Exec(sql, minDate, maxDate, baseFromSmmId).Error
 	return
 }
 
 type BaseFromSmmDataSimple struct {
-	SmmDataId          int `orm:"column(smm_data_id);pk"`
+	SmmDataId          int `gorm:"column:smm_data_id;primaryKey;autoIncrement"`
 	BaseFromSmmIndexId int
 	IndexCode          string
 	DataTime           string
 	Value              float64
 }
 
+func (m *BaseFromSmmDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func GetBaseFromSmmDataByCondition(condition string, pars []interface{}) (list []*BaseFromSmmDataSimple, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 34 - 16
models/data_manage/base_from_smm_index.go

@@ -1,23 +1,26 @@
 package data_manage
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+)
 
 type BaseFromSmmIndexItem struct {
-	BaseFromSmmIndexId int32   `json:"base_from_smm_index_id"`
+	BaseFromSmmIndexId int32   `gorm:"column:base_from_smm_index_id;primaryKey;autoIncrement" json:"base_from_smm_index_id"`
 	ClassifyId         int32   `json:"classify_id"` // Smm原始数据指标分类id
 	Interface          string  `json:"interface"`
 	Name               string  `json:"name"`
-	IndexCode          string  `json:"index_code"`      // 指标编码
-	IndexName          string  `json:"index_name"`      // 指标名称
-	Type1              string  `json:"type_1"`          // 类型1
-	Type2              string  `json:"type_2"`          // 类型2
-	Type3              string  `json:"type_3"`          // 类型3
-	Frequency          string  `json:"frequency"`       // 频度
-	Unit               string  `json:"unit"`            // 单位
-	ApiStartTime       string  `json:"api_start_time"`  // 接口开始日期
-	ApiUpdateTime      string  `json:"api_update_time"` // 接口更新日期
-	StartTime          string  `json:"start_time"`      // 开始日期
-	FinishTime         string  `json:"finish_time"`     // 完成日期
+	IndexCode          string  `json:"index_code"`           // 指标编码
+	IndexName          string  `json:"index_name"`           // 指标名称
+	Type1              string  `gorm:"type_1" json:"type_1"` // 类型1
+	Type2              string  `gorm:"type_2" json:"type_2"` // 类型2
+	Type3              string  `gorm:"type_3" json:"type_3"` // 类型3
+	Frequency          string  `json:"frequency"`            // 频度
+	Unit               string  `json:"unit"`                 // 单位
+	ApiStartTime       string  `json:"api_start_time"`       // 接口开始日期
+	ApiUpdateTime      string  `json:"api_update_time"`      // 接口更新日期
+	StartTime          string  `json:"start_time"`           // 开始日期
+	FinishTime         string  `json:"finish_time"`          // 完成日期
 	CreateTime         string  `json:"create_time"`
 	ModifyTime         string  `json:"modify_time"`
 	StartDate          string  `json:"start_date"`
@@ -33,6 +36,16 @@ type BaseFromSmmIndexItem struct {
 	EndValue           float64 `json:"end_value"`        // 指标的最新值
 }
 
+func (m *BaseFromSmmIndexItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.StartTime = utils.GormDateStrToDateStr(m.StartTime)
+	m.FinishTime = utils.GormDateStrToDateStr(m.FinishTime)
+	m.CreateTime = utils.GormDateStrToDateStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 // GetBaseFromSmmIndexItemItemByCode
 // @Description: 根据指标编码获取指标信息
 // @author: Roc
@@ -42,9 +55,14 @@ type BaseFromSmmIndexItem struct {
 // @return item *BaseFromSmmIndexItem
 // @return err error
 func GetBaseFromSmmIndexItemItemByCode(edbCode string) (item *BaseFromSmmIndexItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM base_from_smm_index WHERE index_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&item)
-
+	err = o.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.BaseFromSmmIndexId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }

+ 23 - 28
models/data_manage/base_from_ths_hf_index.go

@@ -1,16 +1,16 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // BaseFromThsHfIndex 同花顺高频数据
 type BaseFromThsHfIndex struct {
-	BaseFromThsHfIndexId    int       `orm:"column(base_from_ths_hf_index_id);pk"`
+	BaseFromThsHfIndexId    int       `gorm:"column:base_from_ths_hf_index_id;primaryKey;autoIncrement"`
 	BaseFromThsHfClassifyId int       `description:"分类ID"`
 	IndexCode               string    `description:"指标编码"`
 	IndexName               string    `description:"指标名称"`
@@ -88,12 +88,7 @@ func (m *BaseFromThsHfIndex) Cols() BaseFromThsHfIndexCols {
 }
 
 func (m *BaseFromThsHfIndex) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromThsHfIndexId = int(id)
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
@@ -101,21 +96,20 @@ func (m *BaseFromThsHfIndex) CreateMulti(items []*BaseFromThsHfIndex) (err error
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) Remove() (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.BaseFromThsHfIndexId).Exec()
+	err = o.Exec(sql, m.BaseFromThsHfIndexId).Error
 	return
 }
 
@@ -123,9 +117,9 @@ func (m *BaseFromThsHfIndex) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
@@ -133,39 +127,39 @@ func (m *BaseFromThsHfIndex) RemoveByCondition(condition string, pars []interfac
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = o.Raw(sql, pars...).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemById(id int) (item *BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -175,12 +169,12 @@ func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -190,6 +184,7 @@ func (m *BaseFromThsHfIndex) GetPageItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 30 - 12
models/data_manage/base_from_trade_cffex.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeCffexIndex struct {
-	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	BaseFromTradeCffexIndexId int `gorm:"column:base_from_trade_cffex_index_id;primaryKey;autoIncrement"`
 	Rank                      int
 	DealShortName             string
 	DealName                  string
@@ -31,25 +34,33 @@ type BaseFromTradeCffexIndex struct {
 	DataTime                  string
 }
 
+func (m *BaseFromTradeCffexIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeCffexIndex(item *BaseFromTradeCffexIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeCffexIndexId)
 	return
 }
 
 func GetBaseFromTradeCffexIndexAll(dateStr string) (list []*BaseFromTradeCffexIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_cffex_index WHERE data_time=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeCffexIndex(columnList [5]string, dataList [5]interface{}, dataId int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "UPDATE base_from_trade_cffex_index SET " +
 		columnList[0] + "=?," + columnList[1] + "=?," + columnList[2] + "=?," + columnList[3] + "=?," + columnList[4] +
 		"=?,modify_time=NOW() WHERE base_from_trade_cffex_index_id=? "
-	_, err = o.Raw(sql, dataList[0], dataList[1], dataList[2], dataList[3], dataList[4], dataId).Exec()
+	err = o.Exec(sql, dataList[0], dataList[1], dataList[2], dataList[3], dataList[4], dataId).Error
 	return
 }
 
@@ -61,9 +72,16 @@ type CffexIndexResp struct {
 	Data    []*BaseFromTradeCffexIndex
 }
 
-func GetBaseFromTradeCffexIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_cffex_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromTradeCffexIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_cffex_index as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 29 - 29
models/data_manage/base_from_trade_dalian.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeDalianIndex struct {
-	BaseFromTradeDalianIndexId int    `orm:"column(base_from_trade_dalian_index_id);pk"`
+	BaseFromTradeDalianIndexId int    `gorm:"column:base_from_trade_dalian_index_id;primaryKey;autoIncrement"`
 	Rank                       string `description:"排名"`
 	DealShortName              string `description:"成交量公司简称"`
 	DealName                   string `description:"成交量指标名称"`
@@ -31,14 +34,22 @@ type BaseFromTradeDalianIndex struct {
 	DataTime                   string `description:"数据日期"`
 }
 
+func (m *BaseFromTradeDalianIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeDalianIndex(item *BaseFromTradeDalianIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeDalianIndexId)
 	return
 }
 
 type BaseFromTradeDalianData struct {
-	BaseFromTradeDalianDataId  int `orm:"column(base_from_trade_dalian_data_id);pk"`
+	BaseFromTradeDalianDataId  int `gorm:"column:base_from_trade_dalian_data_id;primaryKey;autoIncrement"`
 	BaseFromTradeDalianIndexId int
 	IndexCode                  string
 	DataTime                   time.Time
@@ -49,28 +60,10 @@ type BaseFromTradeDalianData struct {
 	DataTimestamp              string
 }
 
-// 刷新大连指标数据
-func RefreshEdbDataByDaLian(addSql string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(addSql).Exec()
-	if err != nil {
-		return err
-	}
-	return
-}
-
-// 获取当天数据信息列表
 func GetBaseFromTradeDalianDataList(dateTime string) (items []*BaseFromTradeDalianIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_dalian_index WHERE data_time>=?`
-	_, err = o.Raw(sql, dateTime).QueryRows(&items)
-	return
-}
-
-func UpdateBaseFromTradeDalianIndex(item *BaseFromTradeDalianIndex, dataId int) (err error) {
-	o := orm.NewOrm()
-	sql := "UPDATE base_from_trade_dalian_index SET `rank`=?,deal_short_name=?,deal_name=?,deal_code=?,deal_value=?,buy_short_name=?,deal_change=?,buy_name=?,buy_code=?,buy_value=?,buy_change=?,sold_short_name=?,sold_name=?,sold_code=?,sold_value=?,sold_change=?,frequency=?,classify_name=?,classify_type=?,modify_time=?,data_time=? WHERE base_from_trade_dalian_index_id=? "
-	_, err = o.Raw(sql, item.Rank, item.DealShortName, item.DealName, item.DealCode, item.DealValue, item.BuyShortName, item.DealChange, item.BuyName, item.BuyCode, item.BuyValue, item.BuyChange, item.SoldShortName, item.SoldName, item.SoldCode, item.SoldValue, item.SoldChange, item.Frequency, item.ClassifyName, item.ClassifyType, item.ModifyTime, item.DataTime, dataId).Exec()
+	err = o.Raw(sql, dateTime).Find(&items).Error
 	return
 }
 
@@ -82,9 +75,16 @@ type DalianIndexResp struct {
 	Data    []*BaseFromTradeDalianIndex
 }
 
-func GetBaseFromTradeDalianIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_dalian_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromTradeDalianIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_dalian_index as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 62 - 32
models/data_manage/base_from_trade_guangzhou.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeGuangzhouIndex struct {
-	BaseFromTradeGuangzhouIndexId    int       `orm:"column(base_from_trade_guangzhou_index_id);pk"`
+	BaseFromTradeGuangzhouIndexId    int       `gorm:"column:base_from_trade_guangzhou_index_id;primaryKey;autoIncrement"`
 	BaseFromTradeGuangzhouClassifyId int       `description:"分类id"`
 	BaseFromTradeGuangzhouContractId int       `description:"合约id"`
 	IndexCode                        string    `description:"指标编码"`
@@ -21,16 +24,36 @@ type BaseFromTradeGuangzhouIndex struct {
 	Value                            float64   `description:"数据值"`
 }
 
-func AddBaseFromTradeGuangzhouIndex(item *BaseFromTradeGuangzhouIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
+func (m *BaseFromTradeGuangzhouIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
 	return
 }
 
+func AddBaseFromTradeGuangzhouIndex(item *BaseFromTradeGuangzhouIndex) (lastId int64, err error) {
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	//lastId, err = o.InsertOrUpdate(item)
+	result := o.FirstOrCreate(item, "base_from_trade_guangzhou_index_id = ?", item.BaseFromTradeGuangzhouIndexId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromTradeGuangzhouIndexId = 0
+		result = o.Model(item).Where("base_from_trade_guangzhou_index_id = ?", item.BaseFromTradeGuangzhouIndexId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromTradeGuangzhouIndexId), nil
+}
+
 func GetBaseFromTradeGuangzhouIndexAll() (list []*BaseFromTradeGuangzhouIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_guangzhou_index `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
@@ -43,7 +66,7 @@ type GuangzhouIndexResp struct {
 }
 
 type BaseFromTradeGuangzhouClassify struct {
-	BaseFromTradeGuangzhouClassifyId int       `orm:"column(base_from_trade_guangzhou_classify_id);pk"`
+	BaseFromTradeGuangzhouClassifyId int       `gorm:"column:base_from_trade_guangzhou_classify_id;primaryKey;autoIncrement"`
 	ClassifyName                     string    `description:"分类名称"`
 	ClassifyCode                     string    `description:"分类编码"`
 	ParentId                         int       `description:"分类父级id"`
@@ -60,30 +83,31 @@ type GuangzhouClassifyResp struct {
 }
 
 func GetBaseFromTradeGuangzhouClassifyAll() (list []*BaseFromTradeGuangzhouClassify, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_guangzhou_classify `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func AddBaseFromTradeGuangzhouClassify(item *BaseFromTradeGuangzhouClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeGuangzhouClassifyId)
 	return
 }
 
 type BaseFromTradeGuangzhouContract struct {
-	BaseFromTradeGuangzhouContractId int    `orm:"column(base_from_trade_guangzhou_contract_id);pk"`
+	BaseFromTradeGuangzhouContractId int    `gorm:"column:base_from_trade_guangzhou_contract_id;primaryKey;autoIncrement"`
 	BaseFromTradeGuangzhouClassifyId int    `description:"分类id"`
 	ClassifyCode                     string `description:"分类编码"`
 	Contract                         string `description:"合约编码"`
 	TradeDate                        string `description:"合约日期"`
 }
 
-// 新增合约
 func (obj *BaseFromTradeGuangzhouIndex) AddBaseFromTradeGuangzhouContract(item *BaseFromTradeGuangzhouContract) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
@@ -96,22 +120,29 @@ type GuangzhouContractResp struct {
 }
 
 func GetBaseFromTradeGuangzhouContractAll() (list []*BaseFromTradeGuangzhouContract, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_guangzhou_contract `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
-// GetBaseFromComTradeMaxDate 获取广州期货交易所最大数据
-func GetBaseFromTradeGuangzhouMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.create_time)as max_date FROM base_from_trade_guangzhou_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+// GetBaseFromTradeGuangzhouMaxDate 获取广州期货交易所最大数据
+func GetBaseFromTradeGuangzhouMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.create_time) AS max_date FROM base_from_trade_guangzhou_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
 type BaseFromTradeGuangzhouData struct {
-	BaseFromTradeGuangzhouDataId  int       `orm:"column(base_from_trade_guangzhou_data_id);pk"`
+	BaseFromTradeGuangzhouDataId  int       `gorm:"column:base_from_trade_guangzhou_data_id;primaryKey;autoIncrement"`
 	BaseFromTradeGuangzhouIndexId int       `description:"指标id"`
 	IndexCode                     string    `description:"指标编码"`
 	DataTime                      string    `description:"数据日期"`
@@ -121,11 +152,11 @@ type BaseFromTradeGuangzhouData struct {
 	ModifyTime                    time.Time `description:"修改日期"`
 }
 
-// GetAllComTradeDataList 获取广州期货交易所数据
+// GetAllBaseFromTradeGuangzhouDataList 获取广州期货交易所数据
 func GetAllBaseFromTradeGuangzhouDataList(startDate string) (list []*BaseFromTradeGuangzhouData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_guangzhou_data WHERE create_time>=?  ORDER BY base_from_trade_guangzhou_data_id ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
@@ -137,20 +168,19 @@ type BaseFromTradeGuangzhouDataResp struct {
 	Data    BaseFromTradeGuangzhouIndexAndDataResp
 }
 
-// ComTradeIndexDataResp 分页列表响应体
+// BaseFromTradeGuangzhouIndexAndDataResp 分页列表响应体
 type BaseFromTradeGuangzhouIndexAndDataResp struct {
 	List   []*BaseFromTradeGuangzhouData
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 
-// MultiAddBaseFromComTradeData 批量添加数据
+// MultiAddBaseFromTradeGuangzhouData 批量添加数据
 func MultiAddBaseFromTradeGuangzhouData(items []*BaseFromTradeGuangzhouData) (lastId int64, err error) {
 	num := len(items)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(num, items)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }

+ 26 - 12
models/data_manage/base_from_trade_ine.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeIneIndex struct {
-	BaseFromTradeIneIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
+	BaseFromTradeIneIndexId int `gorm:"column:base_from_trade_ine_index_id;primaryKey;autoIncrement"`
 	Rank                    int
 	DealShortName           string
 	DealName                string
@@ -31,23 +34,27 @@ type BaseFromTradeIneIndex struct {
 	DataTime                string
 }
 
+func (m *BaseFromTradeIneIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeIneIndex(item *BaseFromTradeIneIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func GetBaseFromTradeIneIndexAll(dateStr string) (list []*BaseFromTradeIneIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_ine_index where data_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeIneIndex(dealValue, buyValue, soldValue int, dataId int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `UPDATE base_from_trade_ine_index SET deal_value=?,buy_value=?,sold_value=?,modify_time=NOW() WHERE base_from_trade_ine_index_id=? `
-	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	err = o.Exec(sql, dealValue, buyValue, soldValue, dataId).Error
 	return
 }
 
@@ -59,9 +66,16 @@ type IneIndexResp struct {
 	Data    []*BaseFromTradeIneIndex
 }
 
-func GetBaseFromTradeIneIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_ine_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromTradeIneIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_ine_index as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 30 - 12
models/data_manage/base_from_trade_shanghai.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeShanghaiIndex struct {
-	BaseFromTradeShangHaiIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	BaseFromTradeShangHaiIndexId int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey;autoIncrement"`
 	Rank                         int
 	DealShortName                string
 	DealName                     string
@@ -31,23 +34,31 @@ type BaseFromTradeShanghaiIndex struct {
 	DataTime                     string
 }
 
+func (m *BaseFromTradeShanghaiIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeShangHaiIndex(item *BaseFromTradeShanghaiIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeShangHaiIndexId)
 	return
 }
 
 func GetBaseFromTradeShangHaiIndexAll(dateStr string) (list []*BaseFromTradeShanghaiIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE data_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeShangHaiIndex(dealValue, buyValue, soldValue int, dataId int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `UPDATE base_from_trade_shanghai_index SET deal_value=?,buy_value=?,sold_value=?,modify_time=NOW() WHERE base_from_trade_shanghai_index_id=? `
-	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	err = o.Exec(sql, dealValue, buyValue, soldValue, dataId).Error
 	return
 }
 
@@ -59,9 +70,16 @@ type ShanghaiIndexResp struct {
 	Data    []*BaseFromTradeShanghaiIndex
 }
 
-func GetBaseFromTradeShangHaiIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_shanghai_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromTradeShangHaiIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) as max_date FROM base_from_trade_shanghai_index as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 26 - 12
models/data_manage/base_from_trade_zhengzhou.go

@@ -1,12 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeZhengzhouIndex struct {
-	BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	BaseFromTradeZhengzhouIndexId int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey;autoIncrement"`
 	Rank                          int
 	DealShortName                 string
 	DealName                      string
@@ -31,23 +34,27 @@ type BaseFromTradeZhengzhouIndex struct {
 	DataTime                      string
 }
 
+func (m *BaseFromTradeZhengzhouIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeZhengzhouIndex(item *BaseFromTradeZhengzhouIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 func GetBaseFromTradeZhengzhouIndexAll(dateStr string) (list []*BaseFromTradeZhengzhouIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE data_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeZhengzhouIndex(dealValue, buyValue, soldValue int, dataId int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `UPDATE base_from_trade_zhengzhou_index SET deal_value=?,buy_value=?,sold_value=?,modify_time=NOW() WHERE base_from_trade_zhengzhou_index_id=? `
-	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	err = o.Exec(sql, dealValue, buyValue, soldValue, dataId).Error
 	return
 }
 
@@ -59,9 +66,16 @@ type ZhengzhouIndexResp struct {
 	Data    []*BaseFromTradeZhengzhouIndex
 }
 
-func GetBaseFromTradeZhengzhouIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_zhengzhou_index as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromTradeZhengzhouIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.data_time) as max_date FROM base_from_trade_zhengzhou_index as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 96 - 35
models/data_manage/base_from_usda_fas.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromUsdaFasIndex struct {
-	BaseFromUsdaFasIndexId int `orm:"column(base_from_usda_fas_index_id);pk"`
+	BaseFromUsdaFasIndexId int `gorm:"column:base_from_usda_fas_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int
 	IndexCode              string
 	IndexName              string
@@ -23,9 +26,15 @@ type BaseFromUsdaFasIndex struct {
 	ModifyTime             time.Time
 }
 
+func (m *BaseFromUsdaFasIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 // BaseFromUsdaFasClassify UsdaFas原始数据分类表
 type BaseFromUsdaFasClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId      int       `gorm:"column:classify_id;primaryKey;autoIncrement"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -36,10 +45,17 @@ type BaseFromUsdaFasClassify struct {
 	CreateTime      time.Time `description:"创建时间"`
 }
 
-func GetBaseFromUsdaFasIndexMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_usda_fas_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromUsdaFasIndexMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.modify_time) as max_date FROM base_from_usda_fas_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
@@ -52,22 +68,39 @@ type UsdaFasIndexResp struct {
 }
 
 func GetBaseFromUsdaFasIndexAll(dateStr string) (list []*BaseFromUsdaFasIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_usda_fas_index WHERE end_date>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func (obj *BaseFromUsdaFasIndex) AddBaseFromUsdaFasIndex(item *BaseFromUsdaFasIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromUsdaFasIndexId)
 	return
 }
 
 func (obj *BaseFromUsdaFasIndex) InsertOrUpdateBaseFromUsdaFasIndex(item *BaseFromUsdaFasIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	//lastId, err = o.InsertOrUpdate(item)
+	result := o.FirstOrCreate(item, "base_from_usda_fas_index_id = ?", item.BaseFromUsdaFasIndexId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.BaseFromUsdaFasIndexId = 0
+		result = o.Model(item).Where("base_from_usda_fas_index_id = ?", item.BaseFromUsdaFasIndexId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.BaseFromUsdaFasIndexId), nil
 }
 
 type UsdaFasClassifyResp struct {
@@ -79,34 +112,58 @@ type UsdaFasClassifyResp struct {
 }
 
 func GetBaseFromUsdaFasClassifyAll() (list []*BaseFromUsdaFasClassify, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_usda_fas_classify `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func AddBaseFromUsdaFasClassify(item *BaseFromUsdaFasClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.ClassifyId)
 	return
 }
 
 func InsertOrUpdateBaseFromUsdaFasClassify(item *BaseFromUsdaFasClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertOrUpdate(item)
-	return
+	saveItem := *item
+	o := global.DbMap[utils.DbNameIndex]
+	//lastId, err = o.InsertOrUpdate(item)
+	result := o.FirstOrCreate(item, "classify_id = ?", item.ClassifyId)
+	if result.Error != nil {
+		err = result.Error
+		return
+	}
+	if result.RowsAffected == 0 {
+		saveItem.ClassifyId = 0
+		result = o.Model(item).Where("classify_id = ?", item.ClassifyId).Updates(saveItem)
+		if result.Error != nil {
+			err = result.Error
+			return
+		}
+	}
+	return int64(item.ClassifyId), nil
 }
 
-// GetBaseFromComTradeMaxDate 获取UsdaFas消费者指数最大数据
-func GetBaseFromUsdaFasMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_usda_fas_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+// GetBaseFromUsdaFasMaxDate 获取UsdaFas消费者指数最大数据
+func GetBaseFromUsdaFasMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.modify_time) as max_date FROM base_from_usda_fas_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }
 
 type BaseFromUsdaFasData struct {
-	BaseFromUsdaFasDataId  int       `orm:"column(base_from_usda_fas_data_id);pk"`
+	BaseFromUsdaFasDataId  int       `gorm:"column:base_from_usda_fas_data_id;primaryKey;autoIncrement"`
 	BaseFromUsdaFasIndexId int       `description:"指标id"`
 	IndexCode              string    `description:"指标编码"`
 	DataTime               string    `description:"日期"`
@@ -115,11 +172,16 @@ type BaseFromUsdaFasData struct {
 	ModifyTime             time.Time `description:"修改时间"`
 }
 
-// GetAllComTradeDataList 获取UsdaFas消费者指数数据
+func (m *BaseFromUsdaFasData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
+// GetAllBaseFromUsdaFasDataList 获取UsdaFas消费者指数数据
 func GetAllBaseFromUsdaFasDataList(startDate string) (list []*BaseFromUsdaFasData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_usda_fas_data WHERE modify_time>=?  ORDER BY base_from_usda_fas_data_id ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
@@ -131,20 +193,19 @@ type BaseFromUsdaFasDataResp struct {
 	Data    BaseFromUsdaFasDataIndexAndDataResp
 }
 
-// ComTradeIndexDataResp 分页列表响应体
+// BaseFromUsdaFasDataIndexAndDataResp 分页列表响应体
 type BaseFromUsdaFasDataIndexAndDataResp struct {
 	List   []*BaseFromUsdaFasData
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 
-// MultiAddBaseFromComTradeData 批量添加数据
+// MultiAddBaseFromUsdaFasDataIndex 批量添加数据
 func MultiAddBaseFromUsdaFasDataIndex(items []*BaseFromUsdaFasData) (lastId int64, err error) {
 	num := len(items)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(num, items)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }

+ 6 - 13
models/data_manage/business_sys_interaction_log.go

@@ -1,7 +1,8 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
@@ -39,21 +40,13 @@ var BusinessSysInteractionLogColumns = struct {
 
 // Create 添加数据
 func (m *BusinessSysInteractionLog) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.ID = uint32(id)
-
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
 // Update 更新数据
 func (m *BusinessSysInteractionLog) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
-
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
@@ -63,8 +56,8 @@ var CrmIndexLastUpdateTime = "crm_index_update_time" // crm数据
 
 // GetBusinessSysInteractionLogByKey 根据记录key获取数据
 func GetBusinessSysInteractionLogByKey(key string) (item *BusinessSysInteractionLog, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM business_sys_interaction_log WHERE 1=1 AND interaction_key = ? LIMIT 1`
-	err = o.Raw(sql, key).QueryRow(&item)
+	err = o.Raw(sql, key).First(&item).Error
 	return
 }

+ 72 - 61
models/data_manage/chart_edb_mapping.go

@@ -1,12 +1,14 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type ChartEdbMapping struct {
-	ChartEdbMappingId int       `orm:"column(chart_edb_mapping_id);pk"`
+	ChartEdbMappingId int       `gorm:"column:chart_edb_mapping_id;primaryKey;autoIncrement"`
 	ChartInfoId       int       `description:"图表id"`
 	EdbInfoId         int       `description:"指标id"`
 	CreateTime        time.Time `description:"创建时间"`
@@ -33,83 +35,92 @@ type ChartEdbMapping struct {
 }
 
 func GetChartEdbMappingTotal() (total int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT COUNT(1) AS count FROM chart_edb_mapping `
-	err = o.Raw(sql).QueryRow(&total)
+	err = o.Raw(sql).Scan(&total).Error
 	return
 }
 
 func GetChartEdbMappingList(startSize, pageSize int) (items []*ChartEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM chart_edb_mapping WHERE 1=1 `
 	sql += " LIMIT ?,? "
-	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, startSize, pageSize).Find(&items).Error
 	return
 }
 
 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"`
+	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{} `gorm:"-"`
+	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"`
+}
+
+func (m *ChartEdbInfoMapping) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.MoveLatestDate = utils.GormDateStrToDateStr(m.MoveLatestDate)
+	return
 }
 
 func GetRelationEdbInfoListMappingByCondition(condition string, pars []interface{}) (item []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.* FROM edb_info AS a 
 	JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 19 - 10
models/data_manage/chart_info.go

@@ -1,13 +1,14 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
 type ChartInfo struct {
-	ChartInfoId     int    `orm:"column(chart_info_id);pk"`
+	ChartInfoId     int    `gorm:"column:chart_info_id;primaryKey;autoIncrement"`
 	ChartName       string `description:"来源名称"`
 	ChartClassifyId int    `description:"图表分类id"`
 	SysUserId       int
@@ -31,34 +32,42 @@ type ChartInfo struct {
 	ExtraConfig     string `description:"图表额外配置,json数据"`
 }
 
+func (m *ChartInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+	return
+}
+
 func GetAllChartInfo() (list []*ChartInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM chart_info  `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func GetChartInfoEdbEndDate() (list []*ChartInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.*,max(c.end_date) AS edb_end_date FROM  chart_info  AS a
 			INNER JOIN chart_edb_mapping AS b ON a.chart_info_id=b.chart_info_id
 			INNER JOIN edb_info AS c ON b.edb_info_id=c.edb_info_id
 			GROUP BY a.chart_info_id  `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 func ModifyChartInfoEdbEndDate(chartInfoId int, edbEndDate string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE chart_info SET edb_end_date=? WHERE chart_info_id=? `
-	_, err = o.Raw(sql, edbEndDate, chartInfoId).Exec()
+	err = o.Exec(sql, edbEndDate, chartInfoId).Error
 	return
 }
 
 // 根据chart_info_id数组获取图表信息
 func GetChartInfoByChartInfoIds(chartInfoIds []int) (list []*ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM chart_info  WHERE chart_info_id IN (` + utils.GetOrmInReplace(len(chartInfoIds)) + `) `
-	_, err = o.Raw(sql, chartInfoIds).QueryRows(&list)
+	err = o.Raw(sql, chartInfoIds).Find(&list).Error
 	return
 }

+ 30 - 14
models/data_manage/com_trade_data.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // ComTradeData 联合国商品贸易数据表
 type ComTradeData struct {
-	ComTradeDataId     int       `orm:"column(com_trade_data_id);pk"`
+	ComTradeDataId     int       `gorm:"column:com_trade_data_id;primaryKey;autoIncrement"`
 	ComTradeId         int       `description:"指标id"`
 	IndexCode          string    `description:"联合国商品贸易编码"`
 	Flow               string    `description:"贸易流向:X(Export:出口);M(Import:进口)"`
@@ -27,19 +30,26 @@ type ComTradeData struct {
 	CreateTime         time.Time `description:"创建时间"`
 }
 
+func (m *ComTradeData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 // GetAllComTradeDataList 获取联合国商品贸易数据列表
 func GetAllComTradeDataList(startDate string) (list []*ComTradeData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM com_trade_data WHERE create_time>=?  ORDER BY com_trade_data_id ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
-
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
 // AddBaseFromComTradeData 添加数据
 func AddBaseFromComTradeData(item *ComTradeData) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.ComTradeDataId)
 	return
 }
 
@@ -49,16 +59,22 @@ func MultiAddBaseFromComTradeData(items []*ComTradeData) (lastId int64, err erro
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(num, items)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 // GetBaseFromComTradeMaxDate 获取un数据中的最大日期数据
-func GetBaseFromComTradeMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.create_time)as max_date FROM com_trade_data as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetBaseFromComTradeMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.create_time) as max_date FROM com_trade_data as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 11 - 14
models/data_manage/com_trade_index.go

@@ -1,14 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
 
 // ComTradeIndex 联合国商品贸易数据指标表
 type ComTradeIndex struct {
-	ComTradeId  int       `orm:"column(com_trade_id);pk"`
+	ComTradeId  int       `gorm:"column:com_trade_id;primaryKey;autoIncrement"`
 	IndexCode   string    `description:"联合国商品贸易编码"`
 	IndexName   string    `description:"联合国商品名称"`
 	IndexNameCn string    `description:"联合国商品名称(中文)"`
@@ -18,24 +19,22 @@ type ComTradeIndex struct {
 
 // GetAllComTradeIndexList 获取指标数据列表
 func GetAllComTradeIndexList(startDate string) (list []*ComTradeIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM com_trade_index WHERE create_time>=?  ORDER BY com_trade_id DESC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
-
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
 func GetBaseFromComTradeCodeMappingAll(dateStr string) (list []*BaseFromEiaSteoIndex, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM com_trade_index WHERE create_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 // AddBaseFromComTradeIndex 添加新的指标
 func AddBaseFromComTradeIndex(item *ComTradeIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
@@ -50,17 +49,15 @@ type ComTradeCodeMapping struct {
 
 // GetAllComTradeCodeMappingList 获取联合国商品贸易数据指标编码与分类编码的关系列表
 func GetAllComTradeCodeMappingList(startDate string) (list []*ComTradeCodeMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM com_trade_code_mapping WHERE create_time>=?  ORDER BY create_time ASC `
-	_, err = o.Raw(sql, startDate).QueryRows(&list)
-
+	err = o.Raw(sql, startDate).Find(&list).Error
 	return
 }
 
 // AddBaseFromComTradeCodeMapping 添加联合国商品贸易数据指标编码与分类编码的关系
 func AddBaseFromComTradeCodeMapping(item *ComTradeCodeMapping) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 

+ 9 - 8
models/data_manage/cross_variety/chart_info_cross_variety.go

@@ -1,17 +1,18 @@
 package cross_variety
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 // ChartInfoCrossVariety
 // @Description: 跨品种分析配置表
 type ChartInfoCrossVariety struct {
-	Id             int       `orm:"column(id);pk"`
+	Id             int       `gorm:"primaryKey;autoIncrement"`
 	ChartInfoId    int       `description:"图表id"`
-	ChartXTagId    int       `description:"X轴的标签ID"`
-	ChartYTagId    int       `description:"X轴的标签ID"`
+	ChartXTagId    int       `gorm:"column:chart_x_tag_id" description:"X轴的标签ID"`
+	ChartYTagId    int       `gorm:"column:chart_y_tag_id" description:"X轴的标签ID"`
 	CalculateValue int       `description:"计算窗口"`
 	CalculateUnit  string    `description:"计算频度"`
 	ModifyTime     time.Time `description:"修改时间"`
@@ -19,17 +20,17 @@ type ChartInfoCrossVariety struct {
 }
 
 func GetChartInfoCrossVarietyList(startSize, pageSize int) (items []*ChartInfoCrossVariety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM chart_info_cross_variety WHERE 1=1 `
 	sql += " LIMIT ?,? "
-	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, startSize, pageSize).Find(&items).Error
 	return
 }
 
 func GetChartInfoCrossVarietyTotal() (total int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT count(*) FROM chart_info_cross_variety`
-	err = o.Raw(sql).QueryRow(&total)
+	err = o.Raw(sql).Scan(&total).Error
 	return
 }
 

+ 4 - 4
models/data_manage/cross_variety/chart_tag_variety.go

@@ -1,15 +1,15 @@
 package cross_variety
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // ChartTagVariety
 // @Description: chart_tag_variety 图表标签品种关系表
 type ChartTagVariety struct {
-	Id                        int       `orm:"column(id);pk"`
+	Id                        int       `gorm:"column:id;primaryKey;autoIncrement"`
 	ChartTagId                int       `description:"标签id"`
 	ChartVarietyId            int       `description:"品种id"`
 	EdbInfoId                 int       `description:"指标id"`
@@ -20,8 +20,8 @@ type ChartTagVariety struct {
 }
 
 func GetChartTagVarietyEdbInfoIdsByTagIds(chartTagIds []int) (items []*ChartTagVariety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM chart_tag_variety WHERE chart_tag_id in (` + utils.GetOrmInReplace(len(chartTagIds)) + `)`
-	_, err = o.Raw(sql, chartTagIds).QueryRows(&items)
+	err = o.Raw(sql, chartTagIds).Find(&items).Error
 	return
 }

+ 9 - 9
models/data_manage/edb_classify.go

@@ -1,25 +1,26 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 type EdbClassify struct {
-	ClassifyID         int64 `orm:"column(classify_id);pk"`
+	ClassifyID         int64 `gorm:"column:classify_id;primaryKey;autoIncrement"`
 	ClassifyType       uint32
 	ClassifyName       string
-	ParentID           int64
+	ParentID           int64 `gorm:"column:parent_id"`
 	HasData            int32
 	CreateTime         time.Time
 	ModifyTime         time.Time
-	SysUserID          int64
+	SysUserID          int64 `gorm:"column:sys_user_id"`
 	SysUserRealName    string
 	Level              int64
 	UniqueCode         string
 	Sort               uint32
-	RootID             int64
-	LastModifyUserID   uint32
+	RootID             int64  `gorm:"column:root_id"`
+	LastModifyUserID   uint32 `gorm:"column:last_modify_user_id"`
 	LastModifyUserName string
 }
 
@@ -32,13 +33,12 @@ type EdbClassify struct {
 // @return item []*EdbInfoUpdateLog
 // @return err error
 func GetAllEdbClassifyListByCondition(condition string, pars []interface{}) (item []*EdbClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_classify WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY classify_id ASC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 1 - 1
models/data_manage/edb_data_base.go

@@ -377,7 +377,7 @@ func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr, value string) (addSql
 }
 
 type EdbDataBase struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
 	EdbInfoId     int
 	EdbCode       string
 	DataTime      string

+ 41 - 32
models/data_manage/edb_data_calculate.go

@@ -1,40 +1,43 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
-func GetEdbDataCalculateByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_calculate WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
+//func GetEdbDataCalculateByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_calculate WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func ModifyEdbDataCalculate(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_calculate SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataCalculate(edbInfoId int64, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_calculate SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	sql = utils.ReplaceDriverKeywords("", sql)
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
-func AddEdbDataCalculateBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
+//func AddEdbDataCalculateBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 // DeleteEdbDataCalculateBySql 根据删除sql删除指标数据
-func DeleteEdbDataCalculateBySql(deleteStr string, edbInfoId int) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(deleteStr, edbInfoId).Exec()
-	return
-}
+//func DeleteEdbDataCalculateBySql(deleteStr string, edbInfoId int) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(deleteStr, edbInfoId).Error
+//	return
+//}
 
 type EdbInfoCalculateDetail struct {
-	EdbInfoCalculateId int       `orm:"column(edb_info_calculate_id);pk"`
+	EdbInfoCalculateId int       `gorm:"column:edb_info_calculate_id;primaryKey;autoIncrement"`
 	EdbInfoId          int       `description:"指标id"`
 	EdbCode            string    `description:"指标编码"`
 	FromEdbInfoId      int       `description:"计算指标id"`
@@ -50,23 +53,29 @@ type EdbInfoCalculateDetail struct {
 	EndDate            string    `description:"结束日期"`
 }
 
-func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? ORDER BY sort ASC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+func (m *EdbInfoCalculateDetail) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
 	return
 }
 
+//func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+//			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+//			WHERE a.edb_info_id=? ORDER BY sort ASC `
+//	err = o.Raw(sql, edbInfoId).Find(&list).Error
+//	return
+//}
+
 func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfoCalculateDetail, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 
 	calculateTableName := GetEdbInfoCalculateTableName(source)
 	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM %s AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? ORDER BY sort ASC `
 	sql = fmt.Sprintf(sql, calculateTableName)
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	err = o.Raw(sql, edbInfoId).Find(&list).Error
 	return
 }

+ 22 - 22
models/data_manage/edb_data_calculate_ljztbpj.go

@@ -1,27 +1,27 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"time"
-)
-
 // EdbDataCalculateLjztbpj 累计值同比拼接数据结构体
-type EdbDataCalculateLjztbpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataCalculateLjztbpj struct {
+//	EdbDataId     int `gorm:"column:edb_data_id;primaryKey;autoIncrement"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func (m *EdbDataCalculateLjztbpj) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
 
 // GetAllEdbDataCalculateLjztbpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
-	return
-}
+//func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
+//	err = o.Raw(sql, edbInfoId).Find(&items).Error
+//	return
+//}

+ 22 - 22
models/data_manage/edb_data_calculate_zjpj.go

@@ -1,27 +1,27 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"time"
-)
-
 // EdbDataCalculateZjpj 直接拼接数据结构体
-type EdbDataCalculateZjpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataCalculateZjpj struct {
+//	EdbDataId     int `gorm:"column:edb_data_id;primaryKey;autoIncrement"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func (m *EdbDataCalculateZjpj) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
 
 // GetAllEdbDataCalculateZjpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
-	return
-}
+//func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
+//	err = o.Raw(sql, edbInfoId).Find(&items).Error
+//	return
+//}

+ 208 - 211
models/data_manage/edb_data_cffex.go

@@ -1,217 +1,214 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type CffexData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromCffexDataSimple struct {
-	Id        int `orm:"column(base_from_trade_cffex_index_id);pk"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromCffex struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeCFFEXIndex struct {
-	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
-	Rank                      int
-	DealShortName             string
-	DealName                  string
-	DealCode                  string
-	DealValue                 string
-	DealChange                int
-	BuyShortName              string
-	BuyName                   string
-	BuyCode                   string
-	BuyValue                  string
-	BuyChange                 int
-	SoldShortName             string
-	SoldName                  string
-	SoldCode                  string
-	SoldValue                 string
-	SoldChange                int
-	Frequency                 string
-	ClassifyName              string
-	ClassifyType              string
-	CreateTime                time.Time
-	ModifyTime                time.Time
-	DataTime                  string
-}
-
-func GetEdbDataCffexMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_cffex WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
-	return
-}
+//type CffexData struct {
+//	InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
+//	DataTime   string `gorm:"column:DATA_DATE" description:"值"`
+//}
+
+//type BaseFromCffexDataSimple struct {
+//	Id        int `gorm:"column(base_from_trade_cffex_index_id);primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//func (m *BaseFromCffexDataSimple) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
+
+//type BaseInfoFromCffex struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeCFFEXIndex struct {
+//	BaseFromTradeCffexIndexId int `gorm:"column(base_from_trade_cffex_index_id);primaryKey"`
+//	Rank                      int
+//	DealShortName             string
+//	DealName                  string
+//	DealCode                  string
+//	DealValue                 string
+//	DealChange                int
+//	BuyShortName              string
+//	BuyName                   string
+//	BuyCode                   string
+//	BuyValue                  string
+//	BuyChange                 int
+//	SoldShortName             string
+//	SoldName                  string
+//	SoldCode                  string
+//	SoldValue                 string
+//	SoldChange                int
+//	Frequency                 string
+//	ClassifyName              string
+//	ClassifyType              string
+//	CreateTime                time.Time
+//	ModifyTime                time.Time
+//	DataTime                  string
+//}
+
+//func GetEdbDataCffexMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_cffex WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByCffex 刷新中金所指标数据
-func RefreshEdbDataByCffex(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetCffexDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataCffexByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataCffex(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByCffex(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetCffexDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataCffexByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataCffex(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromCffexByIndexCode 获取指标信息
-func GetBaseInfoFromCffexByIndexCode(indexCode, suffix string) (list []*BaseInfoFromCffex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func AddEdbDataCffexBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataCffex(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_cffex SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func GetBaseInfoFromCffexByIndexCode(indexCode, suffix string) (list []*BaseInfoFromCffex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars...).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataCffexBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataCffex(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_cffex SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	sql = utils.ReplaceDriverKeywords("", sql)
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 176 - 185
models/data_manage/edb_data_dl.go

@@ -1,191 +1,182 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type DlData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromDlDataSimple struct {
-	Id        int `orm:"column(base_from_trade_dalian_index_id);pk"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromDl struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-func GetEdbDataDlMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_dl WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
-	return
-}
+//type DlData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromDlDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_dalian_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromDl struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//func GetEdbDataDlMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_dl WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByDl 刷新大商所指标数据
-func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetDlDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataDlByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataDl(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetDlDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataDlByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataDl(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromDalianByIndexCode 获取指标信息
-func GetBaseInfoFromDalianByIndexCode(indexCode, suffix string) (list []*BaseInfoFromDl, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func AddEdbDataDlBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataDl(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_dl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func GetBaseInfoFromDalianByIndexCode(indexCode, suffix string) (list []*BaseInfoFromDl, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataDlBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataDl(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_dl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 37 - 30
models/data_manage/edb_data_gl.go

@@ -1,64 +1,70 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
-func AddEdbDataGlBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
+//func AddEdbDataGlBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 type GlData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+	InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
+	DataTime   string `gorm:"column:DATA_DATE" description:"值"`
+}
+
+func (m *GlData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
 }
 
 func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData, err error) {
 	//sql := ` SELECT * FROM mb_index_main_data WHERE 1=1 AND DATA_VALUE is not null `
-	//o := orm.NewOrm()
+	//o := global.DbMap[utils.DbNameIndex]
 	//if condition != "" {
 	//	sql += condition
 	//}
 	//sql += ` ORDER BY PUBLISH_TIME DESC `
 	condition += " AND IS_DELETE=0 "
 	sql1 := ` SELECT * FROM mb_index_main_data WHERE 1=1 AND DATA_VALUE is not null `
-	o := orm.NewOrmUsingDB("gl")
+	o := global.DbMap[utils.DbNameGL]
 	if condition != "" {
 		sql1 += condition
 	}
 	sql := `select * from (` + sql1 + ` having 1 order by PUBLISH_TIME DESC ) tmp group by DATA_DATE ORDER BY PUBLISH_TIME DESC `
 
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
-func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
+//func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func ModifyEdbDataGl(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataGl(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
 // 刷新钢联指标数据
 func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
+	o := global.DbMap[utils.DbNameIndex]
+	tx := o.Begin()
+	if tx.Error != nil {
+		return tx.Error
 	}
 	defer func() {
 		if err != nil {
@@ -98,7 +104,7 @@ func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err
 	dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_GL, utils.DATA_SUB_SOURCE_EDB)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	err = o.Raw(sql, edbInfoId).Find(&existDataList).Error
 	if err != nil {
 		return err
 	}
@@ -132,7 +138,7 @@ func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err
 				if existVal != item.InputValue {
 					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 					sql = fmt.Sprintf(sql, dataTableName)
-					_, err = tx.Raw(sql, item.InputValue, edbInfoId, v.DataTime).Exec()
+					err = tx.Exec(sql, item.InputValue, edbInfoId, v.DataTime).Error
 					if err != nil {
 						return err
 					}
@@ -143,7 +149,8 @@ func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
+		addSql = utils.ReplaceDriverKeywords("", sql)
+		err = tx.Exec(addSql, pars...).Error
 		if err != nil {
 			return err
 		}

+ 65 - 74
models/data_manage/edb_data_lt.go

@@ -1,86 +1,77 @@
 package data_manage
 
-import (
-	"encoding/json"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"time"
-)
-
-type EdbDataLt struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataLt struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
 // AddEdbDataLtBySql 执行添加数据的sql
-func AddEdbDataLtBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
+//func AddEdbDataLtBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 // ModifyEdbDataLt 修改路透社数据
-func ModifyEdbDataLt(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_lt SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataLt(edbInfoId int64, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_lt SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
-func GetEdbDataLtMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_lt WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&min_date, &max_date)
-	return
-}
+//func GetEdbDataLtMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_lt WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
+//	return
+//}
 
-func GetEdbDataLtByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lt WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
+//func GetEdbDataLtByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_lt WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataLtByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM edb_data_lt WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
-	_, err = o.Raw(sql, edbCode, size).QueryRows(&items)
-	return
-}
+//func GetEdbDataLtByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_lt WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
+//	err = o.Raw(sql, edbCode, size).Find(&items).Error
+//	return
+//}
 
-type EdbDataFromLt struct {
-	Close map[int64]interface{} `json:"CLOSE"`
-}
+//type EdbDataFromLt struct {
+//	Close map[int64]interface{} `json:"CLOSE"`
+//}
 
 // QueryEdbDataByLt 获取路透社数据
-func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
-	dataList = make(map[int64]interface{})
-
-	ltUrl := utils.LtServerUrl + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
-	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("ltUrl:%s", ltUrl)
-	body, err := http.Get(ltUrl)
-	utils.FileLog.Info("lt result:%s", string(body))
-
-	if err != nil {
-		return
-	}
-	//fmt.Println(string(body))
-	item := new(EdbDataFromLt)
-	err = json.Unmarshal(body, &item)
-
-	if err != nil {
-		return
-	}
-	dataList = item.Close
-	return
-}
+//func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
+//	dataList = make(map[int64]interface{})
+//
+//	ltUrl := utils.LtServerUrl + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("ltUrl:%s", ltUrl)
+//	body, err := http.Get(ltUrl)
+//	utils.FileLog.Info("lt result:%s", string(body))
+//
+//	if err != nil {
+//		return
+//	}
+//	//fmt.Println(string(body))
+//	item := new(EdbDataFromLt)
+//	err = json.Unmarshal(body, &item)
+//
+//	if err != nil {
+//		return
+//	}
+//	dataList = item.Close
+//	return
+//}

+ 67 - 71
models/data_manage/edb_data_lz.go

@@ -1,78 +1,74 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
+//type lzSurveyData struct {
+//	DataTime   string `orm:"column(data_time)" description:"日期"`
+//	InputValue string `orm:"column(input_value)" description:"值"`
+//}
 
-type lzSurveyData struct {
-	DataTime   string `orm:"column(data_time)" description:"日期"`
-	InputValue string `orm:"column(input_value)" description:"值"`
-}
+//type LongzhongSurveyData struct {
+//	SurveyDataId         int `orm:"column(survey_data_id);pk" gorm:"primaryKey"`
+//	SurveyProductId      int
+//	ProjectQuotaId       int64
+//	BreedId              string
+//	BreedName            string
+//	QuotaId              string
+//	QuotaName            string
+//	UnitId               string
+//	UnitName             string
+//	SampleType           int64
+//	SampleId             string
+//	SampleName           string
+//	DeviceId             string
+//	Device               string
+//	ProductCraftId       string
+//	ProductCraft         string
+//	ProductLine          string
+//	InputMode            int64
+//	Frequency            int64
+//	InputValue           string
+//	TaskShouldFinishTime int64
+//	CustomId             string
+//	CustomType           int64
+//	Custom               string
+//	QuotaSampleId        int64
+//	TaskActualFinishTime int64
+//	AreaName             string
+//	ProvinceName         string
+//	ResearchStartData    int64
+//	ResearchStopData     int64
+//	DataTime             string
+//}
 
-type LongzhongSurveyData struct {
-	SurveyDataId         int `orm:"column(survey_data_id);pk"`
-	SurveyProductId      int
-	ProjectQuotaId       int64
-	BreedId              string
-	BreedName            string
-	QuotaId              string
-	QuotaName            string
-	UnitId               string
-	UnitName             string
-	SampleType           int64
-	SampleId             string
-	SampleName           string
-	DeviceId             string
-	Device               string
-	ProductCraftId       string
-	ProductCraft         string
-	ProductLine          string
-	InputMode            int64
-	Frequency            int64
-	InputValue           string
-	TaskShouldFinishTime int64
-	CustomId             string
-	CustomType           int64
-	Custom               string
-	QuotaSampleId        int64
-	TaskActualFinishTime int64
-	AreaName             string
-	ProvinceName         string
-	ResearchStartData    int64
-	ResearchStopData     int64
-	DataTime             string
-}
+//func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
+//	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
+//				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
+//				WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY a.data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
 
-func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
-	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
-				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
-				WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY a.data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
+//func GetLzSurveyDataExistByTradeCode(surveyProductId int) (items []*LongzhongSurveyData, err error) {
+//	sql := ` SELECT  * FROM longzhong_survey_data WHERE 1=1 AND survey_product_id=? `
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Raw(sql, surveyProductId).Find(&items).Error
+//	return
+//}
 
-func GetLzSurveyDataExistByTradeCode(surveyProductId int) (items []*LongzhongSurveyData, err error) {
-	sql := ` SELECT  * FROM longzhong_survey_data WHERE 1=1 AND survey_product_id=? `
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, surveyProductId).QueryRows(&items)
-	return
-}
+//func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataLz(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_lz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataLz(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_lz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 156 - 165
models/data_manage/edb_data_manual.go

@@ -1,169 +1,160 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-func AddEdbDataManualBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetEdbDataManualMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_manual WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&min_date, &max_date)
-	return
-}
-
-type ManualEdbdata struct {
-	TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
-	Dt         string    `orm:"column(DT)" description:"日期"`
-	Close      float64   `orm:"column(CLOSE)" description:"值"`
-	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
-}
-
-func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
-	sql := ` SELECT  * FROM edbdata WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY DT DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func GetEdbDataManualByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_manual WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataManual(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_manual SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func AddEdbDataManualBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetEdbDataManualMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_manual WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
+//	return
+//}
+
+//type ManualEdbdata struct {
+//	TradeCode  string    `orm:"column(TRADE_CODE);pk" gorm:"primaryKey" description:"指标编码"`
+//	Dt         string    `orm:"column(DT)" description:"日期"`
+//	Close      float64   `orm:"column(CLOSE)" description:"值"`
+//	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
+//}
+
+//func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
+//	sql := ` SELECT  * FROM edbdata WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY DT DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func GetEdbDataManualByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_manual WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataManual(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_manual SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
 // 刷新手工指标数据
-func RefreshManual(item *EdbInfoList) (err error) {
-	//edbInfoId int, edbCode, startDate, endDate string
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	edbInfoId := item.EdbInfoId
-	edbCode := item.EdbCode
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-	if edbCode != "" {
-		condition += " AND TRADE_CODE=? "
-		pars = append(pars, edbCode)
-	}
-
-	//获取已存在的手工数据
-	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
-
-	var existCondition string
-	var existPars []interface{}
-	if edbCode != "" {
-		existCondition += " AND edb_code=? "
-		existPars = append(existPars, edbCode)
-	}
-	//获取ETA指标库已存在的所有数据
-	existDataList, err := GetEdbDataListAll(existCondition, existPars, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, 0)
-	if err != nil {
-		return err
-	}
-
-	existMap := make(map[string]*EdbInfoSearchData)
-	for _, v := range existDataList {
-		existMap[v.DataTime] = v
-	}
-
-	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	manualMap := make(map[string]*ManualEdbdata)
-	for _, v := range manualDataList {
-		item := v
-		eDate := item.Dt
-		sValue := utils.SubFloatToString(item.Close, 4)
-		if findItem, ok := existMap[v.Dt]; !ok {
-			nowStr := time.Now().Format(utils.FormatDateTime)
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += "("
-			addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + sValue + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "1" + "," + "'" + timeStr + "'"
-			addSql += "),"
-			isAdd = true
-		} else {
-			if item.Close != findItem.Value {
-				err = ModifyEdbDataManual(int64(edbInfoId), eDate, sValue)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		manualMap[v.Dt] = v
-	}
-
-	for _, v := range existDataList {
-		if _, ok := manualMap[v.DataTime]; !ok {
-			go DeleteEdbDataByIdAndSource(v.EdbDataId, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB)
-		}
-	}
-
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-
-	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, edbCode)
-	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
-			err = nil
-		} else {
-			return err
-		}
-	} else {
-		if maxAndMinItem != nil {
-			err = ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	return
-}
+//func RefreshManual(item *EdbInfoList) (err error) {
+//	//edbInfoId int, edbCode, startDate, endDate string
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//
+//	edbInfoId := item.EdbInfoId
+//	edbCode := item.EdbCode
+//
+//	if err != nil {
+//		return
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//	if edbCode != "" {
+//		condition += " AND TRADE_CODE=? "
+//		pars = append(pars, edbCode)
+//	}
+//
+//	//获取已存在的手工数据
+//	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
+//
+//	var existCondition string
+//	var existPars []interface{}
+//	if edbCode != "" {
+//		existCondition += " AND edb_code=? "
+//		existPars = append(existPars, edbCode)
+//	}
+//	//获取ETA指标库已存在的所有数据
+//	existDataList, err := GetEdbDataListAll(existCondition, existPars, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, 0)
+//	if err != nil {
+//		return err
+//	}
+//
+//	existMap := make(map[string]*EdbInfoSearchData)
+//	for _, v := range existDataList {
+//		existMap[v.DataTime] = v
+//	}
+//
+//	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	manualMap := make(map[string]*ManualEdbdata)
+//	for _, v := range manualDataList {
+//		item := v
+//		eDate := item.Dt
+//		sValue := utils.SubFloatToString(item.Close, 4)
+//		if findItem, ok := existMap[v.Dt]; !ok {
+//			nowStr := time.Now().Format(utils.FormatDateTime)
+//			dataTime, err := time.Parse(utils.FormatDate, eDate)
+//			if err != nil {
+//				return err
+//			}
+//			timestamp := dataTime.UnixNano() / 1e6
+//			timeStr := fmt.Sprintf("%d", timestamp)
+//			addSql += "("
+//			addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + sValue + "," + "'" + nowStr + "'" +
+//				"," + "'" + nowStr + "'" + "," + "1" + "," + "'" + timeStr + "'"
+//			addSql += "),"
+//			isAdd = true
+//		} else {
+//			if item.Close != findItem.Value {
+//				err = ModifyEdbDataManual(int64(edbInfoId), eDate, sValue)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		manualMap[v.Dt] = v
+//	}
+//
+//	for _, v := range existDataList {
+//		if _, ok := manualMap[v.DataTime]; !ok {
+//			go DeleteEdbDataByIdAndSource(v.EdbDataId, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB)
+//		}
+//	}
+//
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//
+//	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, edbCode)
+//	if err != nil {
+//		if utils.IsErrNoRow(err) {
+//			return nil
+//		} else {
+//			return err
+//		}
+//	} else {
+//		if maxAndMinItem != nil && maxAndMinItem.MinDate != "" && maxAndMinItem.MaxDate != "" {
+//			err = ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
+//			if err != nil {
+//				return err
+//			}
+//		}
+//	}
+//	return
+//}

+ 42 - 47
models/data_manage/edb_data_pb.go

@@ -1,54 +1,49 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"time"
-)
+//type EdbDataPb struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	Ticker        string
+//	Field         string
+//	DataTimestamp int64
+//}
 
-type EdbDataPb struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	Ticker        string
-	Field         string
-	DataTimestamp int64
-}
+//func AddEdbDataPb(items []*EdbDataPb) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataPb(items []*EdbDataPb) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
-	return
-}
+//func ModifyEdbDataPb(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_pb SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataPb(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_pb SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	_, err = o.Raw(sql, edbInfoId, value, edbCode, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataPbStatus(edbInfoId int64, edbCode string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_pb SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
+//	err = o.Exec(sql, edbInfoId, edbCode).Error
+//	return
+//}
 
-func ModifyEdbDataPbStatus(edbInfoId int64, edbCode string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_pb SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
-	_, err = o.Raw(sql, edbInfoId, edbCode).Exec()
-	return
-}
+//func GetEdbDataPbCount(edbCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataPbCount(edbCode, dataTime string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, dataTime).QueryRow(&count)
-	return
-}
-
-func GetEdbDataPbMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&min_date, &max_date)
-	return
-}
+//func GetEdbDataPbMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 6 - 10
models/data_manage/edb_data_quarter.go

@@ -1,12 +1,8 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
-
-func GetEdbDataQuarterCount(edbInfoId int) (count int, err error) {
-	o := orm.NewOrm()
-	hsql := `SELECT COUNT(1) AS count FROM edb_data_quarter WHERE edb_info_id=? `
-	err = o.Raw(hsql, edbInfoId).QueryRow(&count)
-	return
-}
+//func GetEdbDataQuarterCount(edbInfoId int) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	hsql := `SELECT COUNT(1) AS count FROM edb_data_quarter WHERE edb_info_id=? `
+//	err = o.Raw(hsql, edbInfoId).Scan(&count).Error
+//	return
+//}

+ 202 - 211
models/data_manage/edb_data_sh.go

@@ -1,217 +1,208 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ShData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromShDataSimple struct {
-	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromSh struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeShIndex struct {
-	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
-	Rank                   int
-	DealShortName          string
-	DealName               string
-	DealCode               string
-	DealValue              string
-	DealChange             int
-	BuyShortName           string
-	BuyName                string
-	BuyCode                string
-	BuyValue               string
-	BuyChange              int
-	SoldShortName          string
-	SoldName               string
-	SoldCode               string
-	SoldValue              string
-	SoldChange             int
-	Frequency              string
-	ClassifyName           string
-	ClassifyType           string
-	CreateTime             time.Time
-	ModifyTime             time.Time
-	DataTime               string
-}
-
-func GetEdbDataShMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_sh WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
-	return
-}
+//type ShData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromShDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromSh struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeShIndex struct {
+//	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
+//	Rank                   int
+//	DealShortName          string
+//	DealName               string
+//	DealCode               string
+//	DealValue              string
+//	DealChange             int
+//	BuyShortName           string
+//	BuyName                string
+//	BuyCode                string
+//	BuyValue               string
+//	BuyChange              int
+//	SoldShortName          string
+//	SoldName               string
+//	SoldCode               string
+//	SoldValue              string
+//	SoldChange             int
+//	Frequency              string
+//	ClassifyName           string
+//	ClassifyType           string
+//	CreateTime             time.Time
+//	ModifyTime             time.Time
+//	DataTime               string
+//}
+
+//func GetEdbDataShMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_sh WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataBySh 刷新上期所指标数据
-func RefreshEdbDataBySh(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetShDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataShByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataSh(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataBySh(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetShDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataShByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataSh(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromShByIndexCode 获取指标信息
-func GetBaseInfoFromShByIndexCode(indexCode, suffix string) (list []*BaseInfoFromSh, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func AddEdbDataShBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataSh(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_sh SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func GetBaseInfoFromShByIndexCode(indexCode, suffix string) (list []*BaseInfoFromSh, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataShBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataSh(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_sh SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 202 - 211
models/data_manage/edb_data_shfe.go

@@ -1,217 +1,208 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ShfeData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromShfeDataSimple struct {
-	Id        int `orm:"column(base_from_trade_ine_index_id);pk"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromShfe struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeShfeIndex struct {
-	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
-	Rank                     int
-	DealShortName            string
-	DealName                 string
-	DealCode                 string
-	DealValue                string
-	DealChange               int
-	BuyShortName             string
-	BuyName                  string
-	BuyCode                  string
-	BuyValue                 string
-	BuyChange                int
-	SoldShortName            string
-	SoldName                 string
-	SoldCode                 string
-	SoldValue                string
-	SoldChange               int
-	Frequency                string
-	ClassifyName             string
-	ClassifyType             string
-	CreateTime               time.Time
-	ModifyTime               time.Time
-	DataTime                 string
-}
-
-func GetEdbDataShfeMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_ine WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
-	return
-}
+//type ShfeData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromShfeDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromShfe struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeShfeIndex struct {
+//	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
+//	Rank                     int
+//	DealShortName            string
+//	DealName                 string
+//	DealCode                 string
+//	DealValue                string
+//	DealChange               int
+//	BuyShortName             string
+//	BuyName                  string
+//	BuyCode                  string
+//	BuyValue                 string
+//	BuyChange                int
+//	SoldShortName            string
+//	SoldName                 string
+//	SoldCode                 string
+//	SoldValue                string
+//	SoldChange               int
+//	Frequency                string
+//	ClassifyName             string
+//	ClassifyType             string
+//	CreateTime               time.Time
+//	ModifyTime               time.Time
+//	DataTime                 string
+//}
+
+//func GetEdbDataShfeMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_ine WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByShfe 刷新上期能源指标数据
-func RefreshEdbDataByShfe(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetShfeDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataShfeByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataShfe(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByShfe(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetShfeDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataShfeByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataShfe(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromShfeByIndexCode 获取指标信息
-func GetBaseInfoFromShfeByIndexCode(indexCode, suffix string) (list []*BaseInfoFromShfe, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func AddEdbDataShfeBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataShfe(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_ine SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func GetBaseInfoFromShfeByIndexCode(indexCode, suffix string) (list []*BaseInfoFromShfe, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataShfeBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataShfe(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ine SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 34 - 39
models/data_manage/edb_data_ths.go

@@ -1,45 +1,40 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"time"
-)
+//type EdbDataThs struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
-type EdbDataThs struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//func AddEdbDataThs(items []*EdbDataThs) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataThs(items []*EdbDataThs) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
-	return
-}
+//func ModifyEdbDataThs(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ths SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataThs(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_ths SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	_, err = o.Raw(sql, edbInfoId, value, edbCode, dataTime).Exec()
-	return
-}
+//func GetEdbDataThsCount(ebdCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, ebdCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataThsCount(ebdCode, dataTime string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, ebdCode, dataTime).QueryRow(&count)
-	return
-}
-
-func GetEdbDataThsMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_ths WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&min_date, &max_date)
-	return
-}
+//func GetEdbDataThsMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_ths WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 40 - 45
models/data_manage/edb_data_wind.go

@@ -1,52 +1,47 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"time"
-)
+//type EdbDataWind struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
-type EdbDataWind struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//func AddEdbDataWind(items []*EdbDataWind) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataWind(items []*EdbDataWind) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
-	return
-}
+//func ModifyEdbDataWind(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_wind SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataWind(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_wind SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	_, err = o.Raw(sql, edbInfoId, value, edbCode, dataTime).Exec()
-	return
-}
+//func ModifyEdbDataWindStatus(edbInfoId int64, edbCode string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_wind SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
+//	err = o.Exec(sql, edbInfoId, edbCode).Error
+//	return
+//}
 
-func ModifyEdbDataWindStatus(edbInfoId int64, edbCode string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_wind SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
-	_, err = o.Raw(sql, edbInfoId, edbCode).Exec()
-	return
-}
+//func GetEdbDataWindCount(edbCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataWindCount(edbCode, dataTime string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, dataTime).QueryRow(&count)
-	return
-}
-
-func GetEdbDataWindMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_wind WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&min_date, &max_date)
-	return
-}
+//func GetEdbDataWindMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_wind WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 141 - 156
models/data_manage/edb_data_ys.go

@@ -5,45 +5,30 @@
 
 package data_manage
 
-import (
-	"crypto/md5"
-	"encoding/hex"
-	"encoding/json"
-	"errors"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"strconv"
-	"time"
-)
-
-type EdbDataYs struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-func AddEdbDataSmm(items []*EdbDataYs) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
-	return
-}
-
-func ModifyEdbDataSmm(edbCode, dataTime string, value float64) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_ys SET value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbCode, dataTime).Exec()
-	return
-}
+//type EdbDataYs struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func AddEdbDataSmm(items []*EdbDataYs) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
+
+//func ModifyEdbDataSmm(edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ys SET value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, value, edbCode, dataTime).Error
+//	return
+//}
 
 /*
 
@@ -244,7 +229,7 @@ func SyncSmmIndexDataBase() {
 									dataItem.CreateTime = time.Now()
 									dataItem.ModifyTime = time.Now()
 									dataItem.DataTimestamp = timestamp
-									_, err = data_manage.AddBaseFromSmmData(dataItem)
+									err = data_manage.AddBaseFromSmmData(dataItem)
 									if err != nil && !strings.Contains(err.Error(), "idx_index_code_date") {
 										fmt.Println("AddBaseFromSmmData Err:" + err.Error())
 										return
@@ -295,135 +280,135 @@ func SyncSmmIndexDataBase() {
 }
 */
 
-const (
-	dataUrl = "https://dataapi.smm.cn/GetData/" //data url (中文)
-	//dataUrl = "https://dataapi.smm.cn/GetDataEn/" //data url (english edition)
-	authUrl = "https://platform.smm.cn/usercenter/auth" // auth url (for all)
-)
+//const (
+//	dataUrl = "https://dataapi.smm.cn/GetData/" //data url (中文)
+//	//dataUrl = "https://dataapi.smm.cn/GetDataEn/" //data url (english edition)
+//	authUrl = "https://platform.smm.cn/usercenter/auth" // auth url (for all)
+//)
 
-type TokenResp struct {
-	Code int       `json:"Code"`
-	Msg  string    `json:"Msg"`
-	Data TokenData `json:"Data"`
-}
+//type TokenResp struct {
+//	Code int       `json:"Code"`
+//	Msg  string    `json:"Msg"`
+//	Data TokenData `json:"Data"`
+//}
 
-type TokenData struct {
-	Token string `json:"Token"`
-}
+//type TokenData struct {
+//	Token string `json:"Token"`
+//}
 
 // 获取token
-func getToken(userName string, password string) (string, error) {
-	encryptAuth := md5.New()
-	encryptAuth.Write([]byte(password)) //encrypt password with md5
-	newPassword := hex.EncodeToString(encryptAuth.Sum(nil))
-
-	resp, err := http.PostForm(authUrl, url.Values{"user_name": {userName}, "password": {newPassword}})
-	if err != nil {
-		return "", err
-	}
-
-	defer resp.Body.Close()
-
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("reponse error", err)
-		return "", err
-	}
-
-	var bodyJsonContent TokenResp
-
-	if err = json.Unmarshal([]byte(body), &bodyJsonContent); err != nil {
-		fmt.Println(err, "unmarsal failure")
-		return "", err
-	}
-
-	var token string
-	if bodyJsonContent.Code == 0 {
-		token = bodyJsonContent.Data.Token
-	}
-
-	//print(token)
-	return token, nil
-}
+//func getToken(userName string, password string) (string, error) {
+//	encryptAuth := md5.New()
+//	encryptAuth.Write([]byte(password)) //encrypt password with md5
+//	newPassword := hex.EncodeToString(encryptAuth.Sum(nil))
+//
+//	resp, err := http.PostForm(authUrl, url.Values{"user_name": {userName}, "password": {newPassword}})
+//	if err != nil {
+//		return "", err
+//	}
+//
+//	defer resp.Body.Close()
+//
+//	body, err := ioutil.ReadAll(resp.Body)
+//	if err != nil {
+//		fmt.Println("reponse error", err)
+//		return "", err
+//	}
+//
+//	var bodyJsonContent TokenResp
+//
+//	if err = json.Unmarshal([]byte(body), &bodyJsonContent); err != nil {
+//		fmt.Println(err, "unmarsal failure")
+//		return "", err
+//	}
+//
+//	var token string
+//	if bodyJsonContent.Code == 0 {
+//		token = bodyJsonContent.Data.Token
+//	}
+//
+//	//print(token)
+//	return token, nil
+//}
 
 // request response
-type DataResp struct {
-	Code int      `json:"Code"`
-	Msg  string   `json:"Msg"`
-	Data *ApiData `json:"Data"`
-}
+//type DataResp struct {
+//	Code int      `json:"Code"`
+//	Msg  string   `json:"Msg"`
+//	Data *ApiData `json:"Data"`
+//}
 
 // api data response
-type ApiData struct {
-	Status  int        `json:"Status"` //0 no permission,1 ok
-	Field   []ApiField `json:"Field"`
-	Content [][]string `json:"Content"`
-}
+//type ApiData struct {
+//	Status  int        `json:"Status"` //0 no permission,1 ok
+//	Field   []ApiField `json:"Field"`
+//	Content [][]string `json:"Content"`
+//}
 
 // api title
-type ApiField struct {
-	Unit       string `json:"Unit"`
-	Info       string `json:"Info"`
-	Name       string `json:"Name"`
-	ColumnType string `json:"ColumnType"`
-	ColIndex   uint   `json:"ColIndex"`
-	IsDate     string `json:"IsDate"`
-}
-
-type YsResult struct {
-	Code int64 `json:"Code"`
-	Data struct {
-		CompanyList []interface{} `json:"CompanyList"`
-		Content     [][]string    `json:"Content"`
-		Field       []struct {
-			ColIndex   int64  `json:"ColIndex"`
-			ColumnType string `json:"ColumnType"`
-			Info       string `json:"Info"`
-			IsDate     string `json:"IsDate"`
-			Name       string `json:"Name"`
-			Unit       string `json:"Unit"`
-			DBColName  string `json:"db_col_name"`
-		} `json:"Field"`
-		CountPage   int64  `json:"count_page"`
-		CurrentPage int64  `json:"current_page"`
-		Frequency   string `json:"frequency"`
-		Mindate     string `json:"mindate"`
-		PageNum     int64  `json:"page_num"`
-		Status      int64  `json:"status"`
-		TotalNum    int64  `json:"total_num"`
-	} `json:"Data"`
-	Msg string `json:"Msg"`
-}
+//type ApiField struct {
+//	Unit       string `json:"Unit"`
+//	Info       string `json:"Info"`
+//	Name       string `json:"Name"`
+//	ColumnType string `json:"ColumnType"`
+//	ColIndex   uint   `json:"ColIndex"`
+//	IsDate     string `json:"IsDate"`
+//}
+
+//type YsResult struct {
+//	Code int64 `json:"Code"`
+//	Data struct {
+//		CompanyList []interface{} `json:"CompanyList"`
+//		Content     [][]string    `json:"Content"`
+//		Field       []struct {
+//			ColIndex   int64  `json:"ColIndex"`
+//			ColumnType string `json:"ColumnType"`
+//			Info       string `json:"Info"`
+//			IsDate     string `json:"IsDate"`
+//			Name       string `json:"Name"`
+//			Unit       string `json:"Unit"`
+//			DBColName  string `json:"db_col_name"`
+//		} `json:"Field"`
+//		CountPage   int64  `json:"count_page"`
+//		CurrentPage int64  `json:"current_page"`
+//		Frequency   string `json:"frequency"`
+//		Mindate     string `json:"mindate"`
+//		PageNum     int64  `json:"page_num"`
+//		Status      int64  `json:"status"`
+//		TotalNum    int64  `json:"total_num"`
+//	} `json:"Data"`
+//	Msg string `json:"Msg"`
+//}
 
 /*
  * request data
  * sdatetime,edatetime ==>format:yyyy-mm-dd,
  * apiName ==> data.metal.com(for english)/data.smm.cn (for chinese)
  */
-func getApiData(token string, apiName string, sdatetime string, edatetime string) (item *YsResult, err error) {
-	reqUrl := dataUrl + apiName
-	resp, err := http.PostForm(reqUrl, url.Values{"token": {token}, "sdatetime": {sdatetime}, "edatetime": {edatetime}})
-	if err != nil {
-		return nil, err
-	}
-
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("response error")
-		return nil, err
-	}
-	utils.FileLog.Info("ys result:" + string(body))
-	dataJsonContent := new(YsResult)
-	if err = json.Unmarshal([]byte(body), &dataJsonContent); err != nil {
-		fmt.Println(err, "data unmarshal failure")
-		return nil, err
-	}
-
-	if dataJsonContent.Code == 200 && len(dataJsonContent.Data.Content) > 0 {
-		return dataJsonContent, nil
-	} else {
-		err = errors.New("code:" + strconv.Itoa(int(dataJsonContent.Code)) + "msg:" + dataJsonContent.Msg)
-	}
-	return nil, nil
-}
+//func getApiData(token string, apiName string, sdatetime string, edatetime string) (item *YsResult, err error) {
+//	reqUrl := dataUrl + apiName
+//	resp, err := http.PostForm(reqUrl, url.Values{"token": {token}, "sdatetime": {sdatetime}, "edatetime": {edatetime}})
+//	if err != nil {
+//		return nil, err
+//	}
+//
+//	defer resp.Body.Close()
+//	body, err := ioutil.ReadAll(resp.Body)
+//	if err != nil {
+//		fmt.Println("response error")
+//		return nil, err
+//	}
+//	utils.FileLog.Info("ys result:" + string(body))
+//	dataJsonContent := new(YsResult)
+//	if err = json.Unmarshal([]byte(body), &dataJsonContent); err != nil {
+//		fmt.Println(err, "data unmarshal failure")
+//		return nil, err
+//	}
+//
+//	if dataJsonContent.Code == 200 && len(dataJsonContent.Data.Content) > 0 {
+//		return dataJsonContent, nil
+//	} else {
+//		err = errors.New("code:" + strconv.Itoa(int(dataJsonContent.Code)) + "msg:" + dataJsonContent.Msg)
+//	}
+//	return nil, nil
+//}

+ 176 - 185
models/data_manage/edb_data_zz.go

@@ -1,191 +1,182 @@
 package data_manage
 
-import (
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ZzData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromZzDataSimple struct {
-	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromZz struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-func GetEdbDataZzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_zz WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
-	return
-}
+//type ZzData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromZzDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromZz struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//func GetEdbDataZzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_zz WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByZz 刷新郑商所指标数据
-func RefreshEdbDataByZz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return err
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetZzDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataZzByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataZz(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByZz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetZzDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataZzByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataZz(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromZhengzhouByIndexCode 获取指标信息
-func GetBaseInfoFromZhengzhouByIndexCode(indexCode, suffix string) (list []*BaseInfoFromZz, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
-	o := orm.NewOrm()
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
-func AddEdbDataZzBySql(sqlStr string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
-	return
-}
-
-func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func ModifyEdbDataZz(edbInfoId int64, dataTime, value string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_data_zz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
+//func GetBaseInfoFromZhengzhouByIndexCode(indexCode, suffix string) (list []*BaseInfoFromZz, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataZzBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataZz(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_zz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 100 - 54
models/data_manage/edb_info.go

@@ -2,15 +2,16 @@ package data_manage
 
 import (
 	"errors"
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"time"
 )
 
 type EdbInfo struct {
-	EdbInfoId        int    `orm:"column(edb_info_id);pk"`
+	EdbInfoId        int    `gorm:"primaryKey"`
 	SourceName       string `description:"来源名称"`
 	Source           int    `description:"来源id"`
 	EdbCode          string `description:"指标编码"`
@@ -34,8 +35,20 @@ type EdbInfo struct {
 	EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
 }
 
+func (m *EdbInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
+func (m *EdbInfo) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 type EdbInfoList struct {
-	EdbInfoId        int       `orm:"column(edb_info_id);pk"`
+	EdbInfoId        int       `gorm:"primaryKey"`
 	SourceName       string    `description:"来源名称"`
 	Source           int       `description:"来源id"`
 	SubSource        int       `description:"子数据来源:0:经济数据库,1:日期序列"`
@@ -53,19 +66,34 @@ type EdbInfoList struct {
 	NoUpdate         int8      `description:"是否停止更新,0:继续更新;1:停止更新"`
 }
 
+func (m *EdbInfoList) AfterFind(db *gorm.DB) (err error) {
+	m.ModifyTime = utils.GormDateStrToDateStr(m.ModifyTime)
+	return
+}
+
 type EdbInfoSearchData struct {
 	EdbDataId int     `description:"指标数据Id"`
 	DataTime  string  `description:"数据日期"`
 	Value     float64 `description:"数据"`
 }
 
+func (m *EdbInfoSearchData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 type EdbInfoSearchDataV1 struct {
 	DataTime string `description:"数据日期"`
 	Value    string `description:"数据"`
 }
 
+func (m *EdbInfoSearchDataV1) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (item []*EdbInfoList, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -75,16 +103,16 @@ func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (ite
 	} else {
 		sql += ` ORDER BY edb_info_id ASC `
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
-func ModifyEdbDataInfoDate(edbInfoId int, maxDate string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE edb_info SET end_date=?,modify_time=NOW() WHERE edb_info_id=? `
-	_, err = o.Raw(sql, maxDate, edbInfoId).Exec()
-	return
-}
+//func ModifyEdbDataInfoDate(edbInfoId int, maxDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_info SET end_date=?,modify_time=NOW() WHERE edb_info_id=? `
+//	err = o.Exec(sql, maxDate, edbInfoId).Error
+//	return
+//}
 
 type EdbInfoMaxAndMinInfo struct {
 	MinDate     string  `description:"最小日期"`
@@ -94,8 +122,14 @@ type EdbInfoMaxAndMinInfo struct {
 	LatestValue float64 `description:"最新值"`
 }
 
+func (m *EdbInfoMaxAndMinInfo) ConvertTimeStr() {
+	m.MinDate = utils.GormDateStrToDateStr(m.MinDate)
+	m.MaxDate = utils.GormDateStrToDateStr(m.MaxDate)
+	return
+}
+
 func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ``
 	tableName := GetEdbDataTableName(source, subSource)
 	if tableName == "" {
@@ -104,26 +138,33 @@ func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbIn
 	}
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
-	err = o.Raw(sql, edbCode).QueryRow(&item)
+	err = o.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil {
+		item.ConvertTimeStr()
+	}
 
 	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
 	sql = fmt.Sprintf(sql, tableName)
-	err = o.Raw(sql, edbCode).QueryRow(&latest_value)
+	sql = utils.ReplaceDriverKeywords("", sql)
+	err = o.Raw(sql, edbCode).Scan(&latest_value).Error
 	item.LatestValue = latest_value
 	return
 }
 
 func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, edbInfoId).Exec()
+	err = o.Exec(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, edbInfoId).Error
 	return
 }
 
 //order:1升序,其余值为降序
 func GetEdbDataListAll(condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchData, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ``
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
@@ -137,12 +178,12 @@ func GetEdbDataListAll(condition string, pars []interface{}, source, subSource,
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func GetEdbDataListAllV1(condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchDataV1, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ``
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
@@ -156,39 +197,39 @@ func GetEdbDataListAllV1(condition string, pars []interface{}, source, subSource
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
 func GetQuarterEdbInfo() (item []*EdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT c.* FROM chart_info AS a
 			INNER JOIN chart_edb_mapping AS b ON a.chart_info_id=b.chart_info_id
 			INNER JOIN edb_info AS c ON b.edb_info_id=c.edb_info_id
 			WHERE a.chart_type=2
 			GROUP BY b.edb_info_id
 			ORDER BY b.edb_info_id ASC  `
-	_, err = o.Raw(sql).QueryRows(&item)
+	err = o.Raw(sql).Find(&item).Error
 	return
 }
 
 func ResetEdbInfoIsUpdate() (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE edb_info SET is_update=1  `
-	_, err = o.Raw(sql).Exec()
+	err = o.Exec(sql).Error
 	return
 }
 
 // GetEdbInfoCalculateListByCondition 获取指标关系列表
 func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (items []*EdbInfoCalculateMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	//calculateTableName := GetEdbInfoCalculateTableName(source)
 	//if calculateTableName == "" {
 	//	err = errors.New("无效的表名")
@@ -200,7 +241,7 @@ func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (i
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -209,13 +250,13 @@ func DeleteEdbDataByIdAndSource(edbDataId, source, subSource int) (err error) {
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = fmt.Sprintf(sql, tableName)
 
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, edbDataId).Exec()
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Exec(sql, edbDataId).Error
 	return
 }
 
 type EdbInfoClassify struct {
-	EdbInfoId       int    `orm:"column(edb_info_id);pk"`
+	EdbInfoId       int    `gorm:"primaryKey"`
 	SourceName      string `description:"来源名称"`
 	Source          int    `description:"来源id"`
 	EdbCode         string `description:"指标编码"`
@@ -236,14 +277,13 @@ type EdbInfoClassify struct {
 // @return item []*EdbInfoUpdateLog
 // @return err error
 func GetAllEdbInfoClassifyListByCondition(condition string, pars []interface{}) (item []*EdbInfoClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY edb_info_id ASC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -256,10 +296,15 @@ func GetAllEdbInfoClassifyListByCondition(condition string, pars []interface{})
 // @return item *EdbInfo
 // @return err error
 func GetEdbInfoItemByCodeAndSource(source int, edbCode string) (item *EdbInfoItem, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE edb_code=? AND source = ?`
-	err = o.Raw(sql, source, edbCode).QueryRow(&item)
-
+	err = o.Raw(sql, source, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.EdbInfoId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 
@@ -272,7 +317,7 @@ func GetEdbInfoItemByCodeAndSource(source int, edbCode string) (item *EdbInfoIte
 // @return modifyTime string
 // @return err error
 func GetEdbInfoMaxModifyTime(source, subSource int, edbCode string) (modifyTime string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	tableName := GetEdbDataTableName(source, subSource)
 	if tableName == "" {
 		err = errors.New("无效的表名称:source:" + strconv.Itoa(source))
@@ -281,29 +326,29 @@ func GetEdbInfoMaxModifyTime(source, subSource int, edbCode string) (modifyTime
 
 	sql := ` SELECT MAX(modify_time) AS modify_time FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
-	err = o.Raw(sql, edbCode).QueryRow(&modifyTime)
-
+	err = o.Raw(sql, edbCode).Scan(&modifyTime).Error
 	return
 }
 
 func GetEdbInfoPageByCondition(condition string, pars []interface{}, startPage, pageSize int) (item []*EdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` LIMIT ?,? `
-	_, err = o.Raw(sql, pars, startPage, pageSize).QueryRows(&item)
+	pars = append(pars, startPage, pageSize)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func GetEdbInfoCountByCondition(condition string, pars []interface{}) (total int64, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT count(*) FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&total)
+	err = o.Raw(sql, pars...).Scan(&total).Error
 	return
 }
 
@@ -312,21 +357,22 @@ func ModifyEdbUpdateStatus(edbIdList []int, indexCodeList []string, calculateEdb
 	if idNum <= 0 {
 		return
 	}
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
+	o := global.DbMap[utils.DbNameIndex]
+	tx := o.Begin()
+	if tx.Error != nil {
+		return tx.Error
 	}
 	defer func() {
 		if err != nil {
-			_ = o.Rollback()
+			_ = tx.Rollback()
 			return
 		}
-		_ = o.Commit()
+		_ = tx.Commit()
 	}()
 
 	// 更改指标的更新状态
 	sql := ` UPDATE edb_info SET no_update = 1 WHERE source in (?, ?) AND edb_info_id IN (` + utils.GetOrmInReplace(idNum) + `) AND  no_update = 0`
-	_, err = o.Raw(sql, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, utils.DATA_SOURCE_WIND, edbIdList).Exec()
+	err = tx.Exec(sql, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, utils.DATA_SOURCE_WIND, edbIdList).Error
 	if err != nil {
 		return
 	}
@@ -335,7 +381,7 @@ func ModifyEdbUpdateStatus(edbIdList []int, indexCodeList []string, calculateEdb
 	if len(indexCodeList) > 0 {
 		// 更改数据源的更新状态
 		sql = ` UPDATE base_from_mysteel_chemical_index SET is_stop = 1 WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodeList)) + `) and is_stop=0`
-		_, err = o.Raw(sql, indexCodeList).Exec()
+		err = tx.Exec(sql, indexCodeList).Error
 		if err != nil {
 			return
 		}
@@ -345,7 +391,7 @@ func ModifyEdbUpdateStatus(edbIdList []int, indexCodeList []string, calculateEdb
 	if len(calculateEdbInfoIds) > 0 {
 		// 批量更新相关联的指标ID
 		sql = ` UPDATE edb_info SET no_update = 1 WHERE edb_info_id IN (` + utils.GetOrmInReplace(len(calculateEdbInfoIds)) + `) AND  no_update = 0`
-		_, err = o.Raw(sql, calculateEdbInfoIds).Exec()
+		err = tx.Exec(sql, calculateEdbInfoIds).Error
 		if err != nil {
 			return
 		}
@@ -359,8 +405,8 @@ func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&items)
+	err = o.Raw(sql, edbInfoIdList).Find(&items).Error
 	return
 }

+ 36 - 27
models/data_manage/edb_info_calculate_mapping.go

@@ -1,14 +1,15 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
 type EdbInfoCalculateMapping struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -24,18 +25,19 @@ type EdbInfoCalculateMapping struct {
 	ModifyTime                time.Time `description:"修改时间"`
 }
 
-func AddEdbInfoCalculateMappingMulti(items []*EdbInfoCalculateMapping) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
-	return
-}
+//func AddEdbInfoCalculateMappingMulti(items []*EdbInfoCalculateMapping) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
 func FixEdbInfoCalculateMapping() {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
+	o := global.DbMap[utils.DbNameIndex]
+	tx := o.Begin()
+	if tx.Error != nil {
 		return
 	}
+	var err error
 	defer func() {
 		if err != nil {
 			tx.Rollback()
@@ -45,7 +47,7 @@ func FixEdbInfoCalculateMapping() {
 	}()
 	edbInfoList := make([]*EdbInfoList, 0)
 	sql := `SELECT * FROM edb_info WHERE edb_type=2 `
-	_, err = o.Raw(sql).QueryRows(&edbInfoList)
+	err = o.Raw(sql).Find(&edbInfoList).Error
 	if err != nil {
 		return
 	}
@@ -56,7 +58,7 @@ func FixEdbInfoCalculateMapping() {
 		sql := ` SELECT * FROM %s
 			WHERE edb_info_id=? ORDER BY sort ASC `
 		sql = fmt.Sprintf(sql, calculateTableName)
-		_, err = tx.Raw(sql, v.EdbInfoId).QueryRows(&calculateList)
+		err = tx.Raw(sql, v.EdbInfoId).Find(&calculateList).Error
 		if err != nil {
 			fmt.Println("query calculate err:" + err.Error())
 			return
@@ -77,13 +79,13 @@ func FixEdbInfoCalculateMapping() {
 			calculateMappingItem.FromTag = cv.FromTag
 			calculateMappingItem.Source = v.Source
 			calculateMappingItem.SourceName = v.SourceName
-			tx.Insert(calculateMappingItem)
+			tx.Create(calculateMappingItem)
 		}
 	}
 }
 
 type EdbInfoCalculateMappingView struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -104,20 +106,26 @@ type EdbInfoCalculateMappingView struct {
 	MoveFrequency             string    `description:"移动频度"`
 }
 
+func (e *EdbInfoCalculateMappingView) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+	return
+}
+
 func GetEdbInfoCalculateMappingDetail(edbInfoId int) (item *EdbInfoCalculateMappingView, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.*,b.start_date,b.end_date,b.calculate_formula,b.move_type,b.move_frequency FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
 // GetAllCalculateEdbIdsByEdbInfoIds 所依赖计算指标
 func GetAllCalculateEdbIdsByEdbInfoIds(edbInfoIds []int) (edbIds []int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	msql := ` SELECT edb_info_id FROM edb_info_calculate_mapping WHERE from_edb_info_id in (` + utils.GetOrmInReplace(len(edbInfoIds)) + `)  GROUP BY edb_info_id `
-	_, err = o.Raw(msql, edbInfoIds).QueryRows(&edbIds)
+	err = o.Raw(msql, edbInfoIds).Scan(&edbIds).Error
 	if err != nil {
 		return
 	}
@@ -127,7 +135,7 @@ func GetAllCalculateEdbIdsByEdbInfoIds(edbInfoIds []int) (edbIds []int, err erro
 // EdbInfoCalculateMappingInfo
 // @Description: 计算指标与基础指标关系表
 type EdbInfoCalculateMappingInfo struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -151,41 +159,42 @@ type EdbInfoCalculateMappingInfo struct {
 
 // GetEdbInfoCalculateMappingListByEdbInfoId 根据生成的指标id获取来源的指标id列表
 func GetEdbInfoCalculateMappingListByEdbInfoId(edbInfoId int) (items []*EdbInfoCalculateMappingInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.*,b.edb_type as from_edb_type,b.edb_info_type as from_edb_info_type, b.unique_code AS from_unique_code, b.classify_id AS from_classify_id,b.no_update FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	err = o.Raw(sql, edbInfoId).Find(&items).Error
 	return
 }
 
 // GetEdbInfoCalculateMappingListByEdbInfoIds 根据生成的指标id获取来源的指标id列表
 func GetEdbInfoCalculateMappingListByEdbInfoIds(edbInfoIds []int) (items []*EdbInfoCalculateMappingInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.*,b.edb_type as from_edb_type,b.edb_info_type as from_edb_info_type, b.unique_code AS from_unique_code, b.classify_id AS from_classify_id,b.no_update FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id in (` + utils.GetOrmInReplace(len(edbInfoIds)) + `) `
-	_, err = o.Raw(sql, edbInfoIds).QueryRows(&items)
+	err = o.Raw(sql, edbInfoIds).Find(&items).Error
 	return
 }
 
 func GetEdbInfoCalculateMappingCountByCondition(condition string, pars []interface{}) (total int64, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT count(*) FROM edb_info_calculate_mapping WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&total)
+	err = o.Raw(sql, pars...).Scan(&total).Error
 	return
 }
 
 func GetEdbInfoCalculateMappingPageByCondition(condition string, pars []interface{}, startPage, pageSize int) (item []*EdbInfoCalculateMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info_calculate_mapping WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` LIMIT ?,? `
-	_, err = o.Raw(sql, pars, startPage, pageSize).QueryRows(&item)
+	pars = append(pars, startPage, pageSize)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 14 - 13
models/data_manage/edb_info_relation.go

@@ -1,13 +1,13 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type EdbInfoRelation struct {
-	EdbInfoRelationId  int       `orm:"column(edb_info_relation_id);pk"`
+	EdbInfoRelationId  int       `gorm:"primaryKey"`
 	EdbInfoId          int       `description:"指标id"`
 	Source             int       `description:"来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,9:手工指标,10:隆众"`
 	EdbName            string    `description:"指标名称"`
@@ -30,16 +30,17 @@ func (e *EdbInfoRelation) TableName() string {
 }
 
 func AddEdbInfoRelationMulti(relationList []*EdbInfoRelation) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
+	o := global.DbMap[utils.DbNameIndex]
+	tx := o.Begin()
+	if tx.Error != nil {
+		return tx.Error
 	}
 	defer func() {
 		if err != nil {
-			_ = o.Rollback()
+			_ = tx.Rollback()
 			return
 		}
-		_ = o.Commit()
+		_ = tx.Commit()
 	}()
 
 	relationCodesMap := make(map[string]struct{}, 0)
@@ -49,7 +50,7 @@ func AddEdbInfoRelationMulti(relationList []*EdbInfoRelation) (err error) {
 				relationCodesMap[relation.RelationCode] = struct{}{}
 			}
 		}
-		_, err = o.InsertMulti(len(relationList), relationList)
+		err = tx.CreateInBatches(relationList, utils.MultiAddNum).Error
 		if err != nil {
 			return
 		}
@@ -67,7 +68,7 @@ SET e1.parent_relation_id = e2.edb_info_relation_id
 WHERE  
     e1.relation_type = 1   
     AND e2.relation_type = 0 AND e1.parent_relation_id !=e2.edb_info_relation_id AND e1.relation_code in (` + utils.GetOrmInReplace(len(relationCodes)) + `)`
-			_, err = o.Raw(sql, relationCodes).Exec()
+			err = tx.Exec(sql, relationCodes).Error
 			if err != nil {
 				return
 			}
@@ -78,9 +79,9 @@ WHERE
 
 // GetEdbInfoRelationByEdbInfoIds 查询引用的指标ID
 func GetEdbInfoRelationByEdbInfoIds(edbInfoIds []int) (edbIds []int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	msql := ` SELECT edb_info_id FROM edb_info_relation WHERE edb_info_id in (` + utils.GetOrmInReplace(len(edbInfoIds)) + `)  GROUP BY edb_info_id `
-	_, err = o.Raw(msql, edbInfoIds).QueryRows(&edbIds)
+	err = o.Raw(msql, edbInfoIds).Scan(&edbIds).Error
 	if err != nil {
 		return
 	}
@@ -89,8 +90,8 @@ func GetEdbInfoRelationByEdbInfoIds(edbInfoIds []int) (edbIds []int, err error)
 
 // GetEdbInfoRelationByReferObjectIds 查询引用的指标ID
 func GetEdbInfoRelationByReferObjectIds(referObjectIds []int, referObjectType int) (items []*EdbInfoRelation, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	msql := ` SELECT * FROM edb_info_relation WHERE refer_object_id in (` + utils.GetOrmInReplace(len(referObjectIds)) + `) AND refer_object_type=? AND relation_type=0`
-	_, err = o.Raw(msql, referObjectIds, referObjectType).QueryRows(&items)
+	err = o.Raw(msql, referObjectIds, referObjectType).Find(&items).Error
 	return
 }

+ 13 - 5
models/data_manage/edb_info_update_log.go

@@ -1,12 +1,14 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type EdbInfoUpdateLog struct {
-	Id                     int       `orm:"column(id);pk"`
+	Id                     int       `gorm:"primaryKey"`
 	EdbInfoId              int       `description:"指标id"`
 	SourceName             string    `description:"来源名称"`
 	Source                 int       `description:"来源id"`
@@ -38,14 +40,20 @@ type EdbInfoUpdateLog struct {
 	UpdateType             int       `description:"变更类型,0:数据明细变更,1:基础信息变更, 2:新增指标"`
 }
 
+func (m *EdbInfoUpdateLog) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	return
+}
+
 func GetEdbInfoUpdateLogByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateLog, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info_update_log WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY id ASC limit 0,10  `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 8 - 16
models/data_manage/edb_refresh/edb_refresh_config.go

@@ -2,14 +2,15 @@ package edb_refresh
 
 import (
 	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 // EdbRefreshConfig
 // @Description: 指标的刷新时间配置表
 type EdbRefreshConfig struct {
-	EdbRefreshConfigId  int       `orm:"column(edb_refresh_config_id);pk"`
+	EdbRefreshConfigId  int       `gorm:"column:edb_refresh_config_id;primaryKey;autoIncrement"`
 	RefreshFrequency    string    `description:"刷新频率"`
 	RefreshFrequencyDay int       `description:"具体刷新的日期"`
 	RefreshTime         string    `description:"刷新时间"`
@@ -31,13 +32,7 @@ func (m *EdbRefreshConfig) Add() (err error) {
 		err = errors.New("该配置已存在")
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.EdbRefreshConfigId = int(lastId)
-
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
@@ -49,8 +44,7 @@ func (m *EdbRefreshConfig) Add() (err error) {
 // @param cols []string
 // @return err error
 func (m *EdbRefreshConfig) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
@@ -61,8 +55,7 @@ func (m *EdbRefreshConfig) Update(cols []string) (err error) {
 // @datetime 2023-12-14 16:11:10
 // @return err error
 func (m *EdbRefreshConfig) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(m)
+	err = global.DbMap[utils.DbNameIndex].Delete(m).Error
 	return
 }
 
@@ -75,7 +68,7 @@ func (m *EdbRefreshConfig) Delete() (err error) {
 // @return list []*EdbRefreshDefaultConfig
 // @return err error
 func GetEdbRefreshConfigListByCondition(condition string, pars []interface{}) (list []*EdbRefreshConfig, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM edb_refresh_config
          WHERE 1 = 1 `
 
@@ -83,7 +76,6 @@ func GetEdbRefreshConfigListByCondition(condition string, pars []interface{}) (l
 		sql += condition
 	}
 	sql += ` ORDER BY edb_refresh_config_id ASC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
-
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 11 - 23
models/data_manage/edb_refresh/edb_refresh_default_config.go

@@ -2,15 +2,15 @@ package edb_refresh
 
 import (
 	"errors"
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // EdbRefreshDefaultConfig
 // @Description: 指标的默认刷新时间配置表
 type EdbRefreshDefaultConfig struct {
-	Id                  int       `orm:"column(id);pk"`
+	Id                  int       `gorm:"column:id;primaryKey;autoIncrement"`
 	Source              int       `description:"来源"`
 	SubSource           int       `description:"来源名称"`
 	Frequency           string    `description:"频度"`
@@ -35,13 +35,7 @@ func (m *EdbRefreshDefaultConfig) Add() (err error) {
 		err = errors.New("该配置已存在")
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.Id = int(lastId)
-
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
@@ -53,8 +47,7 @@ func (m *EdbRefreshDefaultConfig) Add() (err error) {
 // @param cols []string
 // @return err error
 func (m *EdbRefreshDefaultConfig) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
@@ -65,8 +58,7 @@ func (m *EdbRefreshDefaultConfig) Update(cols []string) (err error) {
 // @datetime 2023-12-14 16:11:10
 // @return err error
 func (m *EdbRefreshDefaultConfig) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(m)
+	err = global.DbMap[utils.DbNameIndex].Delete(m).Error
 	return
 }
 
@@ -80,11 +72,10 @@ func (m *EdbRefreshDefaultConfig) Delete() (err error) {
 // @return list []*EdbRefreshDefaultConfig
 // @return err error
 func GetListBySourceAndFrequency(source, subSource int, frequency string) (list []*EdbRefreshDefaultConfig, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM edb_refresh_default_config
          WHERE source = ? AND sub_source = ? AND frequency = ? ORDER BY id ASC `
-	_, err = o.Raw(sql, source, subSource, frequency).QueryRows(&list)
-
+	err = o.Raw(sql, source, subSource, frequency).Find(&list).Error
 	return
 }
 
@@ -97,7 +88,7 @@ func GetListBySourceAndFrequency(source, subSource int, frequency string) (list
 // @return list []*EdbRefreshDefaultConfig
 // @return err error
 func GetListByCondition(condition string, pars []interface{}) (list []*EdbRefreshDefaultConfig, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM edb_refresh_default_config
          WHERE 1 = 1 `
 
@@ -105,8 +96,7 @@ func GetListByCondition(condition string, pars []interface{}) (list []*EdbRefres
 		sql += condition
 	}
 	sql += ` ORDER BY id ASC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
-
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
@@ -123,12 +113,10 @@ func GetDefaultRefreshEdbInfoListBySourceAndSubSource(source, subSource int, fre
 	if num <= 0 {
 		return
 	}
-
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT a.* FROM edb_info a 
 LEFT JOIN edb_refresh_mapping b ON a.edb_info_id = b.edb_info_id
 WHERE a.source = ? AND a.sub_source = ? AND a.frequency IN (` + utils.GetOrmInReplace(num) + `)  AND b.edb_info_id is null`
-	_, err = o.Raw(sql, source, subSource, frequencyList).QueryRows(&list)
-
+	err = o.Raw(sql, source, subSource, frequencyList).Find(&list).Error
 	return
 }

+ 8 - 17
models/data_manage/edb_refresh/edb_refresh_mapping.go

@@ -2,15 +2,15 @@ package edb_refresh
 
 import (
 	"errors"
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // EdbRefreshMapping
 // @Description: 指标刷新时间配置关系表
 type EdbRefreshMapping struct {
-	EdbRefreshMappingId int       `orm:"column(edb_refresh_mapping_id);pk"`
+	EdbRefreshMappingId int       `gorm:"column:edb_refresh_mapping_id;primaryKey;autoIncrement"`
 	Source              int       `description:"来源"`
 	SubSource           int       `description:"来源名称"`
 	EdbInfoId           int       `description:"指标id,如果是数据源(钢联、有色)的,那么就是数据源里面的id"`
@@ -33,13 +33,7 @@ func (m *EdbRefreshMapping) Add() (err error) {
 		err = errors.New("该配置已存在")
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.EdbRefreshMappingId = int(lastId)
-
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
@@ -51,8 +45,7 @@ func (m *EdbRefreshMapping) Add() (err error) {
 // @param cols []string
 // @return err error
 func (m *EdbRefreshMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
@@ -63,13 +56,12 @@ func (m *EdbRefreshMapping) Update(cols []string) (err error) {
 // @datetime 2023-12-14 16:11:10
 // @return err error
 func (m *EdbRefreshMapping) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(m)
+	err = global.DbMap[utils.DbNameIndex].Delete(m).Error
 	return
 }
 
 type EdbInfoListAndRefreshConfig struct {
-	EdbInfoId          int       `orm:"column(edb_info_id);pk"`
+	EdbInfoId          int       `gorm:"column:edb_info_id;primaryKey;autoIncrement"`
 	SourceName         string    `description:"来源名称"`
 	Source             int       `description:"来源id"`
 	SubSource          int       `description:"子数据来源:0:经济数据库,1:日期序列"`
@@ -105,7 +97,7 @@ func GetConfigRefreshEdbInfoListBySourceAndSubSource(sourceList, configIdList []
 
 	var pars []interface{}
 
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT a.*,b.edb_refresh_config_id FROM edb_info a 
  JOIN edb_refresh_mapping b ON a.edb_info_id = b.edb_info_id
 WHERE b.edb_refresh_config_id IN (` + utils.GetOrmInReplace(num) + `) `
@@ -116,7 +108,6 @@ WHERE b.edb_refresh_config_id IN (` + utils.GetOrmInReplace(num) + `) `
 		sql += ` AND b.source not in (` + utils.GetOrmInReplace(sourceNum) + `) `
 		pars = append(pars, sourceList)
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
-
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 6 - 5
models/data_manage/edb_refresh/edb_refresh_source.go

@@ -1,15 +1,16 @@
 package edb_refresh
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 // EdbRefreshSource
 // @Description: 刷新的数据源表
 type EdbRefreshSource struct {
-	Id            int       `orm:"column(id);pk"`
-	Source        int       `orm:"column(source)" description:"来源"`
+	Id            int       `gorm:"column:id;primaryKey;autoIncrement" orm:"column(id);pk"`
+	Source        int       `gorm:"column:source" description:"来源"`
 	SourceName    string    `description:"来源名称"`
 	SubSource     int       `description:"子数据来源:0:经济数据库,1:日期序列"`
 	SubSourceName string    `description:"子来源名称"`
@@ -36,9 +37,9 @@ type EdbRefreshSourceList struct {
 // @return items []*EdbRefreshSource
 // @return err error
 func (m EdbRefreshSource) GetAllList() (items []*EdbRefreshSource, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT *  FROM edb_refresh_source ORDER BY id ASC `
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Find(&items).Error
 	return
 }
 

+ 4 - 6
models/data_manage/edb_source.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 )
 
@@ -17,7 +17,7 @@ var (
 
 // EdbSource 指标来源表
 type EdbSource struct {
-	EdbSourceId      int    `orm:"column(edb_source_id);pk"`
+	EdbSourceId      int    `gorm:"primaryKey"`
 	SourceName       string `description:"指标来源名称"`
 	TableName        string `description:"数据表名"`
 	EdbAddMethod     string `description:"指标新增接口"`
@@ -30,7 +30,6 @@ type EdbSource struct {
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
 func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -40,15 +39,14 @@ func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_source WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // GetEdbSourceItemByCondition 获取指标来源
 func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM edb_source WHERE 1=1 %s`, condition)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).First(&item).Error
 	return
 }
 

+ 21 - 15
models/data_manage/edb_update_log.go

@@ -1,13 +1,13 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type EdbUpdateLog struct {
-	Id          int64     `json:"id" orm:"column(id);pk"`
+	Id          int64     `json:"id" gorm:"primaryKey;autoIncrement"`
 	OpDbName    string    `json:"op_db_name"`    // 库名
 	OpTableName string    `json:"op_table_name"` // 表名
 	OpType      string    `json:"op_type"`       // 变更类型
@@ -27,10 +27,9 @@ type EdbUpdateLog struct {
 // @return maxId int
 // @return err error
 func GetEdbUpdateLogMaxId() (maxId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT id FROM edb_update_log WHERE 1=1 ORDER BY id desc limit 1 `
-	err = o.Raw(sql).QueryRow(&maxId)
-
+	err = o.Raw(sql).Scan(&maxId).Error
 	return
 }
 
@@ -41,10 +40,9 @@ func GetEdbUpdateLogMaxId() (maxId int64, err error) {
 // @return maxId int64
 // @return err error
 func GetEdbUpdateLogMaxHandleId() (maxId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT id FROM edb_update_log WHERE 1=1 AND is_handle = 1 ORDER BY id desc limit 1 `
-	err = o.Raw(sql).QueryRow(&maxId)
-
+	err = o.Raw(sql).Scan(&maxId).Error
 	return
 }
 
@@ -57,14 +55,13 @@ func GetEdbUpdateLogMaxHandleId() (maxId int64, err error) {
 // @return item []*EdbUpdateLog
 // @return err error
 func GetEdbUpdateLogByCondition(condition string, pars []interface{}) (item []*EdbUpdateLog, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_update_log WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY id ASC limit 500 `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -79,10 +76,9 @@ func HandleUpdateLogByIds(idList []int64, modifyTime string) (err error) {
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE edb_update_log set is_handle=1 ,modify_time = ?  WHERE id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, modifyTime, idList).Exec()
-
+	err = o.Exec(sql, modifyTime, idList).Error
 	return
 }
 
@@ -136,8 +132,18 @@ type EdbInfoItem struct {
 	UnitEn           string  `json:"unit_en"`
 }
 
+func (m *EdbInfoItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	m.DataUpdateTime = utils.GormDateStrToDateTimeStr(m.DataUpdateTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 type EdbData struct {
-	EdbDataId int32  `orm:"column(edb_data_id);pk" json:"edb_data_id"`
+	EdbDataId int32  `orm:"column(edb_data_id);pk" gorm:"primaryKey" json:"edb_data_id"`
 	EdbInfoId int32  `json:"edb_info_id"` // 指标id
 	EdbCode   string `json:"edb_code"`    // 指标编码
 	//DataTime      time.Time `json:"data_time"`      // 数据日期

+ 6 - 8
models/data_manage/excel/excel_edb_mapping.go

@@ -1,14 +1,14 @@
 package excel
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // ExcelEdbMapping excel与指标的关系表
 type ExcelEdbMapping struct {
-	ExcelEdbMappingId int       `orm:"column(excel_edb_mapping_id);pk"`
+	ExcelEdbMappingId int       `gorm:"column:excel_edb_mapping_id;primaryKey;autoIncrement"`
 	ExcelInfoId       int       `description:"excel的id"`
 	Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
 	EdbInfoId         int       `description:"计算指标id"`
@@ -18,18 +18,16 @@ type ExcelEdbMapping struct {
 
 // GetExcelEdbMappingTotalBySource 根据表格类型获取总数
 func GetExcelEdbMappingTotalBySource(sources []int) (total int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT count(*)  FROM excel_edb_mapping WHERE source in (` + utils.GetOrmInReplace(len(sources)) + `)`
-
-	err = o.Raw(sql, sources).QueryRow(&total)
+	err = o.Raw(sql, sources).Scan(&total).Error
 	return
 }
 
 // GetExcelEdbMappingListBySource 根据表格类型获取列表
 func GetExcelEdbMappingListBySource(sources []int, pageIndex, pageSize int) (items []*ExcelEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT *  FROM excel_edb_mapping WHERE source in (` + utils.GetOrmInReplace(len(sources)) + `) Limit ?,? `
-
-	_, err = o.Raw(sql, sources, pageIndex, pageSize).QueryRows(&items)
+	err = o.Raw(sql, sources, pageIndex, pageSize).Find(&items).Error
 	return
 }

+ 5 - 4
models/data_manage/excel/excel_info.go

@@ -1,15 +1,16 @@
 package excel
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // ExcelInfo excel表格详情表
 type ExcelInfo struct {
-	ExcelInfoId        int       `orm:"column(excel_info_id);pk"`
+	ExcelInfoId        int       `gorm:"column:excel_info_id;primaryKey;autoIncrement"`
 	Source             int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
 	ExcelType          int       `description:"表格类型,1:指标列,2:日期列,默认:1"`
 	ExcelName          string    `description:"表格名称"`
@@ -40,7 +41,7 @@ func (m *ExcelInfo) TableName() string {
 }
 
 func (m *ExcelInfo) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -50,6 +51,6 @@ func (m *ExcelInfo) GetItemsByCondition(condition string, pars []interface{}, fi
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 25 - 28
models/data_manage/factor_edb_series_chart_mapping.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -14,7 +14,7 @@ const (
 
 // FactorEdbSeriesChartMapping 因子指标系列-图表关联
 type FactorEdbSeriesChartMapping struct {
-	FactorEdbSeriesChartMappingId int       `orm:"column(factor_edb_series_chart_mapping_id);pk"`
+	FactorEdbSeriesChartMappingId int       `gorm:"primaryKey"`
 	ChartInfoId                   int       `description:"图表ID"`
 	Source                        int       `description:"图表来源, 同chart_info表source"`
 	CalculateType                 int       `description:"计算方式: 1-相关性"`
@@ -62,12 +62,8 @@ func (m *FactorEdbSeriesChartMapping) Cols() MultipleFactorSeriesChartMappingCol
 }
 
 func (m *FactorEdbSeriesChartMapping) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesChartMappingId = int(id)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Create(m).Error
 	return
 }
 
@@ -75,21 +71,21 @@ func (m *FactorEdbSeriesChartMapping) CreateMulti(items []*FactorEdbSeriesChartM
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Remove() (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesChartMappingId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesChartMappingId).Error
 	return
 }
 
@@ -97,39 +93,39 @@ func (m *FactorEdbSeriesChartMapping) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemById(id int) (item *FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -139,12 +135,12 @@ func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -154,15 +150,16 @@ func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string,
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // GetDistinctSeriesIdByChartId 获取图表关联的系列ID
 func (m *FactorEdbSeriesChartMapping) GetDistinctSeriesIdByChartId(chartId int) (seriesIds []int, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT DISTINCT %s FROM %s WHERE %s = ?`, m.Cols().FactorEdbSeriesId, m.TableName(), m.Cols().ChartInfoId)
-	_, err = o.Raw(sql, chartId).QueryRows(&seriesIds)
+	err = o.Raw(sql, chartId).Scan(&seriesIds).Error
 	return
 }
 

+ 24 - 28
models/data_manage/factor_edb_series_mapping.go

@@ -1,16 +1,16 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // FactorEdbSeriesMapping 因子指标系列-指标关联表
 type FactorEdbSeriesMapping struct {
-	FactorEdbSeriesMappingId int       `orm:"column(factor_edb_series_mapping_id);pk"`
+	FactorEdbSeriesMappingId int       `gorm:"primaryKey"`
 	FactorEdbSeriesId        int       `description:"因子指标系列ID"`
 	EdbInfoId                int       `description:"指标ID"`
 	EdbCode                  string    `description:"指标编码"`
@@ -43,12 +43,8 @@ func (m *FactorEdbSeriesMapping) Cols() FactorEdbSeriesMappingCols {
 }
 
 func (m *FactorEdbSeriesMapping) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesMappingId = int(id)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Create(m).Error
 	return
 }
 
@@ -56,21 +52,21 @@ func (m *FactorEdbSeriesMapping) CreateMulti(items []*FactorEdbSeriesMapping) (e
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) Remove() (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesMappingId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesMappingId).Error
 	return
 }
 
@@ -78,9 +74,9 @@ func (m *FactorEdbSeriesMapping) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
@@ -88,39 +84,39 @@ func (m *FactorEdbSeriesMapping) RemoveByCondition(condition string, pars []inte
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = o.Exec(sql, pars...).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemById(id int) (item *FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -130,12 +126,12 @@ func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -145,7 +141,7 @@ func (m *FactorEdbSeriesMapping) GetPageItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, pars, startSize, pageSize).Find(&items).Error
 	return
 }
 

+ 15 - 20
models/data_manage/future_good/chart_info_future_good_profit.go

@@ -1,19 +1,20 @@
 package future_good
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // ChartInfoFutureGoodProfit 商品利润图表-扩展信息
 type ChartInfoFutureGoodProfit struct {
-	ChartInfoId  int       `orm:"column(chart_info_id);pk" description:"商品利润图表ID(chart_info表source=5的)"`
+	ChartInfoId  int       `gorm:"column:chart_info_id;primaryKey;autoIncrement" description:"商品利润图表ID(chart_info表source=5的)"`
 	ProfitName   string    `description:"利润名称"`
 	ProfitNameEn string    `description:"利润英文名称"`
-	XValue       string    `description:"X轴数据值"`
-	YValue       string    `description:"Y轴数据值"`
+	XValue       string    `gorm:"column:x_value" description:"X轴数据值"`
+	YValue       string    `gorm:"column:y_value" description:"Y轴数据值"`
 	CreateTime   time.Time `description:"创建时间"`
 	ModifyTime   time.Time `description:"更新时间"`
 }
@@ -23,44 +24,38 @@ func (m *ChartInfoFutureGoodProfit) TableName() string {
 }
 
 func (m *ChartInfoFutureGoodProfit) Create() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(m)
-	if err != nil {
-		return
-	}
-	//m.CorrelationChartInfoId = int(id)
+	err = global.DbMap[utils.DbNameIndex].Create(m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Delete() (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	_, err = o.Raw(sql, m.ChartInfoId).Exec()
+	err = o.Exec(sql, m.ChartInfoId).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemById(id int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, id).QueryRow(&m)
+	err = o.Raw(sql, id).First(&m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemByCondition(condition string, pars []interface{}) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&m)
+	err = o.Raw(sql, pars...).First(&m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoFutureGoodProfit, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -70,6 +65,6 @@ func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars [
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 32 - 20
models/data_manage/future_good/future_good_edb_info.go

@@ -1,13 +1,15 @@
 package future_good
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // FutureGoodEdbInfo 期货指标表
 type FutureGoodEdbInfo struct {
-	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
+	FutureGoodEdbInfoId int       `gorm:"column:future_good_edb_info_id;primaryKey;autoIncrement"`
 	FutureGoodEdbCode   string    `description:"期货指标code"`
 	FutureGoodEdbName   string    `description:"期货指标名称"`
 	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
@@ -25,58 +27,68 @@ type FutureGoodEdbInfo struct {
 	ModifyTime          time.Time
 }
 
+func (m *FutureGoodEdbInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	return
+}
+
+func (m *FutureGoodEdbInfo) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	return
+}
+
 // GetFutureGoodEdbInfo 期货指标
 func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.FutureGoodEdbInfoId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 
 // GetFutureGoodEdbInfoList 获取指标数据列表
 func GetFutureGoodEdbInfoList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // GetAllFutureGoodEdbInfoList 获取指标数据列表
 func GetAllFutureGoodEdbInfoList() (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info  ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 // GetFutureGoodEdbInfoListByParentId 根据父级ID获取指标数据列表
 func GetFutureGoodEdbInfoListByParentId(parentId int) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info WHERE parent_id = ?  ORDER BY future_good_edb_info_id ASC `
-	_, err = o.Raw(sql, parentId).QueryRows(&list)
+	err = o.Raw(sql, parentId).Find(&list).Error
 	return
 }
 
 // AddFutureGoodEdbInfo 添加期货数据库指标
 func AddFutureGoodEdbInfo(item *FutureGoodEdbInfo) (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.FutureGoodEdbInfoId = int(lastId)
+	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
 }
 
 // Update 更新指标基础信息
 func (FutureGoodEdbInfo *FutureGoodEdbInfo) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(FutureGoodEdbInfo, cols...)
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(FutureGoodEdbInfo).Error
 	return
 }
 
@@ -89,13 +101,13 @@ type FutureGoodEdbInfoGroupListResp struct {
 
 // GetFutureGoodEdbInfoGroupList 获取分組指标数据列表
 func GetFutureGoodEdbInfoGroupList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }
 

+ 4 - 6
models/data_manage/holiday.go

@@ -1,8 +1,6 @@
 package data_manage
 
-import "time"
-
-type Holiday struct {
-	Year        int
-	HolidayDate time.Time
-}
+//type Holiday struct {
+//	Year        int
+//	HolidayDate time.Time
+//}

+ 27 - 13
models/data_manage/meeting_probabilities.go

@@ -1,13 +1,16 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // MeetingProbabilities excel表格详情表
 type MeetingProbabilities struct {
-	MeetingInfoId int       `orm:"column(meeting_info_id);pk"`
+	MeetingInfoId int       `gorm:"primaryKey"`
 	Content       string    `description:"表格内容"`
 	ExcelImage    string    `description:"表格图片"`
 	DateTime      string    `description:"数据日期"`
@@ -16,6 +19,11 @@ type MeetingProbabilities struct {
 	CreateTime    time.Time `description:"创建日期"`
 }
 
+func (m *MeetingProbabilities) AfterFind(db *gorm.DB) (err error) {
+	m.DateTime = utils.GormDateStrToDateStr(m.DateTime)
+	return
+}
+
 type MeetingProbabilitiesResp struct {
 	Ret     int
 	Msg     string
@@ -26,21 +34,20 @@ type MeetingProbabilitiesResp struct {
 
 // AddMeetingProbabilities 新增表格
 func AddMeetingProbabilities(meetingInfo *MeetingProbabilities) (newId int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	// 表格信息入库
-	lastId, err := o.Insert(meetingInfo)
+	err = o.Create(meetingInfo).Error
 	if err != nil {
 		return
 	}
-	meetingInfo.MeetingInfoId = int(lastId)
-	newId = int(lastId)
+	newId = meetingInfo.MeetingInfoId
 	return
 }
 
 func GetMeetingProbabilitiesAll(dateStr string) (list []*MeetingProbabilities, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM meeting_probabilities WHERE date_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = o.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
@@ -101,9 +108,16 @@ type AddExcelInfoReq struct {
 	TableData       interface{} `description:"自定义表格的数据内容"`
 }
 
-func GetMeetingProbabilitiesMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT max(a.date_time)as max_date FROM meeting_probabilities as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+func GetMeetingProbabilitiesMaxDate() (maxDate time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	sql := ` SELECT max(a.date_time) AS max_date FROM meeting_probabilities as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
-}
+}

+ 5 - 5
models/data_manage/ppt_v2_save_log.go

@@ -1,13 +1,13 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 )
 
 func DeletePPTLogByDate(date string) (err error) {
 	sql := `DELETE FROM ppt_v2_save_log WHERE create_time<? `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, date).Exec()
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Exec(sql, date).Error
 	return
-}
+}

+ 4 - 3
models/data_manage/report_save_log.go

@@ -1,13 +1,14 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 )
 
 func DeleteReportLogByDate(date string) (err error) {
 	sql := `DELETE FROM report_save_log WHERE create_time<? `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, date).Exec()
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Exec(sql, date).Error
 
 	return
 }

+ 133 - 95
models/data_manage/trade_position_analysis.go

@@ -1,16 +1,18 @@
 package data_manage
 
 import (
+	sql2 "database/sql"
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 	"unsafe"
 )
 
 // 持仓榜单表
 type TradePositionTop struct {
-	Id            uint64    `orm:"column(id);pk"`
+	Id            uint64    `orm:"column(id);pk" gorm:"primaryKey"`
 	ClassifyName  string    //分类名称
 	ClassifyType  string    //分类名称下的类型
 	DataTime      string    //数据日期
@@ -24,6 +26,16 @@ type TradePositionTop struct {
 	Rank          int       //排名
 }
 
+func (m *TradePositionTop) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
+func (m *TradePositionTop) ConvertTimeStr() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 type TradePositionDalianTop struct {
 	TradePositionTop
 }
@@ -49,14 +61,14 @@ type TradePositionGuangzhouTop struct {
 }
 
 func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	if exchange == "dalian" {
 		list := make([]*TradePositionDalianTop, 0)
 		for _, v := range items {
 			tmp := (*TradePositionDalianTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "zhengzhou" {
 		list := make([]*TradePositionZhengzhouTop, 0)
@@ -64,7 +76,7 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionZhengzhouTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "cffex" {
 		list := make([]*TradePositionCffexTop, 0)
@@ -72,7 +84,7 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionCffexTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "shanghai" {
 		list := make([]*TradePositionShanghaiTop, 0)
@@ -80,7 +92,7 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionShanghaiTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "ine" {
 		list := make([]*TradePositionIneTop, 0)
@@ -88,7 +100,7 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionIneTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "guangzhou" {
 		list := make([]*TradePositionGuangzhouTop, 0)
@@ -96,7 +108,7 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionGuangzhouTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		err = o.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	}
 
@@ -104,37 +116,37 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 }
 
 func GetTradePositionTopByExchangeDataTime(exchange string, startDate, endDate string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT * FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) ORDER BY classify_name, classify_type, deal_type, data_time, deal_value desc"
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopByExchangeDataTimeByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM trade_position_` + exchange + `_top where data_time >= ? and data_time <= ? and deal_type in (1,2) and classify_name in (` + utils.GetOrmInReplace(len(classifyNames)) + `)  and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `) ORDER BY classify_name, classify_type, deal_type, data_time, deal_value desc`
-	_, err = o.Raw(sql, startDate, endDate, classifyNames, classifyTypes).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT count(*) FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) ORDER BY classify_name, classify_type, deal_type, data_time, deal_value desc"
-	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+	err = o.Raw(sql, startDate, endDate).Scan(&count).Error
 	return
 }
 
 func GetTradePositionTopByExchangeSourceType(exchange string, dataTime string, sourceType int) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT * FROM trade_position_" + exchange + "_top where data_time= ? and source_type = ? ORDER BY classify_name, classify_type, deal_type, deal_value desc"
-	_, err = o.Raw(sql, dataTime, sourceType).QueryRows(&list)
+	err = o.Raw(sql, dataTime, sourceType).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopByExchangeSourceTypeClassify(exchange string, dataTime string, sourceType int, classifyNames, classifyTypes []string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM trade_position_` + exchange + `_top where data_time= ? and source_type = ? and classify_name in (` + utils.GetOrmInReplace(len(classifyNames)) + `)  and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `) ORDER BY classify_name, classify_type, deal_type, deal_value desc`
-	_, err = o.Raw(sql, dataTime, sourceType, classifyNames, classifyTypes).QueryRows(&list)
+	err = o.Raw(sql, dataTime, sourceType, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
@@ -181,16 +193,10 @@ type UpdateChangeVal struct {
 }
 
 func MultiUpdatePositionTop(exchange string, updates []UpdateDealValueChange) (err error) {
-	o := orm.NewOrm()
-	p, err := o.Raw("UPDATE trade_position_" + exchange + "_top SET deal_value=?, deal_change=?, source_type=?, modify_time=? WHERE id = ?").Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close() // 别忘记关闭 statement
-	}()
+	o := global.DbMap[utils.DbNameIndex]
+	sql := "UPDATE trade_position_" + exchange + "_top SET deal_value=?, deal_change=?, source_type=?, modify_time=? WHERE id = ?"
 	for _, v := range updates {
-		_, err = p.Exec(v.DealValue, v.DealChange, v.SourceType, v.ModifyTime, v.Id)
+		err = o.Exec(sql, v.DealValue, v.DealChange, v.SourceType, v.ModifyTime, v.Id).Error
 		if err != nil {
 			return
 		}
@@ -199,75 +205,75 @@ func MultiUpdatePositionTop(exchange string, updates []UpdateDealValueChange) (e
 }
 
 func DeletePositionTopByDataTime(exchange string, dataTime string, dealType int) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "delete from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
-	_, err = o.Raw(sql, dataTime, dealType).Exec()
+	err = o.Exec(sql, dataTime, dealType).Error
 	return
 }
 
 func DeletePositionTopByDataTimeClassify(exchange string, dataTime string, dealType int, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `delete from trade_position_` + exchange + `_top WHERE data_time=? and deal_type=? and classify_name in (` + utils.GetOrmInReplace(len(classifyNames)) + `)  and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)`
-	_, err = o.Raw(sql, dataTime, dealType, classifyNames, classifyTypes).Exec()
+	err = o.Exec(sql, dataTime, dealType, classifyNames, classifyTypes).Error
 	return
 }
 
 func GetTradePositionTopByExchangeDataTimeType(exchange string, dataTime string, dealType int) (list []TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "select * from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
-	_, err = o.Raw(sql, dataTime, dealType).QueryRows(&list)
+	err = o.Raw(sql, dataTime, dealType).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopByExchangeDataTimeTypeClassify(exchange string, dataTime string, dealType int, classifyNames, classifyTypes []string) (list []TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `select * from trade_position_` + exchange + `_top WHERE data_time=? and deal_type=? and classify_name in (` + utils.GetOrmInReplace(len(classifyNames)) + `)  and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)`
-	_, err = o.Raw(sql, dataTime, dealType, classifyNames, classifyTypes).QueryRows(&list)
+	err = o.Raw(sql, dataTime, dealType, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTop(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
-	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time) " +
-		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ?"
-	_, err = o.Raw(sql1, now, now, startDate, endDate).Exec()
+	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time) " +
+		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ?"
+	err = o.Exec(sql1, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
-	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time) " +
-		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ?"
-	_, err = o.Raw(sql2, now, now, startDate, endDate).Exec()
+	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time) " +
+		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ?"
+	err = o.Exec(sql2, now, now, startDate, endDate).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTopByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
-	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time)" +
-		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
-	_, err = o.Raw(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Exec()
+	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)" +
+		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
+	err = o.Exec(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
-	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time)" +
-		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
-	_, err = o.Raw(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Exec()
+	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)" +
+		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
+	err = o.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	return
 }
 
 // GetTradePositionTopOriginDataTimes 获取榜单原始数据日期-正序
 func GetTradePositionTopOriginDataTimes(exchange string) (dates []string, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT DISTINCT data_time FROM base_from_trade_%s_index ORDER BY data_time ASC`
 	sql = fmt.Sprintf(sql, exchange)
-	_, err = o.Raw(sql).QueryRows(&dates)
+	err = o.Raw(sql).Scan(&dates).Error
 	return
 }
 
 // BaseFromTradeClassify 交易所分类表
 type BaseFromTradeClassify struct {
-	Id           uint64    `orm:"column(id);pk"`
+	Id           uint64    `orm:"column(id);pk" gorm:"primaryKey"`
 	ClassifyName string    //分类名称
 	ClassifyType string    //分类名称下的类型
 	Exchange     string    //交易所
@@ -279,17 +285,15 @@ type BaseFromTradeClassify struct {
 // GetAllBaseFromTradeClassify 获取所有的交易所分类列表
 func GetAllBaseFromTradeClassify() (list []*BaseFromTradeClassify, err error) {
 	sql := `SELECT * FROM base_from_trade_classify   `
-
-	o := orm.NewOrm()
-	_, err = o.Raw(sql).QueryRows(&list)
-
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Raw(sql).Find(&list).Error
 	return
 }
 
 // Update 更新
 func (m *BaseFromTradeClassify) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Select(cols).Updates(m).Error
 	return
 }
 
@@ -298,8 +302,8 @@ func MultiAddBaseFromTradeClassify(items []*BaseFromTradeClassify) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
@@ -320,40 +324,34 @@ func GetExchangeClassify(exchange string) (list []TradeClassifyName, err error)
 	sql := `SELECT classify_name, classify_type,MAX(data_time) as data_time,MAX(modify_time) as modify_time FROM ` + tableName + ` GROUP BY classify_name, classify_type  `
 	sql += ` ORDER BY ` + orderStr
 
-	o := orm.NewOrm()
-	_, err = o.Raw(sql).QueryRows(&list)
+	o := global.DbMap[utils.DbNameIndex]
+	err = o.Raw(sql).Find(&list).Error
 
 	return
 }
 
 // GetTradePositionTopCleanByExchangeDataTime 根据时间查询净多单和净空单的值
 func GetTradePositionTopCleanByExchangeDataTime(exchange string, startDate, endDate string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT * FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (3,4) ORDER BY classify_name, classify_type, deal_type, data_time, deal_value desc"
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 // GetTradePositionTopCleanByExchangeDataTimeClassify 根据时间查询净多单和净空单的值
 func GetTradePositionTopCleanByExchangeDataTimeClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM trade_position_` + exchange + `_top where data_time >= ? and data_time <= ? and deal_type in (3,4) and classify_name in (` + utils.GetOrmInReplace(len(classifyNames)) + `)  and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `) ORDER BY classify_name, classify_type, deal_type, data_time, deal_value desc`
-	_, err = o.Raw(sql, startDate, endDate, classifyNames, classifyTypes).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
 // MultiUpdatePositionTopChangeVal 批量更新榜单里变化量的值
 func MultiUpdatePositionTopChangeVal(exchange string, updates []UpdateChangeVal) (err error) {
-	o := orm.NewOrm()
-	p, err := o.Raw("UPDATE trade_position_" + exchange + "_top SET deal_change=?, modify_time=? WHERE id = ?").Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close() // 别忘记关闭 statement
-	}()
+	o := global.DbMap[utils.DbNameIndex]
+	sql := "UPDATE trade_position_" + exchange + "_top SET deal_change=?, modify_time=? WHERE id = ?"
 	for _, v := range updates {
-		_, err = p.Exec(v.DealChange, v.ModifyTime, v.Id)
+		err = o.Exec(sql, v.DealChange, v.ModifyTime, v.Id).Error
 		if err != nil {
 			return
 		}
@@ -362,16 +360,49 @@ func MultiUpdatePositionTopChangeVal(exchange string, updates []UpdateChangeVal)
 }
 
 func GetTradePositionOriginClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
-	sql := "SELECT COUNT(DISTINCT classify_name, classify_type) FROM base_from_trade_" + exchange + "_index where `rank` <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
-	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+	o := global.DbMap[utils.DbNameIndex]
+	var pars []interface{}
+	var sql string
+	if utils.DbDriverName == utils.DbDriverByDm {
+		// DM不支持COUNT(DISTINCT column1, column2)这种写法
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT classify_name, classify_type
+				FROM base_from_trade_ine_index
+				WHERE rank < 50 
+				  AND (buy_short_name != '' OR sold_short_name != '') 
+				  AND (buy_short_name != ' ' OR sold_short_name != ' ') 
+				  AND data_time >= ? 
+				  AND data_time <= ?
+			)`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = "SELECT COUNT(DISTINCT classify_name, classify_type) FROM base_from_trade_" + exchange + "_index where rank <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
+		pars = append(pars, startDate, endDate)
+	}
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func GetTradePositionTopClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
-	sql := "SELECT COUNT(DISTINCT classify_name, classify_type)  FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) "
-	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+	o := global.DbMap[utils.DbNameIndex]
+	var pars []interface{}
+	var sql string
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT classify_name, classify_type
+				FROM trade_position_ine_top
+				WHERE data_time >= ?
+				  AND data_time <= ?
+				  AND deal_type IN (1, 2)
+			)`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = "SELECT COUNT(DISTINCT classify_name, classify_type)  FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) "
+		pars = append(pars, startDate, endDate)
+	}
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -381,24 +412,24 @@ type TradePositionClassifyInfo struct {
 }
 
 func GetTradePositionOriginClassifyByExchangeDataTime(exchange string, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
-	sql := "SELECT DISTINCT classify_name, classify_type FROM base_from_trade_" + exchange + "_index where `rank` <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	o := global.DbMap[utils.DbNameIndex]
+	sql := "SELECT DISTINCT classify_name, classify_type FROM base_from_trade_" + exchange + "_index where rank <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
+	err = o.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopClassifyByExchangeDataTime(exchange string, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT DISTINCT classify_name, classify_type  FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) "
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 // DeleteTradePositionTopAllByExchangeDataTime 删除计算数据
 func DeleteTradePositionTopAllByExchangeDataTime(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "DELETE FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? "
-	_, err = o.Raw(sql, startDate, endDate).Exec()
+	err = o.Exec(sql, startDate, endDate).Error
 	return
 }
 
@@ -407,16 +438,23 @@ type GetFirstBaseFromTradeIndeDate struct {
 }
 
 func GetFirstBaseFromTradeIndexByDate(exchange string) (item *GetFirstBaseFromTradeIndeDate, err error) {
-	o := orm.NewOrm()
-	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where `rank` < 50 order by data_time asc"
-	err = o.Raw(sql).QueryRow(&item)
+	o := global.DbMap[utils.DbNameIndex]
+	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where rank < 50 order by data_time asc"
+	err = o.Raw(sql).First(&item).Error
 	return
 }
 
 // 获取持仓分析的最新数据
-func GetTradePositionTopLastedDataTime(exchange string) (data_time time.Time, err error) {
-	o := orm.NewOrm()
+func GetTradePositionTopLastedDataTime(exchange string) (dataTime time.Time, err error) {
+	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT max(data_time) FROM trade_position_" + exchange + "_top"
-	err = o.Raw(sql).QueryRow(&data_time)
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		dataTime = timeNull.Time
+	}
 	return
 }

+ 146 - 35
models/data_manage/trade_position_analysis_guangzhou.go

@@ -1,13 +1,13 @@
 package data_manage
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 func MultiInsertTradeGuangzhouDataToTop(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
 
 	//新增买单榜单
@@ -21,9 +21,9 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
-	and c.index_name like "%持买单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql1, now, now, startDate, endDate).Exec()
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
+	err = o.Exec(sql1, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
@@ -38,14 +38,45 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
-	and c.index_name like "%持卖单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql2, now, now, startDate, endDate).Exec()
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
+	err = o.Exec(sql2, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
+
 	//更新买单、卖单榜单排名字段
-	sql3 := `update trade_position_guangzhou_top s
+	var sql3 string
+	var updatePars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql3 = `WITH ranked_data AS (
+				SELECT
+					classify_type,
+					deal_short_name,
+					data_time,
+					deal_type,
+					ROW_NUMBER() OVER (
+						PARTITION BY data_time, deal_type, classify_type
+						ORDER BY deal_value DESC
+					) AS row_number
+				FROM
+					trade_position_guangzhou_top
+				WHERE
+					data_time BETWEEN ? AND ?
+			)
+			UPDATE trade_position_guangzhou_top s
+			SET s.rank = (
+				SELECT t.row_number
+				FROM ranked_data t
+				WHERE s.classify_type = t.classify_type
+				  AND s.deal_short_name = t.deal_short_name
+				  AND s.data_time = t.data_time
+				  AND s.deal_type = t.deal_type
+			)
+			WHERE s.data_time BETWEEN ? AND ?`
+		updatePars = append(updatePars, startDate, endDate, startDate, endDate)
+	} else {
+		sql3 = `update trade_position_guangzhou_top s
 JOIN (
 SELECT
   	classify_type,
@@ -66,15 +97,16 @@ ORDER BY
 	ON s.classify_type = t.classify_type AND s.deal_short_name = t.deal_short_name 	
 	AND s.data_time = t.data_time AND s.deal_type = t.deal_type
 SET s.rank = t.row_number where s.data_time between ? and ?;`
+		updatePars = append(updatePars, startDate, endDate, startDate, endDate)
+	}
 
-	_, err = o.Raw(sql3, startDate, endDate, startDate, endDate).Exec()
-
+	err = o.Exec(sql3, updatePars...).Error
 	return
 }
 
 // GetTradePositionTopOriginGuangzhouDataTimes 获取榜单原始数据日期-正序
 func GetTradePositionTopOriginGuangzhouDataTimes(exchange string) (dates []string, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT
 	DISTINCT a.data_time
 FROM
@@ -82,17 +114,35 @@ FROM
 	LEFT JOIN base_from_trade_guangzhou_index c ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
 WHERE
     c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.data_time asc`
-	_, err = o.Raw(sql).QueryRows(&dates)
+	err = o.Raw(sql).Scan(&dates).Error
 	return
 }
 
 func GetTradePositionOriginGuangzhouClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
+	o := global.DbMap[utils.DbNameIndex]
+	var sql string
+	var pars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT n.classify_code, n.contract
+				FROM base_from_trade_guangzhou_data a
+				LEFT JOIN base_from_trade_guangzhou_index c 
+					ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
+				LEFT JOIN base_from_trade_guangzhou_contract n 
+					ON c.base_from_trade_guangzhou_contract_id = n.base_from_trade_guangzhou_contract_id
+				WHERE a.data_time BETWEEN ? AND ?
+				  AND c.base_from_trade_guangzhou_classify_id IN (7, 8)
+				  AND (c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%')
+				  AND c.index_name NOT LIKE '%日成交持仓排名%'
+			) AS distinct_records`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = `SELECT
 	count(DISTINCT n.classify_code, n.contract ) 
 FROM
 	base_from_trade_guangzhou_data a
@@ -101,16 +151,19 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	AND c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.value DESC`
-	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+		pars = append(pars, startDate, endDate)
+	}
+
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func GetFirstBaseFromTradeGuangzhouIndexByDate(exchange string) (item *GetFirstBaseFromTradeIndeDate, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT
 	a.data_time
 FROM
@@ -118,23 +171,23 @@ FROM
 	LEFT JOIN base_from_trade_guangzhou_index c ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
 WHERE
 	c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.data_time asc`
-	err = o.Raw(sql).QueryRow(&item)
+	err = o.Raw(sql).First(&item).Error
 	return
 }
 
 func GetTradePositionOriginClassifyGuangzhouByExchangeDataTime(exchange, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT DISTINCT classify_code as classify_name, contract as classify_type FROM base_from_trade_guangzhou_contract where  trade_date >= ? and trade_date <= ?`
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	err = o.Raw(sql, startDate, endDate).Scan(&list).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTopGuangzhouByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
 
 	//新增买单榜单
@@ -149,9 +202,9 @@ WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
     and n.classify_code in (` + utils.GetOrmInReplace(len(classifyNames)) + `) and n.contract in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
-	and c.index_name like "%持买单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Exec()
+	and c.index_name like '%持买单量%'
+	and c.index_name not like '%日成交持仓排名%'`
+	err = o.Exec(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
@@ -167,14 +220,48 @@ WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
   	and n.classify_code in (` + utils.GetOrmInReplace(len(classifyNames)) + `) and n.contract in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
-	and c.index_name like "%持卖单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Exec()
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
+	err = o.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
+
 	//更新买单、卖单榜单排名字段
-	sql3 := `update trade_position_guangzhou_top s
+	var sql3 string
+	var updatePars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		// TODO:
+		sql3 = `WITH ranked_data AS (
+			SELECT
+				classify_type,
+				deal_short_name,
+				data_time,
+				deal_type,
+				ROW_NUMBER() OVER (
+					PARTITION BY data_time, deal_type, classify_type
+					ORDER BY deal_value DESC
+				) AS row_number
+			FROM
+				trade_position_guangzhou_top
+			WHERE
+				data_time BETWEEN ? AND ?
+				AND classify_type IN (?)
+		)
+		UPDATE trade_position_guangzhou_top s
+		SET s.rank = (
+			SELECT t.row_number
+			FROM ranked_data t
+			WHERE s.classify_type = t.classify_type
+			  AND s.deal_short_name = t.deal_short_name
+			  AND s.data_time = t.data_time
+			  AND s.deal_type = t.deal_type
+		)
+		WHERE s.data_time BETWEEN ? AND ?
+		  AND s.classify_type IN (?)`
+		updatePars = append(updatePars, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes)
+	} else {
+		sql3 = `update trade_position_guangzhou_top s
 JOIN (
 SELECT
   	classify_type,
@@ -195,8 +282,32 @@ ORDER BY
 	ON s.classify_type = t.classify_type AND s.deal_short_name = t.deal_short_name 	
 	AND s.data_time = t.data_time AND s.deal_type = t.deal_type
 SET s.rank = t.row_number where s.data_time between ? and ? and s.classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `);`
+		updatePars = append(updatePars, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes)
+	}
 
-	_, err = o.Raw(sql3, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes).Exec()
+	// sql3 := `UPDATE trade_position_guangzhou_top s
+	// SET s.rank = t.row_number
+	// FROM (
+	// 	SELECT
+	// 		classify_type,
+	// 		deal_short_name,
+	// 		data_time,
+	// 		deal_type,
+	// 		ROW_NUMBER() OVER (
+	// 			PARTITION BY data_time, deal_type, classify_type
+	// 			ORDER BY deal_value DESC
+	// 		) as row_number
+	// 	FROM trade_position_guangzhou_top
+	// 	WHERE data_time BETWEEN ? AND ?
+	// 	AND classify_type IN (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
+	// ) t
+	// WHERE s.classify_type = t.classify_type
+	// AND s.deal_short_name = t.deal_short_name
+	// AND s.data_time = t.data_time
+	// AND s.deal_type = t.deal_type
+	// AND s.data_time BETWEEN ? AND ?
+	// AND s.classify_type IN (` + utils.GetOrmInReplace(len(classifyTypes)) + `)`
 
+	err = o.Exec(sql3, updatePars...).Error
 	return
 }

+ 7 - 6
models/data_manage/user_record.go

@@ -1,20 +1,21 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 )
 
-func GetUnSubUserOpenid(openIdstr string) (items []string, err error){
+func GetUnSubUserOpenid(openIdstr string) (items []string, err error) {
 	sql := `SELECT open_id FROM user_record 
           WHERE open_id IS NOT NULL AND subscribe=0 AND create_platform=1 `
 	sql += ` AND open_id in (` + openIdstr + `) `
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
 	return
 }
 
-func UpdateSubStatus(unSubIds string) (err error){
+func UpdateSubStatus(unSubIds string) (err error) {
 	sql := "UPDATE user_record SET subscribe=1,subscribe_time=NOW() WHERE create_platform=1 "
 	sql += ` AND open_id in (` + unSubIds + `) `
-	_, err = orm.NewOrm().Raw(sql).Exec()
+	err = global.DbMap[utils.DbNameIndex].Exec(sql).Error
 	return
-}
+}

+ 77 - 76
models/data_source/data_source.go

@@ -1,9 +1,9 @@
 package data_source
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
@@ -150,7 +150,7 @@ func GetEsBaseFromIndexByTableName(tableName string) EsBaseFromIndex {
 
 // BaseFromRzdIndex 睿咨得
 type BaseFromRzdIndex struct {
-	BaseFromRzdIndexId    int       `orm:"column(base_from_rzd_index_id);pk"`
+	BaseFromRzdIndexId    int       `gorm:"column:base_from_rzd_index_id;primaryKey;autoIncrement"`
 	BaseFromRzdClassifyId int       `description:"分类ID"`
 	IndexCode             string    `description:"指标编码"`
 	IndexName             string    `description:"指标名称"`
@@ -207,7 +207,7 @@ func (m *BaseFromRzdIndex) Format2SearchDataSource(origin *BaseFromRzdIndex) (it
 }
 
 func (m *BaseFromRzdIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromRzdIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -217,13 +217,13 @@ func (m *BaseFromRzdIndex) GetItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_rzd_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromHisugarIndex 泛糖科技
 type BaseFromHisugarIndex struct {
-	BaseFromHisugarIndexId int       `orm:"column(base_from_hisugar_index_id);pk"`
+	BaseFromHisugarIndexId int       `gorm:"column:base_from_hisugar_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int       `description:"分类ID"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -283,7 +283,7 @@ func (m *BaseFromHisugarIndex) Format2SearchDataSource(origin *BaseFromHisugarIn
 }
 
 func (m *BaseFromHisugarIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromHisugarIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -293,13 +293,13 @@ func (m *BaseFromHisugarIndex) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_hisugar_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromLyIndex 粮油商务网
 type BaseFromLyIndex struct {
-	BaseFromLyIndexId    int       `orm:"column(base_from_ly_index_id);pk"`
+	BaseFromLyIndexId    int       `gorm:"column:base_from_ly_index_id;primaryKey;autoIncrement"`
 	BaseFromLyClassifyId int       `description:"分类ID"`
 	IndexCode            string    `description:"指标编码"`
 	IndexName            string    `description:"指标名称"`
@@ -357,7 +357,7 @@ func (m *BaseFromLyIndex) Format2SearchDataSource(origin *BaseFromLyIndex) (item
 }
 
 func (m *BaseFromLyIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromLyIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -367,13 +367,13 @@ func (m *BaseFromLyIndex) GetItemsByCondition(condition string, pars []interface
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_ly_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromSciHqIndex 卓创红期
 type BaseFromSciHqIndex struct {
-	BaseFromSciHqIndexId int       `orm:"column(base_from_sci_hq_index_id);pk"`
+	BaseFromSciHqIndexId int       `gorm:"column:base_from_sci_hq_index_id;primaryKey;autoIncrement"`
 	ClassifyId           int       `description:"分类ID"`
 	IndexCode            string    `description:"指标编码"`
 	IndexName            string    `description:"指标名称"`
@@ -434,7 +434,7 @@ func (m *BaseFromSciHqIndex) Format2SearchDataSource(origin *BaseFromSciHqIndex)
 }
 
 func (m *BaseFromSciHqIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromSciHqIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -444,13 +444,13 @@ func (m *BaseFromSciHqIndex) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_sci_hq_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromOilchemIndex 隆众资讯
 type BaseFromOilchemIndex struct {
-	BaseFromOilchemIndexId int       `orm:"column(base_from_oilchem_index_id);pk"`
+	BaseFromOilchemIndexId int       `gorm:"column:base_from_oilchem_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int       `description:"分类ID"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -507,7 +507,7 @@ func (m *BaseFromOilchemIndex) Format2SearchDataSource(origin *BaseFromOilchemIn
 }
 
 func (m *BaseFromOilchemIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromOilchemIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -517,13 +517,13 @@ func (m *BaseFromOilchemIndex) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_oilchem_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromThsHfIndex 同花顺高频数据
 type BaseFromThsHfIndex struct {
-	BaseFromThsHfIndexId    int       `orm:"column(base_from_ths_hf_index_id);pk"`
+	BaseFromThsHfIndexId    int       `gorm:"column:base_from_ths_hf_index_id;primaryKey;autoIncrement"`
 	BaseFromThsHfClassifyId int       `description:"分类ID"`
 	IndexCode               string    `description:"指标编码"`
 	IndexName               string    `description:"指标名称"`
@@ -590,7 +590,7 @@ func (m *BaseFromThsHfIndex) Format2SearchDataSource(origin *BaseFromThsHfIndex)
 }
 
 func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -600,13 +600,13 @@ func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_ths_hf_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromCcfIndex CCF化纤信息
 type BaseFromCcfIndex struct {
-	BaseFromCcfIndexId int       `orm:"column(base_from_ccf_index_id);pk"`
+	BaseFromCcfIndexId int       `gorm:"column:base_from_ccf_index_id;primaryKey;autoIncrement"`
 	ClassifyId         int       `description:"分类ID"`
 	IndexCode          string    `description:"指标编码"`
 	IndexName          string    `description:"指标名称"`
@@ -663,7 +663,7 @@ func (m *BaseFromCcfIndex) Format2SearchDataSource(origin *BaseFromCcfIndex) (it
 }
 
 func (m *BaseFromCcfIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromCcfIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -673,13 +673,13 @@ func (m *BaseFromCcfIndex) GetItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_ccf_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromUsdaFasIndex 美国农业部
 type BaseFromUsdaFasIndex struct {
-	BaseFromUsdaFasIndexId int       `orm:"column(base_from_usda_fas_index_id);pk"`
+	BaseFromUsdaFasIndexId int       `gorm:"column:base_from_usda_fas_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int       `description:"分类ID"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -736,7 +736,7 @@ func (m *BaseFromUsdaFasIndex) Format2SearchDataSource(origin *BaseFromUsdaFasIn
 }
 
 func (m *BaseFromUsdaFasIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromUsdaFasIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -746,13 +746,13 @@ func (m *BaseFromUsdaFasIndex) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s, end_value AS latest_value FROM base_from_usda_fas_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromMysteelChemicalIndex 上海钢联
 type BaseFromMysteelChemicalIndex struct {
-	BaseFromMysteelChemicalIndexId    int       `orm:"column(base_from_mysteel_chemical_index_id);pk"`
+	BaseFromMysteelChemicalIndexId    int       `gorm:"column:base_from_mysteel_chemical_index_id;primaryKey;autoIncrement"`
 	BaseFromMysteelChemicalClassifyId int       `description:"分类ID"`
 	IndexCode                         string    `description:"指标编码"`
 	IndexName                         string    `description:"指标名称"`
@@ -809,7 +809,7 @@ func (m *BaseFromMysteelChemicalIndex) Format2SearchDataSource(origin *BaseFromM
 }
 
 func (m *BaseFromMysteelChemicalIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -819,13 +819,13 @@ func (m *BaseFromMysteelChemicalIndex) GetItemsByCondition(condition string, par
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s, end_value AS latest_value FROM base_from_mysteel_chemical_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromSmmIndex 有色原始数据库
 type BaseFromSmmIndex struct {
-	BaseFromSmmIndexId int       `orm:"column(base_from_smm_index_id);pk"`
+	BaseFromSmmIndexId int       `gorm:"column:base_from_smm_index_id;primaryKey;autoIncrement"`
 	ClassifyId         int       `description:"分类ID"`
 	IndexCode          string    `description:"指标编码"`
 	IndexName          string    `description:"指标名称"`
@@ -882,7 +882,7 @@ func (m *BaseFromSmmIndex) Format2SearchDataSource(origin *BaseFromSmmIndex) (it
 }
 
 func (m *BaseFromSmmIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromSmmIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -892,13 +892,13 @@ func (m *BaseFromSmmIndex) GetItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s, end_value AS latest_value FROM base_from_smm_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromBaiinfoIndex 百川盈孚
 type BaseFromBaiinfoIndex struct {
-	BaseFromBaiinfoIndexId int       `orm:"column(base_from_baiinfo_index_id);pk"`
+	BaseFromBaiinfoIndexId int       `gorm:"column:base_from_baiinfo_index_id;primaryKey;autoIncrement"`
 	ClassifyId             int       `description:"分类ID"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -955,7 +955,7 @@ func (m *BaseFromBaiinfoIndex) Format2SearchDataSource(origin *BaseFromBaiinfoIn
 }
 
 func (m *BaseFromBaiinfoIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBaiinfoIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -965,13 +965,13 @@ func (m *BaseFromBaiinfoIndex) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_baiinfo_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromSciIndex 卓创数据(红桃3)
 type BaseFromSciIndex struct {
-	BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"`
+	BaseFromSciIndexId int       `gorm:"column:base_from_sci_index_id;primaryKey;autoIncrement"`
 	ClassifyId         int       `description:"分类ID"`
 	IndexCode          string    `description:"指标编码"`
 	IndexName          string    `description:"指标名称"`
@@ -1028,7 +1028,7 @@ func (m *BaseFromSciIndex) Format2SearchDataSource(origin *BaseFromSciIndex) (it
 }
 
 func (m *BaseFromSciIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromSciIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1038,13 +1038,13 @@ func (m *BaseFromSciIndex) GetItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_sci_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromCoalmineMapping 中国煤炭市场网
 type BaseFromCoalmineMapping struct {
-	BaseFromCoalmineMappingId int       `orm:"column(base_from_coalmine_mapping_id);pk"`
+	BaseFromCoalmineMappingId int       `gorm:"column:base_from_coalmine_mapping_id;primaryKey;autoIncrement"`
 	ClassifyId                int       `description:"分类ID"`
 	IndexCode                 string    `description:"指标编码"`
 	IndexName                 string    `description:"指标名称"`
@@ -1101,7 +1101,7 @@ func (m *BaseFromCoalmineMapping) Format2SearchDataSource(origin *BaseFromCoalmi
 }
 
 func (m *BaseFromCoalmineMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromCoalmineMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1111,13 +1111,13 @@ func (m *BaseFromCoalmineMapping) GetItemsByCondition(condition string, pars []i
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_coalmine_mapping WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromEiaSteoIndex EIA STEO报告
 type BaseFromEiaSteoIndex struct {
-	BaseFromEiaSteoIndexId    int       `orm:"column(base_from_eia_steo_index_id);pk"`
+	BaseFromEiaSteoIndexId    int       `gorm:"column:base_from_eia_steo_index_id;primaryKey;autoIncrement"`
 	BaseFromEiaSteoClassifyId int       `description:"分类ID"`
 	IndexCode                 string    `description:"指标编码"`
 	IndexName                 string    `description:"指标名称"`
@@ -1174,7 +1174,7 @@ func (m *BaseFromEiaSteoIndex) Format2SearchDataSource(origin *BaseFromEiaSteoIn
 }
 
 func (m *BaseFromEiaSteoIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromEiaSteoIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1184,13 +1184,13 @@ func (m *BaseFromEiaSteoIndex) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_eia_steo_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromIcpiIndex ICPI消费价格指数
 type BaseFromIcpiIndex struct {
-	BaseFromIcpiIndexId    int       `orm:"column(base_from_icpi_index_id);pk"`
+	BaseFromIcpiIndexId    int       `gorm:"column:base_from_icpi_index_id;primaryKey;autoIncrement"`
 	BaseFromIcpiClassifyId int       `description:"分类ID"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -1247,7 +1247,7 @@ func (m *BaseFromIcpiIndex) Format2SearchDataSource(origin *BaseFromIcpiIndex) (
 }
 
 func (m *BaseFromIcpiIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromIcpiIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1257,13 +1257,13 @@ func (m *BaseFromIcpiIndex) GetItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_icpi_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromYongyiIndex 涌益咨询
 type BaseFromYongyiIndex struct {
-	YongyiIndexId int       `orm:"column(yongyi_index_id);pk"`
+	YongyiIndexId int       `gorm:"column:yongyi_index_id;primaryKey;autoIncrement"`
 	ClassifyId    int       `description:"分类ID"`
 	IndexCode     string    `description:"指标编码"`
 	IndexName     string    `description:"指标名称"`
@@ -1320,7 +1320,7 @@ func (m *BaseFromYongyiIndex) Format2SearchDataSource(origin *BaseFromYongyiInde
 }
 
 func (m *BaseFromYongyiIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromYongyiIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1330,13 +1330,13 @@ func (m *BaseFromYongyiIndex) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_yongyi_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromFenweiIndex 汾渭数据
 type BaseFromFenweiIndex struct {
-	FenweiIndexId int       `orm:"column(fenwei_index_id);pk"`
+	FenweiIndexId int       `gorm:"column:fenwei_index_id;primaryKey;autoIncrement"`
 	ClassifyId    int       `description:"分类ID"`
 	IndexCode     string    `description:"指标编码"`
 	IndexName     string    `description:"指标名称"`
@@ -1393,7 +1393,7 @@ func (m *BaseFromFenweiIndex) Format2SearchDataSource(origin *BaseFromFenweiInde
 }
 
 func (m *BaseFromFenweiIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromFenweiIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1403,13 +1403,13 @@ func (m *BaseFromFenweiIndex) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_fenwei_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromSci99Index 卓创资讯
 type BaseFromSci99Index struct {
-	BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"`
+	BaseFromSciIndexId int       `gorm:"column:base_from_sci_index_id;primaryKey;autoIncrement"`
 	ClassifyId         int       `description:"分类ID"`
 	IndexCode          string    `description:"指标编码"`
 	IndexName          string    `description:"指标名称"`
@@ -1466,7 +1466,7 @@ func (m *BaseFromSci99Index) Format2SearchDataSource(origin *BaseFromSci99Index)
 }
 
 func (m *BaseFromSci99Index) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromSci99Index, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1476,13 +1476,13 @@ func (m *BaseFromSci99Index) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_sci99_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromGlIndex 钢联原始指标库
 type BaseFromGlIndex struct {
-	PrimaryId   int       `orm:"column(ID);pk"`
+	PrimaryId   int       `gorm:"column:ID;primaryKey;autoIncrement" orm:"column(ID);pk"`
 	IndexCode   string    `orm:"column(INDEX_CODE)" description:"指标编码"`
 	IndexName   string    `orm:"column(INDEX_NAME)" description:"指标名称"`
 	Unit        string    `orm:"column(UNIT_NAME)" description:"单位"`
@@ -1538,7 +1538,7 @@ func (m *BaseFromGlIndex) Format2SearchDataSource(origin *BaseFromGlIndex) (item
 }
 
 func (m *BaseFromGlIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromGlIndex, err error) {
-	o := orm.NewOrmUsingDB("gl")
+	o := global.DbMap[utils.DbNameGL]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1548,7 +1548,7 @@ func (m *BaseFromGlIndex) GetItemsByCondition(condition string, pars []interface
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM mb_index_main_info WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -1611,7 +1611,7 @@ func (m *BaseFromManualEdb) Format2SearchDataSource(origin *BaseFromManualEdb) (
 }
 
 func (m *BaseFromManualEdb) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromManualEdb, err error) {
-	o := orm.NewOrmUsingDB("edb")
+	o := global.DbMap[utils.DbNameManualIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1621,13 +1621,13 @@ func (m *BaseFromManualEdb) GetItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edbinfo WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromBusinessIndex 自有数据
 type BaseFromBusinessIndex struct {
-	BaseFromBusinessIndexId int `orm:"column(base_from_business_index_id);pk"`
+	BaseFromBusinessIndexId int `gorm:"column:base_from_business_index_id;primaryKey;autoIncrement"`
 	//ClassifyId              int       `description:"分类ID"`
 	IndexCode   string    `description:"指标编码"`
 	IndexName   string    `description:"指标名称"`
@@ -1684,7 +1684,7 @@ func (m *BaseFromBusinessIndex) Format2SearchDataSource(origin *BaseFromBusiness
 }
 
 func (m *BaseFromBusinessIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBusinessIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1694,13 +1694,13 @@ func (m *BaseFromBusinessIndex) GetItemsByCondition(condition string, pars []int
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_business_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromBloombergIndex Bloomberg
 type BaseFromBloombergIndex struct {
-	BaseFromBloombergIndexId int `orm:"column(base_from_bloomberg_index_id);pk"`
+	BaseFromBloombergIndexId int `gorm:"column:base_from_bloomberg_index_id;primaryKey;autoIncrement"`
 	//ClassifyId              int       `description:"分类ID"`
 	IndexCode   string    `description:"指标编码"`
 	IndexName   string    `description:"指标名称"`
@@ -1757,7 +1757,7 @@ func (m *BaseFromBloombergIndex) Format2SearchDataSource(origin *BaseFromBloombe
 }
 
 func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBloombergIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1767,13 +1767,13 @@ func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_bloomberg_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 // BaseFromMtjhMapping 煤炭江湖
 type BaseFromMtjhMapping struct {
-	BaseFromMtjhMappingId int `orm:"column(base_from_mtjh_mapping_id);pk"`
+	BaseFromMtjhMappingId int `gorm:"column:base_from_mtjh_mapping_id;primaryKey;autoIncrement"`
 	//ClassifyId            int       `description:"分类ID"`
 	IndexCode   string    `description:"指标编码"`
 	IndexName   string    `description:"指标名称"`
@@ -1830,7 +1830,7 @@ func (m *BaseFromMtjhMapping) Format2SearchDataSource(origin *BaseFromMtjhMappin
 }
 
 func (m *BaseFromMtjhMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromMtjhMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -1840,7 +1840,7 @@ func (m *BaseFromMtjhMapping) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_mtjh_mapping WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -1943,20 +1943,20 @@ func getCoalmineDataTableName(indexCode string) string {
 
 // GetBaseIndexDataMinMax 获取数据源极值
 func GetBaseIndexDataMinMax(source, subSource int, indexCode string) (item *BaseIndexDataMinMax, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	var sql string
 	var latestVal float64
 
 	// 煤炭江湖
 	if source == utils.DATA_SOURCE_MTJH {
 		sql = `SELECT MIN(data_time) AS min_date, MAX(data_time) AS max_date FROM base_from_mtjh_index WHERE index_code = ?`
-		if e := o.Raw(sql, indexCode).QueryRow(&item); e != nil {
+		if e := o.Raw(sql, indexCode).Scan(&item); e != nil {
 			err = fmt.Errorf("获取数据源开始结束时间失败, %v", e)
 			return
 		}
 
 		sql = `SELECT deal_value AS latest_value FROM base_from_mtjh_index WHERE index_code = ? ORDER BY data_time DESC LIMIT 1`
-		if e := o.Raw(sql, indexCode).QueryRow(&latestVal); e != nil {
+		if e := o.Raw(sql, indexCode).Scan(&latestVal); e != nil {
 			err = fmt.Errorf("获取数据源最新值失败, %v", e)
 			return
 		}
@@ -1977,14 +1977,14 @@ func GetBaseIndexDataMinMax(source, subSource int, indexCode string) (item *Base
 		}
 		sql = `SELECT MIN(%s) AS min_date, MAX(%s) AS max_date FROM %s WHERE index_code = ?`
 		sql = fmt.Sprintf(sql, fieldDataTime, fieldDataTime, dataTable)
-		if e := o.Raw(sql, indexCode).QueryRow(&item); e != nil {
+		if e := o.Raw(sql, indexCode).Scan(&item); e != nil {
 			err = fmt.Errorf("获取数据源开始结束时间失败, %v", e)
 			return
 		}
 
 		sql = `SELECT deal_value AS latest_value FROM %s WHERE index_code = ? ORDER BY %s DESC LIMIT 1`
 		sql = fmt.Sprintf(sql, dataTable, fieldDataTime)
-		if e := o.Raw(sql, indexCode).QueryRow(&latestVal); e != nil {
+		if e := o.Raw(sql, indexCode).Scan(&latestVal); e != nil {
 			err = fmt.Errorf("获取数据源最新值失败, %v", e)
 			return
 		}
@@ -2001,14 +2001,15 @@ func GetBaseIndexDataMinMax(source, subSource int, indexCode string) (item *Base
 
 	sql = `SELECT MIN(data_time) AS min_date, MAX(data_time) AS max_date FROM %s WHERE index_code = ?`
 	sql = fmt.Sprintf(sql, dataTable)
-	if e := o.Raw(sql, indexCode).QueryRow(&item); e != nil {
+	if e := o.Raw(sql, indexCode).Scan(&item); e != nil {
 		err = fmt.Errorf("获取数据源开始结束时间失败, %v", e)
 		return
 	}
 
 	sql = `SELECT value AS latest_value FROM %s WHERE index_code = ? ORDER BY data_time DESC LIMIT 1`
 	sql = fmt.Sprintf(sql, dataTable)
-	if e := o.Raw(sql, indexCode).QueryRow(&latestVal); e != nil {
+	sql = utils.ReplaceDriverKeywords("", sql)
+	if e := o.Raw(sql, indexCode).Scan(&latestVal); e != nil {
 		err = fmt.Errorf("获取数据源最新值失败, %v", e)
 		return
 	}

+ 11 - 11
models/db.go

@@ -13,7 +13,7 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 )
 
-func init() {
+func init2() {
 
 	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
 	orm.SetMaxIdleConns("default", 50)
@@ -99,24 +99,24 @@ func init() {
 	initEdbRefresh()
 
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
-	afterInitTable()
+	AfterInitTable()
 }
 
 // initEdbDataTable 注册Edb指标 数据表
 func initEdbDataTable() {
 	//注册对象
 	orm.RegisterModel(
-		new(data_manage.EdbDataWind),
-		new(data_manage.EdbDataThs),
-		new(data_manage.EdbDataPb),
+		//new(data_manage.EdbDataWind),
+		//new(data_manage.EdbDataThs),
+		//new(data_manage.EdbDataPb),
 		new(data_manage.BaseFromSmm),
 		new(data_manage.BaseFromSmmIndex),
 		new(data_manage.BaseFromSmmData),
-		new(data_manage.EdbDataYs),
+		//new(data_manage.EdbDataYs),
 		new(data_manage.EdbInfoCalculateMapping),
-		new(data_manage.EdbInfo),                 //hz_data库的edb_info表
-		new(data_manage.EdbDataCalculateZjpj),    //直接拼接
-		new(data_manage.EdbDataCalculateLjztbpj), //累计同比值拼接
+		new(data_manage.EdbInfo), //hz_data库的edb_info表
+		//new(data_manage.EdbDataCalculateZjpj), //直接拼接
+		//new(data_manage.EdbDataCalculateLjztbpj), //累计同比值拼接
 		new(data_manage.BaseFromTradeZhengzhouIndex),
 		new(data_manage.BaseFromTradeDalianIndex),
 		new(data_manage.BaseFromTradeShanghaiIndex),
@@ -205,11 +205,11 @@ func initEdbRefresh() {
 	)
 }
 
-// afterInitTable
+// AfterInitTable
 // @Description: 初始化表结构的的后置操作
 // @author: Roc
 // @datetime 2024-07-01 13:31:09
-func afterInitTable() {
+func AfterInitTable() {
 	// 初始化指标来源配置
 	data_manage.InitEdbSourceVar()
 

+ 4 - 11
models/edbinfo_send_msg_record.go

@@ -1,26 +1,19 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 type EdbinfoSendMsgRecord struct {
-	Id         int `orm:"column(id);pk"`
+	Id         int `gorm:"column:id;primaryKey;autoIncrement"`
 	UserId     int
 	TradeCode  string
 	CreateTime time.Time
 }
 
 func AddEdbinfoSendMsgRecord(item *EdbinfoSendMsgRecord) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Insert(item)
-	return err
-}
-
-func GetEdbinfoSendMsgCount(userId int, tradeCode string) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT COUNT(1) AS count FROM edbinfo_send_msg_record WHERE user_id=? AND trade_code=? AND create_time=DATE(NOW()) `
-	err = o.Raw(sql, userId, tradeCode).QueryRow(&count)
+	err = global.DbMap[utils.DbNameReport].Create(item).Error
 	return
 }

+ 34 - 18
models/english_report.go

@@ -1,11 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+	"gorm.io/gorm"
 )
 
 type EnglishReport struct {
-	Id                 int    `orm:"column(id)" description:"报告Id"`
+	Id                 int    `gorm:"column:id;primaryKey;autoIncrement" description:"报告Id"`
 	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
 	ClassifyIdFirst    int    `description:"一级分类id"`
 	ClassifyNameFirst  string `description:"一级分类名称"`
@@ -38,8 +40,16 @@ type EnglishReport struct {
 	AdminRealName      string `description:"创建者姓名"`
 }
 
+func (m *EnglishReport) AfterFind(tx *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.PublishTime = utils.GormDateStrToDateTimeStr(m.PublishTime)
+	m.PrePublishTime = utils.GormDateStrToDateTimeStr(m.PrePublishTime)
+	return
+}
+
 type EnglishReportDetail struct {
-	Id                 int    `orm:"column(id)" description:"报告Id"`
+	Id                 int    `gorm:"column:id;primaryKey;autoIncrement" description:"报告Id"`
 	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
 	ClassifyIdFirst    int    `description:"一级分类id"`
 	ClassifyNameFirst  string `description:"一级分类名称"`
@@ -67,6 +77,13 @@ type EnglishReportDetail struct {
 	KeyTakeaways       string `description:"关键点"`
 }
 
+func (m *EnglishReportDetail) ConvertTimeStr() {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.PublishTime = utils.GormDateStrToDateTimeStr(m.PublishTime)
+	return
+}
+
 type ElasticEnglishReportDetail struct {
 	Id                 string `description:"报告id或者线上路演Id"`
 	ReportId           int    `description:"报告id"`
@@ -91,38 +108,37 @@ type ElasticEnglishReportDetail struct {
 
 // GetPrePublishedEnglishReports 获取定时发布时间为当前时间的未发布的英文报告列表
 func GetPrePublishedEnglishReports(startTime, endTime, afterDate string) (list []*EnglishReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM english_report WHERE state = 1 and pre_publish_time >= ? and pre_publish_time <= ? and modify_time >= ?`
-	_, err = o.Raw(sql, startTime, endTime, afterDate).QueryRows(&list)
+	err = o.Raw(sql, startTime, endTime, afterDate).Find(&list).Error
 	return
 }
 
 // PublishEnglishReportById 发布报告
 func PublishEnglishReportById(reportId int, publishTime string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE english_report SET state=2, publish_time=?, modify_time=NOW() WHERE id = ? `
-	_, err = o.Raw(sql, publishTime, reportId).Exec()
+	err = o.Exec(sql, publishTime, reportId).Error
 	return
 }
 
 func GetEnglishReportById(reportId int) (item *EnglishReportDetail, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM english_report WHERE id=?`
-	err = o.Raw(sql, reportId).QueryRow(&item)
+	err = o.Raw(sql, reportId).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.Id > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 
 // GetReportByReportId 主键获取报告
 func GetReportByReportId(reportId int) (item *Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM report WHERE id = ?`
-	err = o.Raw(sql, reportId).QueryRow(&item)
-	return
-}
-
-// Update 更新
-func (item *EnglishReport) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(item, cols...)
+	err = o.Raw(sql, reportId).First(&item).Error
 	return
 }

+ 10 - 8
models/fe_calendar/fe_calendar_matter.go

@@ -1,8 +1,9 @@
 package fe_calendar
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -15,7 +16,7 @@ const (
 
 // FeCalendarMatter 外汇日历-事项表
 type FeCalendarMatter struct {
-	FeCalendarMatterId  int       `orm:"column(fe_calendar_matter_id);pk" description:"事项ID"`
+	FeCalendarMatterId  int       `gorm:"column:fe_calendar_matter_id;primaryKey;autoIncrement" description:"事项ID"`
 	ChartPermissionId   int       `description:"品种ID"`
 	ChartPermissionName string    `description:"品种名称"`
 	MatterMonth         string    `description:"事项年月:格式2006-01"`
@@ -84,25 +85,25 @@ func (m *FeCalendarMatter) PrimaryId() string {
 }
 
 func (m *FeCalendarMatter) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FeCalendarMatter, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FeCalendarMatter) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *FeCalendarMatter) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FeCalendarMatter, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -112,6 +113,7 @@ func (m *FeCalendarMatter) GetPageItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 10 - 9
models/index_notice.go

@@ -1,7 +1,8 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
@@ -18,22 +19,22 @@ type EdbInfo struct {
 // GetEdbInfoByFrequencyNotDay 获取频度非日度 且 提醒时间不为空 的指标数据
 func GetEdbInfoByFrequencyNotDay() (items []*EdbInfo, err error) {
 	sql := `SELECT * FROM edbinfo WHERE frequency!="日度" AND notice_time<>'' and user_id>0 `
-	o := orm.NewOrmUsingDB("edb")
-	_, err = o.Raw(sql).QueryRows(&items)
+	o := global.DbMap[utils.DbNameManualIndex]
+	err = o.Raw(sql).Find(&items).Error
 	return
 }
 
 type Edbdata struct {
-	TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
-	Dt         string    `orm:"column(DT)" description:"日期"`
-	Close      string    `orm:"column(CLOSE)" description:"值"`
-	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
+	TradeCode  string    `gorm:"column:TRADE_CODE" description:"指标编码"`
+	Dt         string    `gorm:"column:DT" description:"日期"`
+	Close      string    `gorm:"column:CLOSE" description:"值"`
+	ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // GetLastEdbdataInfo 根据指标编号获取指标最近的一条数据
 func GetLastEdbdataInfo(tradeCode string) (item *Edbdata, err error) {
 	sql := `SELECT * FROM edbdata WHERE TRADE_CODE=? order by DT desc `
-	o := orm.NewOrmUsingDB("edb")
-	err = o.Raw(sql, tradeCode).QueryRow(&item)
+	o := global.DbMap[utils.DbNameManualIndex]
+	err = o.Raw(sql, tradeCode).First(&item).Error
 	return
 }

+ 33 - 125
models/report.go

@@ -1,14 +1,14 @@
 package models
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
 type Report struct {
-	Id                 int       `orm:"column(id)" description:"报告Id"`
+	Id                 int       `gorm:"column:id;primaryKey;autoIncrement" description:"报告Id"`
 	AddType            int       `description:"新增方式:1:新增报告,2:继承报告"`
 	ClassifyIdFirst    int       `description:"一级分类id"`
 	ClassifyNameFirst  string    `description:"一级分类名称"`
@@ -40,103 +40,31 @@ type Report struct {
 	ClassifyNameThird  string `description:"三级分类名称"`
 }
 
-func GetReportById(reportId int) (item *ReportDetail, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT * FROM report WHERE id=?`
-	err = o.Raw(sql, reportId).QueryRow(&item)
-	return
-}
-
-func GetReport() (items []*Report, err error) {
-	sql := `SELECT * FROM report ORDER BY id ASC `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-func ModifyReportContentSub(id int, contentSub string) (err error) {
-	sql := `UPDATE report SET content_sub=? WHERE id=? `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, contentSub, id).Exec()
-	return
-}
-
-func GetReportLimit() (items []*Report, err error) {
-	sql := `SELECT * FROM report WHERE state=2 ORDER BY id DESC LIMIT 50 `
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-func EditReportContent(reportId int, content, contentSub string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := ` UPDATE report SET content=?,content_sub=?,modify_time=NOW() WHERE id=? `
-	_, err = o.Raw(sql, content, contentSub, reportId).Exec()
-	return
-}
-
-// 删除报告日志记录-保留3个月
-func DeleteReportSaveLog() {
-	startDateTime := time.Now().AddDate(0, -3, 0).Format(utils.FormatDateTime)
-	fmt.Println(startDateTime)
-}
-
-func EditReportContentHtml(reportId int, content string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := ` UPDATE report SET content=?,modify_time=NOW() WHERE id=? `
-	_, err = o.Raw(sql, content, reportId).Exec()
+func (m *Report) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
 	return
 }
 
 // GetPrePublishedReports 获取定时发布时间为当前时间的未发布的报告列表
 func GetPrePublishedReports(startTime, endTime, afterDate string) (list []*Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM report WHERE state = 1 and pre_publish_time >= ? and pre_publish_time <=? and modify_time >= ?`
-	_, err = o.Raw(sql, startTime, endTime, afterDate).QueryRows(&list)
+	err = o.Raw(sql, startTime, endTime, afterDate).Find(&list).Error
 	return
 }
 
 // PublishReportById 发布报告
 func PublishReportById(reportId int, publishTime time.Time) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE report SET state = 2, publish_time = ?, modify_time = NOW() WHERE id = ? `
-	_, err = o.Raw(sql, publishTime, reportId).Exec()
+	err = o.Exec(sql, publishTime, reportId).Error
 	return
 }
 
-type ReportDetail struct {
-	Id                 int    `orm:"column(id)" description:"报告Id"`
-	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	CreateTime         string `description:"创建时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"1:未发布,2:已发布"`
-	PublishTime        string `description:"发布时间"`
-	Stage              int    `description:"期数"`
-	MsgIsSend          int    `description:"消息是否已发送,0:否,1:是"`
-	Content            string `description:"内容"`
-	VideoUrl           string `description:"音频文件URL"`
-	VideoName          string `description:"音频文件名称"`
-	VideoPlaySeconds   string `description:"音频播放时长"`
-	ContentSub         string `description:"内容前两个章节"`
-	ThsMsgIsSend       int    `description:"客户群消息是否已发送,0:否,1:是"`
-	HasChapter         int    `description:"是否有章节 0-否 1-是"`
-	ChapterType        string `description:"章节类型 day-晨报 week-周报"`
-	OldReportId        int    `description:"research_report表ID(后续一两个版本过渡需要,之后可移除)"`
-	PreMsgSend         int    `description:"定时发布成功后是否立即推送模版消息:0否,1是"`
-}
-
 func ModifyReportVideo(reportId int, videoUrl, videoName, videoSize string, playSeconds float64) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE report SET video_url=?,video_name=?,video_play_seconds=?,video_size=? WHERE id=? `
-	_, err = o.Raw(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Exec()
+	err = o.Exec(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Error
 	return
 }
 
@@ -151,27 +79,9 @@ func ModifyReportVideo(reportId int, videoUrl, videoName, videoSize string, play
 // @param playSeconds float64
 // @return err error
 func ModifyReportVideoByNoVideo(reportId int, videoUrl, videoName, videoSize string, playSeconds float64) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE report SET video_url=?,video_name=?,video_play_seconds=?,video_size=? WHERE id=? AND video_url=""`
-	_, err = o.Raw(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Exec()
-	return
-}
-
-type ReportChapterTypePermission struct {
-	Id                    int       `orm:"column(id);pk" description:"主键ID"`
-	ReportChapterTypeId   int       `description:"报告章节类型ID"`
-	ReportChapterTypeName string    `description:"章节名称"`
-	ChartPermissionId     int       `description:"大分类ID"`
-	PermissionName        string    `description:"权限名称"`
-	ResearchType          string    `description:"研报类型"`
-	CreatedTime           time.Time `description:"创建时间"`
-}
-
-// GetChapterTypePermissionByTypeIdAndResearchType 根据章节类型ID及研报类型获取章节类型权限列表
-func GetChapterTypePermissionByTypeIdAndResearchType(typeId int, researchType string) (list []*ReportChapterTypePermission, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_chapter_type_permission WHERE report_chapter_type_id = ? AND research_type = ? ORDER BY chart_permission_id ASC `
-	_, err = o.Raw(sql, typeId, researchType).QueryRows(&list)
+	err = o.Exec(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Error
 	return
 }
 
@@ -200,60 +110,58 @@ type ChartPermissionMappingIdName struct {
 }
 
 func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (list []*ChartPermissionMappingIdName, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.`from` = ? AND a.classify_id = ? "
-	_, err = o.Raw(sql, source, classifyId).QueryRows(&list)
+	o := global.DbMap[utils.DbNameReport]
+	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.from = ? AND a.classify_id = ? "
+	sql = utils.ReplaceDriverKeywords("", sql)
+	err = o.Raw(sql, source, classifyId).Find(&list).Error
 	return
 }
 
 func UpdateReportPublishTime(reportId int, videoNameDate string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql1 := ` UPDATE report SET publish_time = NOW() WHERE id = ?  `
-	_, err = o.Raw(sql1, reportId).Exec()
+	err = o.Exec(sql1, reportId).Error
 	if err != nil {
 		return
 	}
 	//修改音频标题
 	sql2 := ` UPDATE report SET video_name=CONCAT(SUBSTRING_INDEX(video_name,"(",1),"` + videoNameDate + `") WHERE id = ? and (video_name !="" and video_name is not null)`
-	_, err = o.Raw(sql2, reportId).Exec()
+	err = o.Exec(sql2, reportId).Error
 	return
 }
 
 func UpdateReportChapterPublishTime(reportId int, videoNameDate string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql1 := ` UPDATE report_chapter SET publish_time = NOW() WHERE report_id = ? `
-	_, err = o.Raw(sql1, reportId).Exec()
+	err = o.Exec(sql1, reportId).Error
 	if err != nil {
 		return
 	}
 	//修改音频标题
 	sql2 := ` UPDATE report_chapter SET video_name=CONCAT(SUBSTRING_INDEX(video_name,"(",1),"` + videoNameDate + `") WHERE report_id = ? and (video_name !="" and video_name is not null)`
-	_, err = o.Raw(sql2, reportId).Exec()
+	err = o.Exec(sql2, reportId).Error
 	return
 }
 
 func ModifyReportMsgIsSend(reportId int) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE report SET msg_is_send = 1, msg_send_time=NOW()  WHERE id = ? and msg_is_send=0`
-	_, err = o.Raw(sql, reportId).Exec()
+	err = o.Exec(sql, reportId).Error
 	return
 }
 
 // ClearReportSaveLog 清理报告保存日志
 func ClearReportSaveLog(date string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `DELETE FROM report_save_log WHERE create_time <= ?`
-	_, err = o.Raw(sql, date).Exec()
+	err = o.Exec(sql, date).Error
 	return
 }
 
 // PublishReportAndChapter 发布报告及章节
 func PublishReportAndChapter(reportInfo *Report, isPublishReport bool, cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DbMap[utils.DbNameReport]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -263,7 +171,7 @@ func PublishReportAndChapter(reportInfo *Report, isPublishReport bool, cols []st
 	}()
 	// 更新报告
 	if isPublishReport {
-		_, err = to.Update(reportInfo, cols...)
+		err = to.Select(cols).Updates(reportInfo).Error
 		if err != nil {
 			return
 		}
@@ -271,17 +179,17 @@ func PublishReportAndChapter(reportInfo *Report, isPublishReport bool, cols []st
 
 	// 发布该报告的所有章节
 	sql := ` UPDATE report_chapter SET publish_state = 2, publish_time = ? WHERE report_id = ?  `
-	_, err = to.Raw(sql, reportInfo.PublishTime, reportInfo.Id).Exec()
+	err = to.Exec(sql, reportInfo.PublishTime, reportInfo.Id).Error
 
 	// 发布章节
 	//if len(publishIds) > 0 {
 	//	sql := ` UPDATE report_chapter SET publish_state = 2, publish_time = ? WHERE report_id = ? AND report_chapter_id IN (` + utils.GetOrmInReplace(len(publishIds)) + `) `
-	//	_, err = to.Raw(sql, reportInfo.PublishTime, reportInfo.Id, publishIds).Exec()
+	//	err = to.Raw(sql, reportInfo.PublishTime, reportInfo.Id, publishIds).Error
 	//}
 
 	//if len(unPublishIds) > 0 {
 	//	sql := ` UPDATE report_chapter SET publish_state = 1, publish_time = NULL, is_edit = 0 WHERE report_id = ? AND report_chapter_id IN (` + utils.GetOrmInReplace(len(unPublishIds)) + `) `
-	//	_, err = to.Raw(sql, reportInfo.Id, unPublishIds).Exec()
+	//	err = to.Raw(sql, reportInfo.Id, unPublishIds).Error
 	//}
 
 	return

+ 16 - 27
models/report/report_chapter_permission_mapping.go

@@ -1,15 +1,15 @@
 package report
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // ReportChapterPermissionMapping
 // @Description: 报告章节的权限关系表
 type ReportChapterPermissionMapping struct {
-	ReportChapterPermissionMappingId int `orm:"column(report_chapter_permission_mapping_id)"`
+	ReportChapterPermissionMappingId int `gorm:"column:report_chapter_permission_mapping_id;primaryKey;autoIncrement"`
 	ReportChapterId                  int `description:"报告章节的id"` // 报告章节的id
 	ChartPermissionId                int `description:"权限id"`    // 权限id
 	CreateTime                       time.Time
@@ -24,11 +24,8 @@ type ReportChapterPermissionMapping struct {
 // @param list []*ReportChapterPermissionMapping
 // @return err error
 func (m ReportChapterPermissionMapping) MultiAddReportChapterPermissionMappingPermission(reportChapterId int, list []*ReportChapterPermissionMapping) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DbMap[utils.DbNameReport]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -38,20 +35,19 @@ func (m ReportChapterPermissionMapping) MultiAddReportChapterPermissionMappingPe
 	}()
 
 	sql := "DELETE from report_chapter_permission_mapping where report_chapter_id=?"
-	_, err = to.Raw(sql, reportChapterId).Exec()
+	err = to.Exec(sql, reportChapterId).Error
 	if err != nil {
 		return
 	}
 
 	// 新增品种权限记录
 	if len(list) > 0 {
-		_, tmpErr := to.InsertMulti(500, list)
+		tmpErr := to.CreateInBatches(list, utils.MultiAddNum).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
 	}
-
 	return
 }
 
@@ -64,17 +60,16 @@ func (m ReportChapterPermissionMapping) MultiAddReportChapterPermissionMappingPe
 // @return list []*ReportChapterPermissionMapping
 // @return err error
 func (m ReportChapterPermissionMapping) GetPermissionListById(reportChapterId int) (list []*ReportChapterPermissionMapping, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM report_chapter_permission_mapping WHERE report_chapter_id=? `
-	_, err = o.Raw(sql, reportChapterId).QueryRows(&list)
-
+	err = o.Raw(sql, reportChapterId).Find(&list).Error
 	return
 }
 
 // ReportChapterPermissionItem
 // @Description: 报告章节的权限关系表(带有品种名称)
 type ReportChapterPermissionItem struct {
-	ReportChapterPermissionMappingId int    `orm:"column(report_chapter_permission_mapping_id)"`
+	ReportChapterPermissionMappingId int    `gorm:"column:report_chapter_permission_mapping_id;primaryKey;autoIncrement"`
 	ReportChapterId                  int    `description:"报告章节的id"`
 	ChartPermissionId                int    `description:"权限id"`
 	ChartPermissionName              string `description:"品种名称"`
@@ -90,11 +85,10 @@ type ReportChapterPermissionItem struct {
 // @return list []*ReportChapterPermissionMapping
 // @return err error
 func (m ReportChapterPermissionMapping) GetPermissionItemListById(reportChapterId int) (list []*ReportChapterPermissionItem, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT a.*,b.chart_permission_name FROM report_chapter_permission_mapping AS a 
          JOIN chart_permission AS b on a.chart_permission_id=b.chart_permission_id WHERE report_chapter_id=? `
-	_, err = o.Raw(sql, reportChapterId).QueryRows(&list)
-
+	err = o.Raw(sql, reportChapterId).Find(&list).Error
 	return
 }
 
@@ -112,10 +106,9 @@ func (m ReportChapterPermissionMapping) GetPermissionListByIdList(reportChapterI
 		return
 	}
 
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM report_chapter_permission_mapping WHERE report_chapter_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, reportChapterIdList).QueryRows(&list)
-
+	err = o.Raw(sql, reportChapterIdList).Find(&list).Error
 	return
 }
 
@@ -127,11 +120,8 @@ func (m ReportChapterPermissionMapping) GetPermissionListByIdList(reportChapterI
 // @param list []*ReportChapterPermissionMapping
 // @return err error
 func (m ReportChapterPermissionMapping) MultiAdd(list []*ReportChapterPermissionMapping) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DbMap[utils.DbNameReport]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -142,11 +132,10 @@ func (m ReportChapterPermissionMapping) MultiAdd(list []*ReportChapterPermission
 
 	// 新增品种权限记录
 	if len(list) > 0 {
-		_, err = to.InsertMulti(500, list)
+		err = to.CreateInBatches(list, utils.MultiAddNum).Error
 		if err != nil {
 			return
 		}
 	}
-
 	return
 }

+ 13 - 22
models/report_chapter.go

@@ -1,14 +1,15 @@
 package models
 
 import (
+	"eta/eta_task/global"
 	"eta/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
 // ReportChapter 报告章节
 type ReportChapter struct {
-	ReportChapterId   int       `orm:"column(report_chapter_id);pk" description:"报告章节ID"`
+	ReportChapterId   int       `gorm:"column:report_chapter_id;primaryKey;autoIncrement" description:"报告章节ID"`
 	ReportId          int       `description:"报告ID"`
 	ReportType        string    `description:"报告类型 day-晨报 week-周报"`
 	ClassifyIdFirst   int       `description:"一级分类id"`
@@ -37,39 +38,29 @@ type ReportChapter struct {
 	OriginalVideoUrl  string    `description:"原始音频文件URL"`
 }
 
+func (m *ReportChapter) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	return
+}
+
 // GetPublishedChapterListByReportId 根据ReportId获取已发布章节列表
 func GetPublishedChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := ` SELECT * FROM report_chapter WHERE report_id = ? AND publish_state = 2 ORDER BY sort ASC`
-	_, err = o.Raw(sql, reportId).QueryRows(&list)
-
+	err = o.Raw(sql, reportId).Find(&list).Error
 	return
 }
 
 // GetChapterListByReportId 根据ReportId获取章节列表
 func GetChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := ` SELECT * FROM report_chapter WHERE report_id = ? ORDER BY sort ASC`
-	_, err = o.Raw(sql, reportId).QueryRows(&list)
-
-	return
-}
-
-// GetChapterListByChapterIds 根据ReportId获取章节列表
-func GetChapterListByChapterIds(chapterIds []int) (list []*ReportChapter, err error) {
-	if len(chapterIds) == 0 {
-		return
-	}
-	o := orm.NewOrmUsingDB("rddp")
-	sql := ` SELECT * FROM report_chapter WHERE report_chapter_id IN (` + utils.GetOrmInReplace(len(chapterIds)) + `) ORDER BY sort ASC`
-	_, err = o.Raw(sql, chapterIds).QueryRows(&list)
+	err = o.Raw(sql, reportId).Find(&list).Error
 	return
 }
 
 // UpdateChapter 更新报表章节
 func (chapterChapterInfo *ReportChapter) UpdateChapter(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(chapterChapterInfo, cols...)
-
+	err = global.DbMap[utils.DbNameReport].Select(cols).Updates(chapterChapterInfo).Error
 	return
 }

+ 8 - 4
models/report_state_record.go

@@ -1,12 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
 type ReportStateRecord struct {
-	Id         int       `orm:"column(id)" description:"Id"`
+	Id         int       `gorm:"column:id;primaryKey;autoIncrement"`
 	ReportId   int       // 研报id
 	ReportType int       // 报告类型'报告类型:1中文研报2智能研报'
 	State      int       // 状态:1-未提交 2-待审核 3-驳回 4-审核
@@ -16,7 +17,10 @@ type ReportStateRecord struct {
 }
 
 func AddReportStateRecord(item *ReportStateRecord) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	lastId, err = o.Insert(item)
+	err = global.DbMap[utils.DbNameReport].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.Id)
 	return
 }

+ 8 - 25
models/sandbox/sandbox.go

@@ -1,31 +1,13 @@
 package sandbox
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"time"
 )
 
-// Sandbox 沙盘推演主表
-//type Sandbox struct {
-//	SandboxId           int       `orm:"column(sandbox_id);pk" description:"沙盘id"`
-//	Name                string    `description:"沙盘名称"`
-//	ChartPermissionId   int       `description:"品种id"`
-//	ChartPermissionName string    `description:"品种名称"`
-//	CurrVersion         int       `description:"当前版本"`
-//	Code                string    `description:"沙盘code"`
-//	Content             string    `description:"沙盘数据"`
-//	PicUrl              string    `description:"沙盘图片地址"`
-//	OpUserId            int       `description:"最近一次编辑操作的用户id"`
-//	OpUserName          string    `description:"最近一次编辑的用户名称(冗余字段,避免查表)"`
-//	IsDelete            int8      `description:"是否删除,0:未删除,1:已删除"`
-//	ModifyTime          time.Time `description:"修改时间"`
-//	CreateTime          time.Time `description:"创建时间"`
-//	SandboxClassifyId   int       `description:"分类id"`
-//	Sort                int       `description:"排序"`
-//}
-
 type Sandbox struct {
-	SandboxId         int       `orm:"column(sandbox_id);pk" description:"沙盘id"`
+	SandboxId         int       `gorm:"column:sandbox_id;primaryKey;autoIncrement" description:"沙盘id"`
 	Name              string    `description:"沙盘名称"`
 	Code              string    `description:"沙盘code"`
 	Content           string    `description:"沙盘数据"`
@@ -42,23 +24,24 @@ type Sandbox struct {
 }
 
 func GetSandboxListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*Sandbox, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM sandbox WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += " ORDER BY create_time DESC LIMIT ?,? "
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
+	pars = append(pars, startSize, pageSize)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func GetSandboxListCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT COUNT(1) AS count FROM sandbox WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 

+ 10 - 10
models/smart_report.go

@@ -1,14 +1,15 @@
 package models
 
 import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // SmartReport 智能研报
 type SmartReport struct {
-	SmartReportId      int       `orm:"column(smart_report_id)" description:"智能研报ID"`
+	SmartReportId      int       `gorm:"column:smart_report_id;primaryKey;autoIncrement" description:"智能研报ID"`
 	ReportCode         string    `description:"报告唯一编码"`
 	ClassifyIdFirst    int       `description:"一级分类ID"`
 	ClassifyNameFirst  string    `description:"一级分类名称"`
@@ -48,31 +49,30 @@ func (m *SmartReport) PrimaryId() string {
 }
 
 func (m *SmartReport) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameReport].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *SmartReport) GetItemById(id int) (item *SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 // GetPrePublishSmartReports 获取定时发布时间为当前时间的未发布的报告列表
 func GetPrePublishSmartReports(startTime, endTime string) (list []*SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM smart_report WHERE state = 1 AND pre_publish_time >= ? AND pre_publish_time <= ?`
-	_, err = o.Raw(sql, startTime, endTime).QueryRows(&list)
+	err = o.Raw(sql, startTime, endTime).Find(&list).Error
 	return
 }
 
 // PublishSmartReportById 发布智能报告
 func PublishSmartReportById(reportId int, publishTime time.Time) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	o := global.DbMap[utils.DbNameReport]
 	sql := `UPDATE smart_report SET state = 2, publish_time = ?, msg_is_send = 1, msg_send_time = NOW(), modify_time = NOW() WHERE smart_report_id = ?`
-	_, err = o.Raw(sql, publishTime, reportId).Exec()
+	err = o.Exec(sql, publishTime, reportId).Error
 	return
 }
 

+ 13 - 42
models/wx_template_msg.go

@@ -1,6 +1,9 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_task/global"
+	"eta/eta_task/utils"
+)
 
 type SendTemplateResponse struct {
 	Errcode int    `json:"errcode"`
@@ -14,24 +17,8 @@ type OpenIdList struct {
 
 func DeleteTemplateRecordByDate(date string) (err error) {
 	sql := `DELETE FROM user_template_record WHERE create_time<? `
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, date).Exec()
-	return
-}
-
-// GetOpenIdListV2 2022-08-18从hongze_admin复制过来的最新的代码
-func GetOpenIdListV2() (items []*OpenIdList, err error) {
-	sql := `SELECT DISTINCT
-				ur.open_id,
-				wu.user_id
-			FROM
-				wx_user AS wu
-			INNER JOIN company AS c ON c.company_id = wu.company_id
-			INNER JOIN company_product AS d ON c.company_id = d.company_id
-			INNER JOIN user_record AS ur ON wu.user_id = ur.user_id
-			WHERE
-				ur.open_id != "" AND ur.subscribe = 1 AND ur.create_platform = 1 AND d. STATUS IN ('正式', '试用', '永续') `
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	o := global.DbMap[utils.DbNameWeekly]
+	err = o.Exec(sql, date).Error
 	return
 }
 
@@ -40,27 +27,10 @@ func GetOpenIdArr() (items []string, err error) {
           INNER JOIN company AS c ON c.company_id = wu.company_id 
           INNER JOIN company_product AS d ON c.company_id=d.company_id
 		INNER JOIN user_record  AS ur ON wu.user_id=ur.user_id
-          WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续')
+          WHERE ur.open_id != '' AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续')
          ORDER BY FIELD(c.company_id, 16) desc, ur.user_record_id asc`
-	o := orm.NewOrm()
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-func GetOpenIdArrByClassifyNameSecond(classifyNameSecond string) (items []string, err error) {
-	sql := ` SELECT DISTINCT ur.open_id FROM wx_user AS wu 
-			INNER JOIN company AS c ON c.company_id = wu.company_id 
-			INNER JOIN company_product AS d ON c.company_id=d.company_id
-			INNER JOIN user_record  AS ur ON wu.user_id=ur.user_id
-			INNER JOIN company_report_permission AS e ON d.company_id=e.company_id
-			INNER JOIN chart_permission AS f ON e.chart_permission_id=f.chart_permission_id
-			INNER JOIN chart_permission_search_key_word_mapping AS g ON f.chart_permission_id=g.chart_permission_id
-			WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
-			AND g.from='rddp'
-			AND g.key_word=?
-			ORDER BY FIELD(c.company_id, 16) DESC, ur.user_record_id ASC  `
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, classifyNameSecond).QueryRows(&items)
+	o := global.DbMap[utils.DbNameWeekly]
+	err = o.Raw(sql).Find(&items).Error
 	return
 }
 
@@ -79,11 +49,12 @@ func GetOpenIdArrByClassifyId(classifyId int) (items []string, err error) {
 			INNER JOIN company_report_permission AS e ON d.company_id=e.company_id
 			INNER JOIN chart_permission AS f ON e.chart_permission_id=f.chart_permission_id
 			INNER JOIN chart_permission_search_key_word_mapping AS g ON f.chart_permission_id=g.chart_permission_id
-			WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
+			WHERE ur.open_id != '' AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
 			AND g.from='rddp'
 			AND g.classify_id=?
 			ORDER BY FIELD(c.company_id, 16) DESC, ur.user_record_id ASC  `
-	o := orm.NewOrmUsingDB("weekly")
-	_, err = o.Raw(sql, classifyId).QueryRows(&items)
+	sql = utils.ReplaceDriverKeywords("", sql)
+	o := global.DbMap[utils.DbNameWeekly]
+	err = o.Raw(sql, classifyId).Find(&items).Error
 	return
 }

+ 81 - 92
services/data/data_pb.go

@@ -1,96 +1,85 @@
 package data
 
-import (
-	"encoding/json"
-	"eta/eta_task/models/data_manage"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"net/url"
-	"strings"
-	"time"
-)
-
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
+//type EdbDataFromPb struct {
+//	Date   map[string]int64   `json:"date"`
+//	Ticker map[string]string  `json:"ticker"`
+//	Field  map[string]string  `json:"field"`
+//	Value  map[string]float64 `json:"value"`
+//}
 
 // 万得
-func SyncEdbDataByPb(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("SyncEdbDataByPb Err:" + err.Error())
-		}
-	}()
-	addEdbCode := edbCode
-
-	edbCode = url.QueryEscape(edbCode)
-	pbUrl := utils.PbServerUrl + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	pbUrl = fmt.Sprintf(pbUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("pbUrl:" + pbUrl)
-	body, err := http.Get(pbUrl)
-	utils.FileLog.Info("pb result:" + string(body))
-
-	if strings.Contains(string(body), "html") {
-		return nil
-	}
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-
-	pbList := make([]*data_manage.EdbDataPb, 0)
-	if len(item.Date) > 0 {
-		dateMap := item.Date
-		for k, v := range dateMap {
-			dataTimestamp := v
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-			if field == "PX_LAST" {
-				count, err := data_manage.GetEdbDataPbCount(addEdbCode, dateTime)
-				if err != nil {
-					return err
-				}
-				if count > 0 {
-					err = data_manage.ModifyEdbDataPb(edbInfoId, addEdbCode, dateTime, val)
-					if err != nil {
-						return err
-					}
-				} else {
-					item := new(data_manage.EdbDataPb)
-					item.EdbCode = addEdbCode
-					item.EdbInfoId = int(edbInfoId)
-					item.CreateTime = time.Now()
-					item.ModifyTime = time.Now()
-					item.DataTime = dateTime
-					item.Value = val
-					item.Status = 1
-					item.Field = field
-					item.Ticker = ticker
-					item.DataTimestamp = dataTimestamp
-					pbList = append(pbList, item)
-				}
-			}
-		}
-	}
-	if len(pbList) > 0 {
-		err = data_manage.AddEdbDataPb(pbList)
-		if err != nil {
-			return
-		}
-	}
-	return
-}
+//func SyncEdbDataByPb(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
+//	defer func() {
+//		if err != nil {
+//			fmt.Println("SyncEdbDataByPb Err:" + err.Error())
+//		}
+//	}()
+//	addEdbCode := edbCode
+//
+//	edbCode = url.QueryEscape(edbCode)
+//	pbUrl := utils.PbServerUrl + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	pbUrl = fmt.Sprintf(pbUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("pbUrl:" + pbUrl)
+//	body, err := http.Get(pbUrl)
+//	utils.FileLog.Info("pb result:" + string(body))
+//
+//	if strings.Contains(string(body), "html") {
+//		return nil
+//	}
+//
+//	if err != nil {
+//		return
+//	}
+//	item := new(EdbDataFromPb)
+//	err = json.Unmarshal(body, &item)
+//	if err != nil {
+//		return
+//	}
+//
+//	pbList := make([]*data_manage.EdbDataPb, 0)
+//	if len(item.Date) > 0 {
+//		dateMap := item.Date
+//		for k, v := range dateMap {
+//			dataTimestamp := v
+//			v = v / 1000
+//			t := time.Unix(v, 0)
+//			dateTime := t.Format(utils.FormatDate)
+//
+//			val := item.Value[k]
+//			field := item.Field[k]
+//			ticker := item.Ticker[k]
+//			if field == "PX_LAST" {
+//				count, err := data_manage.GetEdbDataPbCount(addEdbCode, dateTime)
+//				if err != nil {
+//					return err
+//				}
+//				if count > 0 {
+//					err = data_manage.ModifyEdbDataPb(edbInfoId, addEdbCode, dateTime, val)
+//					if err != nil {
+//						return err
+//					}
+//				} else {
+//					item := new(data_manage.EdbDataPb)
+//					item.EdbCode = addEdbCode
+//					item.EdbInfoId = int(edbInfoId)
+//					item.CreateTime = time.Now()
+//					item.ModifyTime = time.Now()
+//					item.DataTime = dateTime
+//					item.Value = val
+//					item.Status = 1
+//					item.Field = field
+//					item.Ticker = ticker
+//					item.DataTimestamp = dataTimestamp
+//					pbList = append(pbList, item)
+//				}
+//			}
+//		}
+//	}
+//	if len(pbList) > 0 {
+//		err = data_manage.AddEdbDataPb(pbList)
+//		if err != nil {
+//			return
+//		}
+//	}
+//	return
+//}

+ 5 - 1
services/data/data_source.go

@@ -25,13 +25,17 @@ func SyncDataSourceEs(cont context.Context) (err error) {
 	confOb := new(models.BusinessConf)
 	conf, e := confOb.GetItemByConfKey(models.BusinessConfSyncDataEsDaily)
 	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(e) {
 			utils.FileLog.Info("SyncDataSourceEs-无刷新配置,不同步")
 			return
 		}
 		err = fmt.Errorf("获取刷新配置失败, %v", e)
 		return
 	}
+	if conf != nil && conf.Id <= 0 {
+		utils.FileLog.Info("SyncDataSourceEs-无刷新配置,不同步")
+		return
+	}
 	if conf.ConfVal != "true" {
 		return
 	}

+ 70 - 81
services/data/data_wind.go

@@ -1,85 +1,74 @@
 package data
 
-import (
-	"encoding/json"
-	"errors"
-	"eta/eta_task/models/data_manage"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"strings"
-	"time"
-)
-
-type EdbDataFromWind struct {
-	Close map[string]float64 `json:"CLOSE"`
-	Dt    map[string]int64   `json:"DT"`
-}
+//type EdbDataFromWind struct {
+//	Close map[string]float64 `json:"CLOSE"`
+//	Dt    map[string]int64   `json:"DT"`
+//}
 
 // 万得
-func SyncEdbDataByWind(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			utils.FileLog.Info("GetEdbDataByWind Err:" + err.Error())
-		}
-	}()
-
-	windUrl := utils.WindServerUrl + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	windUrl = fmt.Sprintf(windUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("windUrl:" + windUrl)
-	body, err := http.Get(windUrl)
-	bodyStr := string(body)
-	utils.FileLog.Info("wind result:" + bodyStr)
-	if strings.Contains(bodyStr, "html") || strings.Contains(bodyStr, "CWSDService: No data.") {
-		return nil
-	}
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		err = errors.New("Err:" + err.Error() + " EdbCode:" + edbCode + "\n" + " BodyStr:" + string(body))
-		return
-	}
-
-	windList := make([]*data_manage.EdbDataWind, 0)
-	for k, v := range item.Dt {
-		dataTimestamp := v
-		v = v / 1000
-		fmt.Println(k, v)
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		fmt.Println(dateTime)
-		val := item.Close[k]
-		count, err := data_manage.GetEdbDataWindCount(edbCode, dateTime)
-		if err != nil {
-			return err
-		}
-		if count > 0 {
-			err = data_manage.ModifyEdbDataWind(edbInfoId, edbCode, dateTime, val)
-			if err != nil {
-				return err
-			}
-		} else {
-
-			item := new(data_manage.EdbDataWind)
-			item.EdbCode = edbCode
-			item.EdbInfoId = int(edbInfoId)
-			item.CreateTime = time.Now()
-			item.ModifyTime = time.Now()
-			item.DataTime = dateTime
-			item.Value = val
-			item.Status = 1
-			item.DataTimestamp = dataTimestamp
-			windList = append(windList, item)
-		}
-	}
-	if len(windList) > 0 {
-		err = data_manage.AddEdbDataWind(windList)
-		if err != nil {
-			return
-		}
-	}
-	return
-}
+//func SyncEdbDataByWind(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
+//	defer func() {
+//		if err != nil {
+//			utils.FileLog.Info("GetEdbDataByWind Err:" + err.Error())
+//		}
+//	}()
+//
+//	windUrl := utils.WindServerUrl + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	windUrl = fmt.Sprintf(windUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("windUrl:" + windUrl)
+//	body, err := http.Get(windUrl)
+//	bodyStr := string(body)
+//	utils.FileLog.Info("wind result:" + bodyStr)
+//	if strings.Contains(bodyStr, "html") || strings.Contains(bodyStr, "CWSDService: No data.") {
+//		return nil
+//	}
+//	if err != nil {
+//		return
+//	}
+//	item := new(EdbDataFromWind)
+//	err = json.Unmarshal(body, &item)
+//	if err != nil {
+//		err = errors.New("Err:" + err.Error() + " EdbCode:" + edbCode + "\n" + " BodyStr:" + string(body))
+//		return
+//	}
+//
+//	windList := make([]*data_manage.EdbDataWind, 0)
+//	for k, v := range item.Dt {
+//		dataTimestamp := v
+//		v = v / 1000
+//		fmt.Println(k, v)
+//		t := time.Unix(v, 0)
+//		dateTime := t.Format(utils.FormatDate)
+//		fmt.Println(dateTime)
+//		val := item.Close[k]
+//		count, err := data_manage.GetEdbDataWindCount(edbCode, dateTime)
+//		if err != nil {
+//			return err
+//		}
+//		if count > 0 {
+//			err = data_manage.ModifyEdbDataWind(edbInfoId, edbCode, dateTime, val)
+//			if err != nil {
+//				return err
+//			}
+//		} else {
+//
+//			item := new(data_manage.EdbDataWind)
+//			item.EdbCode = edbCode
+//			item.EdbInfoId = int(edbInfoId)
+//			item.CreateTime = time.Now()
+//			item.ModifyTime = time.Now()
+//			item.DataTime = dateTime
+//			item.Value = val
+//			item.Status = 1
+//			item.DataTimestamp = dataTimestamp
+//			windList = append(windList, item)
+//		}
+//	}
+//	if len(windList) > 0 {
+//		err = data_manage.AddEdbDataWind(windList)
+//		if err != nil {
+//			return
+//		}
+//	}
+//	return
+//}

+ 1 - 1
services/data/edb_info_sync.go

@@ -36,7 +36,7 @@ func SyncGlDataBase() {
 		if err != nil {
 			return
 		}
-		if item != nil {
+		if item != nil && item.MinDate != "" && item.MaxDate != "" {
 			err = data_manage.ModifyEdbInfoMaxAndMinInfo(v.EdbInfoId, item)
 			if err != nil {
 				return

+ 7 - 2
services/edb_refresh.go

@@ -692,12 +692,17 @@ func DisableEdbRefresh(cont context.Context) (err error) {
 	obj := new(models.BusinessConf)
 	conf, err := obj.GetItemByConfKey("EdbStopRefreshRule")
 	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
-			err = fmt.Errorf("未找到配置项,无需处理")
+		if utils.IsErrNoRow(err) {
+			utils.FileLog.Info("DisableEdbRefresh-未找到配置项,无需处理")
 			return
 		}
 		return
 	}
+	if conf != nil && conf.Id <= 0 {
+		utils.FileLog.Info("DisableEdbRefresh-未找到配置项,无需处理")
+		return
+	}
+
 	//将json转为结构体
 	rule := new(models.EdbStopRefreshRule)
 	err = json.Unmarshal([]byte(conf.ConfVal), rule)

+ 1 - 1
services/edb_relation.go

@@ -1177,7 +1177,7 @@ func GetCalculateEdbByFromEdbInfo(edbInfoIds []int, calculateEdbIds []int, hasFi
 
 	//获取关联图表列表
 	list, err := data_manage.GetRelationEdbInfoListMappingByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil {
 		err = fmt.Errorf("获取关联指标信息失败,Err:%s", err.Error())
 		return
 	}

+ 4 - 0
services/english_report.go

@@ -58,6 +58,10 @@ func UpdateEnglishReportEs(reportId int, publishState int) (err error) {
 	if err != nil {
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
+
 	// 新增报告ES
 	esReport := &models.ElasticEnglishReportDetail{
 		Id:                 strconv.Itoa(reportInfo.Id),

+ 10 - 1
services/eta_bridge/handle_data.go

@@ -508,12 +508,15 @@ func handleUpdateDataSource(edbUpdateLog *data_manage.EdbUpdateLog) (pushIndexDa
 	if isUpdateIndexInfo {
 		newEdbInfo, tmpErr := data_manage.GetEdbInfoItemByCodeAndSource(source, edbCode)
 		if tmpErr != nil {
-			if tmpErr.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(tmpErr) {
 				err = tmpErr
 				return
 			}
 			return
 		}
+		if newEdbInfo != nil && newEdbInfo.EdbInfoId <= 0 {
+			return
+		}
 		pushIndexData = &PushIndexParamDataReq{
 			SourceIndexCode:  newEdbInfo.EdbCode,
 			IndexCode:        getIndexCode(newEdbInfo.Source, newEdbInfo.EdbCode),
@@ -625,6 +628,9 @@ func getOrigInfo(source, subSource int, edbCode, edbName string) (origInfo OrigI
 		if err != nil {
 			return
 		}
+		if edbInfo != nil && edbInfo.EdbInfoId <= 0 {
+			return
+		}
 		origInfo.EdbName = edbInfo.IndexName
 		origInfo.SourceName = edbInfo.Source
 	// 钢联化工
@@ -633,6 +639,9 @@ func getOrigInfo(source, subSource int, edbCode, edbName string) (origInfo OrigI
 		if err != nil {
 			return
 		}
+		if edbInfo != nil && edbInfo.BaseFromSmmIndexId <= 0 {
+			return
+		}
 		origInfo.EdbName = edbInfo.IndexName
 		origInfo.SourceName = edbInfo.Interface
 	}

+ 5 - 5
services/eta_bridge/xy.go

@@ -274,7 +274,7 @@ func SyncIndex(cont context.Context) (err error) {
 		// 查找当前已经处理了的日志最大ID
 		currLogId, err = data_manage.GetEdbUpdateLogMaxHandleId()
 		if err != nil {
-			if err.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(err) {
 				utils.FileLog.Error("查找当前已经处理了的日志最大ID失败:" + err.Error())
 			} else {
 				err = nil
@@ -560,12 +560,12 @@ func SyncXyCrmIndex(cont context.Context) (err error) {
 	key := data_manage.CrmIndexLastUpdateTime
 	sysInteractionLog, err := data_manage.GetBusinessSysInteractionLogByKey(key)
 	if err != nil {
-		if err.Error() != utils.ErrNoRow() {
+		if !utils.IsErrNoRow(err) {
 			return
 		}
 		//lastUpdateTime := time.Now().Format("2006-01-02 15:04:05")
 	} else {
-		if sysInteractionLog.InteractionVal != `` {
+		if sysInteractionLog != nil && sysInteractionLog.ID > 0 && sysInteractionLog.InteractionVal != `` {
 			lastUpdateTimeStr = sysInteractionLog.InteractionVal
 		}
 	}
@@ -673,7 +673,7 @@ func modifyCrmIndexLastUpdateTime(lastUpdateTime string) {
 	key := data_manage.CrmIndexLastUpdateTime
 	fileNameLog, err := data_manage.GetBusinessSysInteractionLogByKey(key)
 	if err != nil {
-		if err.Error() != utils.ErrNoRow() {
+		if !utils.IsErrNoRow(err) {
 			return
 		}
 		err = nil
@@ -689,7 +689,7 @@ func modifyCrmIndexLastUpdateTime(lastUpdateTime string) {
 		if err != nil {
 			return
 		}
-	} else {
+	} else if fileNameLog != nil && fileNameLog.ID > 0 {
 		fileNameLog.InteractionVal = lastUpdateTime
 		fileNameLog.ModifyTime = time.Now()
 		err = fileNameLog.Update([]string{"InteractionVal", "ModifyTime"})

+ 6 - 6
services/index_notice.go

@@ -93,14 +93,14 @@ func AddEdbTask(cont context.Context) (err error) {
 		var dataDtTime time.Time
 		edbData, tmpErr := models.GetLastEdbdataInfo(tmpEdb.TradeCode)
 		if tmpErr != nil {
-			if tmpErr.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(tmpErr) {
 				failList = append(failList, fmt.Sprint(tmpEdb.TradeCode, "失败,Err:", tmpErr.Error()))
 				continue
 			}
 		}
 
 		//如果确实是有数据的
-		if edbData != nil {
+		if edbData != nil && edbData.TradeCode != "" {
 			tmpDataDtTime, _ := time.ParseInLocation(utils.FormatDate, edbData.Dt, time.Now().Location())
 			dataDtTime = tmpDataDtTime
 		}
@@ -214,7 +214,7 @@ func AddEdbTask(cont context.Context) (err error) {
 				// 再次获取指标数据详情
 				edbData, tmpErr := models.GetLastEdbdataInfo(tmpEdb.TradeCode)
 				if tmpErr != nil {
-					if tmpErr.Error() != utils.ErrNoRow() {
+					if !utils.IsErrNoRow(tmpErr) {
 						funcErr = tmpErr
 						return
 					}
@@ -226,7 +226,7 @@ func AddEdbTask(cont context.Context) (err error) {
 				//数据过期时间
 				var funcDataDtTime time.Time
 				//如果确实是有数据的
-				if edbData != nil {
+				if edbData != nil && edbData.TradeCode != "" {
 					tmpDataDtTime, _ := time.ParseInLocation(utils.FormatDate, edbData.Dt, time.Now().Location())
 					funcDataDtTime = tmpDataDtTime
 				}
@@ -342,14 +342,14 @@ func AddEdbTask(cont context.Context) (err error) {
 					//获取用户信息
 					admin, err := models.GetAdminByAdminId(tmpEdb.UserId)
 					if err != nil {
-						if err.Error() == utils.ErrNoRow() {
+						if utils.IsErrNoRow(err) {
 							funcErr = errors.New("openId 列表为空" + strconv.Itoa(tmpEdb.UserId))
 							return
 						} else {
 							return err
 						}
 					}
-					if admin == nil {
+					if admin == nil || (admin != nil && admin.AdminId <= 0) {
 						funcErr = errors.New("openId 列表为空" + strconv.Itoa(tmpEdb.UserId))
 						return
 					}

+ 7 - 0
services/report.go

@@ -23,6 +23,10 @@ func UpdateReportEs(reportId int, publishState int) (err error) {
 	if err != nil {
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
+
 	categories := ""
 	if reportInfo.HasChapter == 1 {
 		// 晨周报
@@ -307,6 +311,9 @@ func ReportSendTemplateMsg(reportId int) (err error) {
 		err = errors.New("查询报告失败 Err:" + err.Error())
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
 	if reportInfo.MsgIsSend == 1 {
 		err = errors.New("模板消息已推送,请勿重复操作")
 		return

+ 4 - 1
services/smart_report.go

@@ -116,13 +116,16 @@ func SmartReportElasticUpsert(smartReportId int, state int) (err error) {
 	reportOB := new(models.SmartReport)
 	item, e := reportOB.GetItemById(smartReportId)
 	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(e) {
 			// 可能被删了就直接忽略掉
 			return
 		}
 		err = fmt.Errorf("获取报告失败, Err: %s", e.Error())
 		return
 	}
+	if item != nil && item.SmartReportId <= 0 {
+		return
+	}
 
 	esReport := new(models.ElasticSmartReport)
 	esReport.SmartReportId = item.SmartReportId

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно