Ver código fonte

Merge remote-tracking branch 'origin/xy/2.0'

Roc 3 dias atrás
pai
commit
0b750c0273
57 arquivos alterados com 2005 adições e 556 exclusões
  1. 147 0
      controllers/xy/base_auth_xy.go
  2. 277 0
      controllers/xy/researcher_assessment.go
  3. 16 0
      global/global.go
  4. 137 0
      global/initDb.go
  5. 6 2
      go.mod
  6. 14 4
      go.sum
  7. 5 3
      models/aimod/file_upload_record.go
  8. 246 0
      models/assessment_form.go
  9. 198 0
      models/assessment_researcher.go
  10. 106 0
      models/assessment_researcher_variety_mapping.go
  11. 5 5
      models/business_conf.go
  12. 5 5
      models/classify.go
  13. 4 3
      models/classify_menu.go
  14. 29 19
      models/classify_menu_relation.go
  15. 12 9
      models/data_manage/base_from_business.go
  16. 26 16
      models/data_manage/base_from_eia_stero.go
  17. 23 14
      models/data_manage/base_from_mysteel_chemical_index.go
  18. 110 108
      models/data_manage/base_from_trade_index.go
  19. 5 5
      models/data_manage/chart_classify.go
  20. 18 19
      models/data_manage/chart_edb_mapping.go
  21. 13 14
      models/data_manage/chart_info.go
  22. 4 2
      models/data_manage/com_trade_country.go
  23. 6 5
      models/data_manage/com_trade_data.go
  24. 9 9
      models/data_manage/com_trade_index.go
  25. 3 3
      models/data_manage/edb_classify.go
  26. 3 3
      models/data_manage/edb_data.go
  27. 20 11
      models/data_manage/edb_data_wind.go
  28. 17 17
      models/data_manage/edb_info.go
  29. 6 4
      models/data_manage/edb_info_calculate_mapping.go
  30. 5 5
      models/data_manage/edb_source.go
  31. 31 31
      models/data_manage/eta_business_chart_permission.go
  32. 3 3
      models/data_manage/variety.go
  33. 3 3
      models/data_manage/variety_edb_info.go
  34. 1 1
      models/db.go
  35. 4 2
      models/document_manage_model/outside_report.go
  36. 5 2
      models/document_manage_model/outside_report_attachment.go
  37. 30 29
      models/en_classify_permission.go
  38. 34 31
      models/english_report.go
  39. 6 3
      models/permission.go
  40. 58 54
      models/report.go
  41. 19 9
      models/report/report_chapter_permission_mapping.go
  42. 5 5
      models/report_chapter.go
  43. 4 3
      models/report_state_record.go
  44. 10 9
      models/resource.go
  45. 14 13
      models/sandbox/sandbox.go
  46. 30 28
      models/sandbox/sandbox_classify.go
  47. 26 24
      models/smart_report.go
  48. 18 16
      models/smart_resource.go
  49. 25 5
      models/system/sys_user.go
  50. 22 0
      models/xy/base.go
  51. 31 0
      models/xy/request.go
  52. 8 0
      models/xy/response.go
  53. 27 0
      routers/commentsRouter.go
  54. 6 0
      routers/router.go
  55. 88 0
      utils/common.go
  56. 7 0
      utils/config.go
  57. 15 0
      utils/constants.go

+ 147 - 0
controllers/xy/base_auth_xy.go

@@ -0,0 +1,147 @@
+package xy
+
+import (
+	"encoding/json"
+	"eta/eta_hub/models/system"
+	"eta/eta_hub/models/xy"
+	"eta/eta_hub/utils"
+	"fmt"
+	"github.com/beego/beego/v2/server/web"
+	"net/http"
+	"net/url"
+)
+
+type BaseAuthXyController struct {
+	web.Controller
+	SysUser *system.Admin
+}
+
+func (this *BaseAuthXyController) Prepare() {
+	fmt.Println("enter prepare")
+	method := this.Ctx.Input.Method()
+	uri := this.Ctx.Input.URI()
+	fmt.Println("Url:", uri)
+	if method != "HEAD" {
+		//校验签名
+		nonce := this.Ctx.Input.Header("nonce")
+		timestamp := this.Ctx.Input.Header("timestamp")
+		appid := this.Ctx.Input.Header("appid")
+		signature := this.Ctx.Input.Header("signature")
+
+		if nonce == "" {
+			errMsg := "随机字符串不能为空"
+			this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "", ErrMsg: errMsg}, false, false)
+			this.StopRun()
+			return
+		}
+
+		if timestamp == "" {
+			errMsg := "时间戳不能为空"
+			this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "", ErrMsg: errMsg}, false, false)
+			this.StopRun()
+			return
+		}
+
+		if appid != utils.AppId {
+			errMsg := "商家AppId错误,请核查"
+			this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "", ErrMsg: errMsg}, false, false)
+			this.StopRun()
+			return
+		}
+
+		checkSign := utils.GetSign(nonce, timestamp)
+		if signature != checkSign {
+			fmt.Printf("用户提交签名:%s;\n系统生成签名:%s\n", signature, checkSign)
+			errMsg := "签名错误"
+			this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "", ErrMsg: errMsg}, false, false)
+			this.StopRun()
+			return
+		}
+		if method != "GET" && method != "POST" {
+			errMsg := "无效的请求方式"
+			this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "", ErrMsg: errMsg}, false, false)
+			this.StopRun()
+			return
+		}
+	} else {
+		this.JSON(xy.BaseResponse{ReturnCode: "E", Status: "E", Msg: "系统异常,请联系客服!", ErrMsg: "method:" + method}, false, false)
+		this.StopRun()
+		return
+	}
+}
+
+func (c *BaseAuthXyController) ServeJSON(encoding ...bool) {
+	var (
+		hasIndent   = false
+		hasEncoding = false
+	)
+	if web.BConfig.RunMode == web.PROD {
+		hasIndent = false
+	}
+	if len(encoding) > 0 && encoding[0] == true {
+		hasEncoding = true
+	}
+	if c.Data["json"] == nil {
+		//go utils.SendEmail("异常提醒:", "接口:"+"URI:"+c.Ctx.Input.URI()+";无返回值", utils.EmailSendToUsers)
+		//body := "接口:" + "URI:" + c.Ctx.Input.URI() + ";无返回值"
+		//go alarm_msg.SendAlarmMsg(body, 1)
+		return
+	}
+
+	//baseRes := c.Data["json"].(*xy.BaseResponse)
+	//if baseRes != nil {
+	//	body, _ := json.Marshal(baseRes)
+	//	var requestBody string
+	//	method := c.Ctx.Input.Method()
+	//	if method == "GET" {
+	//		requestBody = c.Ctx.Request.RequestURI
+	//	} else {
+	//		requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+	//	}
+	//	//记录错误日志, 并清掉错误信息避免暴露给外部
+	//	if baseRes.ErrMsg != "" {
+	//		utils.FileLog.Info(baseRes.ErrMsg)
+	//		baseRes.ErrMsg = ""
+	//	}
+	//}
+	c.JSON(c.Data["json"], hasIndent, hasEncoding)
+}
+
+func (c *BaseAuthXyController) JSON(data interface{}, hasIndent bool, coding bool) error {
+	c.Ctx.Output.Header("Content-Type", "application/json; charset=utf-8")
+	var content []byte
+	var err error
+	if hasIndent {
+		content, err = json.MarshalIndent(data, "", "  ")
+	} else {
+		content, err = json.Marshal(data)
+	}
+	if err != nil {
+		http.Error(c.Ctx.Output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)
+		return err
+	}
+	ip := c.Ctx.Input.IP()
+	requestBody, err := url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+	if err != nil {
+		requestBody = string(c.Ctx.Input.RequestBody)
+	}
+	if requestBody == "" {
+		requestBody = c.Ctx.Input.URI()
+	}
+	c.logUri(content, requestBody, ip)
+	if coding {
+		content = []byte(utils.StringsToJSON(string(content)))
+	}
+	return c.Ctx.Output.Body(content)
+}
+
+func (c *BaseAuthXyController) logUri(respContent []byte, requestBody, ip string) {
+	var reqData interface{}
+	err := json.Unmarshal([]byte(requestBody), &reqData)
+	if err != nil {
+		utils.ApiLog.Info("uri:%s, requestBody:%s, ip:%s", c.Ctx.Input.URI(), requestBody, ip)
+	} else {
+		utils.ApiLog.Info("uri:%s, requestBody:%s, ip:%s", c.Ctx.Input.URI(), requestBody, ip)
+	}
+	return
+}

+ 277 - 0
controllers/xy/researcher_assessment.go

