package dao import ( "server/global" ) type ProjectFile struct { global.GVA_MODEL ProjectCode string `json:"projectCode" from:"projectCode" gorm:"comment:项目编号"` Name string `json:"name" from:"name" gorm:"comment:文件名称"` Key string `json:"key" from:"key" gorm:"comment:key"` Genre int `json:"genre" form:"genre" gorm:"comment:项目类型"` FileGenre FileGenre `json:"fileGenre" form:"fileGenre" gorm:"foreignKey:genre;references:id;"` Path string `json:"path" from:"path" gorm:"comment:路径"` } func (ProjectFile) TableName() string { return "project_file" } // TODO:项目文件查询 // QueryFilesByCode 查询项目文件 按项目code func QueryFilesByCode(code string) (files []ProjectFile, err error) { err = global.GVA_DB.Model(&ProjectFile{}).Where("project_code = ?", code).Preload("FileGenre").Find(&files).Error return files, err } // QueryFileList 查询项目文件列表 func QueryFileList(limit, offset, genre int, code, name string) (files []ProjectFile, total int64, err error) { // 创建db db := global.GVA_DB.Model(&ProjectFile{}).Where("project_code = ?", code) // 如果有条件搜索 下方会自动创建搜索语句 if genre != 0 { db = db.Where("genre = ?", genre) } if name != "" { db = db.Where("name LIKE ?", "%"+name+"%") } err = db.Count(&total).Error if err != nil { return } err = db.Order("id desc").Limit(limit).Offset(offset).Find(&files).Error return files, total, err } // QueryFilesByNameOrGenre 查询项目文件 按名称或类型 func QueryFilesByNameOrGenre(genre int, code, name string) (files []ProjectFile, err error) { // 创建db db := global.GVA_DB.Model(&ProjectFile{}).Where("project_code = ?", code) // 如果有条件搜索 下方会自动创建搜索语句 if genre != 0 { db = db.Where("genre = ?", genre) } if name != "" { db = db.Where("name LIKE ?", "%"+name+"%") } err = db.Order("id desc").Find(&files).Error return files, err } // TODO:项目文件新增 // CreateFile 新增文件 func (pf ProjectFile) CreateFile() error { var isFile ProjectFile global.GVA_DB.Model(&ProjectFile{}).Where("project_code = ? AND name = ? AND genre = ?", pf.ProjectCode, pf.Name, pf.Genre).First(&isFile) if isFile.ID != 0 { err := global.GVA_DB.Model(&ProjectFile{}).Where("id = ?", isFile.ID).Updates(&pf).Error if err != nil { return err } } else { err := global.GVA_DB.Model(&ProjectFile{}).Create(&pf).Error if err != nil { return err } } return nil } // TODO:项目文件修改 // TODO:项目文件删除 // DeleteFile 删除文件 func DeleteFile(id uint) error { return global.GVA_DB.Unscoped().Where("id = ?", id).Delete(&ProjectFile{}).Error }