refactor: 重构更新多个文件中的相关调用

This commit is contained in:
TsMask
2025-02-20 10:11:40 +08:00
parent f3c33b31ac
commit 5b9bcd6660
34 changed files with 1243 additions and 1894 deletions

View File

@@ -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
}