@@ -0,0 +1,277 @@
+package xy
+
+import (
+	"encoding/json"
+	"eta/eta_hub/models"
+	"eta/eta_hub/models/system"
+	"eta/eta_hub/models/xy"
+	"eta/eta_hub/utils"
+	"fmt"
+	"strconv"
+	"time"
+)
+
+// AssessmentFormController 研究员填报
+type AssessmentFormController struct {
+	BaseAuthXyController
+}
+
+// Check
+// @Title 校验用户是否需要填报
+// @Description 校验用户是否需要填报
+// @Success 200 {object} xy.AssessmentCheckResp
+// @router /user/check [post]
+func (c *AssessmentFormController) Check() {
+	br := new(xy.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	var req xy.AssessmentCheckReq
+	if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
+		return
+	}
+
+	var resp xy.AssessmentCheckResp
+	resp.SubmitAuth = true
+	br.Data = resp
+
+	// 找到系统账户
+	adminIfo, err := system.GetUserByAdminName(req.Loginid)
+	if err != nil {
+		msg := `获取失败`
+		errMsg := "获取失败,Err:" + err.Error()
+		if utils.IsErrNoRow(err) {
+			msg = `找不到系统账户`
+			errMsg = msg
+		}
+		br.Msg = msg
+		br.ErrMsg = errMsg
+		return
+	}
+
+	// 根据账号获取是否配置研究员信息
+	researcherObj := new(models.AssessmentResearcher)
+	cond := fmt.Sprintf(` AND %s = ? AND %s = 1 `, researcherObj.Cols().AdminId, researcherObj.Cols().Enabled)
+	pars := make([]interface{}, 0)
+	pars = append(pars, adminIfo.AdminId)
+	researcherItem, err := researcherObj.GetItemByCondition(cond, pars, "")
+	if err != nil {
+		if !utils.IsErrNoRow(err) {
+			br.Msg = `获取失败`
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		br.ReturnCode = "S"
+		br.Status = "S"
+		br.Msg = "获取成功"
+		return
+	}
+	// 根据研究员ID获取配置的品种数量
+	varietyMappingObj := new(models.AssessmentResearcherVarietyMapping)
+	cond = fmt.Sprintf(` AND %s = ?  `, varietyMappingObj.Cols().AssessmentResearcherId)
+	pars = make([]interface{}, 0)
+	pars = append(pars, researcherItem.AssessmentResearcherId)
+	count, err := varietyMappingObj.GetCountByCondition(cond, pars)
+	if err != nil {
+		br.Msg = `获取失败`
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	if count > 0 {
+		resp.DataAuth = true
+	}
+
+	br.Data = resp
+	br.ReturnCode = "S"
+	br.Status = "S"
+	br.Msg = "获取成功"
+}
+
+// Detail
+// @Title 填报单详情
+// @Description 填报单详情
+// @Success 200 string "获取成功"
+// @router /forms/detail [post]
+func (c *AssessmentFormController) Detail() {
+	br := new(xy.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	var req xy.AssessmentFormQueryReq
+	if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
+		return
+	}
+
+	if req.Loginid == "" {
+		br.Msg = "参数有误"
+		return
+	}
+
+	// 找到系统账户
+	adminIfo, err := system.GetUserByAdminName(req.Loginid)
+	if err != nil {
+		msg := `获取失败`
+		errMsg := "获取失败,Err:" + err.Error()
+		if utils.IsErrNoRow(err) {
+			msg = `找不到系统账户`
+			errMsg = msg
+		}
+		br.Msg = msg
+		br.ErrMsg = errMsg
+		return
+	}
+
+	var startTime, endTime time.Time
+
+	if req.StartTime == "" {
+		br.Msg = "开始日期为空"
+		return
+	} else {
+		startTime, err = time.ParseInLocation(utils.FormatDate, req.StartTime, time.Local)
+		if err != nil {
+			br.Msg = "开始时间异常"
+			br.Msg = "开始时间异常,Err:" + err.Error()
+			return
+		}
+	}
+	if req.EndTime == "" {
+		endTime = time.Now()
+	}
+
+	startWeekTime, _, _ := utils.GetAssessmentWeekAndFriday(startTime)
+	endWeekTime, _, _ := utils.GetAssessmentWeekAndFriday(endTime)
+	if startWeekTime != endWeekTime {
+		br.Msg = `开始日期和结束日期不在同一周`
+		br.ErrMsg = `开始日期和结束日期不在同一周`
+		return
+	}
+
+	resp := new(models.AssessmentFormViewResp)
+
+	// 根据单号获取填报单
+	formOb := new(models.AssessmentForm)
+	cond := fmt.Sprintf(` AND %s = ? AND %s = ? `, formOb.Cols().ResearcherAdminId, formOb.Cols().WeekTime)
+	pars := make([]interface{}, 0)
+	pars = append(pars, adminIfo.AdminId, startWeekTime)
+	list, e := formOb.GetItemsByCondition(cond, pars, []string{}, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取本周填报单总数失败, %v", e)
+		return
+	}
+	if len(list) > 0 {
+		resp.DataId = list[0].FormCode
+		resp.OutNo = list[0].OutNo
+		resp.Status = list[0].Status
+		resp.OutStatus = list[0].OutStatus
+	}
+	resp.Head = models.AssessmentFormDetail{
+		ResearcherName:       "研究员名称",
+		VarietyCode:          "品种编码",
+		VarietyName:          "品种名称",
+		WeekTime:             "周度",
+		BaseDate:             "价格基准日期",
+		MonthlyPriceForecast: "月度涨跌",
+		WeeklyUpForecast:     "周度上行风险",
+		WeeklyDownForecast:   "周度下行风险",
+		SubmitTime:           "提交时间",
+		CreateTime:           "创建时间",
+		ModifyTime:           "修改时间",
+	}
+	resp.List = make([]*models.AssessmentFormDetail, 0)
+	for _, v := range list {
+		resp.List = append(resp.List, v.Format2Detail())
+	}
+
+	br.Data = resp
+	br.ReturnCode = "S"
+	br.Status = "S"
+	//br.Success = true
+	br.Msg = "获取成功"
+}
+
+// UpdateOutStatus
+// @Title 更新填报单
+// @Description 更新填报单
+// @Success 200 string "获取成功"
+// @router /forms/update [post]
+func (c *AssessmentFormController) UpdateOutStatus() {
+	br := new(xy.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	br.Data = ``
+
+	var req xy.UpdateAssessmentFormReq
+	if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
+		return
+	}
+
+	if req.DataId == "" {
+		br.Msg = "数据ID异常"
+		return
+	}
+	if req.ReportId == "" {
+		br.Msg = "周报ID异常"
+		return
+	}
+	if req.Status == "" {
+		br.Msg = "status异常"
+		return
+	}
+	status, err := strconv.Atoi(req.Status)
+	if err != nil {
+		br.Msg = "status异常"
+		br.ErrMsg = "status异常,err:" + err.Error()
+		return
+	}
+	if !utils.IsCheckInList([]int{0, 1}, status) {
+		br.Msg = "status异常"
+		return
+	}
+
+	// 根据单号获取填报单
+	formOb := new(models.AssessmentForm)
+	cond := fmt.Sprintf(` AND %s = ?`, formOb.Cols().FormCode)
+	pars := make([]interface{}, 0)
+	pars = append(pars, req.DataId)
+	list, e := formOb.GetItemsByCondition(cond, pars, []string{}, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取本周填报单总数失败, %v", e)
+		return
+	}
+	if len(list) <= 0 {
+		br.Msg = "数据不存在"
+		return
+	}
+	if list[0].Status != 1 {
+		br.Msg = "填报单未提交"
+		return
+	}
+
+	err = formOb.UpdateOutStatusByFormCode(req.DataId, req.ReportId, status)
+	if err != nil {
+		br.Msg = "更新失败"
+		br.ErrMsg = fmt.Sprintf("更新失败, %v", err)
+		return
+	}
+
+	br.Data = ``
+	br.ReturnCode = "S"
+	br.Status = "S"
+	//br.Success = true
+	br.Msg = "获取成功"
+}

+ 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()
+}

+ 137 - 0
global/initDb.go

@@ -0,0 +1,137 @@
+package global
+
+import (
+	"database/sql/driver"
+	_ "dm"
+	dm "dmgorm2"
+	"eta/eta_hub/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.DbNameMaster, newLogger, dbMap, true)
+
+	// 指标库
+	connectDb(utils.MYSQL_URL_DATA, utils.DbNameIndex, newLogger, dbMap, false)
+	// 报告库
+	connectDb(utils.MYSQL_URL_RDDP, utils.DbNameReport, 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)
+}

+ 6 - 2
go.mod

@@ -21,6 +21,8 @@ require (
 	github.com/shopspring/decimal v1.4.0
 	go.mongodb.org/mongo-driver v1.15.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
+	gorm.io/driver/mysql v1.5.7
+	gorm.io/gorm v1.26.1
 )
 
 require (
@@ -36,6 +38,8 @@ require (
 	github.com/golang/protobuf v1.5.3 // indirect
 	github.com/golang/snappy v0.0.1 // 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/jmespath/go-jmespath v0.4.0 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
@@ -64,9 +68,9 @@ require (
 	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
 	golang.org/x/crypto v0.26.0 // indirect
 	golang.org/x/net v0.28.0 // indirect
-	golang.org/x/sync v0.8.0 // indirect
+	golang.org/x/sync v0.9.0 // indirect
 	golang.org/x/sys v0.24.0 // indirect
-	golang.org/x/text v0.17.0 // indirect
+	golang.org/x/text v0.20.0 // indirect
 	golang.org/x/time v0.6.0 // indirect
 	google.golang.org/protobuf v1.30.0 // indirect
 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect

+ 14 - 4
go.sum

@@ -78,6 +78,7 @@ github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC
 github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
 github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -118,6 +119,10 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
 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/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
@@ -313,8 +318,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
+golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -342,8 +347,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
-golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
+golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
 golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
 golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -397,4 +402,9 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
 gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 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.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw=
+gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

+ 5 - 3
models/aimod/file_upload_record.go

@@ -1,7 +1,8 @@
 package aimod
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"time"
 )
 
@@ -23,7 +24,8 @@ type FileUploadRecord struct {
 
 // AddAiChatTopic 新增上传文件记录
 func (obj *FileUploadRecord) AddFileUploadRecord() (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("ai")
-	lastId, err = o.Insert(obj)
+	//o := orm.NewOrmUsingDB("ai")
+	//lastId, err = o.Insert(obj)
+	err = global.DbMap[utils.DbNameAI].Create(&obj).Error
 	return
 }

+ 246 - 0
models/assessment_form.go

@@ -0,0 +1,246 @@
+package models
+
+import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
+	"fmt"
+	"strings"
+	"time"
+)
+
+type AssessmentForm struct {
+	AssessmentFormId     int       `gorm:"column:assessment_form_id;primaryKey;autoIncrement"`
+	FormCode             string    `description:"单号"`
+	ResearcherId         int       `description:"研究员ID"`
+	ResearcherAdminId    int       `description:"研究员用户ID"`
+	ResearcherName       string    `description:"研究员姓名"`
+	VarietyId            int       `description:"品种ID"`
+	VarietyCode          string    `description:"品种编码"`
+	VarietyName          string    `description:"品种名称"`
+	WeekTime             string    `description:"周度(格式:202501,202502)"`
+	WeekStart            time.Time `description:"当周开始日期"`
+	WeekEnd              time.Time `description:"当周结束日期"`
+	BaseDate             time.Time `description:"价格基准日期"`
+	MonthlyPriceForecast string    `description:"月度涨跌:涨/跌/震荡"`
+	WeeklyUpForecast     string    `description:"周度上行风险:是/否"`
+	WeeklyDownForecast   string    `description:"周度下行风险:是/否"`
+	Status               int       `description:"状态:0-草稿;1-已提交;"`
+	OutNo                string    `description:"外部编码(客户内部系统编码)"`
+	OutStatus            int       `description:"外部状态(象屿):0-未使用;1-已使用"`
+	SubmitTime           time.Time `description:"提交时间"`
+	CreateTime           time.Time `description:"创建时间"`
+	ModifyTime           time.Time `description:"修改时间"`
+}
+
+func (m *AssessmentForm) TableName() string {
+	return "assessment_form"
+}
+
+type AssessmentFormCols struct {
+	PrimaryId            string
+	FormCode             string
+	ResearcherId         string
+	ResearcherAdminId    string
+	ResearcherName       string
+	VarietyId            string
+	VarietyCode          string
+	VarietyName          string
+	WeekTime             string
+	WeekStart            string
+	WeekEnd              string
+	BaseDate             string
+	MonthlyPriceForecast string
+	WeeklyUpForecast     string
+	WeeklyDownForecast   string
+	Status               string
+	SubmitTime           string
+	CreateTime           string
+	ModifyTime           string
+}
+
+func (m *AssessmentForm) Cols() AssessmentFormCols {
+	return AssessmentFormCols{
+		PrimaryId:            "assessment_form_id",
+		FormCode:             "form_code",
+		ResearcherId:         "researcher_id",
+		ResearcherAdminId:    "researcher_admin_id",
+		ResearcherName:       "researcher_name",
+		VarietyId:            "variety_id",
+		VarietyCode:          "variety_code",
+		VarietyName:          "variety_name",
+		WeekTime:             "week_time",
+		WeekStart:            "week_start",
+		WeekEnd:              "week_end",
+		BaseDate:             "base_date",
+		MonthlyPriceForecast: "monthly_price_forecast",
+		WeeklyUpForecast:     "weekly_up_forecast",
+		WeeklyDownForecast:   "weekly_down_forecast",
+		Status:               "status",
+		SubmitTime:           "submit_time",
+		CreateTime:           "create_time",
+		ModifyTime:           "modify_time",
+	}
+}
+
+func (m *AssessmentForm) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentForm) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentForm) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.AssessmentFormId).Error
+	return
+}
+
+func (m *AssessmentForm) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentForm) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
+	return
+}
+
+func (m *AssessmentForm) GetItemById(primaryId int) (item *AssessmentForm, err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&item).Error
+	return
+}
+
+func (m *AssessmentForm) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AssessmentForm, err error) {
+	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 = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
+	return
+}
+
+func (m *AssessmentForm) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
+	return
+}
+
+func (m *AssessmentForm) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentForm, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+func (m *AssessmentForm) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*AssessmentForm, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+// AssessmentFormDetail 填报单信息
+type AssessmentFormDetail struct {
+	//AssessmentFormId int `description:"填报单ID"`
+	//FormCode string `description:"单号"`
+	//ResearcherId         int    `description:"研究员ID"`
+	//ResearcherAdminId    int    `description:"研究员用户ID"`
+	ResearcherName string `description:"研究员姓名" json:"researcherName"`
+	//VarietyId            int    `description:"品种ID"`
+	VarietyCode          string `description:"品种编码" json:"varietyCode"`
+	VarietyName          string `description:"品种名称" json:"varietyName"`
+	WeekTime             string `description:"周度(格式:202501,202502)" json:"weekTime"`
+	BaseDate             string `description:"价格基准日期" json:"baseDate"`
+	MonthlyPriceForecast string `description:"月度涨跌:涨/跌/震荡" json:"monthlyPriceForecast"`
+	WeeklyUpForecast     string `description:"周度上行风险:是/否" json:"weeklyUpForecast"`
+	WeeklyDownForecast   string `description:"周度下行风险:是/否" json:"weeklyDownForecast"`
+	//Status               int    `description:"状态:0-草稿;1-已提交;"`
+	SubmitTime string `description:"提交时间" json:"submitTime"`
+	CreateTime string `description:"创建时间" json:"createTime"`
+	ModifyTime string `description:"修改时间" json:"modifyTime"`
+	//Button               AssessmentFormButton `description:"按钮权限"`
+}
+
+type AssessmentFormButton struct {
+	ViewButton   bool `description:"查看按钮"`
+	EditButton   bool `description:"编辑按钮"`
+	RemoveButton bool `description:"删除按钮"`
+	SubmitButton bool `description:"提交按钮"`
+	CancelButton bool `description:"撤销按钮"`
+}
+
+func (m *AssessmentForm) Format2Detail() (item *AssessmentFormDetail) {
+	item = new(AssessmentFormDetail)
+	//item.AssessmentFormId = m.AssessmentFormId
+	//item.FormCode = m.FormCode
+	//item.ResearcherId = m.ResearcherId
+	//item.ResearcherAdminId = m.ResearcherAdminId
+	item.ResearcherName = m.ResearcherName
+	//item.VarietyId = m.VarietyId
+	item.VarietyCode = m.VarietyCode
+	item.VarietyName = m.VarietyName
+	item.WeekTime = m.WeekTime
+	item.BaseDate = utils.TimeTransferString(utils.FormatDate, m.BaseDate)
+	item.MonthlyPriceForecast = m.MonthlyPriceForecast
+	item.WeeklyUpForecast = m.WeeklyUpForecast
+	item.WeeklyDownForecast = m.WeeklyDownForecast
+	//item.Status = m.Status
+	item.SubmitTime = utils.TimeTransferString(utils.FormatDate, m.SubmitTime)
+	item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, m.CreateTime)
+	item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, m.ModifyTime)
+	return
+}
+
+// AssessmentFormViewResp 查看填报单
+type AssessmentFormViewResp struct {
+	List      []*AssessmentFormDetail `description:"填报单详情" json:"dataList"`
+	Status    int                     `description:"状态" json:"status"`
+	OutStatus int                     `description:"外部状态" json:"outStatus"`
+	OutNo     string                  `description:"外部单号" json:"outNo"`
+	DataId    string                  `description:"单号" json:"dataId"`
+	Head      AssessmentFormDetail    `description:"表头信息" json:"head"`
+}
+
+// UpdateOutStatusByFormCode
+// @Description: 根据填报单号更新外部单号和外部状态
+// @author: Roc
+// @receiver m
+// @datetime 2025-06-26 17:38:59
+// @param formCode string
+// @param outNo string
+// @param outStatus int
+// @return err error
+func (m *AssessmentForm) UpdateOutStatusByFormCode(formCode, outNo string, outStatus int) (err error) {
+	sql := fmt.Sprintf(`UPDATE %s SET out_status = ?,out_no = ? WHERE %s = ? `, m.TableName(), m.Cols().FormCode)
+	err = global.DEFAULT_DB.Exec(sql, outStatus, outNo, formCode).Error
+
+	return
+}

+ 198 - 0
models/assessment_researcher.go

