57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
|
|
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
|
||
|
|
}
|