zhangqian
2023-08-19 2b2193e255e55fe55dedf7dce0e6bdc22f4860ee
修改网络设调用禁用或停用脚本
2个文件已删除
1个文件已添加
4个文件已修改
234 ■■■■■ 已修改文件
api/v1/config.go 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/plc.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
conf/apsClient.json 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
conf/config.go 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/clamis.go 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/cmd.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/jwt.go 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/config.go
@@ -1,6 +1,7 @@
package v1
import (
    "apsClient/conf"
    "apsClient/model"
    "apsClient/model/request"
    _ "apsClient/model/response"
@@ -8,6 +9,8 @@
    "apsClient/pkg/ecode"
    "apsClient/pkg/logx"
    "apsClient/service"
    "apsClient/utils"
    "fmt"
    "github.com/gin-gonic/gin"
)
@@ -56,13 +59,29 @@
        ctx.FailWithMsg(ecode.UnknownErr, "获取网络配置失败")
        return
    }
    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", shName, 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()
}
api/v1/plc.go
@@ -11,7 +11,6 @@
    "apsClient/service"
    "encoding/json"
    "github.com/gin-gonic/gin"
    "github.com/spf13/cast"
)
type PlcApi struct{}
@@ -48,8 +47,10 @@
        ipAddr = plcConfig.Address
    }
    resp := new(response.ProductProgress)
    if startAddress == 0 || valueType == "" {
        ctx.FailWithMsg(ecode.UnknownErr, "请先配置PLC")
        ctx.OkWithDetailed(resp)
        logx.Warnf("请先配置PLC")
        return
    }
    conn, err := plc.NewModbusConnection(ipAddr)
@@ -58,26 +59,23 @@
    }
    if err != nil {
        ctx.FailWithMsg(ecode.UnknownErr, "连接plc失败")
        ctx.OkWithDetailed(resp)
        logx.Errorf("GetProductProgress 连接plc失败: %v", err.Error())
        return
    }
    rawData, err := plc.ReadHoldingRegister(conn, startAddress, dataLength)
    if err != nil {
        ctx.FailWithMsg(ecode.UnknownErr, "获取plc数据失败")
        ctx.OkWithDetailed(resp)
        logx.Errorf("GetProductProgress 获取plc数据失败: %v", err.Error())
        return
    }
    var finishNumber interface{}
    err = json.Unmarshal(rawData, &finishNumber)
    if err != nil {
        ctx.FailWithMsg(ecode.UnknownErr, "获取生产进度数据解析失败")
        ctx.OkWithDetailed(resp)
        logx.Errorf("GetProductProgress 获取生产进度数据解析失败: %v, data: %v, valueType:%v", err.Error(), rawData, valueType)
        return
    }
    resp := response.ProductProgress{
        FinishNumber: cast.ToInt(finishNumber),
    }
    ctx.OkWithDetailed(resp)
}
conf/apsClient.json
@@ -8,7 +8,10 @@
    "LimitTimeIP": 3600,
    "RouterPrefix": "api",
    "SudoPassword": "basic2021",
    "deviceId": "DeviceID 1"
    "deviceId": "DeviceID 1",
    "netSetShellPath": "/data/network",
    "netUpShellName": "up.sh",
    "netDownShellName": "down.sh"
  },
  "log": {
    "path": "./logs/apsClient.log",
conf/config.go
@@ -24,16 +24,19 @@
type (
    System struct {
        Env           string // 环境值 develop test public
        Port          int    // 端口
        DbType        string // 数据库类型
        UseMultipoint bool   // 多点登录拦截
        UseRedis      bool   // 使用redis
        LimitCountIP  int
        LimitTimeIP   int
        RouterPrefix  string // 路由前缀
        SudoPassword  string // sudo密码
        DeviceId      string //设备id
        Env              string // 环境值 develop test public
        Port             int    // 端口
        DbType           string // 数据库类型
        UseMultipoint    bool   // 多点登录拦截
        UseRedis         bool   // 使用redis
        LimitCountIP     int
        LimitTimeIP      int
        RouterPrefix     string // 路由前缀
        SudoPassword     string // sudo密码
        DeviceId         string //设备id
        NetSetShellPath  string //网络设置脚本路径
        NetUpShellName   string //网络停用脚本
        NetDownShellName string //网络开启脚本
    }
    Etcd struct {
utils/clamis.go
File was deleted
utils/cmd.go
New file
@@ -0,0 +1,33 @@
package utils
import (
    "fmt"
    "os"
    "os/exec"
)
func Cmd(directory, script string) error {
    // 创建一个执行命令的对象
    cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf("cd %s && %s", directory, script))
    // 设置命令的工作目录
    cmd.Dir = directory
    // 将命令的输出连接到当前进程的输出
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    // 执行命令
    output, err := cmd.Output()
    if err != nil {
        return err
    }
    fmt.Println(string(output))
    // 检查命令执行结果
    if cmd.ProcessState.Success() {
        fmt.Println("脚本执行成功")
    } else {
        fmt.Println("脚本执行失败")
    }
    return nil
}
utils/jwt.go
File was deleted