@@ -0,0 +1,198 @@
+package models
+
+import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
+	"strings"
+	"time"
+)
+
+const (
+	AssessmentResearcherDisabled = 0
+	AssessmentResearcherEnabled  = 1
+)
+
+// AssessmentResearcher 考核研究员表
+type AssessmentResearcher struct {
+	AssessmentResearcherId int       `gorm:"column:assessment_researcher_id;primaryKey;autoIncrement"`
+	AdminId                int       `description:"系统用户ID"`
+	RealName               string    `description:"用户姓名"`
+	Enabled                int       `description:"状态:0-禁用;1-正常"`
+	CreateTime             time.Time `description:"创建时间"`
+	ModifyTime             time.Time `description:"修改时间"`
+}
+
+func (m *AssessmentResearcher) TableName() string {
+	return "assessment_researcher"
+}
+
+type AssessmentResearcherCols struct {
+	PrimaryId  string
+	AdminId    string
+	RealName   string
+	Enabled    string
+	CreateTime string
+	ModifyTime string
+}
+
+func (m *AssessmentResearcher) Cols() AssessmentResearcherCols {
+	return AssessmentResearcherCols{
+		PrimaryId:  "assessment_researcher_id",
+		AdminId:    "admin_id",
+		RealName:   "real_name",
+		Enabled:    "enabled",
+		CreateTime: "create_time",
+		ModifyTime: "modify_time",
+	}
+}
+
+func (m *AssessmentResearcher) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentResearcher) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentResearcher) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.AssessmentResearcherId).Error
+	return
+}
+
+func (m *AssessmentResearcher) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentResearcher) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemById(primaryId int) (item *AssessmentResearcher, err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&item).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AssessmentResearcher, err error) {
+	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 = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentResearcher, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+func (m *AssessmentResearcher) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*AssessmentResearcher, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+// AfterUpdate 同步更新其他表冗余
+func (m *AssessmentResearcher) AfterUpdate(tx *gorm.DB) (err error) {
+	if tx.Statement.Changed(m.Cols().RealName) {
+		fmt.Println(111)
+		formOb := new(AssessmentForm)
+		err = tx.Model(formOb).Where(fmt.Sprintf("%s = ?", formOb.Cols().ResearcherId), m.AssessmentResearcherId).Update(formOb.Cols().ResearcherName, m.RealName).Error
+		fmt.Println("AfterUpdate", err)
+	}
+	return
+}
+
+// AssessmentResearcherAddReq 新增研究员请求
+type AssessmentResearcherAddReq struct {
+	AdminId            int   `description:"用户ID"`
+	ViewAdminIds       []int `description:"查看权限用户IDs"`
+	AssessmentAdminIds []int `description:"统计权限用户IDs"`
+}
+
+// AssessmentResearcherEditReq 编辑研究员请求
+type AssessmentResearcherEditReq struct {
+	AssessmentResearcherId int `description:"研究员ID"`
+	AssessmentResearcherAddReq
+}
+
+// AssessmentResearcherRemoveReq 删除研究员请求
+type AssessmentResearcherRemoveReq struct {
+	AssessmentResearcherId int `description:"研究员ID"`
+}
+
+// AssessmentResearcherPageListReq 研究员列表
+type AssessmentResearcherPageListReq struct {
+	PageSize                int    `form:"PageSize"`
+	CurrentIndex            int    `form:"CurrentIndex"`
+	RealName                string `form:"RealName" description:"用户姓名"`
+	AssessmentResearcherIds string `form:"AssessmentResearcherIds" description:"研究员IDs"`
+	OnlyEnabled             bool   `form:"OnlyEnabled" description:"是否仅显示启用:true-是"`
+	ResearcherAuthType      int    `form:"ResearcherAuthType" description:"权限类型:0-全部;1-当前用户有查看权限的;2-当前用户有统计权限的"`
+}
+
+// AssessmentResearcherPageListResp 研究员列表响应
+type AssessmentResearcherPageListResp struct {
+	List   []*AssessmentResearcherDetail
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+type AssessmentResearcherDetail struct {
+	AssessmentResearcherId int                          `description:"研究员ID"`
+	AdminId                int                          `description:"用户ID"`
+	RealName               string                       `description:"用户姓名"`
+	Enabled                int                          `description:"状态:0-禁用;1-正常"`
+	ViewAdmins             []AssessmentResearcherDetail `description:"查看权限用户"`
+	AssessmentAdmins       []AssessmentResearcherDetail `description:"统计权限用户"`
+}
+
+func (m *AssessmentResearcher) Format2Detail() (item *AssessmentResearcherDetail) {
+	item = new(AssessmentResearcherDetail)
+	item.AssessmentResearcherId = m.AssessmentResearcherId
+	item.AdminId = m.AdminId
+	item.RealName = m.RealName
+	item.Enabled = m.Enabled
+	return
+}

+ 106 - 0
models/assessment_researcher_variety_mapping.go

@@ -0,0 +1,106 @@
+package models
+
+import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
+	"fmt"
+	"strings"
+)
+
+// AssessmentResearcherVarietyMapping 研究员考核-用户权限关系表
+type AssessmentResearcherVarietyMapping struct {
+	Id                     int `gorm:"column:id;primaryKey;autoIncrement"`
+	AssessmentResearcherId int `description:"研究员ID"`
+	AdminId                int `description:"系统用户ID"`
+	VarietyId              int `description:"品种ID"`
+}
+
+func (m *AssessmentResearcherVarietyMapping) TableName() string {
+	return "assessment_researcher_variety_mapping"
+}
+
+type AssessmentResearcherVarietyMappingCols struct {
+	PrimaryId              string
+	AssessmentResearcherId string
+	AdminId                string
+	VarietyId              string
+}
+
+func (m *AssessmentResearcherVarietyMapping) Cols() AssessmentResearcherVarietyMappingCols {
+	return AssessmentResearcherVarietyMappingCols{
+		PrimaryId:              "id",
+		AssessmentResearcherId: "assessment_researcher_id",
+		AdminId:                "admin_id",
+		VarietyId:              "variety_id",
+	}
+}
+
+func (m *AssessmentResearcherVarietyMapping) Create() (err error) {
+	err = global.DEFAULT_DB.Create(m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) Update(cols []string) (err error) {
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) Remove() (err error) {
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, m.Id).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) MultiRemove(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) RemoveByCondition(condition string, pars []interface{}) (err error) {
+	if condition == "" {
+		return
+	}
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemById(primaryId int) (item *AssessmentResearcherVarietyMapping, err error) {
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Raw(sql, primaryId).First(&item).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (err error) {
+	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 = global.DEFAULT_DB.Raw(sql, pars...).First(&m).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentResearcherVarietyMapping, err error) {
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := ``
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	return
+}
+
+func (m *AssessmentResearcherVarietyMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
+	return
+}

+ 5 - 5
models/business_conf.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
 	"time"
 )
@@ -40,9 +40,9 @@ func GetBusinessConf() (list map[string]string, err error) {
 	list = make(map[string]string)
 
 	var items []*BusinessConf
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM business_conf`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	if err != nil {
 		return
 	}
@@ -58,9 +58,9 @@ func GetBusinessConf() (list map[string]string, err error) {
 }
 
 func GetBusinessConfByKey(key string) (item *BusinessConf, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
-	err = o.Raw(sql, key).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, key).Scan(&item).Error
 	return
 }
 

+ 5 - 5
models/classify.go

@@ -1,8 +1,8 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
@@ -85,7 +85,7 @@ func GetClassifyChildByParentIds(parentId []int, keyWord string) (items []*Class
 	if parentIdLen == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ``
 	pars := make([]interface{}, 0)
 	pars = append(pars, parentId)
@@ -95,7 +95,7 @@ func GetClassifyChildByParentIds(parentId []int, keyWord string) (items []*Class
 	} else {
 		sql = `SELECT * FROM classify WHERE parent_id IN (` + utils.GetOrmInReplace(parentIdLen) + `) ORDER BY create_time ASC `
 	}
-	_, err = o.Raw(sql, pars...).QueryRows(&items)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 
 	return
 }
@@ -151,7 +151,7 @@ func GetClassifyListByParentIdList(parentClassifyIdList []int) (items []*Classif
 	}
 	sql := `SELECT * FROM classify WHERE id in (` + utils.GetOrmInReplace(num) + `) ORDER BY sort ASC, create_time ASC`
 
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, parentClassifyIdList).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DEFAULT_DB.Raw(sql, parentClassifyIdList).Find(&items).Error
 	return
 }

+ 4 - 3
models/classify_menu.go

@@ -1,7 +1,8 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"time"
 )
 
@@ -17,10 +18,10 @@ type ClassifyMenu struct {
 
 // GetClassifyMenuList 获取子目录列表
 func GetClassifyMenuList(condition string, pars []interface{}) (list []*ClassifyMenu, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM classify_menu WHERE 1 = 1 `
 	sql += condition
 	sql += ` ORDER BY sort ASC, create_time ASC`
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 29 - 19
models/classify_menu_relation.go

@@ -1,7 +1,8 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"time"
 )
 
@@ -18,55 +19,64 @@ func (item *ClassifyMenuRelation) TableName() string {
 }
 
 func (item *ClassifyMenuRelation) Create() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	id, err := o.Insert(item)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.DbNameReport].Create(item).Error
 	if err != nil {
 		return
 	}
-	item.Id = int(id)
+	//item.Id = int(id)
 	return
 }
 
 func (item *ClassifyMenuRelation) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(item, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.DbNameReport].Select(cols).Updates(item).Error
 	return
 }
 
 func (item *ClassifyMenuRelation) InsertMulti(items []*ClassifyMenuRelation) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.DbNameReport].CreateInBatches(item, len(items)).Error
 	return
 }
 
 // GetClassifyMenuRelationList 获取子目录关联列表
 func GetClassifyMenuRelationList(condition string, pars []interface{}) (list []*ClassifyMenuRelation, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM classify_menu_relation WHERE 1 = 1 `
 	sql += condition
 	sql += ` ORDER BY create_time DESC`
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // DeleteAndInsertClassifyMenuRelation 新增子目录关联
 func DeleteAndInsertClassifyMenuRelation(classifyId, menuId int) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	//o := orm.NewOrmUsingDB("rddp")
+	//tx, err := o.Begin()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	if err != nil {
+	//		_ = tx.Rollback()
+	//	} else {
+	//		_ = tx.Commit()
+	//	}
+	//}()
+
+	tx := global.DbMap[utils.MYSQL_URL_RDDP].Begin()
 	defer func() {
 		if err != nil {
-			_ = tx.Rollback()
+			tx.Rollback()
 		} else {
-			_ = tx.Commit()
+			tx.Commit()
 		}
 	}()
 
 	// 删除
 	sql := `DELETE FROM classify_menu_relation WHERE classify_id = ?`
-	if _, e := tx.Raw(sql, classifyId).Exec(); e != nil {
+	if e := tx.Exec(sql, classifyId).Error; e != nil {
 		err = e
 		return
 	}
@@ -78,7 +88,7 @@ func DeleteAndInsertClassifyMenuRelation(classifyId, menuId int) (err error) {
 			MenuId:     menuId,
 			CreateTime: time.Now().Local(),
 		}
-		_, e := tx.Insert(relate)
+		e := tx.Create(relate).Error
 		if e != nil {
 			err = e
 		}

+ 12 - 9
models/data_manage/base_from_business.go

@@ -1,8 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
@@ -45,24 +46,26 @@ type BaseFromBusinessIndexResp struct {
 }
 
 func (m *BaseFromBusinessIndex) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (total int, items []*BaseFromBusinessIndexItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
 	}
 	// 获取总数
-	sql := fmt.Sprintf(`SELECT count(1) FROM base_from_business_index WHERE 1=1 %s `, cond)
-	err = o.Raw(sql, pars).QueryRow(&total)
-	if err != nil {
-		return
-	}
-
+	sql := fmt.Sprintf(`SELECT count(1) AS total FROM base_from_business_index WHERE 1=1 %s `, cond)
+	//err = o.Raw(sql, pars).QueryRow(&total)
+	//if err != nil {
+	//	return
+	//}
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Scan(&total).Error
 	// 排序字段
 	order := `ORDER BY create_time DESC`
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql = fmt.Sprintf(`SELECT %s FROM base_from_business_index WHERE 1=1 %s %s limit ?,?`, fields, cond, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 26 - 16
models/data_manage/base_from_eia_stero.go

@@ -1,8 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
@@ -83,8 +83,9 @@ type BaseFromEiaSteoDataItem struct {
 // GetEiaSteoClassifyList 获取分类列表
 func GetEiaSteoClassifyList() (items []*BaseFromEiaSteoClassify, err error) {
 	sql := ` SELECT * FROM base_from_eia_steo_classify  ORDER BY base_from_eia_steo_classify_id ASC `
-	o := orm.NewOrmUsingDB("data")
-	o.Raw(sql).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("data")
+	//o.Raw(sql).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
 	return
 }
 
@@ -108,16 +109,20 @@ func GetEiaSteoIndexList(condition string, pars []interface{}) (items []*BaseFro
 	sql := ` SELECT *  FROM base_from_eia_steo_index WHERE 1=1  `
 	sql += condition
 	sql += ` ORDER BY base_from_eia_steo_index_id ASC `
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("data")
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
 // GetEiaSteoIndexDataCount 获取指标数据总数
 func GetEiaSteoIndexDataCount(indexCode string) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT COUNT(1) AS count FROM base_from_eia_steo_data where index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&count)
+	//err = o.Raw(sql, indexCode).QueryRow(&count)
+
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&count).Error
+
 	return
 }
 
@@ -125,16 +130,20 @@ func GetEiaSteoIndexDataCount(indexCode string) (count int, err error) {
 func GetEiaSteoIndexDataList(indexCode string, startSize, pageSize int) (items []*BaseFromEiaSteoDataItem, err error) {
 	//sql := ` SELECT *  FROM mb_index_main_data WHERE INDEX_CODE=? ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC LIMIT ?,?`
 	sql := ` SELECT * FROM base_from_eia_steo_data AS a WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("data")
+	//_, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
 	return
 }
 
 // GetEiaSteoItemList 模糊查询EiaSteo数据库指标列表
 func GetEiaSteoItemList(keyword string) (items []*BaseFromEiaSteoIndexItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_eia_steo_index WHERE index_name LIKE ?  OR index_code like ?"
-	_, err = o.Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).QueryRows(&items)
+	//_, err = o.Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).QueryRows(&items)
+
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).Find(&items).Error
+
 	return
 }
 
@@ -146,16 +155,17 @@ func GetEiaSteoDateList(indexCodeList []string) (items []*BaseFromEiaSteoDataIte
 	}
 
 	sql := ` SELECT data_time FROM base_from_eia_steo_data WHERE index_code IN(` + utils.GetOrmInReplace(num) + `)  GROUP BY data_time ORDER BY data_time DESC `
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, indexCodeList).QueryRows(&items)
-
+	//o := orm.NewOrmUsingDB("data")
+	//_, err = o.Raw(sql, indexCodeList).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodeList).Find(&items).Error
 	return
 }
 
 // GetBaseFromEiaSteoIndexByCode 根据指标code获取指标信息
 func GetBaseFromEiaSteoIndexByCode(indexCode string) (item *BaseFromEiaSteoIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_eia_steo_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&item).Error
 	return
 }

+ 23 - 14
models/data_manage/base_from_mysteel_chemical_index.go

@@ -1,8 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
@@ -47,43 +47,52 @@ func GetNotIsSupplierStopIndexByCodeList(codeList []string, isStop int) (items [
 		return
 	}
 
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE is_supplier_stop = ? AND index_code in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, isStop, codeList).QueryRows(&items)
-
+	//_, err = o.Raw(sql, isStop, codeList).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, isStop, codeList).Find(&items).Error
 	return
 }
 
 func ModifyMysteelChemicalUpdateStatusByEdbInfoIds(edbInfoIds []int, isStop int, edbCodes []string, calculateEdbInfoIds []int) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
-	}
+	//o, err := orm.NewOrmUsingDB("data").Begin()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	if err != nil {
+	//		_ = o.Rollback()
+	//		return
+	//	}
+	//	_ = o.Commit()
+	//}()
+
+	tx := global.DbMap[utils.DbNameIndex].Begin()
 	defer func() {
 		if err != nil {
-			_ = o.Rollback()
-			return
+			tx.Rollback()
+		} else {
+			tx.Commit()
 		}
-		_ = o.Commit()
 	}()
 
 	// 更改数据源的更新状态
 	sql := ` UPDATE base_from_mysteel_chemical_index SET is_stop = ? WHERE index_code IN (` + utils.GetOrmInReplace(len(edbCodes)) + `) `
-	_, err = o.Raw(sql, isStop, edbCodes).Exec()
+	err = tx.Exec(sql, isStop, edbCodes).Error
 	if err != nil {
 		return
 	}
 
 	// 更改指标的更新状态
 	sql = ` UPDATE edb_info SET no_update = ? WHERE source = ? AND edb_info_id IN (` + utils.GetOrmInReplace(len(edbInfoIds)) + `) `
-	_, err = o.Raw(sql, isStop, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, edbInfoIds).Exec()
+	err = tx.Exec(sql, isStop, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, edbInfoIds).Error
 	if err != nil {
 		return
 	}
 	if len(calculateEdbInfoIds) > 0 {
 		// 批量更新相关联的指标ID
 		sql = ` UPDATE edb_info SET no_update = ? WHERE edb_info_id IN (` + utils.GetOrmInReplace(len(calculateEdbInfoIds)) + `) `
-		_, err = o.Raw(sql, isStop, calculateEdbInfoIds).Exec()
+		err = tx.Exec(sql, isStop, calculateEdbInfoIds).Error
 		if err != nil {
 			return
 		}

+ 110 - 108
models/data_manage/base_from_trade_index.go

@@ -1,6 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
@@ -86,54 +88,54 @@ type BaseFromTradeIneIndex struct {
 
 type BaseFromTradeZhengzhouIndex struct {
 	BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
-	Rank                      int
-	DealShortName             string
-	DealName                  string
-	DealCode                  string
-	DealValue                 string
-	DealChange                string
-	BuyShortName              string
-	BuyName                   string
-	BuyCode                   string
-	BuyValue                  string
-	BuyChange                 string
-	SoldShortName             string
-	SoldName                  string
-	SoldCode                  string
-	SoldValue                 string
-	SoldChange                string
-	Frequency                 string
-	ClassifyName              string
-	ClassifyType              string
-	CreateTime                time.Time
-	ModifyTime                time.Time
-	DataTime                  string
+	Rank                          int
+	DealShortName                 string
+	DealName                      string
+	DealCode                      string
+	DealValue                     string
+	DealChange                    string
+	BuyShortName                  string
+	BuyName                       string
+	BuyCode                       string
+	BuyValue                      string
+	BuyChange                     string
+	SoldShortName                 string
+	SoldName                      string
+	SoldCode                      string
+	SoldValue                     string
+	SoldChange                    string
+	Frequency                     string
+	ClassifyName                  string
+	ClassifyType                  string
+	CreateTime                    time.Time
+	ModifyTime                    time.Time
+	DataTime                      string
 }
 
 type BaseFromTradeDalianIndex struct {
 	BaseFromTradeDalianIndexId int `orm:"column(base_from_trade_dalian_index_id);pk"`
-	Rank                      int
-	DealShortName             string
-	DealName                  string
-	DealCode                  string
-	DealValue                 string
-	DealChange                string
-	BuyShortName              string
-	BuyName                   string
-	BuyCode                   string
-	BuyValue                  string
-	BuyChange                 string
-	SoldShortName             string
-	SoldName                  string
-	SoldCode                  string
-	SoldValue                 string
-	SoldChange                string
-	Frequency                 string
-	ClassifyName              string
-	ClassifyType              string
-	CreateTime                time.Time
-	ModifyTime                time.Time
-	DataTime                  string
+	Rank                       int
+	DealShortName              string
+	DealName                   string
+	DealCode                   string
+	DealValue                  string
+	DealChange                 string
+	BuyShortName               string
+	BuyName                    string
+	BuyCode                    string
+	BuyValue                   string
+	BuyChange                  string
+	SoldShortName              string
+	SoldName                   string
+	SoldCode                   string
+	SoldValue                  string
+	SoldChange                 string
+	Frequency                  string
+	ClassifyName               string
+	ClassifyType               string
+	CreateTime                 time.Time
+	ModifyTime                 time.Time
+	DataTime                   string
 }
 
 type BaseFromTradeEicIndex struct {
@@ -167,111 +169,112 @@ type BaseFromTradeEicIndex struct {
 }
 
 func GetBaseFromTradeIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeShanghaiIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	if classifyName == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
-		_, err = o.Raw(sql, date).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&list).Error
 		return
 	} else if classifyType == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
-		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName).Find(&list).Error
 		return
 	} else {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
-		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName, classifyType).Find(&list).Error
 		return
 	}
 }
