refactor: 重构更新多个文件中的相关调用
This commit is contained in:
@@ -4,13 +4,16 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/log"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/src/framework/utils/ctx"
|
||||
"be.ems/src/framework/database/db"
|
||||
"be.ems/src/framework/reqctx"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -19,7 +22,7 @@ func (k *KpiCTitle) GetToalList(c *gin.Context) {
|
||||
var titles []KpiCTitle
|
||||
var conditions []string
|
||||
var params []any
|
||||
i18n := ctx.AcceptLanguage(c)
|
||||
i18n := reqctx.AcceptLanguage(c)
|
||||
|
||||
var querys KpiCTitleQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
@@ -27,7 +30,7 @@ func (k *KpiCTitle) GetToalList(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
dbg := dborm.DefaultDB().Table(k.TableName())
|
||||
dbg := db.DB("").Model(&KpiCTitle{})
|
||||
// construct condition to get
|
||||
if neType := querys.NeType; neType != "" {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
@@ -37,7 +40,7 @@ func (k *KpiCTitle) GetToalList(c *gin.Context) {
|
||||
conditions = append(conditions, "status = ?")
|
||||
params = append(params, status)
|
||||
} else {
|
||||
conditions = append(conditions, "status != 'Deleted'")
|
||||
conditions = append(conditions, "status != '2'")
|
||||
}
|
||||
|
||||
whereSql := ""
|
||||
@@ -81,7 +84,7 @@ func (k *KpiCTitle) Get(c *gin.Context) {
|
||||
var titles []KpiCTitle
|
||||
var conditions []string
|
||||
var params []any
|
||||
i18n := ctx.AcceptLanguage(c)
|
||||
i18n := reqctx.AcceptLanguage(c)
|
||||
|
||||
// construct condition to get
|
||||
if neType := c.Query("neType"); neType != "" {
|
||||
@@ -92,14 +95,14 @@ func (k *KpiCTitle) Get(c *gin.Context) {
|
||||
conditions = append(conditions, "status = ?")
|
||||
params = append(params, status)
|
||||
} else {
|
||||
conditions = append(conditions, "status != 'Deleted'")
|
||||
conditions = append(conditions, "status != '2'")
|
||||
}
|
||||
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
}
|
||||
if err := dborm.DefaultDB().Where(whereSql, params...).Find(&titles).Error; err != nil {
|
||||
if err := db.DB("").Where(whereSql, params...).Find(&titles).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
@@ -126,11 +129,18 @@ func (k *KpiCTitle) expressionAlias(titles []KpiCTitle, i18n string) {
|
||||
} else {
|
||||
sql = fmt.Sprintf("SELECT en_title FROM kpi_title WHERE kpi_id='%s'", match[1])
|
||||
}
|
||||
err := dborm.XCoreDB().QueryRow(sql).Scan(&alias)
|
||||
m, err := db.RawDB("", sql, nil)
|
||||
if err != nil {
|
||||
log.Warn("Failed to QueryRow:", err)
|
||||
continue
|
||||
}
|
||||
if len(m) > 0 {
|
||||
if i18n == "zh" {
|
||||
alias = fmt.Sprintf("%v", m[0]["cn_title"])
|
||||
} else {
|
||||
alias = fmt.Sprintf("%v", m[0]["en_title"])
|
||||
}
|
||||
}
|
||||
title.ExprAlias = regexp.MustCompile(match[1]).ReplaceAllString(title.ExprAlias, alias)
|
||||
}
|
||||
}
|
||||
@@ -149,7 +159,7 @@ func (k *KpiCTitle) Total(c *gin.Context) {
|
||||
conditions = append(conditions, "status = ?")
|
||||
params = append(params, status)
|
||||
} else {
|
||||
conditions = append(conditions, "status != 'Deleted'")
|
||||
conditions = append(conditions, "status != '2'")
|
||||
}
|
||||
|
||||
whereSql := ""
|
||||
@@ -157,7 +167,7 @@ func (k *KpiCTitle) Total(c *gin.Context) {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
}
|
||||
var total int64 = 0
|
||||
if err := dborm.DefaultDB().Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil {
|
||||
if err := db.DB("").Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
@@ -166,31 +176,56 @@ func (k *KpiCTitle) Total(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (k *KpiCTitle) Post(c *gin.Context) {
|
||||
var title, res KpiCTitle
|
||||
|
||||
var title KpiCTitle
|
||||
if err := c.ShouldBindJSON(&title); err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
userName := ctx.LoginUserToUserName(c)
|
||||
userName := reqctx.LoginUserToUserName(c)
|
||||
title.CreatedBy = &userName
|
||||
result := dborm.DefaultDB().Where("ne_type=? and (kpi_id=? or title=?) and status!='Deleted'", title.NeType, title.KpiID, title.Title).First(&title)
|
||||
tx := db.DB("").Model(&KpiCTitle{})
|
||||
result := tx.Where("ne_type=? and (kpi_id=? or title=?) and status!='2'", title.NeType, title.KpiID, title.Title).First(&title)
|
||||
if result.RowsAffected > 0 {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator already exist"))
|
||||
return
|
||||
}
|
||||
|
||||
// Regexp match like AMF.C.01
|
||||
kpiIDRegexp := "^" + *title.NeType + "\\.C\\.[0-9]{2}$"
|
||||
ret := dborm.DefaultDB().Table("kpi_c_title").
|
||||
Where("ne_type=? and kpi_id REGEXP ? ORDER BY kpi_id DESC LIMIT 1", title.NeType, kpiIDRegexp).Scan(&res)
|
||||
if err := ret.Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
// kpiIDRegexp := "^" + *title.NeType + "\\.C\\.[0-9]{2}$"
|
||||
// ret := db.DB("").Table("kpi_c_title").
|
||||
// Where("ne_type=? and kpi_id REGEXP ? ORDER BY kpi_id DESC LIMIT 1", title.NeType, kpiIDRegexp).Scan(&res)
|
||||
// if err := ret.Error; err != nil {
|
||||
// c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
// return
|
||||
// }
|
||||
|
||||
titles := []KpiCTitle{}
|
||||
ret := db.DB("").Model(&KpiCTitle{})
|
||||
ret = ret.Select("kpi_id").Where("ne_type=?", title.NeType).Find(&titles)
|
||||
|
||||
newKpiID := *title.NeType + ".C" + ".01"
|
||||
if ret.RowsAffected != 0 {
|
||||
maxKpiID := *res.KpiID
|
||||
suffixInt := 1
|
||||
prefixStr := fmt.Sprintf("%s.C.", *title.NeType)
|
||||
sort.SliceStable(titles, func(i, j int) bool {
|
||||
vi := *titles[i].KpiID
|
||||
vj := *titles[j].KpiID
|
||||
if strings.HasPrefix(vi, prefixStr) && strings.HasPrefix(vj, prefixStr) {
|
||||
vvi := strings.Replace(vi, prefixStr, "", 1)
|
||||
vvii, err := strconv.Atoi(vvi)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
vvj := strings.Replace(vj, prefixStr, "", 1)
|
||||
vvjj, err := strconv.Atoi(vvj)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return vvii > vvjj // desc
|
||||
}
|
||||
return false
|
||||
})
|
||||
maxKpiID := *titles[0].KpiID
|
||||
prefix := maxKpiID[:len(maxKpiID)-2]
|
||||
suffix := maxKpiID[len(maxKpiID)-2:]
|
||||
suffixInt, err := strconv.Atoi(suffix)
|
||||
@@ -209,25 +244,26 @@ func (k *KpiCTitle) Post(c *gin.Context) {
|
||||
newKpiID = prefix + newSuffix
|
||||
}
|
||||
title.KpiID = &newKpiID
|
||||
if err := dborm.DefaultDB().Create(&title).Error; err != nil {
|
||||
txx := db.DB("").Model(&KpiCTitle{})
|
||||
if err := txx.Create(&title).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
kpiCReportTable := "kpi_c_report_" + strings.ToLower(*title.NeType)
|
||||
if !dborm.DefaultDB().Migrator().HasTable(kpiCReportTable) {
|
||||
if !db.DB("").Migrator().HasTable(kpiCReportTable) {
|
||||
// clone table "kpi_c_report" to "kpi_c_report_{neType}"
|
||||
sql := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s AS SELECT * FROM %s WHERE 1=0", kpiCReportTable, "kpi_c_report")
|
||||
if _, err := dborm.ExecSQL(sql, nil); err != nil {
|
||||
if _, err := db.ExecDB("", sql, nil); err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
sql = fmt.Sprintf("ALTER TABLE %s MODIFY COLUMN `id` int(11) NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY IF NOT EXISTS (`id`)", kpiCReportTable)
|
||||
if _, err := dborm.ExecSQL(sql, nil); err != nil {
|
||||
if _, err := db.ExecDB("", sql, nil); err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
sql = fmt.Sprintf("ALTER TABLE %s ADD INDEX IF NOT EXISTS `idx_timestamp`(`created_at`) USING BTREE, ADD INDEX IF NOT EXISTS `idx_uid_datetime`(`rm_uid`, `date`, `start_time`) USING BTREE", kpiCReportTable)
|
||||
if _, err := dborm.ExecSQL(sql, nil); err != nil {
|
||||
if _, err := db.ExecDB("", sql, nil); err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
@@ -239,7 +275,7 @@ func (k *KpiCTitle) Put(c *gin.Context) {
|
||||
var title KpiCTitle
|
||||
id := c.Param("id")
|
||||
|
||||
if err := dborm.DefaultDB().First(&title, id).Error; err != nil {
|
||||
if err := db.DB("").First(&title, id).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator not found"))
|
||||
return
|
||||
}
|
||||
@@ -248,7 +284,8 @@ func (k *KpiCTitle) Put(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
dborm.DefaultDB().Save(&title)
|
||||
title.UpdatedAt = time.Now().UnixMilli()
|
||||
db.DB("").Save(&title)
|
||||
|
||||
c.JSON(http.StatusOK, services.DataResp(title))
|
||||
}
|
||||
@@ -256,7 +293,7 @@ func (k *KpiCTitle) Put(c *gin.Context) {
|
||||
func (k *KpiCTitle) Delete(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := dborm.DefaultDB().Table(k.TableName()).Where("id=?", id).Update("status", "Deleted").Error; err != nil {
|
||||
if err := db.DB("").Table(k.TableName()).Where("id=?", id).Update("status", "2").Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
@@ -267,7 +304,7 @@ func (k *KpiCTitle) Delete(c *gin.Context) {
|
||||
func GetActiveKPICList(neType string) []KpiCTitle {
|
||||
k := new([]KpiCTitle)
|
||||
|
||||
err := dborm.DefaultDB().Where("`ne_type` = ? and `status` = 'Active'", neType).Find(&k).Error
|
||||
err := db.DB("").Where("`ne_type` = ? and `status` = '1'", neType).Find(&k).Error
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user