| | |
| | | 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" |
| | | ) |
| | | |
| | |
| | | ConfigData, err := service.NewConfigService().GetNetConfigList() |
| | | if err != nil { |
| | | logx.Errorf("get net config error: %v", err.Error()) |
| | | ctx.FailWithMsg(ecode.UnknownErr, "获取网络配置失败") |
| | | ctx.FailWithMsg(ecode.DBErr, "获取网络配置失败") |
| | | return |
| | | } |
| | | |
| | |
| | | // @Produce application/json |
| | | // @Param object body model.NetConfig true "参数" |
| | | // @Success 200 {object} contextx.Response{data=[]response.ProcessParams} "成功" |
| | | // @Router /v1/config/net [put] |
| | | // @Router /v1/config/net [post] |
| | | func (slf *ConfigApi) SetNetConfig(c *gin.Context) { |
| | | var params model.NetConfig |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | |
| | | return |
| | | } |
| | | |
| | | _, err := service.NewConfigService().GetNetConfig(params.Id) |
| | | _, err := service.NewConfigService().GetNetConfig(params.ID) |
| | | |
| | | if err != nil { |
| | | logx.Errorf("get net config error: %v", err.Error()) |
| | | ctx.FailWithMsg(ecode.UnknownErr, "获取网络配置失败") |
| | | ctx.FailWithMsg(ecode.DBErr, "获取网络配置失败") |
| | | return |
| | | } |
| | | |
| | | err = service.NewConfigService().SetNetConfig(params.Id, ¶ms) |
| | | 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.CurrentDeviceID |
| | | 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() |
| | | } |