+
 func GetBaseFromTradeIneIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeIneIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	if classifyName == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
-		_, err = o.Raw(sql, date).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&list).Error
 		return
 	} else if classifyType == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
-		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName).Find(&list).Error
 		return
 	} else {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
-		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName, classifyType).Find(&list).Error
 		return
 	}
 }
 func GetBaseFromTradeCffexIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeCffexIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	if classifyName == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
-		_, err = o.Raw(sql, date).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&list).Error
 		return
 	} else if classifyType == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
-		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName).Find(&list).Error
 		return
 	} else {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
-		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName, classifyType).Find(&list).Error
 		return
 	}
 }
 func GetBaseFromTradeZhengzhouIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeZhengzhouIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	if classifyName == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
-		_, err = o.Raw(sql, date).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&list).Error
 		return
 	} else if classifyType == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
-		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName).Find(&list).Error
 		return
 	} else {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
-		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName, classifyType).Find(&list).Error
 		return
 	}
 }
 func GetBaseFromTradeDalianIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeDalianIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	if classifyName == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
-		_, err = o.Raw(sql, date).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&list).Error
 		return
 	} else if classifyType == "" {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
-		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName).Find(&list).Error
 		return
 	} else {
 		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
-		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		err = global.DbMap[utils.DbNameIndex].Raw(sql, date, classifyName, classifyType).Find(&list).Error
 		return
 	}
 }
 
 func GetExchangeClassify(exchange, dataTime string) (classifyName []string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT DISTINCT classify_name FROM base_from_trade_" + exchange + "_index where data_time=? ORDER BY CONVERT(classify_name using gbk) DESC"
-	_, err = o.Raw(sql, dataTime).QueryRows(&classifyName)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, dataTime).Find(&classifyName).Error
 	return
 }
 
 func GetLatestDate(exchange string) (dataTime string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT data_time FROM base_from_trade_" + exchange + "_index ORDER BY data_time desc limit 1"
-	err = o.Raw(sql).QueryRow(&dataTime)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Scan(&dataTime).Error
 	return
 }
 
 func GetExchangeClassifyContract(exchange, Classify, dataTime string) (classifyName []*string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT DISTINCT classify_type FROM base_from_trade_" + exchange + "_index where classify_name=? and data_time=?"
-	_, err = o.Raw(sql, Classify, dataTime).QueryRows(&classifyName)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, Classify, dataTime).Find(&classifyName).Error
 	return
 }
 
 func GetContinentEicDate(date string) (data []*BaseFromTradeEicIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index where gas_day_started_on=? and type='continent' "
-	_, err = o.Raw(sql, date).QueryRows(&data)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&data).Error
 	return
 }
 
@@ -381,7 +384,7 @@ type BaseFromCoalmineFirmIndex struct {
 	ModifyTime                  string `description:"修改时间"`
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineFirmIndex(dataTime string) (items []*BaseFromCoalmineFirmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE data_time LIKE  `
@@ -406,7 +409,7 @@ type BaseFromCoalmineCoastalIndex struct {
 	ModifyTime                     string `description:"修改时间"`
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineCoastalIndex(startDate, endDate string) (items []*BaseFromCoalmineCoastalIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE data_time between ? and ? `
@@ -429,7 +432,7 @@ type BaseFromCoalmineInlandIndex struct {
 	ModifyTime                    string `description:"修改时间"`
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineInlandIndex(startDate, endDate string) (items []*BaseFromCoalmineInlandIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE data_time between ? and ? `
@@ -497,7 +500,7 @@ func GetFrequencyFromCoal(suffix string) (list *string, err error) {
 	return
 }
 
-//查询数据
+// 查询数据
 func GetBaseFromCoalmineIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineJsmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE frequency=? AND province=?`
@@ -505,7 +508,7 @@ func GetBaseFromCoalmineIndexByFrequency(frequency, groupName string) (items []*
 	return
 }
 
-//查询数据
+// 查询数据
 func GetGroupNameFromCoalmineIndex(suffix string) (items []*string, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT DISTINCT group_name FROM base_from_coalmine_%s `
@@ -514,7 +517,7 @@ func GetGroupNameFromCoalmineIndex(suffix string) (items []*string, err error) {
 	return
 }
 
-//查询数据
+// 查询数据
 func GetProvinceFromCoalmineIndex(suffix string) (items []*string, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT DISTINCT province FROM base_from_coalmine_%s `
@@ -523,7 +526,7 @@ func GetProvinceFromCoalmineIndex(suffix string) (items []*string, err error) {
 	return
 }
 
-//查询数据
+// 查询数据
 func GetClassifyCoalmineIndexByGroupName(groupName string) (items []*string, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_jsm_index WHERE province=? `
@@ -531,7 +534,7 @@ func GetClassifyCoalmineIndexByGroupName(groupName string) (items []*string, err
 	return
 }
 
-//查询数据
+// 查询数据
 func GetPageFromCoalmineIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineJsmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,?  `
@@ -539,7 +542,7 @@ func GetPageFromCoalmineIndexByFrequency(frequency, classify string, startSize,
 	return
 }
 
-//查询数据
+// 查询数据
 func GetCountFromJsm(indexCode string) (item int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT COUNT(1) FROM base_from_coalmine_jsm_index WHERE index_code=? `
@@ -561,7 +564,7 @@ func GetClassifyJsmByGroupName(groupName string) (items []*string, err error) {
 	return
 }
 
-//查询公司指标
+// 查询公司指标
 func GetPageFromCoalmineCompanyIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineCompanyIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_company_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
@@ -590,7 +593,7 @@ func GetClassifyFirmByGroupName(groupName string) (items []*string, err error) {
 	return
 }
 
-//查询指标
+// 查询指标
 func GetPageFromCoalmineFirmIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineFirmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,?  `
@@ -612,7 +615,7 @@ func GetClassifyCoastalByGroupName(groupName string) (items []*string, err error
 	return
 }
 
-//查询指标
+// 查询指标
 func GetPageFromCoalmineCoastalIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineCoastalIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
@@ -634,7 +637,7 @@ func GetClassifyInlandByGroupName(groupName string) (items []*string, err error)
 	return
 }
 
-//查询指标
+// 查询指标
 func GetPageFromCoalmineInlandIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineInlandIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
@@ -642,7 +645,7 @@ func GetPageFromCoalmineInlandIndexByFrequency(frequency, classify string, start
 	return
 }
 
-//查询公司指标
+// 查询公司指标
 func GetBaseFromCoalmineCompanyIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineCompanyIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_company_index WHERE frequency=? AND group_name=? `
@@ -650,7 +653,7 @@ func GetBaseFromCoalmineCompanyIndexByFrequency(frequency, groupName string) (it
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineFirmIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineFirmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE frequency=? AND group_name=? `
@@ -658,7 +661,7 @@ func GetBaseFromCoalmineFirmIndexByFrequency(frequency, groupName string) (items
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineCoastalIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineCoastalIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE frequency=? AND group_name=? `
@@ -666,7 +669,7 @@ func GetBaseFromCoalmineCoastalIndexByFrequency(frequency, groupName string) (it
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineInlandIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineInlandIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE frequency=? AND group_name=? `
@@ -674,7 +677,7 @@ func GetBaseFromCoalmineInlandIndexByFrequency(frequency, groupName string) (ite
 	return
 }
 
-//查询数据
+// 查询数据
 func GetBaseFromCoalmineIndexByCode(indexCode string) (items []*BaseFromCoalmineJsmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE index_code=?`
@@ -682,7 +685,7 @@ func GetBaseFromCoalmineIndexByCode(indexCode string) (items []*BaseFromCoalmine
 	return
 }
 
-//查询公司指标
+// 查询公司指标
 func GetBaseFromCoalmineCompanyIndexByCode(indexCode string) (items []*BaseFromCoalmineCompanyIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_company_index WHERE index_code=? `
@@ -690,7 +693,7 @@ func GetBaseFromCoalmineCompanyIndexByCode(indexCode string) (items []*BaseFromC
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineFirmIndexByCode(indexCode string) (items []*BaseFromCoalmineFirmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE index_code=? `
@@ -698,7 +701,7 @@ func GetBaseFromCoalmineFirmIndexByCode(indexCode string) (items []*BaseFromCoal
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineCoastalIndexByCode(indexCode string) (items []*BaseFromCoalmineCoastalIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE index_code=? `
@@ -706,7 +709,7 @@ func GetBaseFromCoalmineCoastalIndexByCode(indexCode string) (items []*BaseFromC
 	return
 }
 
-//查询指标
+// 查询指标
 func GetBaseFromCoalmineInlandIndexByCode(indexCode string) (items []*BaseFromCoalmineInlandIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE index_code=? `
@@ -714,7 +717,6 @@ func GetBaseFromCoalmineInlandIndexByCode(indexCode string) (items []*BaseFromCo
 	return
 }
 
-
 type BaseFromTradeEicIndexV2 struct {
 	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
 	Type                   string
@@ -750,44 +752,44 @@ type BaseFromTradeEicIndexV2 struct {
 }
 
 func GetEicDateV2() (date []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 ORDER BY gas_day_start desc limit 1"
-	_, err = o.Raw(sql).QueryRows(&date)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&date).Error
 	return
 }
 
 func GetEicDataV2(date string) (data []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? "
-	_, err = o.Raw(sql, date).QueryRows(&data)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&data).Error
 	return
 }
 
 func GetEicHistoryDateByDateV2(code, startDate, endDate string) (date []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 WHERE eic_code=? and gas_day_start between ? and ? ORDER BY gas_day_start desc"
-	_, err = o.Raw(sql, code, startDate, endDate).QueryRows(&date)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, code, startDate, endDate).Find(&date).Error
 	return
 }
 
 func GetEicHistoryDateV2(code string) (date []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 WHERE eic_code=? ORDER BY gas_day_start desc limit 30"
-	_, err = o.Raw(sql, code).QueryRows(&date)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, code).Find(&date).Error
 	return
 }
 
 func GetContinentAndCountryEicDateV2(date string) (data []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? and (type='continent' OR type='country') "
-	_, err = o.Raw(sql, date).QueryRows(&data)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&data).Error
 	return
 }
 
 func GetSSOAndFacEicDateV2(date, name string) (data []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? and (type='sso' OR type='fac') "
-	_, err = o.Raw(sql, date).QueryRows(&data)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, date).Find(&data).Error
 	return
 }
 
@@ -803,4 +805,4 @@ func GetFirstBaseFromTradeIndexByDate(exchange string) (item *BaseFromTradeShang
 	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where rank < 50 order by data_time asc"
 	err = o.Raw(sql).QueryRow(&item)
 	return
-}
+}

+ 5 - 5
models/data_manage/chart_classify.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -25,7 +25,7 @@ type ChartClassify struct {
 }
 
 func (m *ChartClassify) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -35,7 +35,7 @@ func (m *ChartClassify) GetItemsByCondition(cond string, pars []interface{}, fie
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM chart_classify WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
@@ -78,8 +78,8 @@ type ChartClassifyView struct {
 }
 
 func GetChartClassifyViewById(classifyId int) (item *ChartClassifyView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM chart_classify WHERE chart_classify_id=? `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Scan(&item).Error
 	return
 }

+ 18 - 19
models/data_manage/chart_edb_mapping.go

@@ -1,9 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type ChartEdbInfoMapping struct {
@@ -46,33 +45,33 @@ type ChartEdbInfoMapping struct {
 	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"`
-	ChartScale        float64   `description:"参考刻度线"`
-	IsConvert         int       `description:"是否数据转换 0不转 1转"`
-	ConvertType       int       `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue      float64   `description:"数据转换值"`
-	ConvertUnit       string    `description:"数据转换单位"`
-	ConvertEnUnit     string    `description:"数据转换单位"`
+	IsNullData          bool    `json:"-" description:"是否空数据"`
+	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
+	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
+	ClassifyId          int     `description:"分类id"`
+	ChartScale          float64 `description:"参考刻度线"`
+	IsConvert           int     `description:"是否数据转换 0不转 1转"`
+	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64 `description:"数据转换值"`
+	ConvertUnit         string  `description:"数据转换单位"`
+	ConvertEnUnit       string  `description:"数据转换单位"`
 }
 
 func GetChartEdbMappingList(chartInfoIds []int) (mappingList []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
-	
+	//o := orm.NewOrmUsingDB("data")
+
 	sql := `
-		SELECT * FROM chart_edb_mapping WHERE chart_info_id in (`+utils.GetOrmInReplace(len(chartInfoIds))+`)
+		SELECT * FROM chart_edb_mapping WHERE chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `)
 	`
-	_, err = o.Raw(sql, chartInfoIds).QueryRows(&mappingList)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, chartInfoIds).Find(&mappingList).Error
 	return
 }
 
 func GetChartEdbMappingListByChartInfoId(chartInfoId int) (mappingList []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `
 		SELECT * FROM chart_edb_mapping WHERE chart_info_id = ?
 	`
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&mappingList)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, chartInfoId).Find(&mappingList).Error
 	return
-}
+}

+ 13 - 14
models/data_manage/chart_info.go

@@ -1,12 +1,12 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
 	"strings"
 	"time"
 
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
@@ -45,7 +45,7 @@ type ChartInfo struct {
 }
 
 func (m *ChartInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -55,19 +55,19 @@ func (m *ChartInfo) GetItemsByCondition(cond string, pars []interface{}, fieldAr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
 func (m *ChartInfo) GetItemTotal(cond string, pars []interface{}) (total int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT COUNT(*) FROM chart_info WHERE 1=1 %s`, cond)
-	err = o.Raw(sql, pars).QueryRow(&total)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&total).Error
 	return
 }
 
 func (m *ChartInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -78,14 +78,14 @@ func (m *ChartInfo) GetItemsPageByCondition(cond string, pars []interface{}, fie
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
 	sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
 func (m *ChartInfo) GetItemByCode(code string) (item *ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM chart_info WHERE unique_code = ? LIMIT 1`)
-	err = o.Raw(sql, code).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, code).Scan(&item).Error
 	return
 }
 
@@ -480,17 +480,16 @@ type ChartDetailApiResponse struct {
 	Data   *ChartInfoDetailResp
 }
 
-
 func GetChartInfoByUniqueCode(uniqueCode string) (chartInfo *ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
-	
+	//o := orm.NewOrmUsingDB("data")
+
 	sql := `
 		SELECT * FROM chart_info WHERE unique_code = ?
 	`
-	err = o.Raw(sql, uniqueCode).QueryRow(&chartInfo)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, uniqueCode).Scan(&chartInfo).Error
 	if err != nil {
 		return nil, err
 	}
-	
+
 	return chartInfo, nil
 }

+ 4 - 2
models/data_manage/com_trade_country.go

@@ -1,6 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -35,8 +37,8 @@ type ComTradeCountryItem struct {
 
 // GetComTradeCountryItemAll 获取所有的国家
 func GetComTradeCountryItemAll() (list []*ComTradeCountryItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_country`
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
 	return
 }

+ 6 - 5
models/data_manage/com_trade_data.go

@@ -1,7 +1,8 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
@@ -61,24 +62,24 @@ type ComTradeDataListResp struct {
 
 // GetComTradeListCount 获取指标数据汇总数
 func GetComTradeListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT COUNT(1) AS count FROM com_trade_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 // GetComTradeList 获取指标数据列表
 func GetComTradeList(condition string, pars []interface{}, startSize, pageSize int, orderBy string) (list []*ComTradeDataListItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY ` + orderBy
 	sql += `  limit ?,? `
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, startSize, pageSize).Find(&list).Error
 	return
 }

+ 9 - 9
models/data_manage/com_trade_index.go

@@ -1,8 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
@@ -18,13 +18,13 @@ type ComTradeIndex struct {
 
 // GetComTradeIndexList 获取指标数据列表
 func GetComTradeIndexList(condition string, pars []interface{}) (list []*ComTradeIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_index WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY com_trade_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&list).Error
 	return
 }
 
@@ -34,17 +34,17 @@ func GetComTradeIndexByIdList(idList []int) (list []*ComTradeIndex, err error) {
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_index WHERE com_trade_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, idList).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, idList).Find(&list).Error
 	return
 }
 
 // GetAllComTradeIndexList 获取指标数据列表
 func GetAllComTradeIndexList() (list []*ComTradeIndex, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_index  ORDER BY com_trade_id DESC `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
 	return
 }
 
@@ -59,8 +59,8 @@ type ComTradeCodeMapping struct {
 
 // GetComTradeIndex 根据指标code获取指标信息
 func GetComTradeIndex(indexCode string) (item *ComTradeCodeMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM com_trade_code_mapping WHERE code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&item).Error
 	return
 }

+ 3 - 3
models/data_manage/edb_classify.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -26,7 +26,7 @@ type EdbClassify struct {
 }
 
 func (m *EdbClassify) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -36,7 +36,7 @@ func (m *EdbClassify) GetItemsByCondition(cond string, pars []interface{}, field
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_classify WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 

+ 3 - 3
models/data_manage/edb_data.go

@@ -1,10 +1,10 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/models/mgo"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"go.mongodb.org/mongo-driver/bson"
 	"strings"
 	"time"
@@ -218,7 +218,7 @@ func (m *EdbData) getItemsBySourceAndCodeByMysql(source, subSource int, edbCode,
 		return
 	}
 
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -235,7 +235,7 @@ func (m *EdbData) getItemsBySourceAndCodeByMysql(source, subSource int, edbCode,
 		pars = append(pars, startDate)
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE %s %s`, fields, tableName, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 

+ 20 - 11
models/data_manage/edb_data_wind.go

@@ -1,33 +1,42 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 )
 
 func EdbInfoUpdateStatusByEdbInfoId(edbInfoIds []int, isStop int, calculateEdbInfoIds []int) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
-	}
+	//o, err := orm.NewOrmUsingDB("data").Begin()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	if err != nil {
+	//		_ = o.Rollback()
+	//		return
+	//	}
+	//	_ = o.Commit()
+	//}()
+
+	tx := global.DbMap[utils.DbNameIndex].Begin()
 	defer func() {
 		if err != nil {
-			_ = o.Rollback()
-			return
+			tx.Rollback()
+		} else {
+			tx.Commit()
 		}
-		_ = o.Commit()
 	}()
 
 	// 更改指标的更新状态
 	if len(edbInfoIds) == 1 {
 		sql := ` UPDATE edb_info SET no_update = ? WHERE edb_info_id=? `
-		_, err = o.Raw(sql, isStop, edbInfoIds[0]).Exec()
+		err = tx.Exec(sql, isStop, edbInfoIds[0]).Error
 		if err != nil {
 			return
 		}
 	} else {
 		sql := ` UPDATE edb_info SET no_update = ? WHERE edb_info_id IN (` + utils.GetOrmInReplace(len(edbInfoIds)) + `) `
-		_, err = o.Raw(sql, isStop, edbInfoIds).Exec()
+		err = tx.Exec(sql, isStop, edbInfoIds).Error
 		if err != nil {
 			return
 		}
@@ -36,7 +45,7 @@ func EdbInfoUpdateStatusByEdbInfoId(edbInfoIds []int, isStop int, calculateEdbIn
 	if len(calculateEdbInfoIds) > 0 {
 		// 批量更新相关联的指标ID
 		sql := ` UPDATE edb_info SET no_update = ? WHERE edb_info_id IN (` + utils.GetOrmInReplace(len(calculateEdbInfoIds)) + `) `
-		_, err = o.Raw(sql, isStop, calculateEdbInfoIds).Exec()
+		err = tx.Exec(sql, isStop, calculateEdbInfoIds).Error
 		if err != nil {
 			return
 		}

+ 17 - 17
models/data_manage/edb_info.go

@@ -1,12 +1,12 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
 	"strings"
 	"time"
 
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
@@ -58,7 +58,7 @@ type EdbInfo struct {
 }
 
 func (m *EdbInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -68,12 +68,12 @@ func (m *EdbInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_info WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
 func (m *EdbInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -84,28 +84,28 @@ func (m *EdbInfo) GetItemsPageByCondition(cond string, pars []interface{}, field
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_info WHERE 1=1 %s %s`, fields, cond, order)
 	sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 
 func (m *EdbInfo) GetItemsTotal(cond string, pars []interface{}) (total int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT COUNT(*) FROM edb_info WHERE 1=1 %s`, cond)
-	err = o.Raw(sql, pars).QueryRow(&total)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&total).Error
 	return
 }
 
 func (m *EdbInfo) GetItemByUniCode(code string) (item *EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM edb_info WHERE unique_code = ? LIMIT 1`)
-	err = o.Raw(sql, code).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, code).Scan(&item).Error
 	return
 }
 
 func (m *EdbInfo) GetItemByEdbCode(code string) (item *EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT * FROM edb_info WHERE edb_code = ? LIMIT 1`)
-	err = o.Raw(sql, code).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, code).Scan(&item).Error
 	return
 }
 
@@ -214,9 +214,9 @@ type TraceEdbInfoResp struct {
 }
 
 func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoId).Scan(&item).Error
 	return
 }
 
@@ -226,9 +226,9 @@ func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoIdList).Find(&items).Error
 	return
 }
 
@@ -238,9 +238,9 @@ func GetEdbInfoByEdbCodeList(source int, edbCodeList []string) (items []*EdbInfo
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM edb_info WHERE source=? AND edb_code in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, source, edbCodeList).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, source, edbCodeList).Scan(&items).Error
 	return
 }
 

