Files
be.ems/src/modules/ne/service/ne_software.go
2025-09-01 11:15:32 +08:00

147 lines
3.9 KiB
Go

package service
import (
"fmt"
"os"
"be.ems/src/framework/utils/file"
"be.ems/src/modules/ne/model"
"be.ems/src/modules/ne/repository"
)
// 实例化服务层 NeSoftware 结构体
var NewNeSoftware = &NeSoftware{
neSoftwareRepository: repository.NewNeSoftware,
neVersionService: NewNeVersion,
}
// NeSoftware 网元软件包信息 服务层处理
type NeSoftware struct {
neSoftwareRepository *repository.NeSoftware // 网元软件包信息
neVersionService *NeVersion // 网元版本信息服务
}
// FindByPage 分页查询列表数据
func (r NeSoftware) FindByPage(query map[string]string) ([]model.NeSoftware, int64) {
return r.neSoftwareRepository.SelectByPage(query)
}
// Find 查询列表
func (r NeSoftware) Find(neSoftware model.NeSoftware) []model.NeSoftware {
return r.neSoftwareRepository.Select(neSoftware)
}
// FindById 通过ID查询
func (r NeSoftware) FindById(id int64) model.NeSoftware {
if id <= 0 {
return model.NeSoftware{}
}
neHosts := r.neSoftwareRepository.SelectByIds([]int64{id})
if len(neHosts) > 0 {
return neHosts[0]
}
return model.NeSoftware{}
}
// Insert 新增信息
func (r NeSoftware) Insert(neSoftware model.NeSoftware) int64 {
inserId := r.neSoftwareRepository.Insert(neSoftware)
if inserId > 0 {
// 更新同类型的新包版本
neVersions := r.neVersionService.Find(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
r.neVersionService.Update(neVersion)
}
}
}
return inserId
}
// Update 修改信息
func (r NeSoftware) Update(neSoftware model.NeSoftware) int64 {
rows := r.neSoftwareRepository.Update(neSoftware)
if rows > 0 {
// 更新同类型的新包版本
neVersions := r.neVersionService.Find(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
r.neVersionService.Update(neVersion)
}
}
}
return rows
}
// DeleteByIds 批量删除信息
func (r NeSoftware) DeleteByIds(ids []int64, 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.ParseUploadFileAbsPath(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 string, id int64) bool {
uniqueId := r.neSoftwareRepository.CheckUnique(model.NeSoftware{
NeType: neType,
Name: name,
Version: version,
})
if uniqueId == id {
return true
}
return uniqueId == 0
}
// UpdateVersions 更新软件包对应网元的新版本
func (r NeSoftware) UpdateVersions(neSoftware model.NeSoftware, neVersion model.NeVersion) int64 {
var rows int64 = 0
// 更新同类型的新包版本
neVersions := r.neVersionService.Find(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 += r.neVersionService.Update(v)
}
}
return rows
}