Files
be.ems/src/modules/network_element/service/ne_software.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
}