+ 6 - 4
models/data_manage/edb_info_calculate_mapping.go

@@ -1,6 +1,8 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -92,21 +94,21 @@ type EdbInfoCalculateMappingInfo struct {
 
 // GetEdbInfoCalculateMappingListByEdbInfoId 根据生成的指标id获取来源的指标id列表
 func GetEdbInfoCalculateMappingListByEdbInfoId(edbInfoId int) (items []*EdbInfoCalculateMappingInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	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 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 = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoId).Find(&items).Error
 	return
 }
 
 func GetRelationEdbInfoListMappingByCondition(condition string, pars []interface{}) (item []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	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 = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&item).Error
 	return
 }

+ 5 - 5
models/data_manage/edb_source.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 )
 
@@ -27,7 +27,7 @@ type EdbSource struct {
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
 func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -37,15 +37,15 @@ 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")
+	//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).Scan(&item).Error
 	return
 }
 

+ 31 - 31
models/data_manage/eta_business_chart_permission.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
 	"time"
@@ -27,12 +28,12 @@ func (m *EtaBusinessChartPermission) TableName() string {
 
 type BusinessChartInfoView struct {
 	ChartInfoId int
-	ChartName string
-	UniqueCode string	
+	ChartName   string
+	UniqueCode  string
 	Description []string
 	EdbInfoList []*BusinessChartEdbListItem
 }
-	
+
 // GetChartListByBusinessCode 根据商家编码获取图表列表
 func (m *EtaBusinessChartPermission) GetChartListByBusinessCode(businessCode string, startSize int, pageSize int) ([]*BusinessChartInfoView, error) {
 	if businessCode == "" {
@@ -40,7 +41,7 @@ func (m *EtaBusinessChartPermission) GetChartListByBusinessCode(businessCode str
 	}
 
 	var chartList []*BusinessChartInfoView
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 
 	// 构建SQL查询
 	sql := `
@@ -57,7 +58,7 @@ func (m *EtaBusinessChartPermission) GetChartListByBusinessCode(businessCode str
 		LIMIT ?, ?
 	`
 
-	_, err := o.Raw(sql, businessCode, startSize, pageSize).QueryRows(&chartList)
+	err := global.DbMap[utils.DbNameIndex].Raw(sql, businessCode, startSize, pageSize).Find(&chartList).Error
 	if err != nil {
 		return nil, fmt.Errorf("failed to get chart list: %v", err)
 	}
@@ -66,7 +67,7 @@ func (m *EtaBusinessChartPermission) GetChartListByBusinessCode(businessCode str
 }
 
 func (m *EtaBusinessChartPermission) GetChartListByBusinessCodeTotal(businessCode string) (int64, error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `
 		SELECT COUNT(*) FROM eta_business_chart_permission p
 		JOIN 
@@ -75,7 +76,7 @@ func (m *EtaBusinessChartPermission) GetChartListByBusinessCodeTotal(businessCod
 			p.business_code = ?
 	`
 	var total int64
-	err := o.Raw(sql, businessCode).QueryRow(&total)
+	err := global.DbMap[utils.DbNameIndex].Raw(sql, businessCode).Scan(&total)
 	if err != nil {
 		return 0, fmt.Errorf("failed to get chart list total: %v", err)
 	}
@@ -84,7 +85,7 @@ func (m *EtaBusinessChartPermission) GetChartListByBusinessCodeTotal(businessCod
 
 // GetChartInfoByUniqueCode 根据唯一编码获取图表信息
 func (m *EtaBusinessChartPermission) GetChartInfoByUniqueCode(businessCode string, uniqueCode string) (chartInfo *BusinessChartInfoView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `
 		SELECT 
 			c.chart_info_id, c.chart_name, c.unique_code
@@ -95,7 +96,7 @@ func (m *EtaBusinessChartPermission) GetChartInfoByUniqueCode(businessCode strin
 		WHERE 
 			p.business_code = ? AND c.unique_code = ?
 	`
-	err = o.Raw(sql, businessCode, uniqueCode).QueryRow(&chartInfo)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, businessCode, uniqueCode).Scan(&chartInfo).Error
 	return
 }
 
@@ -104,9 +105,8 @@ func init() {
 	orm.RegisterModel(new(EtaBusinessChartPermission))
 }
 
-
 type BusinessChartInfoResp struct {
-	List []*BusinessChartInfoView
+	List   []*BusinessChartInfoView
 	Paging *paging.PagingItem
 }
 
@@ -115,17 +115,17 @@ type BusinessChartEdbListResp struct {
 }
 
 type BusinessChartEdbListItem struct {
-	EdbInfoId int
-	EdbCode string
-	EdbName string
+	EdbInfoId   int
+	EdbCode     string
+	EdbName     string
 	EdbInfoType int
-	Frequency string
-	Unit string
-	EndDate string
-	EndValue float64
-	LatestDate string
+	Frequency   string
+	Unit        string
+	EndDate     string
+	EndValue    float64
+	LatestDate  string
 	LatestValue float64
-	UniqueCode string
+	UniqueCode  string
 }
 
 type ChartDescription struct {
@@ -135,27 +135,27 @@ type ChartDescription struct {
 
 // 查询图表描述列表
 func (m *EtaBusinessChartPermission) GetChartDescriptionListByChartInfoIds(chartInfoIds []int) (list []*ChartDescription, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `
-		SELECT * FROM chart_description WHERE chart_info_id IN (`+utils.GetOrmInReplace(len(chartInfoIds))+`) ORDER BY id DESC
+		SELECT * FROM chart_description WHERE chart_info_id IN (` + utils.GetOrmInReplace(len(chartInfoIds)) + `) ORDER BY id DESC
 	`
-	_, err = o.Raw(sql, chartInfoIds).QueryRows(&list)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, chartInfoIds).Find(&list).Error
 	return list, err
 }
 
 func (m *EtaBusinessChartPermission) GetChartDescriptionListByChartInfoId(chartInfoId int) (list []*ChartDescription, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `
 		SELECT * FROM chart_description WHERE chart_info_id = ? ORDER BY id DESC
 	`
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
-	return 
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, chartInfoId).Find(&list).Error
+	return
 }
 
 type BusinessChartDetailResp struct {
 	ChartInfoId int
-	ChartName string
-	UniqueCode string	
+	ChartName   string
+	UniqueCode  string
 	Description []string
 	EdbInfoList []TraceEdbInfoMoreResp
 }
@@ -166,7 +166,7 @@ func (m *EtaBusinessChartPermission) GetChartCountByBusinessCodeAndEdbInfoId(bus
 		return 0, fmt.Errorf("business code cannot be empty")
 	}
 
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 
 	// 构建SQL查询
 	sql := `
@@ -180,6 +180,6 @@ func (m *EtaBusinessChartPermission) GetChartCountByBusinessCodeAndEdbInfoId(bus
 			p.business_code = ? AND c.edb_info_id = ?
 	`
 
-	err = o.Raw(sql, businessCode, edbInfoId).QueryRow(&count)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, businessCode, edbInfoId).Scan(&count).Error
 	return
-}
+}

+ 3 - 3
models/data_manage/variety.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -22,7 +22,7 @@ type Variety struct {
 }
 
 func (m *Variety) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*Variety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -32,7 +32,7 @@ func (m *Variety) GetItemsByCondition(cond string, pars []interface{}, fieldArr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM variety WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 

+ 3 - 3
models/data_manage/variety_edb_info.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -25,7 +25,7 @@ type VarietyEdbInfo struct {
 }
 
 func (m *VarietyEdbInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*VarietyEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -35,7 +35,7 @@ func (m *VarietyEdbInfo) GetItemsByCondition(cond string, pars []interface{}, fi
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM variety_edb_info WHERE 1=1 %s %s`, fields, cond, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
 	return
 }
 

+ 1 - 1
models/db.go

@@ -11,7 +11,7 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 )
 
-func init() {
+func init2() {
 	// eta_master
 	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
 	orm.SetMaxIdleConns("default", 50)

+ 4 - 2
models/document_manage_model/outside_report.go

@@ -2,6 +2,8 @@
 package document_manage_model
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
@@ -51,7 +53,7 @@ func init() {
 
 // SaveOutsideReport 保存报告
 func SaveOutsideReport(outsideReport OutsideReport) (id int64, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	id, err = o.Insert(&outsideReport)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.DbNameReport].Create(&outsideReport).Error
 	return
 }

+ 5 - 2
models/document_manage_model/outside_report_attachment.go

@@ -2,6 +2,8 @@
 package document_manage_model
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 )
 
@@ -21,6 +23,7 @@ func init() {
 
 // SaveOutsideReportAttachment 保存附件
 func SaveOutsideReportAttachment(attachment *OutsideReportAttachment) (int64, error) {
-	o := orm.NewOrmUsingDB("rddp")
-	return o.Insert(attachment)
+	//o := orm.NewOrmUsingDB("rddp")
+	err := global.DbMap[utils.DbNameReport].Create(attachment).Error
+	return int64(attachment.OutsideReportAttachmentId), err
 }

+ 30 - 29
models/en_classify_permission.go

@@ -1,9 +1,9 @@
 package models
 
 import (
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
+	"fmt"
 	"strings"
 	"time"
 )
@@ -32,53 +32,53 @@ func (m *EnClassifyPermission) TableName() string {
 }
 
 func (m *EnClassifyPermission) Create() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	id, err := o.Insert(m)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Create(m).Error
 	if err != nil {
 		return
 	}
-	m.EnClassifyPermissionId = int(id)
+	//m.EnClassifyPermissionId = int(id)
 	return
 }
 
 func (m *EnClassifyPermission) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *EnClassifyPermission) Del() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
-	_, err = o.Raw(sql, m.EnClassifyPermissionId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, m.EnClassifyPermissionId).Error
 	return
 }
 
 func (m *EnClassifyPermission) GetItemById(id int) (item *EnClassifyPermission, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }
 
 func (m *EnClassifyPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnClassifyPermission, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
 	sql += condition
 	sql += ` LIMIT 1`
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Scan(&item).Error
 	return
 }
 
 func (m *EnClassifyPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *EnClassifyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnClassifyPermission, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -88,12 +88,12 @@ func (m *EnClassifyPermission) GetItemsByCondition(condition string, pars []inte
 		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 = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *EnClassifyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnClassifyPermission, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -104,23 +104,24 @@ func (m *EnClassifyPermission) GetPageItemsByCondition(startSize, pageSize int,
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
 	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = o.Raw(totalSql, pars).QueryRow(&total); err != nil {
+	if err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(totalSql, pars...).Scan(&total).Error; err != nil {
 		return
 	}
 	sql += ` LIMIT ?,?`
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func ClearAndCreateEnClassifyPermissions(classifyId int, permissions []*EnClassifyPermission) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `DELETE FROM en_classify_permission WHERE en_classify_id = ?`
-	if _, e := o.Raw(sql, classifyId).Exec(); e != nil {
+	if e := global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, classifyId).Error; e != nil {
 		err = fmt.Errorf("delete err: %s", e.Error())
 		return
 	}
 	if len(permissions) > 0 {
-		if _, e := o.InsertMulti(len(permissions), permissions); e != nil {
+		if e := global.DbMap[utils.MYSQL_URL_RDDP].CreateInBatches(permissions, len(permissions)).Error; e != nil {
 			err = fmt.Errorf("insert multi err: %s", e.Error())
 			return
 		}
@@ -138,30 +139,30 @@ func GetEnglishReportIdsByEnPermissionIds(permissionIds []int) (reportIds []int,
 	if len(permissionIds) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT id FROM english_report WHERE classify_id_second IN (
 				SELECT DISTINCT en_classify_id FROM en_classify_permission WHERE en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `)
 			)`
-	_, err = o.Raw(sql, permissionIds).QueryRows(&reportIds)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, permissionIds).Find(&reportIds).Error
 	return
 }
 
 // GetEnPermissionIdsByEnglishReportId 获取英文报告权限IDs
 func GetEnPermissionIdsByEnglishReportId(reportId int) (permissionIds []int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
 				SELECT classify_id_second FROM english_report WHERE id = ?
 			)`
-	_, err = o.Raw(sql, reportId).QueryRows(&permissionIds)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, reportId).Find(&permissionIds).Error
 	return
 }
 
 // GetEnPermissionIdsByEnglishVideoId 获取英文视频权限IDs
 func GetEnPermissionIdsByEnglishVideoId(videoId int) (permissionIds []int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
 				SELECT classify_id_second FROM english_video WHERE id = ?
 			)`
-	_, err = o.Raw(sql, videoId).QueryRows(&permissionIds)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, videoId).Find(&permissionIds).Error
 	return
 }

+ 34 - 31
models/english_report.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
@@ -46,27 +46,27 @@ type EnglishReport struct {
 }
 
 func (m *EnglishReport) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *EnglishReport) GetItemById(id int) (item *EnglishReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM english_report WHERE id = ? LIMIT 1`
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }
 
 func (m *EnglishReport) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM english_report WHERE 1=1 %s`, condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *EnglishReport) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnglishReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -76,12 +76,12 @@ func (m *EnglishReport) GetItemsByCondition(condition string, pars []interface{}
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM english_report WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *EnglishReport) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*EnglishReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -91,7 +91,10 @@ func (m *EnglishReport) GetPageItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM english_report WHERE 1=1 %s %s LIMIT ?,?`, fields, condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+
+	pars = append(pars, startSize, pageSize)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
@@ -186,16 +189,16 @@ type ElasticEnglishReportDetail struct {
 }
 
 type EnglishClassifyList struct {
-	Id            int       `orm:"column(id);pk"`
-	ClassifyName  string    `description:"分类名称"`
-	Sort          int       `description:"排序"`
-	ParentId      int       `description:"父级分类id"`
-	RootId        int       `description:"一级分类ID"`
+	Id            int    `orm:"column(id);pk"`
+	ClassifyName  string `description:"分类名称"`
+	Sort          int    `description:"排序"`
+	ParentId      int    `description:"父级分类id"`
+	RootId        int    `description:"一级分类ID"`
 	CreateTime    string `description:"创建时间"`
 	ModifyTime    string `description:"修改时间"`
-	ClassifyLabel string    `description:"分类标签"`
-	ShowType      int       `json:"-" description:"展示类型:1-列表 2-专栏"`
-	IsShow        int       `json:"-" description:"是否在小程序显示:1-显示 0-隐藏"`
+	ClassifyLabel string `description:"分类标签"`
+	ShowType      int    `json:"-" description:"展示类型:1-列表 2-专栏"`
+	IsShow        int    `json:"-" description:"是否在小程序显示:1-显示 0-隐藏"`
 	//ClassifyType  int       `description:"分类类型:0英文报告,1英文线上路演"`
 	EnPermissions []int `description:"英文权限IDs"`
 	Child         []*EnglishClassifyList
@@ -209,7 +212,7 @@ type EnglishClassifyListResp struct {
 // GetEnglishClassifyRootId 获取一级分类列表
 func GetEnglishClassifyRootId(startSize, pageSize int, keyword string) (items []*EnglishClassifyList, err error) {
 	sql := ``
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	if keyword != "" {
 		sql = `SELECT * FROM (
 			                   SELECT * FROM english_classify
@@ -221,17 +224,17 @@ func GetEnglishClassifyRootId(startSize, pageSize int, keyword string) (items []
                    )AS t
                    ORDER BY sort ASC,create_time ASC
                    LIMIT ?,? `
-		_, err = o.Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword), startSize, pageSize).QueryRows(&items)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword), startSize, pageSize).Find(&items).Error
 	} else {
 		sql = `SELECT * FROM english_classify WHERE parent_id=0 ORDER BY sort ASC,create_time ASC LIMIT ?,? `
-		_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, startSize, pageSize).Find(&items).Error
 	}
 	return
 }
 
 func GetEnglishClassifyListCount(keyword string) (count int, err error) {
 	sqlCount := ``
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	if keyword != "" {
 		sqlCount = `SELECT  COUNT(1) AS count FROM (
                SELECT * FROM english_classify
@@ -241,10 +244,10 @@ func GetEnglishClassifyListCount(keyword string) (count int, err error) {
                WHERE id IN(SELECT parent_id FROM english_classify
                WHERE parent_id>0 AND classify_name LIKE ?)
                )AS t `
-		err = o.Raw(sqlCount, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).QueryRow(&count)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sqlCount, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).Scan(&count).Error
 	} else {
 		sqlCount = `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=0`
-		err = o.Raw(sqlCount).QueryRow(&count)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sqlCount).Scan(&count).Error
 	}
 
 	return
