diff --git a/go.mod b/go.mod index bd48683fe31ac7146c39e52877154fb94a1d6e79..68b3295d1bd86287bf2666083da0b89fb42edebf 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module gitlab.wodcloud.com/smart-operation/so-operation-api go 1.19 require ( + github.com/360EntSecGroup-Skylar/excelize v1.4.1 github.com/bytedance/go-tagexpr v2.7.4+incompatible github.com/gin-gonic/gin v1.9.0 github.com/go-playground/locales v0.14.1 @@ -45,6 +46,7 @@ require ( github.com/minio/sha256-simd v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/nyaruka/phonenumbers v1.1.7 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/rs/xid v1.5.0 // indirect diff --git a/go.sum b/go.sum index e21a591aed635be6111a437d97684390a14c3df2..f05ad40709e4dab1c4f3a8884b19b6a5859e7c24 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,8 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s= gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= gitee.com/travelliu/dm v1.8.11192/go.mod h1:DHTzyhCrM843x9VdKVbZ+GKXGRbKM2sJ4LxihRxShkE= +github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0gHwBYyfo5Jcjv/Ks= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -306,6 +308,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= @@ -409,6 +413,7 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= diff --git a/src/bean/vo/request/doc_lib.go b/src/bean/vo/request/doc_lib.go new file mode 100644 index 0000000000000000000000000000000000000000..725b8fc210d39a62328ca5206e351ffd995fc29e --- /dev/null +++ b/src/bean/vo/request/doc_lib.go @@ -0,0 +1 @@ +package request diff --git a/src/bean/vo/request/host_manage.go b/src/bean/vo/request/host_manage.go index 71ee0cc4526682df422a0dac04f10e7096f2c85c..8155642faae5294f25a985dd3022a4d1bbbbf311 100644 --- a/src/bean/vo/request/host_manage.go +++ b/src/bean/vo/request/host_manage.go @@ -1,24 +1,26 @@ package request type AddHostManageReq struct { - HostName string `json:"hostName"` // 主机分组名称 - HostFileUrl string `json:"hostFileUrl"` // 主机文件url - HostManageList []HostManageList `json:"hostManageList"` //主机列表 + HostName string `form:"hostName" binding:"required"` // 主机分组名称 + HostType int `form:"hostType" binding:"oneof=0 1"` //主机上传类型(0列表维护 1文件上传) + HostFileUrl string `form:"hostFileUrl"` // 主机文件url + //HostFile string `form:"hostFile"` // 主机文件 + HostManageList string `form:"hostManageList"` //主机列表 } type HostManageList struct { Ip string `json:"ip"` // ip Port string `json:"port"` // 端口 - VoucherType int `json:"voucherType"` // 凭证类型(0密码验证 密钥验证) + VoucherType int `json:"voucherType"` // 凭证类型(0密码验证 1密钥验证) UserName string `json:"userName"` // 用户名 Password string `json:"password"` // 密码 } type EditHostManageReq struct { - Id int `json:"id"` // 主键ID - HostName string `json:"hostName"` // 主机分组名称 - HostFileUrl string `json:"hostFileUrl"` // 主机文件url - HostManageList []HostManageList `json:"hostManageList"` //主机列表 + Id int `form:"id" binding:"required"` // 主键ID + HostType int `form:"hostType" binding:"oneof=0 1"` //主机上传类型(0列表维护 1文件上传) + HostFileUrl string `form:"hostFileUrl"` // 主机文件url + HostManageList string `form:"hostManageList"` //主机列表 } type DelHostManageReq struct { @@ -26,9 +28,9 @@ type DelHostManageReq struct { } type ListHostManageReq struct { - Search string `json:"search" form:"search"` //关键词 - CreateDateFrom string `json:"createDateFrom" form:"createDateFrom"` //创建时间从 - CreateDateTo string `json:"createDateTo" form:"createDateTo"` //创建时间至 + Search string `json:"search"` //关键词 + CreateDateFrom string `json:"createDateFrom"` //创建时间从 + CreateDateTo string `json:"createDateTo"` //创建时间至 Pagination } diff --git a/src/bean/vo/request/task_manage.go b/src/bean/vo/request/task_manage.go index b67dddb1319d43eb31d2ea3332b2949b87decf51..0c4b2fb6243ac6e4694c6d66b7419a42c6a230bf 100644 --- a/src/bean/vo/request/task_manage.go +++ b/src/bean/vo/request/task_manage.go @@ -3,16 +3,16 @@ package request type AddTaskManageReq struct { TaskName string `json:"taskName" vd:"len($)>0;msg:'请输入任务名称'"` // 任务名称 TaskDesc string `json:"taskDesc"` // 任务描述 - YamlDesc string `json:"yamlDesc"` // yaml文件 - YamlUrl string `json:"yamlUrl"` // yaml文件地址 + YamlDesc string `json:"yamlDesc"` // yaml内容 + YamlUrl string `json:"yamlUrl"` // yaml文件url HostGroupId int `json:"hostGroupId" vd:"$>0;msg:'请选择主机分组'"` // 主机分组ID } type EditTaskManageReq struct { Id int `json:"id" vd:"$>0;msg:'请输入id'"` // 主键ID TaskDesc string `json:"taskDesc"` // 任务描述 - YamlDesc string `json:"yamlDesc"` // yaml文件 - YamlUrl string `json:"yamlUrl"` // yaml文件地址 + YamlDesc string `json:"yamlDesc"` // yaml内容 + YamlUrl string `json:"yamlUrl"` // yaml文件url HostGroupId int `json:"hostGroupId" vd:"$>0;msg:'请选择主机分组'"` // 主机分组ID } diff --git a/src/controller/doc_lib.go b/src/controller/doc_lib.go index c2b12881d14c440f1f294b38611ef9239cfc8332..78a17e686e483c7ba4eeac7c7db6692d5b0ba4c7 100644 --- a/src/controller/doc_lib.go +++ b/src/controller/doc_lib.go @@ -16,102 +16,3 @@ func AddFile(c *gin.Context) { } SendJsonResponse(c, resp.OK, doc) } - -// -//func (d *DocLib) Get(c *gin.Context) { -// var req request.DocLibGetReq -// if err := c.ShouldBindUri(&req); err != nil { -// resp.Json(c, resp.InvalidParam.WithTranslate(err)) -// return -// } -// user, _ := header.GetUserContext(c) -// svc := new(service.DocLibSvc) -// svc.User = &user -// doc, docUrl, err := svc.Get(c, req) -// if err != nil { -// resp.Json(c, resp.FAIL.WithMsg(err.Error())) -// return -// } -// switch req.Opt { -// case "download": -// //c.Redirect(http.StatusMovedPermanently, docUrl.String()) -// docUrlParse, _ := url.Parse(docUrl.String()) -// proxy := httputil.ReverseProxy{ -// Director: func(req *http.Request) { -// req.Header = c.Request.Header -// req.Host = docUrlParse.Host -// req.URL = docUrlParse -// }, -// } -// proxy.ServeHTTP(c.Writer, c.Request) -// case "preview": -// c.Redirect(http.StatusMovedPermanently, docUrl.String()) -// case "info": -// resp.Json(c, resp.OK.WithData(doc)) -// case "tmp": -// resp.Json(c, resp.OK.WithData(docUrl.String())) -// } -//} -// -//func (d *DocLib) List(c *gin.Context) { -// var req request.DocLibListReq -// if err := c.ShouldBind(&req); err != nil { -// resp.Json(c, resp.InvalidParam.WithTranslate(err)) -// return -// } -// user, _ := header.GetUserContext(c) -// svc := new(service.DocLibSvc) -// svc.User = &user -// data, err := svc.List(c, req) -// if err != nil { -// resp.Json(c, resp.FAIL.WithMsg(err.Error())) -// return -// } -// resp.Json(c, resp.OK.WithData(data)) -//} -// -//func (d *DocLib) Del(c *gin.Context) { -// var req request.DocLibDelReq -// if err := c.ShouldBind(&req); err != nil { -// resp.Json(c, resp.InvalidParam.WithTranslate(err)) -// return -// } -// user, _ := header.GetUserContext(c) -// svc := new(service.DocLibSvc) -// svc.User = &user -// err := svc.Del(c, req) -// if err != nil { -// resp.Json(c, resp.FAIL.WithMsg(err.Error())) -// return -// } -// resp.Json(c, resp.OK) -//} -// -//func (d *DocLib) Exts(c *gin.Context) { -// user, _ := header.GetUserContext(c) -// svc := new(service.DocLibSvc) -// svc.User = &user -// data, err := svc.Exts(c) -// if err != nil { -// resp.Json(c, resp.FAIL.WithMsg(err.Error())) -// return -// } -// resp.Json(c, resp.OK.WithData(data)) -//} -// -//func (d *DocLib) Update(c *gin.Context) { -// var req request.DocLibUpdateReq -// if err := c.ShouldBind(&req); err != nil { -// resp.Json(c, resp.InvalidParam.WithTranslate(err)) -// return -// } -// user, _ := header.GetUserContext(c) -// svc := new(service.DocLibSvc) -// svc.User = &user -// doc, err := svc.Update(c, req) -// if err != nil { -// resp.Json(c, resp.FAIL.WithMsg(err.Error())) -// return -// } -// resp.Json(c, resp.OK.WithData(doc)) -//} diff --git a/src/controller/host_manage.go b/src/controller/host_manage.go index bd3cf1316e87c2be53a3d8e98bcad09ab1d69f89..945493f43e0ce2f0ddba113d5d74fb4f60fafd3a 100644 --- a/src/controller/host_manage.go +++ b/src/controller/host_manage.go @@ -1,7 +1,9 @@ package controller import ( + "encoding/json" "errors" + "github.com/360EntSecGroup-Skylar/excelize" "github.com/gin-gonic/gin" "github.com/spf13/cast" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request" @@ -10,41 +12,102 @@ import ( "gitlab.wodcloud.com/smart-operation/so-operation-api/src/util" ) +// ParsingHostFiles 解析主机文件 +func ParsingHostFiles(c *gin.Context) (hostManageList []request.HostManageList, err error) { + //获取文件流 + metaData, _, err := c.Request.FormFile("hostFile") + if err != nil { + err = resp.GetFileStreamError.WithError(err) + return + } + xlsxData, err := excelize.OpenReader(metaData) + if err != nil { + err = resp.ReadFileError.WithError(err) + return + } + //读取工作簿 + rows := xlsxData.GetRows("Sheet1") + + for i := 0; i < len(rows); i++ { + //默认跳过第一行 + if i < 1 { + continue + } + + var voucherType int + if rows[i][2] == "密码验证" { + voucherType = 0 + } else { + voucherType = 1 + } + hostManageList = append(hostManageList, request.HostManageList{ + Ip: rows[i][0], + Port: rows[i][1], + VoucherType: voucherType, + UserName: rows[i][3], + Password: rows[i][4], + }) + } + return +} + // AddHostManage 新增 func AddHostManage(c *gin.Context) { - var req request.AddHostManageReq - if err := c.ShouldBindJSON(&req); err != nil { + var ( + req request.AddHostManageReq + err error + ) + if err = c.ShouldBind(&req); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return } + + hostManageList := make([]request.HostManageList, 0) + if req.HostType == 0 { + err = json.Unmarshal([]byte(req.HostManageList), &hostManageList) + if err != nil { + SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) + return + } + } else { + if req.HostFileUrl == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机文件url为空")), nil) + return + } + //解析主机文件 + hostManageList, err = ParsingHostFiles(c) + if err != nil { + SendJsonResponse(c, resp.ReadFileError.WithError(errors.New("主机文件url为空")), nil) + return + } + } + //参数校验 if req.HostName == "" { SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组名称为空")), nil) return } - if req.HostFileUrl == "" { - if len(req.HostManageList) == 0 { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量为0")), nil) + if len(hostManageList) == 0 { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量为0")), nil) + return + } + if len(hostManageList) > 5 { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量超过5条")), nil) + return + } + for _, v := range hostManageList { + if v.Ip == "" || v.UserName == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("ip或用户名为空")), nil) return } - if len(req.HostManageList) > 5 { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量超过5条")), nil) + if v.VoucherType == 0 && v.Password == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("密码为空")), nil) return } - for _, v := range req.HostManageList { - if v.Ip == "" || v.UserName == "" { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("ip或用户名为空")), nil) - return - } - if v.VoucherType == 0 && v.Password == "" { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("密码为空")), nil) - return - } - } } hostManageSvc := service.HostManageSvc{} - err := hostManageSvc.AddHostManage(req) + err = hostManageSvc.AddHostManage(req, hostManageList) if err != nil { SendJsonResponse(c, err, nil) return @@ -54,39 +117,56 @@ func AddHostManage(c *gin.Context) { // EditHostManage 编辑 func EditHostManage(c *gin.Context) { - var req request.EditHostManageReq - if err := c.ShouldBindJSON(&req); err != nil { + var ( + req request.EditHostManageReq + err error + ) + if err := c.ShouldBind(&req); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return } + hostManageList := make([]request.HostManageList, 0) + if req.HostType == 0 { + err = json.Unmarshal([]byte(req.HostManageList), &hostManageList) + if err != nil { + SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) + return + } + } else { + if req.HostFileUrl == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机文件url为空")), nil) + return + } + //解析主机文件 + hostManageList, err = ParsingHostFiles(c) + if err != nil { + SendJsonResponse(c, resp.ReadFileError.WithError(errors.New("主机文件url为空")), nil) + return + } + } + //参数校验 - if req.HostName == "" || req.Id == 0 { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组ID或名称为空")), nil) + if len(hostManageList) == 0 { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量为0")), nil) return } - if req.HostFileUrl == "" { - if len(req.HostManageList) == 0 { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量为0")), nil) + if len(hostManageList) > 5 { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量超过5条")), nil) + return + } + for _, v := range hostManageList { + if v.Ip == "" || v.UserName == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("ip或用户名为空")), nil) return } - if len(req.HostManageList) > 5 { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("主机分组数量超过5条")), nil) + if v.VoucherType == 0 && v.Password == "" { + SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("密码为空")), nil) return } - for _, v := range req.HostManageList { - if v.Ip == "" || v.UserName == "" { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("ip或用户名为空")), nil) - return - } - if v.VoucherType == 0 && v.Password == "" { - SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("密码为空")), nil) - return - } - } } hostManageSvc := service.HostManageSvc{} - err := hostManageSvc.EditHostManage(req) + err = hostManageSvc.EditHostManage(req, hostManageList) if err != nil { SendJsonResponse(c, err, nil) return diff --git a/src/pkg/beagle/resp/code.go b/src/pkg/beagle/resp/code.go index b411d26174078de678522f109eb05fb52b2db0c5..714c7dda2492e8d2e3c8dec7608f58cadf80a469 100644 --- a/src/pkg/beagle/resp/code.go +++ b/src/pkg/beagle/resp/code.go @@ -28,4 +28,9 @@ var ( EsConnectError = Resp{Code: 5010009, Msg: "es连接失败"} AddSheetError = Resp{Code: 5010010, Msg: "新建sheet失败"} UnableAccountLock = Resp{Code: 5010011, Msg: "暂无账号锁定"} + + // 文件上传 + UploadFileError = Resp{Code: 6000001, Msg: "文件上传失败"} + GetFileStreamError = Resp{Code: 6000002, Msg: "获取文件流失败"} + ReadFileError = Resp{Code: 6000003, Msg: "读取文件失败"} ) diff --git a/src/router/router.go b/src/router/router.go index f5d001642e17e12bb06ceae68d68565091d1aed7..9afff5444aa4d398c47740fe90408af3dcc6e438 100644 --- a/src/router/router.go +++ b/src/router/router.go @@ -28,16 +28,7 @@ func Load(r *gin.Engine, middleware ...gin.HandlerFunc) { base.GET("/example/list", controller.GetExampleList) // 示例获取列表 } - //文档库 - docLib := base.Group("doc_lib") - { - docLib.POST("addFile", controller.AddFile) //文件上传 - //docLib.GET(":id/:opt", docLibController.Get) //预览或下载 - //docLib.GET("", docLibController.List) //文档列表 - //docLib.DELETE("", docLibController.Del) //删除、移除文档 - //docLib.GET("exts", docLibController.Exts) //格式列表 - //docLib.PUT("", docLibController.Update) //文档编辑 - } + base.POST("addFile", controller.AddFile) //文件上传 // 初始化自动化运维路由 InitAutomatedMaintenRouter(r) diff --git a/src/service/doc_lib.go b/src/service/doc_lib.go index c4b9a1621af48b12c4384d9ff254472768457ee7..c5382860b5610a892f0042c8ae7c01b586a25c4c 100644 --- a/src/service/doc_lib.go +++ b/src/service/doc_lib.go @@ -13,7 +13,7 @@ import ( "path" ) -var maxFileByte int64 = 104857600 //100M +var maxFileByte int64 = 20971520 //20M type DocLibSvc struct{} @@ -35,7 +35,7 @@ func (d *DocLibSvc) AddFile(c *gin.Context) (fileUrl string, err error) { ext string contentType string ) - uploadFile, err = c.FormFile("upload_file") + uploadFile, err = c.FormFile("uploadFile") if err != nil { err = errors.Wrap(err, "上传的文件不存在") return @@ -82,6 +82,5 @@ func (d *DocLibSvc) AddFile(c *gin.Context) (fileUrl string, err error) { return } fileUrl = fmt.Sprintf("https://%s/%s/%s%s", conf.Options.MinioServer, conf.Options.MinioBucket, id, ext) - fmt.Printf("https://%s/%s/%s%s", conf.Options.MinioServer, conf.Options.MinioBucket, id, ext) return } diff --git a/src/service/host_manage.go b/src/service/host_manage.go index 7b7bf84410f9207baf848acbc8990062aa4efceb..2232e966cd6e7864ddceb30258e2ed6620373dfa 100644 --- a/src/service/host_manage.go +++ b/src/service/host_manage.go @@ -15,7 +15,7 @@ type HostManageSvc struct { } // AddHostManage 新增主机 -func (h *HostManageSvc) AddHostManage(req request.AddHostManageReq) (err error) { +func (h *HostManageSvc) AddHostManage(req request.AddHostManageReq, hostManageLists []request.HostManageList) (err error) { db, err := client.GetDbClient() if err != nil { err = resp.DbConnectError.WithError(err) @@ -54,53 +54,26 @@ func (h *HostManageSvc) AddHostManage(req request.AddHostManageReq) (err error) session.Rollback() return } - - if req.HostFileUrl == "" { - //新增主机分组列表 - for _, v := range req.HostManageList { - port := "22" - if v.Port != "" { - port = v.Port - } - hostManageList := entity.HostManageList{ - Ip: v.Ip, - Port: port, - VoucherType: v.VoucherType, - UserName: v.UserName, - Password: v.Password, - HostGroupId: hostManage.Id, - } - _, err = session.Table("host_manage_list").Insert(&hostManageList) - if err != nil { - err = resp.DbInsertError.WithError(err) - session.Rollback() - return - } + //新增主机分组列表 + for _, v := range hostManageLists { + port := "22" + if v.Port != "" { + port = v.Port + } + hostManageList := entity.HostManageList{ + Ip: v.Ip, + Port: port, + VoucherType: v.VoucherType, + UserName: v.UserName, + Password: v.Password, + HostGroupId: hostManage.Id, + HostFileUrl: req.HostFileUrl, } - } else { - //读取并解析文件内容--czl - var hostManageLists []entity.HostManageList - //新增主机分组列表--文件形式 - for _, v := range hostManageLists { - port := "22" - if v.Port != "" { - port = v.Port - } - hostManageList := entity.HostManageList{ - Ip: v.Ip, - Port: port, - VoucherType: v.VoucherType, - UserName: v.UserName, - Password: v.Password, - HostGroupId: hostManage.Id, - HostFileUrl: req.HostFileUrl, - } - _, err = session.Table("host_manage_list").Insert(&hostManageList) - if err != nil { - err = resp.DbInsertError.WithError(err) - session.Rollback() - return - } + _, err = session.Table("host_manage_list").Insert(&hostManageList) + if err != nil { + err = resp.DbInsertError.WithError(err) + session.Rollback() + return } } @@ -109,7 +82,7 @@ func (h *HostManageSvc) AddHostManage(req request.AddHostManageReq) (err error) } // EditHostManage 编辑 -func (h *HostManageSvc) EditHostManage(req request.EditHostManageReq) (err error) { +func (h *HostManageSvc) EditHostManage(req request.EditHostManageReq, hostManageLists []request.HostManageList) (err error) { db, err := client.GetDbClient() if err != nil { err = resp.DbConnectError.WithError(err) @@ -121,27 +94,13 @@ func (h *HostManageSvc) EditHostManage(req request.EditHostManageReq) (err error defer session.Close() session.Begin() - // 校验 主机分组名称 是否重复 - has, err := session.Table("host_manage").Where("is_delete = 0 AND id != ? AND host_name = ?", req.Id, req.HostName).Exist() - if has { - err = resp.DbDataCheckError.WithError(errors.New("主机名称重复")) - session.Rollback() - return - } - if err != nil { - err = resp.DbSelectError.WithError(err) - session.Rollback() - return - } - //修改主机分组信息 hostManage := entity.HostManage{ - HostName: req.HostName, UpdateUser: "", UpdateTime: time.Now(), } _, err = session.Table("host_manage").Where("is_delete = 0 AND id = ?", req.Id). - Cols("host_name,update_user,update_time").Update(&hostManage) + Cols("update_user,update_time").Update(&hostManage) if err != nil { err = resp.DbUpdateError.WithError(err) session.Rollback() @@ -158,54 +117,29 @@ func (h *HostManageSvc) EditHostManage(req request.EditHostManageReq) (err error return } - if req.HostFileUrl == "" { - //修改主机分组列表 - for _, v := range req.HostManageList { - port := "22" - if v.Port != "" { - port = v.Port - } - hostManageList := entity.HostManageList{ - Ip: v.Ip, - Port: port, - VoucherType: v.VoucherType, - UserName: v.UserName, - Password: v.Password, - HostGroupId: hostManage.Id, - } - _, err = session.Table("host_manage_list").Insert(&hostManageList) - if err != nil { - err = resp.DbInsertError.WithError(err) - session.Rollback() - return - } + //新增主机分组列表 + for _, v := range hostManageLists { + port := "22" + if v.Port != "" { + port = v.Port } - } else { - //读取并解析文件内容--czl - var hostManageLists []entity.HostManageList - //新增主机分组列表--文件形式 - for _, v := range hostManageLists { - port := "22" - if v.Port != "" { - port = v.Port - } - hostManageList := entity.HostManageList{ - Ip: v.Ip, - Port: port, - VoucherType: v.VoucherType, - UserName: v.UserName, - Password: v.Password, - HostGroupId: hostManage.Id, - HostFileUrl: req.HostFileUrl, - } - _, err = session.Table("host_manage_list").Insert(&hostManageList) - if err != nil { - err = resp.DbInsertError.WithError(err) - session.Rollback() - return - } + hostManageList := entity.HostManageList{ + Ip: v.Ip, + Port: port, + VoucherType: v.VoucherType, + UserName: v.UserName, + Password: v.Password, + HostGroupId: hostManage.Id, + HostFileUrl: req.HostFileUrl, + } + _, err = session.Table("host_manage_list").Insert(&hostManageList) + if err != nil { + err = resp.DbInsertError.WithError(err) + session.Rollback() + return } } + session.Commit() return } diff --git a/src/service/task_manage.go b/src/service/task_manage.go index 043a89454e5b8543e7ea4b3924bcd35f9c723e27..04d7931cdc70537f5ffe4c56ad842d5cc463ddfd 100644 --- a/src/service/task_manage.go +++ b/src/service/task_manage.go @@ -1,6 +1,7 @@ package service import ( + "errors" "fmt" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/entity" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request" @@ -23,15 +24,15 @@ func (t *TaskManageSvc) AddTaskManage(req request.AddTaskManageReq) (err error) } // 校验 任务名称 是否重复 - //has, err := db.Table("task_manage").Where("is_delete = 0 AND task_name = ?", req.TaskName).Exist() - //if has { - // err = resp.DbDataCheckError.WithError(errors.New("任务名称重复")) - // return - //} - //if err != nil { - // err = resp.DbSelectError.WithError(err) - // return - //} + has, err := db.Table("task_manage").Where("is_delete = 0 AND task_name = ?", req.TaskName).Exist() + if has { + err = resp.DbDataCheckError.WithError(errors.New("任务名称重复")) + return + } + if err != nil { + err = resp.DbSelectError.WithError(err) + return + } taskManage := entity.TaskManage{ TaskName: req.TaskName,