Merge remote-tracking branch 'origin/main' into multi-tenant
This commit is contained in:
46
features/cm/omc/controller.go
Normal file
46
features/cm/omc/controller.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package cm_omc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"be.ems/lib/services"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (o *ConfigOMC) Get(c *gin.Context) {
|
||||
paramName := c.Param("paramName")
|
||||
results, err := o.Query(paramName)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, services.DataResp(results))
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Post(c *gin.Context) {
|
||||
err := fmt.Errorf("method not allowed")
|
||||
c.JSON(http.StatusMethodNotAllowed, services.ErrResp(err.Error()))
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Put(c *gin.Context) {
|
||||
paramName := c.Param("paramName")
|
||||
var paramData map[string]any
|
||||
|
||||
if err := c.ShouldBindJSON(¶mData); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
result, err := o.Modify(paramName, paramData)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, services.DataResp(result))
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Delete(c *gin.Context) {
|
||||
err := fmt.Errorf("method not allowed")
|
||||
c.JSON(http.StatusMethodNotAllowed, services.ErrResp(err.Error()))
|
||||
}
|
||||
69
features/cm/omc/implement.go
Normal file
69
features/cm/omc/implement.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package cm_omc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"be.ems/restagent/config"
|
||||
)
|
||||
|
||||
const (
|
||||
PASSWORD_MASK = "********"
|
||||
)
|
||||
|
||||
func (o *ConfigOMC) Query(paramName string) (any, error) {
|
||||
var results []any
|
||||
|
||||
switch paramName {
|
||||
case "alarmEmailForward":
|
||||
result := config.GetYamlConfig().Alarm.EmailForward
|
||||
result.Password = PASSWORD_MASK
|
||||
results = append(results, result)
|
||||
case "alarmSMSForward":
|
||||
result := config.GetYamlConfig().Alarm.SMSCForward
|
||||
result.Password = PASSWORD_MASK
|
||||
results = append(results, result)
|
||||
default:
|
||||
return nil, fmt.Errorf("invalid source parameter")
|
||||
}
|
||||
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Add() {
|
||||
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Modify(paramName string, paramData map[string]any) (any, error) {
|
||||
var results []any
|
||||
|
||||
switch paramName {
|
||||
case "alarmEmailForward":
|
||||
param := &(config.GetYamlConfig().Alarm.EmailForward)
|
||||
config.UpdateStructFromMap(param, paramData)
|
||||
result := *param
|
||||
results = append(results, result)
|
||||
err := config.WriteOrignalConfig(config.YamlConfigInfo.FilePath, paramName, paramData)
|
||||
if err != nil {
|
||||
fmt.Println("failed to write config yaml file:", err)
|
||||
return results, err
|
||||
}
|
||||
case "alarmSMSForward":
|
||||
param := &(config.GetYamlConfig().Alarm.SMSCForward)
|
||||
config.UpdateStructFromMap(param, paramData)
|
||||
result := *param
|
||||
results = append(results, result)
|
||||
err := config.WriteOrignalConfig(config.YamlConfigInfo.FilePath, paramName, paramData)
|
||||
if err != nil {
|
||||
fmt.Println("failed to write config yaml file:", err)
|
||||
return results, err
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("invalid source parameter")
|
||||
}
|
||||
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (o *ConfigOMC) Remove() {
|
||||
|
||||
}
|
||||
26
features/cm/omc/model.go
Normal file
26
features/cm/omc/model.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package cm_omc
|
||||
|
||||
type ConfigOMC struct{}
|
||||
|
||||
type SystemConfig struct {
|
||||
ForwardFlag bool `json:"forwardFlag"`
|
||||
}
|
||||
|
||||
type AlarmEmailForward struct {
|
||||
Enable bool `json:"enable"`
|
||||
EmailList string `json:"emailList"`
|
||||
SMTP string `json:"smtp"`
|
||||
Port uint16 `json:"port"`
|
||||
User string `json:"user"`
|
||||
Password string `json:"password"`
|
||||
TLSSkipVerify bool `json:"tlsSkipVerify"`
|
||||
}
|
||||
|
||||
type AlarmSMSForward struct {
|
||||
Enable bool `json:"enable"`
|
||||
MobileList string `json:"mobileList"`
|
||||
SMSCAddr string `json:"smscAddr"`
|
||||
SystemID string `json:"systemID"`
|
||||
Password string `json:"password"`
|
||||
SystemType string `json:"systemType"`
|
||||
}
|
||||
30
features/cm/omc/route.go
Normal file
30
features/cm/omc/route.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package cm_omc
|
||||
|
||||
import (
|
||||
"be.ems/src/framework/middleware"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Register Routes for file_export
|
||||
func Register(r *gin.RouterGroup) {
|
||||
cmOMC := r.Group("/omc")
|
||||
{
|
||||
var o *ConfigOMC
|
||||
cmOMC.GET("/config/:paramName",
|
||||
middleware.PreAuthorize(nil),
|
||||
o.Get,
|
||||
)
|
||||
cmOMC.POST("/config/:paramName",
|
||||
middleware.PreAuthorize(nil),
|
||||
o.Post,
|
||||
)
|
||||
cmOMC.PUT("/config/:paramName",
|
||||
middleware.PreAuthorize(nil),
|
||||
o.Put,
|
||||
)
|
||||
cmOMC.DELETE("/config/:paramName",
|
||||
middleware.PreAuthorize(nil),
|
||||
o.Delete,
|
||||
)
|
||||
}
|
||||
}
|
||||
17
features/cm/service.go
Normal file
17
features/cm/service.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package cm
|
||||
|
||||
import (
|
||||
cm_omc "be.ems/features/cm/omc"
|
||||
"be.ems/lib/log"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func InitSubServiceRoute(r *gin.Engine) {
|
||||
log.Info("======init PM group gin.Engine")
|
||||
|
||||
cmGroup := r.Group("/cm")
|
||||
// register sub modules routes
|
||||
cm_omc.Register(cmGroup)
|
||||
|
||||
// return featuresGroup
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package features
|
||||
|
||||
import (
|
||||
"be.ems/features/cm"
|
||||
"be.ems/features/lm"
|
||||
"be.ems/features/pm"
|
||||
"be.ems/lib/log"
|
||||
@@ -14,6 +15,7 @@ func InitServiceEngine(r *gin.Engine) {
|
||||
// 注册 各个features 模块的路由
|
||||
pm.InitSubServiceRoute(r)
|
||||
lm.InitSubServiceRoute(r)
|
||||
cm.InitSubServiceRoute(r)
|
||||
|
||||
// return featuresGroup
|
||||
}
|
||||
|
||||
@@ -466,10 +466,12 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
session.Commit()
|
||||
}
|
||||
if config.GetYamlConfig().Alarm.ForwardAlarm {
|
||||
if config.GetYamlConfig().Alarm.EmailForward.Enable {
|
||||
if err = AlarmEmailForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmEmailForward:", err)
|
||||
}
|
||||
}
|
||||
if config.GetYamlConfig().Alarm.SMSCForward.Enable {
|
||||
if err = AlarmSMSForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmSMSForward:", err)
|
||||
}
|
||||
@@ -737,9 +739,10 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
evenTime := global.GetFmtTimeString(time.RFC3339, alarmData.EventTime, time.DateTime)
|
||||
alarmData.ObjectUid = alarmData.NeId
|
||||
alarmData.ObjectType = "VNFM"
|
||||
alarmData.EventTime = global.GetFmtTimeString(time.RFC3339, alarmData.EventTime, time.DateTime)
|
||||
alarmData.EventTime = evenTime
|
||||
if IsNeedToAckAlarm(valueJson, &alarmData) {
|
||||
SetAlarmAckInfo(valueJson, &alarmData)
|
||||
}
|
||||
@@ -766,8 +769,8 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
alarmLog.AlarmId = alarmData.AlarmId
|
||||
alarmLog.AlarmCode = alarmData.AlarmCode
|
||||
alarmLog.AlarmStatus = alarmData.AlarmStatus
|
||||
alarmLog.EventTime = global.GetFmtTimeString(time.RFC3339, alarmData.EventTime, time.DateTime)
|
||||
log.Debug("alarmLog:", alarmLog)
|
||||
alarmLog.EventTime = evenTime
|
||||
log.Trace("alarmLog:", alarmLog)
|
||||
affected, err = session.Insert(alarmLog)
|
||||
if err != nil && affected <= 0 {
|
||||
log.Error("Failed to insert data:", err)
|
||||
@@ -775,10 +778,12 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
continue
|
||||
}
|
||||
session.Commit()
|
||||
if config.GetYamlConfig().Alarm.ForwardAlarm {
|
||||
if config.GetYamlConfig().Alarm.EmailForward.Enable {
|
||||
if err = AlarmEmailForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmEmailForward:", err)
|
||||
}
|
||||
}
|
||||
if config.GetYamlConfig().Alarm.SMSCForward.Enable {
|
||||
if err = AlarmSMSForward(&alarmData); err != nil {
|
||||
log.Error("Failed to AlarmSMSForward:", err)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package fm
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
@@ -48,25 +47,25 @@ func AlarmEmailForward(alarmData *Alarm) error {
|
||||
// userName := "smtpext@agrandtech.com"
|
||||
// password := "1000smtp@omc!"
|
||||
|
||||
host := config.GetYamlConfig().Alarm.Email.Smtp
|
||||
port := int(config.GetYamlConfig().Alarm.Email.Port)
|
||||
userName := config.GetYamlConfig().Alarm.Email.User
|
||||
password := config.GetYamlConfig().Alarm.Email.Password
|
||||
host := config.GetYamlConfig().Alarm.EmailForward.SMTP
|
||||
port := int(config.GetYamlConfig().Alarm.EmailForward.Port)
|
||||
userName := config.GetYamlConfig().Alarm.EmailForward.User
|
||||
password := config.GetYamlConfig().Alarm.EmailForward.Password
|
||||
|
||||
m := gomail.NewMessage()
|
||||
m.SetHeader("From", userName) // 发件人
|
||||
//m.SetHeader("From", "alias"+"<"+"aliastest"+">") // 增加发件人别名
|
||||
|
||||
emails, err := dborm.XormGetAlarmForward("Email")
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetAlarmForward:", err)
|
||||
return err
|
||||
} else if emails == nil || len(*emails) == 0 {
|
||||
err := errors.New("not found forward email list")
|
||||
log.Error(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// emails, err := dborm.XormGetAlarmForward("Email")
|
||||
// if err != nil {
|
||||
// log.Error("Failed to XormGetAlarmForward:", err)
|
||||
// return err
|
||||
// } else if emails == nil || len(*emails) == 0 {
|
||||
// err := errors.New("not found forward email list")
|
||||
// log.Error(err)
|
||||
// return err
|
||||
// }
|
||||
emails := strings.Split(config.GetYamlConfig().Alarm.EmailForward.EmailList, ",")
|
||||
forwardLog := &dborm.AlarmForwardLog{
|
||||
NeType: alarmData.NeType,
|
||||
NeID: alarmData.NeId,
|
||||
@@ -74,10 +73,10 @@ func AlarmEmailForward(alarmData *Alarm) error {
|
||||
AlarmTitle: alarmData.AlarmTitle,
|
||||
AlarmSeq: alarmData.AlarmSeq,
|
||||
EventTime: alarmData.EventTime,
|
||||
ToUser: strings.Join(*emails, ","),
|
||||
ToUser: config.GetYamlConfig().Alarm.EmailForward.EmailList,
|
||||
}
|
||||
|
||||
m.SetHeader("To", *emails...) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
|
||||
m.SetHeader("To", emails...) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
|
||||
//m.SetHeader("To", strings.Join(*emails, " ")) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
|
||||
//m.SetHeader("To", "zhangshuzhong@agrandtech.com", "simonzhangsz@outlook.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
|
||||
//m.SetHeader("Cc", "******@qq.com") // 抄送,可以多个
|
||||
@@ -103,7 +102,7 @@ func AlarmEmailForward(alarmData *Alarm) error {
|
||||
)
|
||||
// 关闭SSL协议认证
|
||||
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
|
||||
if !config.GetYamlConfig().Alarm.Email.TlsSkipVerify {
|
||||
if !config.GetYamlConfig().Alarm.EmailForward.TLSSkipVerify {
|
||||
// 打开SSL协议认证
|
||||
d.TLSConfig = &tls.Config{InsecureSkipVerify: false}
|
||||
}
|
||||
|
||||
@@ -90,36 +90,24 @@ func AlarmForwardBySMS(alarmData *Alarm) (string, error) {
|
||||
case http.StatusOK, http.StatusAccepted, http.StatusNoContent, http.StatusCreated:
|
||||
return userList, nil
|
||||
default:
|
||||
err := fmt.Errorf("Failed to send SMS: %s(Code=%d)", resp.Status, resp.StatusCode)
|
||||
log.Error(err)
|
||||
log.Error(fmt.Errorf("failed to send SMS: %s(Code=%d)", resp.Status, resp.StatusCode))
|
||||
return userList, err
|
||||
}
|
||||
}
|
||||
|
||||
var smsForward = &(config.GetYamlConfig().Alarm.SMSCForward)
|
||||
|
||||
func AlarmForwardBySMPP(alarmData *Alarm) (string, error) {
|
||||
log.Info("AlarmForwardBySMPP processing... ")
|
||||
|
||||
toUsers, err := dborm.XormGetAlarmForward("SMS")
|
||||
if err != nil {
|
||||
log.Error("Failed to XormGetAlarmForward:", err)
|
||||
return "", err
|
||||
} else if toUsers == nil {
|
||||
err := errors.New("not found forward phone number")
|
||||
log.Error(err)
|
||||
return "", err
|
||||
}
|
||||
userList := strings.Join(*toUsers, ",")
|
||||
|
||||
userList := smsForward.MobileList
|
||||
auth := gosmpp.Auth{
|
||||
SMSC: config.GetYamlConfig().Alarm.SMSC.Addr,
|
||||
SystemID: config.GetYamlConfig().Alarm.SMSC.SystemID,
|
||||
Password: config.GetYamlConfig().Alarm.SMSC.Password,
|
||||
SystemType: config.GetYamlConfig().Alarm.SMSC.SystemType,
|
||||
SMSC: smsForward.SMSCAddr,
|
||||
SystemID: smsForward.SystemID,
|
||||
Password: smsForward.Password,
|
||||
SystemType: smsForward.SystemType,
|
||||
}
|
||||
|
||||
// conn, err := gosmpp.NonTLSDialer(auth.SMSC)
|
||||
// connection := gosmpp.NewConnection(conn)
|
||||
|
||||
trans, err := gosmpp.NewSession(
|
||||
gosmpp.TXConnector(gosmpp.NonTLSDialer, auth),
|
||||
gosmpp.Settings{
|
||||
@@ -149,17 +137,22 @@ func AlarmForwardBySMPP(alarmData *Alarm) (string, error) {
|
||||
_ = trans.Close()
|
||||
}()
|
||||
|
||||
// sending SMS(s)
|
||||
// var results []string
|
||||
// for _, toUser := range *toUsers {
|
||||
message := "Alarm Notification: " + alarmData.AlarmTitle + " from " + alarmData.NeType + " " + alarmData.NeId + " at " + alarmData.EventTime
|
||||
if err = trans.Transceiver().Submit(newSubmitSM(userList, message)); err != nil {
|
||||
// result := fmt.Sprintf("Failed to submit %s hort message:%s", toUser, err.Error())
|
||||
// results = append(results, result)
|
||||
log.Error("Failed to submit hort message:", err)
|
||||
return userList, err
|
||||
message := "Alarm Notification: " + alarmData.AlarmTitle + " from " + alarmData.NeType + "_" + alarmData.NeId + " at " + alarmData.EventTime
|
||||
for _, user := range strings.Split(userList, ",") {
|
||||
sm, err := newSubmitSM(user, message)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to newSubmitSM %s short message: %v", user, err)
|
||||
writeLog(alarmData, user, "SMS", err)
|
||||
continue
|
||||
}
|
||||
if err = trans.Transceiver().Submit(sm); err != nil {
|
||||
log.Errorf("Failed to Submit %s short message: %v", user, err)
|
||||
writeLog(alarmData, user, "SMS", err)
|
||||
continue
|
||||
}
|
||||
writeLog(alarmData, user, "SMS", nil)
|
||||
}
|
||||
// }
|
||||
|
||||
return userList, nil
|
||||
}
|
||||
|
||||
@@ -190,61 +183,42 @@ func writeLog(alarmData *Alarm, toUser, forwardBy string, err error) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func handlePDU() func(pdu.PDU) (pdu.PDU, bool) {
|
||||
return func(p pdu.PDU) (pdu.PDU, bool) {
|
||||
switch pd := p.(type) {
|
||||
case *pdu.Unbind:
|
||||
log.Trace("Unbind Received")
|
||||
return pd.GetResponse(), true
|
||||
|
||||
case *pdu.UnbindResp:
|
||||
log.Trace("UnbindResp Received")
|
||||
|
||||
case *pdu.SubmitSMResp:
|
||||
log.Trace("SubmitSMResp Received")
|
||||
|
||||
case *pdu.GenericNack:
|
||||
log.Trace("GenericNack Received")
|
||||
|
||||
case *pdu.EnquireLinkResp:
|
||||
fmt.Println("EnquireLinkResp Received")
|
||||
|
||||
case *pdu.EnquireLink:
|
||||
log.Trace("EnquireLink Received")
|
||||
return pd.GetResponse(), false
|
||||
|
||||
case *pdu.DataSM:
|
||||
log.Trace("DataSM receiver")
|
||||
return pd.GetResponse(), false
|
||||
|
||||
case *pdu.DeliverSM:
|
||||
log.Trace("DeliverSM receiver")
|
||||
return pd.GetResponse(), false
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
|
||||
func newSubmitSM(phoneNumber string, message string) *pdu.SubmitSM {
|
||||
func newSubmitSM(phoneNumber string, message string) (*pdu.SubmitSM, error) {
|
||||
// build up submitSM
|
||||
srcAddr := pdu.NewAddress()
|
||||
srcAddr.SetTon(5)
|
||||
srcAddr.SetNpi(0)
|
||||
_ = srcAddr.SetAddress("alarm notification:")
|
||||
|
||||
err := srcAddr.SetAddress(smsForward.ServiceNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
destAddr := pdu.NewAddress()
|
||||
destAddr.SetTon(1)
|
||||
destAddr.SetNpi(1)
|
||||
_ = destAddr.SetAddress(phoneNumber)
|
||||
|
||||
err = destAddr.SetAddress(phoneNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
submitSM := pdu.NewSubmitSM().(*pdu.SubmitSM)
|
||||
submitSM.SourceAddr = srcAddr
|
||||
submitSM.DestAddr = destAddr
|
||||
_ = submitSM.Message.SetMessageWithEncoding(message, data.UCS2)
|
||||
dataCoding := data.UCS2
|
||||
switch smsForward.DataCoding {
|
||||
case config.CODING_UCS2:
|
||||
dataCoding = data.UCS2
|
||||
case config.CODING_ASCII:
|
||||
dataCoding = data.ASCII
|
||||
case config.CODING_LATIN1:
|
||||
dataCoding = data.LATIN1
|
||||
}
|
||||
err = submitSM.Message.SetMessageWithEncoding(message, dataCoding)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
submitSM.ProtocolID = 0
|
||||
submitSM.RegisteredDelivery = 1
|
||||
submitSM.ReplaceIfPresentFlag = 0
|
||||
submitSM.EsmClass = 0
|
||||
|
||||
return submitSM
|
||||
return submitSM, nil
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ func (m *SysJob) GetFileExportTable(c *gin.Context) {
|
||||
err := datasource.DefaultDB().Table(m.TableName()).Where("invoke_target=? and status=1", INVOKE_FILE_EXPORT).
|
||||
Find(&results).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
language := ctx.AcceptLanguage(c)
|
||||
@@ -46,7 +46,7 @@ func (m *SysJob) GetFileExportTable(c *gin.Context) {
|
||||
for _, job := range results {
|
||||
var params TargetParams
|
||||
if err := json.Unmarshal([]byte(job.TargetParams), ¶ms); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
TableDisplay := i18n.TKey(language, "table."+params.TableName)
|
||||
@@ -67,14 +67,15 @@ func (m *FileExport) GetFileList(c *gin.Context) {
|
||||
var querys FileExportQuery
|
||||
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
files, err := file.GetFileInfo(querys.Path, querys.Suffix)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
log.Error("failed to GetFileInfo:", err)
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// split files list
|
||||
@@ -98,8 +99,8 @@ func (m *FileExport) Total(c *gin.Context) {
|
||||
|
||||
fileCount, dirCount, err := file.GetFileAndDirCount(dir)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
log.Error("failed to GetFileAndDirCount:", err)
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
total := fileCount + dirCount
|
||||
@@ -113,13 +114,13 @@ func (m *FileExport) DownloadHandler(c *gin.Context) {
|
||||
|
||||
file, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
if _, err := os.Stat(filePath); os.IsNotExist(err) {
|
||||
c.JSON(http.StatusNotFound, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -134,7 +135,7 @@ func (m *FileExport) Delete(c *gin.Context) {
|
||||
filePath := filepath.Join(dir, fileName)
|
||||
|
||||
if err := os.Remove(filePath); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusNoContent, nil) // 204 No Content
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/src/framework/datasource"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -30,7 +30,7 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||
dborm := datasource.DefaultDB().Table(tableName)
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.NeID != "" {
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||
@@ -51,30 +51,29 @@ func (k *KpiCReport) Get(c *gin.Context) {
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
dborm = dborm.Where(whereSql, params...)
|
||||
dbg = dbg.Where(whereSql, params...)
|
||||
}
|
||||
// page number and size
|
||||
if pageSize := querys.PageSize; pageSize > 0 {
|
||||
dborm = dborm.Limit(pageSize)
|
||||
dbg = dbg.Limit(pageSize)
|
||||
if pageNum := querys.PageNum; pageNum > 0 {
|
||||
dborm = dborm.Offset((pageNum - 1) * pageSize)
|
||||
dbg = dbg.Offset((pageNum - 1) * pageSize)
|
||||
}
|
||||
}
|
||||
|
||||
// order by
|
||||
if sortField, sortOrder := querys.SortField, querys.SortOrder; sortField != "" && sortOrder != "" {
|
||||
orderBy := fmt.Sprintf("%s %s", sortField, sortOrder)
|
||||
dborm = dborm.Order(orderBy)
|
||||
dbg = dbg.Order(orderBy)
|
||||
}
|
||||
|
||||
//err := datasource.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err := dborm.Find(&reports).Error
|
||||
//err := dborm.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err := dbg.Find(&reports).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, services.DataResp(reports))
|
||||
//c.JSON(http.StatusOK, reports)
|
||||
}
|
||||
|
||||
func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
@@ -84,7 +83,7 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
|
||||
var querys KpiCReportQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -93,11 +92,11 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
params = append(params, strings.ToUpper(querys.NeType))
|
||||
} else {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found required parameter NE type"))
|
||||
c.JSON(http.StatusOK, services.ErrResp("Not found required parameter NE type"))
|
||||
return
|
||||
}
|
||||
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||
dborm := datasource.DefaultDB().Table(tableName)
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.NeID != "" {
|
||||
conditions = append(conditions, "rm_uid = (select n.rm_uid from ne_info n where n.ne_type=? and n.ne_id=? and n.status=1)")
|
||||
@@ -118,26 +117,26 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
dborm = dborm.Where(whereSql, params...)
|
||||
dbg = dbg.Where(whereSql, params...)
|
||||
}
|
||||
// page number and size
|
||||
if pageSize := querys.PageSize; pageSize > 0 {
|
||||
dborm = dborm.Limit(pageSize)
|
||||
dbg = dbg.Limit(pageSize)
|
||||
if pageNum := querys.PageNum; pageNum > 0 {
|
||||
dborm = dborm.Offset((pageNum - 1) * pageSize)
|
||||
dbg = dbg.Offset((pageNum - 1) * pageSize)
|
||||
}
|
||||
}
|
||||
|
||||
// order by
|
||||
if sortField, sortOrder := querys.SortField, querys.SortOrder; sortField != "" && sortOrder != "" {
|
||||
orderBy := fmt.Sprintf("%s %s", sortField, sortOrder)
|
||||
dborm = dborm.Order(orderBy)
|
||||
dbg = dbg.Order(orderBy)
|
||||
}
|
||||
|
||||
//err := datasource.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err := dborm.Find(&results).Error
|
||||
//err := dborm.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err := dbg.Find(&results).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -150,10 +149,9 @@ func (k *KpiCReport) GetReport2FE(c *gin.Context) {
|
||||
"neName": *r.NeName,
|
||||
"rmUID": *r.RmUID,
|
||||
"startIndex": r.Index,
|
||||
"timeGroup": r.Date[:10] + " " + *r.StartTime,
|
||||
"timeGroup": r.Date[:10] + " " + *r.EndTime,
|
||||
"createdAt": r.CreatedAt,
|
||||
"granularity": r.Granularity,
|
||||
"tenantID": r.TenantID,
|
||||
}
|
||||
|
||||
for _, k := range r.KpiValues {
|
||||
@@ -171,7 +169,7 @@ func (k *KpiCReport) GetTotalList(c *gin.Context) {
|
||||
|
||||
var querys KpiCReportQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -180,11 +178,11 @@ func (k *KpiCReport) GetTotalList(c *gin.Context) {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
params = append(params, strings.ToUpper(querys.NeType))
|
||||
} else {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found NE type"))
|
||||
c.JSON(http.StatusOK, services.ErrResp("Not found NE type"))
|
||||
return
|
||||
}
|
||||
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||
dborm := datasource.DefaultDB().Table(tableName)
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.StartTime != "" {
|
||||
conditions = append(conditions, "created_at >= ?")
|
||||
@@ -198,40 +196,39 @@ func (k *KpiCReport) GetTotalList(c *gin.Context) {
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
dborm = dborm.Where(whereSql, params...)
|
||||
dbg = dbg.Where(whereSql, params...)
|
||||
}
|
||||
|
||||
// get total number
|
||||
var total int64 = 0
|
||||
err := dborm.Count(&total).Error
|
||||
err := dbg.Count(&total).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// page number and size
|
||||
if pageSize := querys.PageSize; pageSize > 0 {
|
||||
dborm = dborm.Limit(pageSize)
|
||||
dbg = dbg.Limit(pageSize)
|
||||
if pageNum := querys.PageNum; pageNum > 0 {
|
||||
dborm = dborm.Offset((pageNum - 1) * pageSize)
|
||||
dbg = dbg.Offset((pageNum - 1) * pageSize)
|
||||
}
|
||||
}
|
||||
|
||||
// order by
|
||||
if sortField, sortOrder := querys.SortField, querys.SortOrder; sortField != "" && sortOrder != "" {
|
||||
orderBy := fmt.Sprintf("%s %s", sortField, sortOrder)
|
||||
dborm = dborm.Order(orderBy)
|
||||
dbg = dbg.Order(orderBy)
|
||||
}
|
||||
|
||||
//err := datasource.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err = dborm.Find(&reports).Error
|
||||
//err := dborm.DefaultDB().Table(tableName).Where(whereSql, params...).Find(&reports).Error
|
||||
err = dbg.Find(&reports).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, services.TotalDataResp(reports, total))
|
||||
//c.JSON(http.StatusOK, reports)
|
||||
}
|
||||
|
||||
func (k *KpiCReport) Total(c *gin.Context) {
|
||||
@@ -240,7 +237,7 @@ func (k *KpiCReport) Total(c *gin.Context) {
|
||||
|
||||
var querys KpiCReportQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -249,11 +246,11 @@ func (k *KpiCReport) Total(c *gin.Context) {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
params = append(params, strings.ToUpper(querys.NeType))
|
||||
} else {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp("Not found NE type"))
|
||||
c.JSON(http.StatusOK, services.ErrResp("Not found NE type"))
|
||||
return
|
||||
}
|
||||
tableName := TableName() + "_" + strings.ToLower(querys.NeType)
|
||||
dborm := datasource.DefaultDB().Table(tableName)
|
||||
dbg := dborm.DefaultDB().Table(tableName)
|
||||
|
||||
if querys.StartTime != "" {
|
||||
conditions = append(conditions, "created_at >= ?")
|
||||
@@ -267,12 +264,12 @@ func (k *KpiCReport) Total(c *gin.Context) {
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
dborm = dborm.Where(whereSql, params...)
|
||||
dbg = dbg.Where(whereSql, params...)
|
||||
}
|
||||
var total int64 = 0
|
||||
err := dborm.Count(&total).Error
|
||||
err := dbg.Count(&total).Error
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -283,11 +280,11 @@ func (k *KpiCReport) Post(c *gin.Context) {
|
||||
var report KpiCReport
|
||||
|
||||
if err := c.ShouldBindJSON(&report); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
if err := datasource.DefaultDB().Create(&report).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
if err := dborm.DefaultDB().Create(&report).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusCreated, services.DataResp(report))
|
||||
@@ -297,24 +294,24 @@ func (k *KpiCReport) Put(c *gin.Context) {
|
||||
var report KpiCReport
|
||||
id := c.Param("id")
|
||||
|
||||
if err := datasource.DefaultDB().First(&report, id).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, services.ErrResp("KPI report not found"))
|
||||
if err := dborm.DefaultDB().First(&report, id).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator report not found"))
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&report); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
datasource.DefaultDB().Save(&report)
|
||||
dborm.DefaultDB().Save(&report)
|
||||
c.JSON(http.StatusOK, services.DataResp(report))
|
||||
}
|
||||
|
||||
func (k *KpiCReport) Delete(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := datasource.DefaultDB().Delete(&KpiCReport{}, id).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, services.ErrResp("KPI report not found"))
|
||||
if err := dborm.DefaultDB().Delete(&KpiCReport{}, id).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator report not found"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -323,7 +320,7 @@ func (k *KpiCReport) Delete(c *gin.Context) {
|
||||
|
||||
func InsertKpiCReport(neType string, report KpiCReport) {
|
||||
tableName := TableName() + "_" + strings.ToLower(neType)
|
||||
if err := datasource.DefaultDB().Table(tableName).Create(&report).Error; err != nil {
|
||||
if err := dborm.DefaultDB().Table(tableName).Create(&report).Error; err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"be.ems/lib/dborm"
|
||||
"be.ems/lib/services"
|
||||
"be.ems/src/framework/datasource"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -17,11 +17,11 @@ func (k *KpiCTitle) GetToalList(c *gin.Context) {
|
||||
|
||||
var querys KpiCTitleQuery
|
||||
if err := c.ShouldBindQuery(&querys); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
dborm := datasource.DefaultDB().Table(k.TableName())
|
||||
dbg := dborm.DefaultDB().Table(k.TableName())
|
||||
// construct condition to get
|
||||
if neType := querys.NeType; neType != "" {
|
||||
conditions = append(conditions, "ne_type = ?")
|
||||
@@ -34,31 +34,31 @@ func (k *KpiCTitle) GetToalList(c *gin.Context) {
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
dborm = dborm.Where(whereSql, params...)
|
||||
dbg = dbg.Where(whereSql, params...)
|
||||
}
|
||||
|
||||
// Get total number
|
||||
var total int64 = 0
|
||||
if err := dborm.Count(&total).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
if err := dbg.Count(&total).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// page number and size
|
||||
if pageSize := querys.PageSize; pageSize > 0 {
|
||||
dborm = dborm.Limit(pageSize)
|
||||
dbg = dbg.Limit(pageSize)
|
||||
if pageNum := querys.PageNum; pageNum > 0 {
|
||||
dborm = dborm.Offset((pageNum - 1) * pageSize)
|
||||
dbg = dbg.Offset((pageNum - 1) * pageSize)
|
||||
}
|
||||
}
|
||||
|
||||
// order by
|
||||
if sortField, sortOrder := querys.SortField, querys.SortOrder; sortField != "" && sortOrder != "" {
|
||||
orderBy := fmt.Sprintf("%s %s", sortField, sortOrder)
|
||||
dborm = dborm.Order(orderBy)
|
||||
dbg = dbg.Order(orderBy)
|
||||
}
|
||||
if err := dborm.Find(&titles).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
if err := dbg.Find(&titles).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -84,8 +84,8 @@ func (k *KpiCTitle) Get(c *gin.Context) {
|
||||
if len(conditions) > 0 {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
}
|
||||
if err := datasource.DefaultDB().Where(whereSql, params...).Find(&titles).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
if err := dborm.DefaultDB().Where(whereSql, params...).Find(&titles).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -111,8 +111,8 @@ func (k *KpiCTitle) Total(c *gin.Context) {
|
||||
whereSql += strings.Join(conditions, " and ")
|
||||
}
|
||||
var total int64 = 0
|
||||
if err := datasource.DefaultDB().Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
if err := dborm.DefaultDB().Table(k.TableName()).Where(whereSql, params...).Count(&total).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -123,14 +123,37 @@ func (k *KpiCTitle) Post(c *gin.Context) {
|
||||
var title KpiCTitle
|
||||
|
||||
if err := c.ShouldBindJSON(&title); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
if err := datasource.DefaultDB().Create(&title).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, services.ErrResp(err.Error()))
|
||||
result := dborm.DefaultDB().Where("ne_type=? and (kpi_id=? or title=?)", title.NeType, title.KpiID, title.Title).First(&title)
|
||||
if result.RowsAffected > 0 {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator already exist"))
|
||||
return
|
||||
}
|
||||
|
||||
if err := dborm.DefaultDB().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) {
|
||||
// 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 {
|
||||
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 {
|
||||
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 {
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
}
|
||||
c.JSON(http.StatusCreated, services.DataResp(title))
|
||||
}
|
||||
|
||||
@@ -138,16 +161,16 @@ func (k *KpiCTitle) Put(c *gin.Context) {
|
||||
var title KpiCTitle
|
||||
id := c.Param("id")
|
||||
|
||||
if err := datasource.DefaultDB().First(&title, id).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, services.ErrResp("KPIC Title not found"))
|
||||
if err := dborm.DefaultDB().First(&title, id).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator not found"))
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&title); err != nil {
|
||||
c.JSON(http.StatusBadRequest, services.ErrResp(err.Error()))
|
||||
c.JSON(http.StatusOK, services.ErrResp(err.Error()))
|
||||
return
|
||||
}
|
||||
datasource.DefaultDB().Save(&title)
|
||||
dborm.DefaultDB().Save(&title)
|
||||
|
||||
c.JSON(http.StatusOK, services.DataResp(title))
|
||||
}
|
||||
@@ -155,8 +178,8 @@ func (k *KpiCTitle) Put(c *gin.Context) {
|
||||
func (k *KpiCTitle) Delete(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := datasource.DefaultDB().Delete(&KpiCTitle{}, id).Error; err != nil {
|
||||
c.JSON(http.StatusNotFound, services.ErrResp("KPIC Title not found"))
|
||||
if err := dborm.DefaultDB().Delete(&KpiCTitle{}, id).Error; err != nil {
|
||||
c.JSON(http.StatusOK, services.ErrResp("custom indicator not found"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -166,7 +189,7 @@ func (k *KpiCTitle) Delete(c *gin.Context) {
|
||||
func GetActiveKPICList(neType string) []KpiCTitle {
|
||||
k := new([]KpiCTitle)
|
||||
|
||||
err := datasource.DefaultDB().Where("`ne_type` = ? and `status` = 'Active'", neType).Find(&k).Error
|
||||
err := dborm.DefaultDB().Where("`ne_type` = ? and `status` = 'Active'", neType).Find(&k).Error
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ type KpiCTitle struct {
|
||||
KpiID *string `gorm:"column:kpi_id;default:NULL," json:"kpiId,omitempty"`
|
||||
Title *string `gorm:"column:title;default:NULL," json:"title,omitempty"`
|
||||
Expression *string `gorm:"column:expression;default:NULL," json:"expression,omitempty"`
|
||||
Status *string `gorm:"column:status" json:"status,omitempty"`
|
||||
Status string `gorm:"column:status;default:'Active'" json:"status"`
|
||||
Unit *string `gorm:"column:unit" json:"unit,omitempty"`
|
||||
Description *string `gorm:"column:description;default:NULL," json:"description,omitempty"`
|
||||
CreatedBy *string `gorm:"column:created_by;default:NULL," json:"createdBy,omitempty"`
|
||||
|
||||
@@ -334,6 +334,7 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
|
||||
// 推送自定义KPI到ws订阅组
|
||||
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent)
|
||||
if neInfo.NeType == "UPF" {
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent)
|
||||
// 推送标识为:12_RMUID, exp: 12_4400HXUPF001
|
||||
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+kpiReport.Task.NE.RmUID, kpiEvent)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user