@@ -254,7 +257,7 @@ func GetEnglishClassifyListByRootId(rootIds []int, keyword string) (items []*Eng
 	sql := ``
 	pars := make([]interface{}, 0)
 
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	if keyword != "" {
 		sql = `SELECT
 	a.*
@@ -265,10 +268,10 @@ FROM
 	WHERE a.parent_id>0 and a.classify_name LIKE ? and a.root_id IN (` + utils.GetOrmInReplace(len(rootIds)) + `)`
 		pars = append(pars, utils.GetLikeKeyword(keyword))
 		pars = append(pars, rootIds)
-		_, err = o.Raw(sql, pars).QueryRows(&items)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	} else {
 		sql = `SELECT * FROM english_classify WHERE parent_id>0 and root_id IN (` + utils.GetOrmInReplace(len(rootIds)) + `) `
-		_, err = o.Raw(sql, rootIds).QueryRows(&items)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, rootIds).Find(&items).Error
 	}
 	return
 }
@@ -288,9 +291,9 @@ func (m RSChildClassifyList) Swap(i, j int) {
 }
 
 func GetEnglishClassifyChildByIds(ids []int) (items []*EnglishClassifyList, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM english_classify WHERE id IN (` + utils.GetOrmInReplace(len(ids)) + `) ORDER BY create_time ASC `
-	_, err = o.Raw(sql, ids).QueryRows(&items)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, ids).Find(&items).Error
 	return
 }
 
@@ -306,4 +309,4 @@ func (m RSClassifyList) Less(i, j int) bool {
 
 func (m RSClassifyList) Swap(i, j int) {
 	m[i], m[j] = m[j], m[i]
-}
+}

+ 6 - 3
models/permission.go

@@ -1,6 +1,9 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
+)
 
 type ChartPermissionMappingIdName struct {
 	PermissionId   int
@@ -8,8 +11,8 @@ type ChartPermissionMappingIdName struct {
 }
 
 func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (list []*ChartPermissionMappingIdName, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//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)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, source, classifyId).Find(&list).Error
 	return
 }

+ 58 - 54
models/report.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
@@ -108,23 +109,25 @@ func GetReportListCount(condition string, pars []interface{}, companyType string
 		companyTypeSqlStr = " AND classify_id_first = 40 "
 	}
 
-	oRddp := orm.NewOrmUsingDB("rddp")
+	//oRddp := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT COUNT(1) AS count  FROM report WHERE 1=1 ` + companyTypeSqlStr
 	if condition != "" {
 		sql += condition
 	}
-	err = oRddp.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func GetReportList(condition string, pars []interface{}, startSize, pageSize int) (items []*Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM report WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY FIELD(state,3,1,4,5,6,2), modify_time DESC LIMIT ?,?`
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
@@ -133,30 +136,30 @@ func PublishReport(reportIds []int) (err error) {
 	if len(reportIds) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE report SET state=2,publish_time=now(),modify_time=NOW() WHERE id IN (` + utils.GetOrmInReplace(len(reportIds)) + `)`
-	_, err = o.Raw(sql).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql).Error
 	return
 }
 
 // PublishCancleReport 取消发布报告
 func PublishCancleReport(reportIds int, publishTimeNullFlag bool) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	var sql string
 	if publishTimeNullFlag {
 		sql = ` UPDATE report SET state=1, publish_time=null, pre_publish_time=null, pre_msg_send=0 WHERE id =?`
 	} else {
 		sql = ` UPDATE report SET state=1, pre_publish_time=null, pre_msg_send=0 WHERE id =?`
 	}
-	_, err = o.Raw(sql, reportIds).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, reportIds).Error
 	return
 }
 
 // 删除报告
 func DeleteReport(reportIds int) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ` DELETE FROM report WHERE id =? `
-	_, err = o.Raw(sql, reportIds).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, reportIds).Error
 	return
 }
 
@@ -190,34 +193,34 @@ type ReportDetail struct {
 }
 
 func GetReportById(reportId int) (item *Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM report WHERE id=?`
-	err = o.Raw(sql, reportId).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, reportId).Scan(&item).Error
 	return
 }
 
 func GetReportStage(classifyIdFirst, classifyIdSecond int) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ``
 	if classifyIdSecond > 0 {
 		sql = "SELECT MAX(stage) AS max_stage FROM report WHERE classify_id_second=? "
-		o.Raw(sql, classifyIdSecond).QueryRow(&count)
+		global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyIdSecond).Scan(&count)
 	} else {
 		sql = "SELECT MAX(stage) AS max_stage FROM report WHERE classify_id_first=? "
-		o.Raw(sql, classifyIdFirst).QueryRow(&count)
+		global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyIdFirst).Scan(&count)
 	}
 	return
 }
 
 func GetReportStageEdit(classifyIdFirst, classifyIdSecond, reportId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ``
 	if classifyIdSecond > 0 {
 		sql = "SELECT MAX(stage) AS max_stage FROM report WHERE classify_id_second=? AND id<>? "
-		o.Raw(sql, classifyIdSecond, reportId).QueryRow(&count)
+		global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyIdSecond, reportId).Scan(&count)
 	} else {
 		sql = "SELECT MAX(stage) AS max_stage FROM report WHERE classify_id_first=? AND id<>? "
-		o.Raw(sql, classifyIdFirst, reportId).QueryRow(&count)
+		global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyIdFirst, reportId).Scan(&count)
 	}
 	return
 }
@@ -289,7 +292,7 @@ type EditResp struct {
 }
 
 func EditReport(item *Report, reportId int64) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE report
 			SET
 			  classify_id_first =?,
@@ -307,8 +310,8 @@ func EditReport(item *Report, reportId int64) (err error) {
 			  create_time = ?,
 			  modify_time = ?
 			WHERE id = ? `
-	_, err = o.Raw(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
-		item.Abstract, item.Author, item.Frequency, item.State, item.Content, item.ContentSub, item.Stage, item.CreateTime, time.Now(), reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
+		item.Abstract, item.Author, item.Frequency, item.State, item.Content, item.ContentSub, item.Stage, item.CreateTime, time.Now(), reportId).Error
 	return
 }
 
