dataRT/route/api/alarm.go

57 lines
1.0 KiB
Go
Raw Normal View History

2025-10-23 18:02:29 +08:00
package api
import (
"datart/data/mongo"
"datart/log"
"errors"
"regexp"
"github.com/gin-gonic/gin"
)
func (a *Api) PostInsertAlarm(ctx *gin.Context) {
alarm, ip, err := a.checkAndGenInsertAlarmRequest(ctx)
if err != nil {
log.Error(err)
ctx.JSON(200, gin.H{
"code": 1,
"msg": "invalid param",
})
return
}
_ = alarm
_ = ip
ctx.JSON(200, gin.H{
"code": 0,
"msg": "success",
})
}
func (a *Api) checkAndGenInsertAlarmRequest(ctx *gin.Context) (*mongo.Alarm, string, error) {
alarm := new(mongo.Alarm)
err := ctx.ShouldBindJSON(alarm)
if err != nil {
return nil, "", err
}
ok, err := regexp.MatchString(`ssu\d{3}`, alarm.DeviceNo)
if err != nil {
return nil, "", err
}
if !ok {
return nil, "", errors.New("invalid device_no")
}
if alarm.AlarmCode < 1 || alarm.AlarmCode > 10 {
return nil, "", errors.New("invalid alarm_code")
}
if alarm.AlarmStatus < 0 || alarm.AlarmStatus > 1 {
return nil, "", errors.New("invalid alarm_status")
}
return alarm, ctx.RemoteIP(), nil
}