You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.4 KiB

package DatahyperDAO
import (
"dsDataex/GenXorm/models"
"dsDataex/Utils/DbUtil"
"dsDataex/Utils/MariaDbUtil"
"encoding/json"
"fmt"
"github.com/xormplus/xorm"
"strconv"
)
// 基础数据库
var baseDb = DbUtil.Engine
// Maria数据库
var mariaYPTDb = MariaDbUtil.EngineYPT
var mariaXPTDb = MariaDbUtil.EngineXPT
func GetQuerySQL(platform string, queryID string) (bool, string, string, error) {
var platforms map[string]int
platforms = map[string]int{"ypt": 3, "xpt": 4}
queryType := platforms[platform]
sql := "SELECT * FROM t_report_sqlquery_old WHERE query_type='" + strconv.Itoa(queryType) + "' AND query_code='" + queryID + "'"
var sqlQuery models.TReportSqlquery
has, _ := baseDb.SQL(sql).Get(&sqlQuery)
if has {
m := make(map[string]interface{})
j, _ := json.Marshal(sqlQuery)
json.Unmarshal(j, &m)
return true, "ok", m["query_sql"].(string), nil
} else {
return false, "fail", "", nil
}
}
func SelectDB(db string) *xorm.Engine {
var engin *xorm.Engine
switch db {
case "ypt":
engin = mariaYPTDb
break
case "xpt":
engin = mariaXPTDb
break
default:
engin = mariaYPTDb
}
return engin
}
func GetRow(db string, sql string, dataID string) (bool, string, map[string]interface{}, error) {
mariaDb := SelectDB(db)
result, err := mariaDb.SQL(sql, dataID).Query().List()
//result = result[4 : len(result) - 2]
if result != nil {
return true, "数据查询成功", result[0], nil
} else {
if err == nil {
return false, "数据获取失败,数据不存在", nil, nil
} else {
return false, err.Error(), nil, nil
}
}
}
func GetResults(db string, sql string, params []interface{}, limit int, offset int) (bool, string, int, []map[string]interface{}, error) {
mariaDb := SelectDB(db)
//条件查询语句
conditionSql := fmt.Sprintf("%s", " limit ? offset ? ")
//分页的语句
pageSql := fmt.Sprintf("%s %s", sql, conditionSql)
//数据条数
count, err := mariaDb.SQL(sql, params...).Query().Count()
if count > 0 {
params = append(params, limit)
params = append(params, offset)
//分页数据
list, err := mariaDb.SQL(pageSql, params...).Query().List()
if err == nil {
return true, "数据获取成功", count, list, nil
} else {
return false, "数据获取失败,数据不存在", count, nil, nil
}
} else {
if err == nil {
return false, "数据获取失败,数据不存在", count, nil, nil
} else {
return false, err.Error(), count, nil, nil
}
}
}