@@ -326,23 +329,23 @@ type SendTemplateMsgReq struct {
 }
 
 func ModifyReportVideo(reportId int, videoUrl, videoName, videoSize string, playSeconds float64) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	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 = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, videoUrl, videoName, playSeconds, videoSize, reportId).Error
 	return
 }
 
 func EditReportContent(reportId int, content, contentSub string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ` UPDATE report SET content=?,content_sub=?,modify_time=NOW() WHERE id=? `
-	_, err = o.Raw(sql, content, contentSub, reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, content, contentSub, reportId).Error
 	return
 }
 
 func AddReportSaveLog(reportId, adminId int, content, contentSub, adminName string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ` INSERT INTO report_save_log(report_id, content,content_sub,admin_id,admin_name) VALUES (?,?,?,?,?) `
-	_, err = o.Raw(sql, reportId, content, contentSub, adminId, adminName).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, reportId, content, contentSub, adminId, adminName).Error
 	return
 }
 
@@ -351,75 +354,75 @@ type SaveReportContentResp struct {
 }
 
 func ModifyReportCode(reportId int64, reportCode string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE report SET report_code=? WHERE id=? `
-	_, err = o.Raw(sql, reportCode, reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, reportCode, reportId).Error
 	return
 }
 
 func ModifyReportThsMsgIsSend(item *ReportDetail) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	if item.ThsMsgIsSend == 0 {
 		sql := `UPDATE report SET ths_msg_is_send = 1 WHERE id = ? `
-		_, err = o.Raw(sql, item.Id).Exec()
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, item.Id).Error
 	}
 	return
 }
 
 // GetDayWeekReportStage 获取晨报周报期数
 func GetDayWeekReportStage(classifyIdFirst int, yearStart time.Time) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := " SELECT MAX(stage) AS max_stage FROM report WHERE classify_id_first = ? AND create_time > ? "
-	o.Raw(sql, classifyIdFirst, yearStart).QueryRow(&count)
+	global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyIdFirst, yearStart).Scan(&count)
 
 	return
 }
 
 // GetReportByReportId 主键获取报告
 func GetReportByReportId(reportId int) (item *Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM report WHERE id = ?`
-	err = o.Raw(sql, reportId).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, reportId).Scan(&item).Error
 	return
 }
 
 // 发布报告
 func PublishReportById(reportId, state int, publishTime time.Time) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE report SET state = ?, publish_time = ?, pre_publish_time = null, pre_msg_send=0, modify_time = NOW() WHERE id = ? `
-	_, err = o.Raw(sql, state, publishTime, reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, state, publishTime, reportId).Error
 	return
 }
 
 func UpdateReportPublishTime(reportId int, videoNameDate string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql1 := ` UPDATE report SET publish_time = NOW() WHERE id = ?  `
-	_, err = o.Raw(sql1, reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].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 = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql2, reportId).Error
 	return
 }
 
 func UpdateReportChapterPublishTime(reportId int, videoNameDate string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql1 := ` UPDATE report_chapter SET publish_time = NOW() WHERE report_id = ? `
-	_, err = o.Raw(sql1, reportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].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 = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql2, reportId).Error
 	return
 }
 
 // GetReportByCondition 获取报告
 func GetReportByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, isPage bool, startSize, pageSize int) (items []*Report, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := `*`
 	if len(fieldArr) > 0 {
 		fields = strings.Join(fieldArr, ",")
@@ -433,9 +436,10 @@ func GetReportByCondition(condition string, pars []interface{}, fieldArr []strin
 	sql += order
 	if isPage {
 		sql += ` LIMIT ?,?`
-		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+		pars = append(pars, startSize, pageSize)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	} else {
-		_, err = o.Raw(sql, pars).QueryRows(&items)
+		err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	}
 	return
 }
@@ -568,8 +572,8 @@ type ReportApproveReq struct {
 
 // UpdateReport 更新报告
 func (m *Report) UpdateReport(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Select(cols).Updates(m).Error
 	return
 }
 
@@ -601,8 +605,8 @@ func GetClassifyList(startSize, pageSize int, keyWord, companyType string) (item
 	}
 	pars = append(pars, startSize, pageSize)
 
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, pars...).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -631,8 +635,8 @@ func GetClassifyListCount(keyWord, companyType string) (count int, err error) {
 	} else {
 		sqlCount = `SELECT COUNT(1) AS count FROM classify WHERE parent_id=0 ` + companyTypeSqlStr
 	}
-	o := orm.NewOrmUsingDB("rddp")
-	err = o.Raw(sqlCount, pars...).QueryRow(&count)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sqlCount, pars...).Scan(&count).Error
 	return
 }
 
@@ -659,7 +663,7 @@ func GetClassifyListByKeywordV2(keyWord string, enabled int) (items []*ClassifyL
 	}
 	sql += ` ORDER BY sort ASC, create_time ASC`
 
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Raw(sql, pars...).QueryRows(&items)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 19 - 9
models/report/report_chapter_permission_mapping.go

@@ -1,6 +1,7 @@
 package report
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
@@ -24,28 +25,37 @@ 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 := orm.NewOrmUsingDB("rddp")
+	//to, err := o.Begin()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	if err != nil {
+	//		_ = to.Rollback()
+	//	} else {
+	//		_ = to.Commit()
+	//	}
+	//}()
+
+	tx := global.DbMap[utils.DbNameReport].Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
+			tx.Rollback()
 		} else {
-			_ = to.Commit()
+			tx.Commit()
 		}
 	}()
 
 	sql := "DELETE from report_chapter_permission_mapping where report_chapter_id=?"
-	_, err = to.Raw(sql, reportChapterId).Exec()
+	err = tx.Exec(sql, reportChapterId).Error
 	if err != nil {
 		return
 	}
 
 	// 新增品种权限记录
 	if len(list) > 0 {
-		_, tmpErr := to.InsertMulti(500, list)
+		tmpErr := tx.CreateInBatches(list, 500).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 5 - 5
models/report_chapter.go

@@ -1,8 +1,8 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
@@ -45,9 +45,9 @@ type ReportChapter struct {
 
 // GetChapterListByReportId 根据ReportId获取章节列表
 func GetChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter WHERE report_id = ?  ORDER BY sort ASC`
-	_, err = o.Raw(sql, reportId).QueryRows(&list)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, reportId).Find(&list).Error
 
 	return
 }
@@ -131,9 +131,9 @@ func FormatReportChapterItem(origin *ReportChapter) (item *ReportChapterItem) {
 
 // GetPublishedChapterListByReportId 根据ReportId获取已发布章节列表
 func GetPublishedChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter WHERE report_id = ? AND publish_state = 2 ORDER BY sort ASC`
-	_, err = o.Raw(sql, reportId).QueryRows(&list)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, reportId).Find(&list).Error
 
 	return
 }

+ 4 - 3
models/report_state_record.go

@@ -1,7 +1,8 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"time"
 )
 
@@ -16,7 +17,7 @@ type ReportStateRecord struct {
 }
 
 func AddReportStateRecord(item *ReportStateRecord) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Create(item).Error
 	return
 }

+ 10 - 9
models/resource.go

@@ -1,7 +1,8 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"time"
 )
 
@@ -24,25 +25,25 @@ type ResourceResp struct {
 }
 
 func AddResource(item *Resource) (newId int64, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 
 	sql := "INSERT INTO resource(resource_url,create_time,resource_type) VALUES(?,?,?)"
-	res, err := o.Raw(sql, item.ResourceUrl, item.CreateTime, item.ResourceType).Exec()
-	if err != nil {
-		return 0, err
-	}
-	newId, err = res.LastInsertId()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, item.ResourceUrl, item.CreateTime, item.ResourceType).Error
 	if err != nil {
 		return 0, err
 	}
+	//newId, err = res.LastInsertId()
+	//if err != nil {
+	//	return 0, err
+	//}
 
 	return newId, err
 }
 
 func GetResourceById(id string) (item *Resource, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := "SELECT * FROM resource WHERE id=? "
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }
 

+ 14 - 13
models/sandbox/sandbox.go

@@ -1,7 +1,8 @@
 package sandbox
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
@@ -31,16 +32,16 @@ type SandboxItem struct {
 
 // Update 沙盘字段变更
 func (sandbox *Sandbox) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(sandbox, cols...)
+	//o := orm.NewOrmUsingDB("data")
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(sandbox).Error
 	return
 }
 
 // GetSandboxById 根据沙盘id获取沙盘详情
 func GetSandboxById(sandboxId int) (sandboxInfo *SandboxItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `select * from sandbox where sandbox_id = ? and is_delete = 0`
-	err = o.Raw(sql, sandboxId).QueryRow(&sandboxInfo)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, sandboxId).Scan(&sandboxInfo).Error
 	return
 }
 
@@ -72,7 +73,7 @@ type SandboxListItem struct {
 }
 
 func GetSandboxClassify(sandboxClassifyId int) (sandbox_classify_id string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT GROUP_CONCAT(t.sandbox_classify_id) AS sandbox_classify_id FROM (
 			SELECT a.sandbox_classify_id FROM sandbox_classify AS a 
 			WHERE a.sandbox_classify_id=?
@@ -86,7 +87,7 @@ func GetSandboxClassify(sandboxClassifyId int) (sandbox_classify_id string, err
 WHERE
 	parent_id IN ( SELECT sandbox_classify_id FROM sandbox_classify WHERE parent_id = ? )
 			)AS t`
-	err = o.Raw(sql, sandboxClassifyId, sandboxClassifyId, sandboxClassifyId).QueryRow(&sandbox_classify_id)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, sandboxClassifyId, sandboxClassifyId, sandboxClassifyId).Scan(&sandbox_classify_id).Error
 	return
 }
 
@@ -96,23 +97,23 @@ type SandboxListItems struct {
 }
 
 func GetSandboxListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*SandboxListItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	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)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, startSize, pageSize).Find(&item).Error
 	return
 }
 
 func GetSandboxListCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT COUNT(1) AS count FROM sandbox WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&count).Error
 	return
 }
 
@@ -122,7 +123,7 @@ type SandboxListResp struct {
 }
 
 func GetSandboxAllParentByClassifyId(sandboxClassifyId int) (ids string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT
 	GROUP_CONCAT(DISTINCT m.sandbox_classify_id  ORDER BY m.level) AS ids 
 FROM
@@ -154,7 +155,7 @@ FROM
 	INNER JOIN sandbox_classify m 
 WHERE
 	sandbox_classify_id = vm._id `
-	err = o.Raw(sql, sandboxClassifyId).QueryRow(&ids)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, sandboxClassifyId).Scan(&ids).Error
 	return
 }
 

+ 30 - 28
models/sandbox/sandbox_classify.go

@@ -1,6 +1,8 @@
 package sandbox
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
@@ -29,17 +31,17 @@ func AddSandboxClassify(item *SandboxClassify) (lastId int64, err error) {
 
 // GetSandboxClassifyByParentId
 func GetSandboxClassifyByParentId(parentId int) (items []*SandboxClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM sandbox_classify WHERE parent_id=? order by sort asc,sandbox_classify_id asc`
-	_, err = o.Raw(sql, parentId).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).Find(&items).Error
 	return
 }
 
 // GetSandboxClassifyAll
 func GetSandboxClassifyAll() (items []*SandboxClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM sandbox_classify WHERE parent_id<>0 order by sort asc,sandbox_classify_id asc`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
 	return
 }
 
@@ -73,17 +75,17 @@ type AddSandboxClassifyReq struct {
 }
 
 func GetSandboxClassifyCount(sandboxClassifyName string, parentId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT COUNT(1) AS count FROM sandbox_classify WHERE parent_id=? AND sandbox_classify_name=? `
-	err = o.Raw(sql, parentId, sandboxClassifyName).QueryRow(&count)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, sandboxClassifyName).Scan(&count).Error
 	return
 }
 
 // GetSandboxClassifyMaxSort 获取沙盘分类下最大的排序数
 func GetSandboxClassifyMaxSort(parentId int) (sort int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT Max(sort) AS sort FROM sandbox_classify WHERE parent_id=? `
-	err = o.Raw(sql, parentId).QueryRow(&sort)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).Scan(&sort).Error
 	return
 }
 
@@ -95,16 +97,16 @@ type EditSandboxClassifyReq struct {
 }
 
 func GetSandboxClassifyById(classifyId int) (item *SandboxClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM sandbox_classify WHERE sandbox_classify_id=? `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Scan(&item).Error
 	return
 }
 
 func EditSandboxClassify(classifyId, ChartPermissionId int, sandboxClassifyName, ChartPermissionName string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `UPDATE sandbox_classify SET sandbox_classify_name=?,chart_permission_id = ?, chart_permission_name = ?, modify_time=NOW() WHERE sandbox_classify_id=? `
-	_, err = o.Raw(sql, sandboxClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Exec()
+	err = global.DbMap[utils.DbNameIndex].Exec(sql, sandboxClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Error
 	return
 }
 
@@ -113,7 +115,7 @@ type SandboxClassifyDeleteCheckReq struct {
 }
 
 func GetSandboxInfoCountByClassifyId(classifyId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT COUNT(1) AS count FROM sandbox AS a
 				WHERE a.sandbox_classify_id IN(
 				SELECT t.sandbox_classify_id FROM 
@@ -126,7 +128,7 @@ func GetSandboxInfoCountByClassifyId(classifyId int) (count int, err error) {
 				UNION SELECT * FROM sandbox_classify WHERE sandbox_classify_id = @pid 
 				)AS t
 				) AND a.is_delete = 0 `
-	err = o.Raw(sql, classifyId).QueryRow(&count)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Scan(&count).Error
 	return
 }
 
@@ -141,7 +143,7 @@ type DeleteSandboxClassifyReq struct {
 }
 
 func DeleteSandboxClassify(classifyId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` DELETE FROM sandbox_classify
 				WHERE sandbox_classify_id IN(
 				SELECT t.sandbox_classify_id FROM
@@ -154,7 +156,7 @@ func DeleteSandboxClassify(classifyId int) (err error) {
 				UNION SELECT * FROM sandbox_classify WHERE sandbox_classify_id = @pid
 				)AS t
 				) `
-	_, err = o.Raw(sql, classifyId).Exec()
+	err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId).Error
 	return
 }
 
@@ -171,33 +173,33 @@ type MoveSandboxClassifyReq struct {
 
 // UpdateSandboxClassifySortByParentId 根据沙盘父类id更新排序
 func UpdateSandboxClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` update sandbox_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
 	if classifyId > 0 {
 		sql += ` or ( sandbox_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
 	}
-	_, err = o.Raw(sql, parentId, nowSort).Exec()
+	err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, nowSort).Error
 	return
 }
 
 // GetFirstSandboxClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
 func GetFirstSandboxClassifyByParentId(parentId int) (item *SandboxClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM sandbox_classify WHERE parent_id=? order by sort asc,sandbox_classify_id asc limit 1`
-	err = o.Raw(sql, parentId).QueryRow(&item)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).Scan(&item).Error
 	return
 }
 
 // Update 更新沙盘分类基础信息
 func (sandboxClassify *SandboxClassify) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(sandboxClassify, cols...)
+	//o := orm.NewOrmUsingDB("data")
+	err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(sandboxClassify).Error
 	return
 }
 
 // GetSandboxClassifyAndInfoByParentId
 func GetSandboxClassifyAndInfoByParentId(parentId int) (items []*SandboxClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT
 	0 AS sandbox_id,
 	sandbox_classify_id,
@@ -237,7 +239,7 @@ WHERE
 ORDER BY
 	sort ASC,
 	sandbox_classify_id ASC`
-	_, err = o.Raw(sql, parentId, parentId).QueryRows(&items)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, parentId).Find(&items).Error
 	return
 }
 
@@ -262,7 +264,7 @@ type SandboxLinkCheckResp struct {
 
 // 获取所有子级分类id
 func GetSandboxClassifySubcategories(classifyId int) (Ids string, err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := `SELECT GROUP_CONCAT(sandbox_classify_id) AS ids
 FROM (
 SELECT @pv := ? AS sandbox_classify_id
@@ -272,14 +274,14 @@ FROM sandbox_classify sc
 JOIN (SELECT @pv := ?) initial
 WHERE sc.parent_id = @pv
 ) subcategories; `
-	err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId, classifyId).Scan(&Ids).Error
 	return
 }
 
 // UpdateSandboxClassifyChartPermissionById 根据沙盘id更新品种
 func UpdateSandboxClassifyChartPermissionById(ChartPermissionId int, ChartPermissionName, Ids string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	//o := orm.NewOrmUsingDB("data")
 	sql := ` UPDATE sandbox_classify SET chart_permission_id = ?, chart_permission_name = ? WHERE sandbox_classify_id IN ( ` + Ids + ` ) `
-	_, err = o.Raw(sql, ChartPermissionId, ChartPermissionName).Exec()
+	err = global.DbMap[utils.DbNameIndex].Exec(sql, ChartPermissionId, ChartPermissionName).Error
 	return
 }

+ 26 - 24
models/smart_report.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"html"
 	"strings"
@@ -60,12 +60,11 @@ func (m *SmartReport) PrimaryId() string {
 }
 
 func (m *SmartReport) Create() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	id, err := o.Insert(m)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Create(m).Error
 	if err != nil {
 		return
 	}
-	m.SmartReportId = int(id)
 	return
 }
 
@@ -73,21 +72,21 @@ func (m *SmartReport) CreateMulti(items []*SmartReport) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].CreateInBatches(items, len(items)).Error
 	return
 }
 
 func (m *SmartReport) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *SmartReport) Del() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.SmartReportId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, m.SmartReportId).Error
 	return
 }
 
@@ -95,39 +94,39 @@ func (m *SmartReport) MultiDel(menuIds []int) (err error) {
 	if len(menuIds) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
-	_, err = o.Raw(sql, menuIds).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, menuIds).Error
 	return
 }
 
 func (m *SmartReport) GetItemById(id int) (item *SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }
 
 func (m *SmartReport) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	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 = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func (m *SmartReport) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&count).Error
 	return
 }
 
 func (m *SmartReport) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -137,12 +136,12 @@ func (m *SmartReport) GetItemsByCondition(condition string, pars []interface{},
 		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 = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *SmartReport) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*SmartReport, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -152,14 +151,17 @@ func (m *SmartReport) GetPageItemsByCondition(condition string, pars []interface
 		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 = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
 func (m *SmartReport) GetMaxStageByClassifyId(classifyId int) (stage int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT MAX(stage) AS max_stage FROM %s WHERE classify_id_second = ?`, m.TableName())
-	err = o.Raw(sql, classifyId).QueryRow(&stage)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, classifyId).Scan(&stage).Error
 	return
 }
 

