fix
zhangqian
2023-12-01 8324f872ef3a4d0c978a9b1d062800c6a1701c12
api/v1/config.go
@@ -1,12 +1,17 @@
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"
)
@@ -27,7 +32,7 @@
   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
   }
@@ -40,7 +45,7 @@
// @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, &params)
@@ -48,19 +53,98 @@
      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, &params)
   err = service.NewConfigService().SetNetConfig(params.ID, &params)
   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, &params)
   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(&params)
   if errCode != ecode.OK {
      ctx.Fail(errCode)
      return
   }
   ctx.Ok()
}