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.UnknownErr, "获取网络配置失败") 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.UnknownErr, "获取网络配置失败") 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 } if params.Method == constvar.PlcMethodModbusTCP && (params.Address == "" || params.Port == 0) { ctx.FailWithMsg(ecode.ParamsErr, "当接口方式为modbusTCP时,address和port不能为空") return } if params.Method == constvar.PlcMethodSerial && (params.BaudRate == 0 || params.SerialName == "") { ctx.FailWithMsg(ecode.ParamsErr, "当接口方式为serial时,baudRate和serialName不能为空") return } errCode := service.NewDevicePlcService().UpdateDevicePlc(¶ms) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() }