+ 18 - 16
models/smart_resource.go

@@ -1,8 +1,9 @@
 package models
 
 import (
+	"eta/eta_hub/global"
+	"eta/eta_hub/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
@@ -26,25 +27,24 @@ func (m *SmartReportResource) PrimaryId() string {
 }
 
 func (m *SmartReportResource) Create() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	id, err := o.Insert(m)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Create(m).Error
 	if err != nil {
 		return
 	}
-	m.ResourceId = int(id)
 	return
 }
 
 func (m *SmartReportResource) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("rddp")
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrmUsingDB("rddp")
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Select(cols).Updates(m).Error
 	return
 }
 
 func (m *SmartReportResource) Del() (err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.ResourceId).Exec()
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Exec(sql, m.ResourceId).Error
 	return
 }
 
@@ -64,14 +64,14 @@ type SmartReportResourceListResp struct {
 }
 
 func (m *SmartReportResource) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *SmartReportResource) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, startSize, pageSize int) (items []*SmartReportResourceItem, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -79,7 +79,9 @@ func (m *SmartReportResource) GetPageItemsByCondition(condition string, pars []i
 	order := ` ORDER BY create_time DESC`
 
 	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 = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
@@ -91,9 +93,9 @@ type SmartReportResourceEditReq struct {
 }
 
 func (m *SmartReportResource) GetItemById(id int) (item *SmartReportResource, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }
 
@@ -111,8 +113,8 @@ type SmartReportResourceAddReq struct {
 }
 
 func GetResourceItemById(id int) (item *SmartReportResource, err error) {
-	o := orm.NewOrmUsingDB("rddp")
+	//o := orm.NewOrmUsingDB("rddp")
 	sql := fmt.Sprintf(`SELECT * FROM smart_report_resource WHERE resource_id = ? LIMIT 1`)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.MYSQL_URL_RDDP].Raw(sql, id).Scan(&item).Error
 	return
 }

+ 25 - 5
models/system/sys_user.go

@@ -1,8 +1,8 @@
 package system
 
 import (
+	"eta/eta_hub/global"
 	"eta/eta_hub/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
@@ -43,6 +43,7 @@ type Admin struct {
 	CityCode                  string    `description:"市编码"`
 	EmployeeId                string    `description:"员工工号(钉钉/每刻报销)"`
 	TelAreaCode               string    `description:"手机区号"`
+	OutId                     string    `description:"外部ID"`
 }
 
 type AdminItem struct {
@@ -82,11 +83,12 @@ type AdminItem struct {
 	CityCode                  string `json:"-" description:"市编码"`
 	EmployeeId                string `json:"-" description:"员工工号(钉钉/每刻报销)"`
 	TelAreaCode               string `description:"手机区号"`
+	OutId                     string `description:"外部ID"`
 }
 
 // GetSysUserByAdminName 账号获取用户
 func GetSysUserByAdminName(adminName string) (item *AdminItem, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT
 				a.*, b.role_type_code
 			FROM
@@ -95,15 +97,33 @@ func GetSysUserByAdminName(adminName string) (item *AdminItem, err error) {
 			WHERE
 				a.admin_name = ?
 			LIMIT 1`
-	err = o.Raw(sql, adminName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, adminName).Scan(&item).Error
 	return
 }
 
 // GetUserByAdminName 根据系统用户名获取用户信息
 func GetUserByAdminName(adminName string) (item *AdminItem, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM admin WHERE admin_name = ? LIMIT 1`
-	err = o.Raw(sql, adminName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, adminName).Scan(&item).Error
+
+	if err != nil && err.Error() == utils.ErrNoRow() {
+		return nil, nil
+	}
+
+	return item, err
+}
+
+// GetUserByOutId
+// @Description: 根据外部ID获取用户信息
+// @author: Roc
+// @datetime 2025-06-26 11:26:28
+// @param outId string
+// @return item *AdminItem
+// @return err error
+func GetUserByOutId(outId string) (item *AdminItem, err error) {
+	sql := `SELECT * FROM admin WHERE out_id != '' AND out_id = ? LIMIT 1`
+	err = global.DEFAULT_DB.Raw(sql, outId).First(&item).Error
 
 	if err != nil && err.Error() == utils.ErrNoRow() {
 		return nil, nil

+ 22 - 0
models/xy/base.go

@@ -0,0 +1,22 @@
+package xy
+
+type BaseResponse struct {
+	//Ret          int
+	ErrMsg string `json:"-"`
+	//ErrCode      string
+	Data       interface{} `json:"returnObject"`
+	ReturnCode string      `json:"returnCode"`
+	Msg        string      `json:"returnMsg"`
+	Status     string      `json:"status"`
+}
+
+func (r *BaseResponse) Init() *BaseResponse {
+	return &BaseResponse{ReturnCode: `E`, Msg: `失败`, Status: `E`}
+}
+
+type BaseRequest struct {
+}
+
+func (br *BaseRequest) Init() *BaseRequest {
+	return &BaseRequest{}
+}

+ 31 - 0
models/xy/request.go

@@ -0,0 +1,31 @@
+package xy
+
+type BaseXyReq struct {
+	Source  string `json:"source"`
+	Target  string `json:"target"`
+	DocCode string `json:"docCode"`
+}
+
+type AssessmentFormQueryReq struct {
+	In0       BaseXyReq `json:"in0"`
+	Loginid   string    `json:"loginid"`
+	StartTime string    `json:"startTime"`
+	EndTime   string    `json:"endTime"`
+}
+
+// AssessmentCheckReq
+// @Description: 确认用户是有权限(需要)填报请求
+type AssessmentCheckReq struct {
+	In0      BaseXyReq `json:"in0"`
+	Loginid  string    `json:"loginid"`
+	PageCode string    `json:"pageCode"`
+}
+
+// UpdateAssessmentFormReq
+// @Description: 更新填报单外部状态
+type UpdateAssessmentFormReq struct {
+	In0      BaseXyReq `json:"in0"`
+	ReportId string    `json:"reportId"`
+	DataId   string    `json:"dataId"`
+	Status   string    `json:"status"`
+}

+ 8 - 0
models/xy/response.go

@@ -0,0 +1,8 @@
+package xy
+
+// AssessmentCheckResp
+// @Description: 确认用户是有权限(需要)填报返回
+type AssessmentCheckResp struct {
+	DataAuth   bool `description:"是否有权限(是否需要)填报" json:"dataAuthority"`
+	SubmitAuth bool `description:"是否有权限(是否需要)填报" json:"submitAuthority"`
+}

+ 27 - 0
routers/commentsRouter.go

@@ -7,6 +7,33 @@ import (
 
 func init() {
 
+    beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/forms/detail`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"],
+        beego.ControllerComments{
+            Method: "UpdateOutStatus",
+            Router: `/forms/update`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers/xy:AssessmentFormController"],
+        beego.ControllerComments{
+            Method: "Check",
+            Router: `/user/check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_hub/controllers:BusinessChartController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:BusinessChartController"],
         beego.ControllerComments{
             Method: "ChartDetail",

+ 6 - 0
routers/router.go

@@ -9,6 +9,7 @@ package routers
 
 import (
 	"eta/eta_hub/controllers"
+	"eta/eta_hub/controllers/xy"
 	"github.com/beego/beego/v2/server/web"
 	"github.com/beego/beego/v2/server/web/filter/cors"
 )
@@ -93,6 +94,11 @@ func init() {
 				&controllers.BusinessChartController{},
 			),
 		),
+		web.NSNamespace("/assessment_form",
+			web.NSInclude(
+				&xy.AssessmentFormController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }

+ 88 - 0
utils/common.go

@@ -12,6 +12,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"gorm.io/gorm"
 	"image"
 	"image/png"
 	"io"
@@ -1223,3 +1224,90 @@ func DateConvMysqlConvMongo(dateCon string) string {
 func GetCurrentTime() string {
 	return time.Now().Format("2006-01-02 15:04:05")
 }
+
+// GetAssessmentWeekAndFriday 获取给定日期的周数,以及所在周的周五
+// 规则:某年的第一个周五所在周为该年的第一周
+// 返回:格式化字符串(如"202504")、周数(如4)和所在周的周五日期
+func GetAssessmentWeekAndFriday(t time.Time) (string, int, time.Time) {
+	year := t.Year()
+
+	// 找到该年第一个周五的日期
+	firstFriday := findFirstFriday(year)
+
+	// 计算当前日期与该年第一个周五所在周的第一天(周一)的天数差
+	daysSinceFirstWeek := t.YearDay() - firstFriday.YearDay() + int(firstFriday.Weekday()) - int(time.Monday)
+
+	weekNum := 1
+	if daysSinceFirstWeek > 0 {
+		weekNum += daysSinceFirstWeek / 7
+		if daysSinceFirstWeek%7 != 0 {
+			weekNum++
+		}
+	} else {
+		// 如果当前日期在第一个周五所在周之前,则属于上一年的最后一周
+		prevYear := year - 1
+		prevFirstFriday := findFirstFriday(prevYear)
+		daysInPrevYear := daysInYear(prevYear)
+
+		daysSincePrevFirstWeek := t.YearDay() + (daysInPrevYear - prevFirstFriday.YearDay()) + int(prevFirstFriday.Weekday()) - int(time.Monday)
+		weekNum = daysSincePrevFirstWeek / 7
+		if daysSincePrevFirstWeek%7 != 0 {
+			weekNum++
+		}
+		year = prevYear
+	}
+
+	// 计算当前日期所在周的周五
+	currentWeekFriday := findFridayOfWeek(t)
+
+	// 格式化输出
+	formatted := fmt.Sprintf("%04d%02d", year, weekNum)
+	return formatted, weekNum, currentWeekFriday
+}
+
+// findFirstFriday 找到某年的第一个周五
+func findFirstFriday(year int) time.Time {
+	// 从1月1日开始找
+	date := time.Date(year, time.January, 1, 0, 0, 0, 0, time.UTC)
+
+	// 找到第一个周五
+	for date.Weekday() != time.Friday {
+		date = date.AddDate(0, 0, 1)
+	}
+
+	return date
+}
+
+// findFridayOfWeek 找到给定日期所在周的周五
+func findFridayOfWeek(t time.Time) time.Time {
+	// 获取当前日期是周几 (0=周日, 1=周一, ..., 6=周六)
+	weekday := int(t.Weekday())
+
+	// 计算到周五的天数差 (周五是5)
+	daysToFriday := (5 - weekday + 7) % 7
+
+	// 如果当前就是周五,daysToFriday会是0
+	if daysToFriday < 0 {
+		daysToFriday += 7
+	}
+
+	return t.AddDate(0, 0, daysToFriday)
+}
+
+// daysInYear 计算某年有多少天
+func daysInYear(year int) int {
+	first := time.Date(year, time.January, 1, 0, 0, 0, 0, time.UTC)
+	last := time.Date(year, time.December, 31, 0, 0, 0, 0, time.UTC)
+	return last.YearDay() - first.YearDay() + 1
+}
+
+// IsErrNoRow
+// @Description: 判断是否是gorm的查询不到数据的报错
+// @param err
+// @return bool
+func IsErrNoRow(err error) bool {
+	if err == nil {
+		return false
+	}
+	return errors.Is(err, gorm.ErrRecordNotFound)
+}

+ 7 - 0
utils/config.go

@@ -21,6 +21,7 @@ var (
 	Rc            RedisClient  //redis缓存
 	MgoDataCli    *qmgo.Client // mongodb客户端连接
 	MgoDataDbName string       // mongodb指标数据的库名
+	DbDriverName  string       // 数据库驱动名称
 )
 
 // 日志配置
@@ -295,4 +296,10 @@ func init() {
 		S3DisableSSL = config["s3_disable_ssl"]
 		S3OpenAcl = config["s3_open_acl"]
 	}
+
+	// 数据库驱动名称
+	DbDriverName = config["db_driver_name"]
+	if DbDriverName == "" {
+		DbDriverName = "mysql"
+	}
 }

+ 15 - 0
utils/constants.go

@@ -176,3 +176,18 @@ const (
 	STORAGESOURCE_MINIO_NAME = "minio"
 	STORAGESOURCE_S3_NAME    = "s3"
 )
+
+const (
+	DbDriverByMysql = "mysql"
+	DbDriverByDm    = "dm"
+)
+
+const (
+	DbNameMaster      = "eta_master"
+	DbNameReport      = "eta_report"
+	DbNameManualIndex = "eta_manual_index"
+	DbNameIndex       = "eta_index"
+	DbNameGL          = "eta_gl"
+	DbNameAI          = "eta_ai"
+	DbNameWeekly      = "weekly_report"
+)