145 lines
3.9 KiB
Go
145 lines
3.9 KiB
Go
package service
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"be.ems/src/framework/utils/file"
|
|
"be.ems/src/modules/network_element/model"
|
|
"be.ems/src/modules/network_element/repository"
|
|
)
|
|
|
|
// 实例化服务层 NeSoftware 结构体
|
|
var NewNeSoftware = &NeSoftware{
|
|
neSoftwareRepository: repository.NewNeSoftware,
|
|
}
|
|
|
|
// NeSoftware 网元软件包信息 服务层处理
|
|
type NeSoftware struct {
|
|
neSoftwareRepository *repository.NeSoftware // 网元软件包信息
|
|
}
|
|
|
|
// SelectNeHostPage 分页查询列表数据
|
|
func (r *NeSoftware) SelectPage(query map[string]any) map[string]any {
|
|
return r.neSoftwareRepository.SelectPage(query)
|
|
}
|
|
|
|
// SelectConfigList 查询列表
|
|
func (r *NeSoftware) SelectList(neSoftware model.NeSoftware) []model.NeSoftware {
|
|
return r.neSoftwareRepository.SelectList(neSoftware)
|
|
}
|
|
|
|
// SelectByIds 通过ID查询
|
|
func (r *NeSoftware) SelectById(id string) model.NeSoftware {
|
|
if id == "" {
|
|
return model.NeSoftware{}
|
|
}
|
|
neHosts := r.neSoftwareRepository.SelectByIds([]string{id})
|
|
if len(neHosts) > 0 {
|
|
return neHosts[0]
|
|
}
|
|
return model.NeSoftware{}
|
|
}
|
|
|
|
// Insert 新增信息
|
|
func (r *NeSoftware) Insert(neSoftware model.NeSoftware) string {
|
|
inserId := r.neSoftwareRepository.Insert(neSoftware)
|
|
if inserId != "" {
|
|
// 更新同类型的新包版本
|
|
neVersions := NewNeVersion.SelectList(model.NeVersion{NeType: neSoftware.NeType}, false)
|
|
if len(neVersions) > 0 {
|
|
for _, neVersion := range neVersions {
|
|
neVersion.NewName = neSoftware.Name
|
|
neVersion.NewVersion = neSoftware.Version
|
|
neVersion.NewPath = neSoftware.Path
|
|
neVersion.Status = "3"
|
|
neVersion.UpdateBy = neSoftware.CreateBy
|
|
NewNeVersion.Update(neVersion)
|
|
}
|
|
}
|
|
}
|
|
return inserId
|
|
}
|
|
|
|
// Update 修改信息
|
|
func (r *NeSoftware) Update(neSoftware model.NeSoftware) int64 {
|
|
rows := r.neSoftwareRepository.Update(neSoftware)
|
|
if rows > 0 {
|
|
// 更新同类型的新包版本
|
|
neVersions := NewNeVersion.SelectList(model.NeVersion{
|
|
NeType: neSoftware.NeType,
|
|
Status: "3",
|
|
}, false)
|
|
if len(neVersions) > 0 {
|
|
for _, neVersion := range neVersions {
|
|
neVersion.NewName = neSoftware.Name
|
|
neVersion.NewVersion = neSoftware.Version
|
|
neVersion.NewPath = neSoftware.Path
|
|
neVersion.Status = "3"
|
|
neVersion.UpdateBy = neSoftware.UpdateBy
|
|
NewNeVersion.Update(neVersion)
|
|
}
|
|
}
|
|
}
|
|
return rows
|
|
}
|
|
|
|
// DeleteByIds 批量删除信息
|
|
func (r *NeSoftware) DeleteByIds(ids []string, delFile bool) (int64, error) {
|
|
// 检查是否存在
|
|
rows := r.neSoftwareRepository.SelectByIds(ids)
|
|
if len(rows) <= 0 {
|
|
return 0, fmt.Errorf("neSoftware.noData")
|
|
}
|
|
|
|
if len(rows) == len(ids) {
|
|
if delFile {
|
|
// 遍历软件包列表进行文件删除
|
|
for _, row := range rows {
|
|
// 检查文件是否存在
|
|
filePath := file.ParseUploadFilePath(row.Path)
|
|
if _, err := os.Stat(filePath); err != nil {
|
|
continue
|
|
}
|
|
os.Remove(filePath)
|
|
}
|
|
}
|
|
rows := r.neSoftwareRepository.DeleteByIds(ids)
|
|
return rows, nil
|
|
}
|
|
|
|
// 删除信息失败!
|
|
return 0, fmt.Errorf("delete fail")
|
|
}
|
|
|
|
// CheckUniqueTypeAndNameAndVersion 校验网元类型和文件名版本是否唯一
|
|
func (r *NeSoftware) CheckUniqueTypeAndNameAndVersion(neType, name, version, id string) bool {
|
|
uniqueId := r.neSoftwareRepository.CheckUniqueTypeAndNameAndVersion(model.NeSoftware{
|
|
NeType: neType,
|
|
Name: name,
|
|
Version: version,
|
|
})
|
|
if uniqueId == id {
|
|
return true
|
|
}
|
|
return uniqueId == ""
|
|
}
|
|
|
|
// UpdateVersions 更新软件包对应网元的新版本
|
|
func (r *NeSoftware) UpdateVersions(neSoftware model.NeSoftware, neVersion model.NeVersion) int64 {
|
|
var rows int64 = 0
|
|
// 更新同类型的新包版本
|
|
neVersions := NewNeVersion.SelectList(neVersion, false)
|
|
if len(neVersions) > 0 {
|
|
for _, v := range neVersions {
|
|
v.NewName = neSoftware.Name
|
|
v.NewVersion = neSoftware.Version
|
|
v.NewPath = neSoftware.Path
|
|
v.Status = "3"
|
|
v.UpdateBy = neVersion.UpdateBy
|
|
rows += NewNeVersion.Update(v)
|
|
}
|
|
}
|
|
return rows
|
|
}
|