package v1
|
|
import (
|
"apsClient/conf"
|
"apsClient/constvar"
|
"apsClient/model"
|
"apsClient/model/request"
|
_ "apsClient/model/response"
|
"apsClient/pkg/contextx"
|
"apsClient/pkg/ecode"
|
"apsClient/pkg/logx"
|
"apsClient/service"
|
"apsClient/utils"
|
"fmt"
|
"github.com/gin-gonic/gin"
|
)
|
|
type ConfigApi struct{}
|
|
// GetNetConfig
|
// @Tags Config
|
// @Summary 获取网络配置
|
// @Produce application/json
|
// @Success 200 {object} contextx.Response{data=[]model.NetConfig} "成功"
|
// @Router /v1/config/net [get]
|
func (slf *ConfigApi) GetNetConfig(c *gin.Context) {
|
ctx, ok := contextx.NewContext(c, nil)
|
if !ok {
|
return
|
}
|
|
ConfigData, err := service.NewConfigService().GetNetConfigList()
|
if err != nil {
|
logx.Errorf("get net config error: %v", err.Error())
|
ctx.FailWithMsg(ecode.DBErr, "获取网络配置失败")
|
return
|
}
|
|
ctx.OkWithDetailed(ConfigData)
|
}
|
|
// SetNetConfig
|
// @Tags Config
|
// @Summary 设置网络配置
|
// @Produce application/json
|
// @Param object body model.NetConfig true "参数"
|
// @Success 200 {object} contextx.Response{data=[]response.ProcessParams} "成功"
|
// @Router /v1/config/net [post]
|
func (slf *ConfigApi) SetNetConfig(c *gin.Context) {
|
var params model.NetConfig
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
_, err := service.NewConfigService().GetNetConfig(params.ID)
|
|
if err != nil {
|
logx.Errorf("get net config error: %v", err.Error())
|
ctx.FailWithMsg(ecode.DBErr, "获取网络配置失败")
|
return
|
}
|
err = service.NewConfigService().SetNetConfig(params.ID, ¶ms)
|
if err != nil {
|
logx.Errorf("SetNetConfig error: %v", err.Error())
|
ctx.FailWithMsg(ecode.DBErr, "设置失败")
|
return
|
}
|
if conf.Conf.System.NetSetShellPath == "" || conf.Conf.System.NetUpShellName == "" || conf.Conf.System.NetDownShellName == "" {
|
ctx.FailWithMsg(ecode.DBErr, "请先配置网络设置路径和脚本名")
|
return
|
}
|
var shName string
|
if params.Status == model.NetConfigStatusEnabled {
|
shName = conf.Conf.System.NetUpShellName
|
} else {
|
shName = conf.Conf.System.NetDownShellName
|
}
|
sh := fmt.Sprintf("%s %v %v %v %v", shName, params.NetworkCard, params.IP, params.MASK, params.Gateway)
|
err = utils.Cmd(conf.Conf.System.NetSetShellPath + sh)
|
if err != nil {
|
logx.Errorf("network update failed: %v", err.Error())
|
ctx.FailWithMsg(ecode.UnknownErr, "网络设置失败")
|
return
|
}
|
ctx.Ok()
|
}
|
|
// PlcGet
|
// @Tags Config
|
// @Summary 获取plc配置
|
// @Produce application/json
|
// @Success 200 {object} contextx.Response{data=model.DevicePlc} "成功"
|
// @Router /v1/config/plc [get]
|
func (slf *ConfigApi) PlcGet(c *gin.Context) {
|
ctx, ok := contextx.NewContext(c, nil)
|
if !ok {
|
return
|
}
|
|
plcData, code := service.NewDevicePlcService().GetDevicePlc()
|
if code != ecode.OK {
|
ctx.Fail(code)
|
return
|
}
|
ctx.OkWithDetailed(plcData)
|
}
|
|
// PlcUpdate
|
// @Tags Config
|
// @Summary 更新plc配置
|
// @Produce application/json
|
// @Param object body request.UpdatePlc true "查询参数"
|
// @Success 200 {object} contextx.Response{}
|
// @Router /v1/config/plc [post]
|
func (slf *ConfigApi) PlcUpdate(c *gin.Context) {
|
var params request.UpdatePlc
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
if !params.Method.Valid() {
|
ctx.FailWithMsg(ecode.ParamsErr, "接口方式不正确")
|
return
|
}
|
|
params.DeviceID = conf.Conf.System.DeviceId
|
if params.Method == constvar.PlcMethodModbusTCP && (params.Address == "" || params.Port == 0) {
|
ctx.FailWithMsg(ecode.ParamsErr, "当接口方式为modbusTCP时,地址和端口号不能为空")
|
return
|
}
|
if params.Method == constvar.PlcMethodSerial && (params.BaudRate == 0 || params.SerialName == "") {
|
ctx.FailWithMsg(ecode.ParamsErr, "当接口方式为serial时,波特率和串口名称不能为空")
|
return
|
}
|
|
if params.Method == constvar.PlcMethodModbusRTU && (params.DataBit == 0 || params.StopBit == 0 || params.Parity == 0) {
|
ctx.FailWithMsg(ecode.ParamsErr, "当接口方式为modbusRTU时,数据位,停止位,校验位不能为空")
|
return
|
}
|
|
errCode := service.NewDevicePlcService().UpdateDevicePlc(¶ms)
|
if errCode != ecode.OK {
|
ctx.Fail(errCode)
|
return
|
}
|
|
ctx.Ok()
|
}
|