瀏覽代碼

修改为达梦数据库

hongze 6 月之前
父節點
當前提交
389a918a5e

+ 21 - 14
models/data_manage/meeting_probabilities.go

@@ -1,7 +1,7 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_task/global"
 	"time"
 )
 
@@ -26,21 +26,25 @@ type MeetingProbabilitiesResp struct {
 
 // AddMeetingProbabilities 新增表格
 func AddMeetingProbabilities(meetingInfo *MeetingProbabilities) (newId int, err error) {
-	o := orm.NewOrmUsingDB("data")
-	// 表格信息入库
-	lastId, err := o.Insert(meetingInfo)
-	if err != nil {
-		return
-	}
-	meetingInfo.MeetingInfoId = int(lastId)
-	newId = int(lastId)
+	//o := orm.NewOrmUsingDB("data")
+	//// 表格信息入库
+	//lastId, err := o.Insert(meetingInfo)
+	//if err != nil {
+	//	return
+	//}
+	//meetingInfo.MeetingInfoId = int(lastId)
+	//newId = int(lastId)
+	err = global.DmSQL["data"].Create(meetingInfo).Error
 	return
 }
 
 func GetMeetingProbabilitiesAll(dateStr string) (list []*MeetingProbabilities, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//sql := `SELECT * FROM meeting_probabilities WHERE date_time>=?`
+	//_, err = o.Raw(sql, dateStr).QueryRows(&list)
+
 	sql := `SELECT * FROM meeting_probabilities WHERE date_time>=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = global.DEFAULT_DmSQL.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
@@ -102,8 +106,11 @@ type AddExcelInfoReq struct {
 }
 
 func GetMeetingProbabilitiesMaxDate() (max_date time.Time, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//sql := ` SELECT max(a.date_time)as max_date FROM meeting_probabilities as a `
+	//err = o.Raw(sql).QueryRow(&max_date)
+
 	sql := ` SELECT max(a.date_time)as max_date FROM meeting_probabilities as a `
-	err = o.Raw(sql).QueryRow(&max_date)
+	err = global.DEFAULT_DmSQL.Raw(sql).Scan(&max_date).Error
 	return
-}
+}

+ 7 - 5
models/data_manage/ppt_v2_save_log.go

@@ -1,13 +1,15 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_task/global"
 )
 
 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()
+	//sql := `DELETE FROM ppt_v2_save_log WHERE create_time<? `
+	//o := orm.NewOrmUsingDB("rddp")
+	//_, err = o.Raw(sql, date).Exec()
 
+	sql := `DELETE FROM ppt_v2_save_log WHERE create_time<? `
+	err = global.DmSQL["rddp"].Exec(sql, date).Error
 	return
-}
+}

+ 6 - 6
models/data_manage/report_save_log.go

@@ -1,13 +1,13 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
+import "eta_gn/eta_task/global"
 
 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()
+	//sql := `DELETE FROM report_save_log WHERE create_time<? `
+	//o := orm.NewOrmUsingDB("rddp")
+	//_, err = o.Raw(sql, date).Exec()
 
+	sql := `DELETE FROM report_save_log WHERE create_time<? `
+	err = global.DmSQL["rddp"].Exec(sql, date).Error
 	return
 }

+ 193 - 79
models/data_manage/trade_position_analysis.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta_gn/eta_task/global"
 	"eta_gn/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 	"unsafe"
 )
@@ -49,14 +49,15 @@ type TradePositionGuangzhouTop struct {
 }
 
 func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	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.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "zhengzhou" {
 		list := make([]*TradePositionZhengzhouTop, 0)
@@ -64,7 +65,8 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionZhengzhouTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		//_, err = o.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "cffex" {
 		list := make([]*TradePositionCffexTop, 0)
@@ -72,7 +74,8 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionCffexTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		//_, err = o.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "shanghai" {
 		list := make([]*TradePositionShanghaiTop, 0)
@@ -80,7 +83,8 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionShanghaiTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		//_, err = o.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "ine" {
 		list := make([]*TradePositionIneTop, 0)
@@ -88,7 +92,8 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionIneTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		//_, err = o.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	} else if exchange == "guangzhou" {
 		list := make([]*TradePositionGuangzhouTop, 0)
@@ -96,7 +101,8 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 			tmp := (*TradePositionGuangzhouTop)(unsafe.Pointer(v))
 			list = append(list, tmp)
 		}
-		_, err = o.InsertMulti(len(list), list)
+		//_, err = o.InsertMulti(len(list), list)
+		err = global.DEFAULT_DmSQL.CreateInBatches(list, utils.MultiAddNum).Error
 		return
 	}
 
@@ -104,37 +110,52 @@ func InsertMultiTradePositionTop(exchange string, items []*TradePositionTop) (er
 }
 
 func GetTradePositionTopByExchangeDataTime(exchange string, startDate, endDate string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.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 := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.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 := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Scan(&count).Error
 	return
 }
 
 func GetTradePositionTopByExchangeSourceType(exchange string, dataTime string, sourceType int) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.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 := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql, dataTime, sourceType, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
@@ -181,87 +202,134 @@ 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 := 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
+	//}()
+	//for _, v := range updates {
+	//	_, err = p.Exec(v.DealValue, v.DealChange, v.SourceType, v.ModifyTime, v.Id)
+	//	if err != nil {
+	//		return
+	//	}
+	//}
+
+	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 = global.DEFAULT_DmSQL.Exec(sql, v.DealValue, v.DealChange, v.SourceType, v.ModifyTime, v.Id).Error
 		if err != nil {
 			return
 		}
 	}
+
 	return
 }
 
 func DeletePositionTopByDataTime(exchange string, dataTime string, dealType int) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//sql := "delete from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
+	//_, err = o.Raw(sql, dataTime, dealType).Exec()
+
 	sql := "delete from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
-	_, err = o.Raw(sql, dataTime, dealType).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, dataTime, dealType).Error
 	return
 }
 
 func DeletePositionTopByDataTimeClassify(exchange string, dataTime string, dealType int, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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()
+
 	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 = global.DEFAULT_DmSQL.Exec(sql, dataTime, dealType, classifyNames, classifyTypes).Error
 	return
 }
 
 func GetTradePositionTopByExchangeDataTimeType(exchange string, dataTime string, dealType int) (list []TradePositionTop, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//sql := "select * from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
+	//_, err = o.Raw(sql, dataTime, dealType).QueryRows(&list)
+
 	sql := "select * from trade_position_" + exchange + "_top WHERE data_time=? and deal_type=?"
-	_, err = o.Raw(sql, dataTime, dealType).QueryRows(&list)
+	err = global.DEFAULT_DmSQL.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 := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql, dataTime, dealType, classifyNames, classifyTypes).Find(&list).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTop(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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()
+	//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()
+
 	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()
+	err = global.DEFAULT_DmSQL.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()
+	err = global.DEFAULT_DmSQL.Exec(sql2, now, now, startDate, endDate).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTopByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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()
+	//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()
+
 	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()
+	err = global.DEFAULT_DmSQL.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()
+	err = global.DEFAULT_DmSQL.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	return
 }
 
 // GetTradePositionTopOriginDataTimes 获取榜单原始数据日期-正序
 func GetTradePositionTopOriginDataTimes(exchange string) (dates []string, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql).Find(&dates).Error
 	return
 }
 
@@ -278,18 +346,21 @@ 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)
+	//sql := `SELECT * FROM base_from_trade_classify   `
+	//
+	//o := orm.NewOrm()
+	//_, err = o.Raw(sql).QueryRows(&list)
 
+	sql := `SELECT * FROM base_from_trade_classify   `
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&list).Error
 	return
 }
 
 // Update 更新
 func (m *BaseFromTradeClassify) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DmSQL.Select(cols).Updates(m).Error
 	return
 }
 
@@ -298,8 +369,9 @@ func MultiAddBaseFromTradeClassify(items []*BaseFromTradeClassify) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DmSQL.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
@@ -312,6 +384,17 @@ type TradeClassifyName struct {
 
 // GetExchangeClassify 获取交易所分类列表
 func GetExchangeClassify(exchange string) (list []TradeClassifyName, err error) {
+	//tableName := "trade_position_" + exchange + "_top"
+	//orderStr := "classify_name DESC, classify_type asc"
+	//if exchange == "zhengzhou" {
+	//	orderStr = "classify_name asc"
+	//}
+	//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)
+
 	tableName := "trade_position_" + exchange + "_top"
 	orderStr := "classify_name DESC, classify_type asc"
 	if exchange == "zhengzhou" {
@@ -320,58 +403,77 @@ 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)
-
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&list).Error
 	return
 }
 
 // GetTradePositionTopCleanByExchangeDataTime 根据时间查询净多单和净空单的值
 func GetTradePositionTopCleanByExchangeDataTime(exchange string, startDate, endDate string) (list []*TradePositionTop, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.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 := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.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 := 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
+	//}()
+	//for _, v := range updates {
+	//	_, err = p.Exec(v.DealChange, v.ModifyTime, v.Id)
+	//	if err != nil {
+	//		return
+	//	}
+	//}
+
+	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 = global.DEFAULT_DmSQL.Exec(sql, v.DealChange, v.ModifyTime, v.Id).Error
 		if err != nil {
 			return
 		}
 	}
+
 	return
 }
 
 func GetTradePositionOriginClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
+	//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)
+
 	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)
+	err = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Scan(&count).Error
 	return
 }
 
 func GetTradePositionTopClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
+	//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)
+
 	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)
+	err = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Scan(&count).Error
 	return
 }
 
@@ -381,24 +483,33 @@ type TradePositionClassifyInfo struct {
 }
 
 func GetTradePositionOriginClassifyByExchangeDataTime(exchange string, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
+	//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)
+
 	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)
+	err = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 func GetTradePositionTopClassifyByExchangeDataTime(exchange string, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 // DeleteTradePositionTopAllByExchangeDataTime 删除计算数据
 func DeleteTradePositionTopAllByExchangeDataTime(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//sql := "DELETE FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? "
+	//_, err = o.Raw(sql, startDate, endDate).Exec()
+
 	sql := "DELETE FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? "
-	_, err = o.Raw(sql, startDate, endDate).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, startDate, endDate).Error
 	return
 }
 
@@ -407,8 +518,11 @@ type GetFirstBaseFromTradeIndeDate struct {
 }
 
 func GetFirstBaseFromTradeIndexByDate(exchange string) (item *GetFirstBaseFromTradeIndeDate, err error) {
-	o := orm.NewOrm()
+	//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)
+
 	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where `rank` < 50 order by data_time asc"
-	err = o.Raw(sql).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&item).Error
 	return
 }

+ 304 - 137
models/data_manage/trade_position_analysis_guangzhou.go

@@ -1,202 +1,369 @@
 package data_manage
 
 import (
+	"eta_gn/eta_task/global"
 	"eta_gn/eta_task/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 func MultiInsertTradeGuangzhouDataToTop(exchange string, startDate, endDate string) (err error) {
-	o := orm.NewOrm()
+	//	o := orm.NewOrm()
+	//	now := time.Now().Format(utils.FormatDateTime)
+	//
+	//	//新增买单榜单
+	//	sql1 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
+	//SELECT
+	//	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
+	//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 "%持买单量%"
+	//	and c.index_name not like "%日成交持仓排名%"`
+	//	_, err = o.Raw(sql1, now, now, startDate, endDate).Exec()
+	//	if err != nil {
+	//		return
+	//	}
+	//	//新增卖单榜单
+	//	sql2 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
+	//SELECT
+	//	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
+	//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 "%持卖单量%"
+	//	and c.index_name not like "%日成交持仓排名%"`
+	//	_, err = o.Raw(sql2, now, now, startDate, endDate).Exec()
+	//	if err != nil {
+	//		return
+	//	}
+	//	//更新买单、卖单榜单排名字段
+	//	sql3 := `update trade_position_guangzhou_top s
+	//JOIN (
+	//SELECT
+	//  	classify_type,
+	//	deal_short_name,
+	//	data_time,
+	//	deal_type,
+	//  (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
+	//  @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
+	//FROM
+	//  trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
+	//	where data_time between ? and ?
+	//ORDER BY
+	//  data_time asc,
+	//  deal_type asc,
+	//  classify_type asc,
+	//  deal_value DESC
+	//	) t
+	//	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 ?;`
+	//
+	//	_, err = o.Raw(sql3, startDate, endDate, startDate, endDate).Exec()
+
+	//o := orm.NewOrm()
 	now := time.Now().Format(utils.FormatDateTime)
 
 	//新增买单榜单
 	sql1 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
-SELECT
-	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
-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 "%持买单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql1, now, now, startDate, endDate).Exec()
+	SELECT
+		n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
+	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 "%持买单量%"
+		and c.index_name not like "%日成交持仓排名%"`
+	err = global.DEFAULT_DmSQL.Exec(sql1, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
 	//新增卖单榜单
 	sql2 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
-SELECT
-	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
-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 "%持卖单量%"
-	and c.index_name not like "%日成交持仓排名%"`
-	_, err = o.Raw(sql2, now, now, startDate, endDate).Exec()
+	SELECT
+		n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
+	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 "%持卖单量%"
+		and c.index_name not like "%日成交持仓排名%"`
+	err = global.DEFAULT_DmSQL.Exec(sql2, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
 	//更新买单、卖单榜单排名字段
 	sql3 := `update trade_position_guangzhou_top s
-JOIN (
-SELECT
-  	classify_type,
-	deal_short_name,
-	data_time,
-	deal_type,
-  (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
-  @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
-FROM
-  trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
-	where data_time between ? and ?
-ORDER BY
-  data_time asc,
-  deal_type asc,
-  classify_type asc,
-  deal_value DESC
-	) t
-	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 ?;`
-
-	_, err = o.Raw(sql3, startDate, endDate, startDate, endDate).Exec()
+	JOIN (
+	SELECT
+	 	classify_type,
+		deal_short_name,
+		data_time,
+		deal_type,
+	 (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
+	 @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
+	FROM
+	 trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
+		where data_time between ? and ?
+	ORDER BY
+	 data_time asc,
+	 deal_type asc,
+	 classify_type asc,
+	 deal_value DESC
+		) t
+		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 ?;`
 
+	err = global.DEFAULT_DmSQL.Exec(sql3, startDate, endDate, startDate, endDate).Error
 	return
 }
 
 // GetTradePositionTopOriginGuangzhouDataTimes 获取榜单原始数据日期-正序
 func GetTradePositionTopOriginGuangzhouDataTimes(exchange string) (dates []string, err error) {
-	o := orm.NewOrm()
+	//	o := orm.NewOrm()
+	//	sql := `SELECT
+	//	DISTINCT a.data_time
+	//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
+	//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 "%日成交持仓排名%"
+	//ORDER BY
+	//	a.data_time asc`
+	//	_, err = o.Raw(sql).QueryRows(&dates)
+
 	sql := `SELECT
-	DISTINCT a.data_time
-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
-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 "%日成交持仓排名%" 
-ORDER BY
-	a.data_time asc`
-	_, err = o.Raw(sql).QueryRows(&dates)
+		DISTINCT a.data_time
+	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
+	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 "%日成交持仓排名%"
+	ORDER BY
+		a.data_time asc`
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&dates).Error
 	return
 }
 
 func GetTradePositionOriginGuangzhouClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
-	o := orm.NewOrm()
+	//	o := orm.NewOrm()
+	//	sql := `SELECT
+	//	count(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 "%日成交持仓排名%"
+	//ORDER BY
+	//	a.value DESC`
+	//	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+
 	sql := `SELECT
-	count(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 "%日成交持仓排名%" 
-ORDER BY
-	a.value DESC`
-	err = o.Raw(sql, startDate, endDate).QueryRow(&count)
+		count(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 "%日成交持仓排名%"
+	ORDER BY
+		a.value DESC`
+	err = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Scan(&count).Error
 	return
 }
 
 func GetFirstBaseFromTradeGuangzhouIndexByDate(exchange string) (item *GetFirstBaseFromTradeIndeDate, err error) {
-	o := orm.NewOrm()
+	//	o := orm.NewOrm()
+	//	sql := `SELECT
+	//	a.data_time
+	//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
+	//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 "%日成交持仓排名%"
+	//ORDER BY
+	//	a.data_time asc`
+	//	err = o.Raw(sql).QueryRow(&item)
+
 	sql := `SELECT
-	a.data_time
-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
-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 "%日成交持仓排名%" 
-ORDER BY
-	a.data_time asc`
-	err = o.Raw(sql).QueryRow(&item)
+		a.data_time
+	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
+	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 "%日成交持仓排名%"
+	ORDER BY
+		a.data_time asc`
+	err = global.DEFAULT_DmSQL.Raw(sql).First(&item).Error
 	return
 }
 
 func GetTradePositionOriginClassifyGuangzhouByExchangeDataTime(exchange, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	//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)
+
 	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 = global.DEFAULT_DmSQL.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
 
 func MultiInsertTradeBaseDataToTopGuangzhouByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (err error) {
-	o := orm.NewOrm()
+	//	o := orm.NewOrm()
+	//	now := time.Now().Format(utils.FormatDateTime)
+	//
+	//	//新增买单榜单
+	//	sql1 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
+	//SELECT
+	//	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
+	//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 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()
+	//	if err != nil {
+	//		return
+	//	}
+	//	//新增卖单榜单
+	//	sql2 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
+	//SELECT
+	//	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
+	//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 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()
+	//	if err != nil {
+	//		return
+	//	}
+	//	//更新买单、卖单榜单排名字段
+	//	sql3 := `update trade_position_guangzhou_top s
+	//JOIN (
+	//SELECT
+	//  	classify_type,
+	//	deal_short_name,
+	//	data_time,
+	//	deal_type,
+	//  (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
+	//  @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
+	//FROM
+	//  trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
+	//	where data_time between ? and ? and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
+	//ORDER BY
+	//  data_time asc,
+	//  deal_type asc,
+	//  classify_type asc,
+	//  deal_value DESC
+	//	) t
+	//	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)) + `);`
+	//
+	//	_, err = o.Raw(sql3, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes).Exec()
+
 	now := time.Now().Format(utils.FormatDateTime)
 
 	//新增买单榜单
 	sql1 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
-SELECT
-	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
-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 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()
+	SELECT
+		n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,1,0,0,?,?
+	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 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 = global.DEFAULT_DmSQL.Exec(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
 	//新增卖单榜单
 	sql2 := `INSERT INTO trade_position_guangzhou_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)
-SELECT
-	n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
-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 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()
+	SELECT
+		n.classify_code,n.contract,SUBSTRING_INDEX(c.index_name, '_', 1) AS index_name,a.value,a.qty_sub,a.data_time,2,0,0,?,?
+	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 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 = global.DEFAULT_DmSQL.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
 	//更新买单、卖单榜单排名字段
 	sql3 := `update trade_position_guangzhou_top s
-JOIN (
-SELECT
-  	classify_type,
-	deal_short_name,
-	data_time,
-	deal_type,
-  (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
-  @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
-FROM
-  trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
-	where data_time between ? and ? and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
-ORDER BY
-  data_time asc,
-  deal_type asc,
-  classify_type asc,
-  deal_value DESC
-	) t
-	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)) + `);`
-
-	_, err = o.Raw(sql3, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes).Exec()
+	JOIN (
+	SELECT
+	 	classify_type,
+		deal_short_name,
+		data_time,
+		deal_type,
+	 (@row_number := IF(@prev_year = CONCAT_WS( "_", data_time, deal_type, classify_type), @row_number + 1, 1) ) AS row_number,
+	 @prev_year := CONCAT_WS( "_", data_time, deal_type, classify_type)
+	FROM
+	 trade_position_guangzhou_top,(SELECT @row_number := 0, @prev_year := NULL) r
+		where data_time between ? and ? and classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
+	ORDER BY
+	 data_time asc,
+	 deal_type asc,
+	 classify_type asc,
+	 deal_value DESC
+		) t
+		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)) + `);`
 
+	err = global.DEFAULT_DmSQL.Exec(sql3, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes).Error
 	return
 }

+ 14 - 18
models/data_manage/user_record.go

@@ -1,20 +1,16 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
-
-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)
-	return
-}
-
-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()
-	return
-}
+//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)
+//	return
+//}
+//
+//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()
+//	return
+//}