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" ) // 实例化服务层 NeSoftwareImpl 结构体 var NewNeSoftwareImpl = &NeSoftwareImpl{ neSoftwareRepository: repository.NewNeSoftwareImpl, } // NeSoftwareImpl 网元软件包信息 服务层处理 type NeSoftwareImpl struct { // 网元软件包信息 neSoftwareRepository repository.INeSoftware } // SelectNeHostPage 分页查询列表数据 func (r *NeSoftwareImpl) SelectPage(query map[string]any) map[string]any { return r.neSoftwareRepository.SelectPage(query) } // SelectConfigList 查询列表 func (r *NeSoftwareImpl) SelectList(neSoftware model.NeSoftware) []model.NeSoftware { return r.neSoftwareRepository.SelectList(neSoftware) } // SelectByIds 通过ID查询 func (r *NeSoftwareImpl) 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 *NeSoftwareImpl) 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 *NeSoftwareImpl) 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 *NeSoftwareImpl) DeleteByIds(ids []string) (int64, error) { // 检查是否存在 rows := r.neSoftwareRepository.SelectByIds(ids) if len(rows) <= 0 { return 0, fmt.Errorf("neSoftware.noData") } if len(rows) == len(ids) { // 遍历软件包列表进行文件删除 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 *NeSoftwareImpl) 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 *NeSoftwareImpl) 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 }