12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package dao
- import (
- "iot_manager_service/app/file/model"
- "time"
- )
- // File 文件表
- type File struct {
- ID int `gorm:"primary_key;type:int" json:"id"` //编号
- OriginalName string `gorm:"type:varchar(45)" json:"originalName"` //文件原始名
- EncryptedName string `gorm:"type:varchar(45)" json:"encryptedName"` //文件加密名
- SavePath string `gorm:"type:varchar(191)" json:"savePath"` //保存路径
- CategoryName string `gorm:"type:varchar(12)" json:"categoryName"` //文件类别名
- AuthId string `gorm:"type:varchar(12);default:'100'" json:"authId"` //权限id
- SuffixName string `gorm:"type:varchar(12)" json:"suffixName"` //文件后缀名
- UploadTime *time.Time `gorm:"column:upload_time;type:datetime" json:"uploadTime"` //上传时间
- Uploader int `gorm:"type:int" json:"uploader"` //上传者id
- IsShowed int `gorm:"type:int;default:0" json:"isShowed"` //是否展示 0=展示,1=不展示
- Icon string `gorm:"type:varchar(191)" json:"icon"` //文件图标
- Iv string `gorm:"type:varchar(191)" json:"iv"` //加密文件的偏向量
- IsDeleted int `gorm:"type:int;default:0" json:"isDeleted"` //是否删除 0=未删除,1=删除
- }
- func (*File) TableName() string {
- return "file"
- }
- func (f *File) Create() error {
- //if !errors.Is(Db.Model(&f).Where("encrypted_name = ?", f.EncryptedName).First(&f).Error, gorm.ErrRecordNotFound) {
- // return errors.New("该文件已存在")
- //}
- return Db.Model(&f).Save(&f).Error
- }
- func (f *File) GetSysUserFiles(uid int, search model.SearchSysUserFiles) (files []File, total int64, err error) {
- //var db *gorm.DB
- db := Db.Table("file").
- Select("file.id,file.*").
- Joins("left join user_file uf on uf.file_id = file.id").
- Where("uf.receiver = ? AND file.is_showed = 0 AND file.is_deleted = 0 AND uf.is_deleted = 0 AND uf.operation_status = '下发' OR uf.operation_status = '转发'", uid). // 根据upload_time字段降序排列
- Group("file.id")
- if search.OriginalName != "" {
- db.Where("original_name like ?", "%"+search.OriginalName+"%")
- }
- if search.SuffixName != "" {
- db.Where("suffix_name = ?", search.SuffixName)
- }
- if search.Sort == 0 {
- db.Order("upload_time DESC")
- } else {
- db.Order("upload_time ASC")
- }
- limit := search.PageSize
- offset := search.PageSize * (search.PageNO - 1)
- db.Count(&total)
- // 执行查询并检查错误
- err = db.Limit(limit).Offset(offset).Scan(&files).Error
- if err != nil {
- return nil, 0, err
- }
- return files, total, err
- }
- func (f *File) GetFileInfo(fileid, uid int) (model.RespFileInfo, error) {
- var result map[string]interface{}
- query := `SELECT file.original_name, file.auth_id, uf.effective_date FROM
- file LEFT JOIN user_file uf ON uf.file_id = file.id WHERE uf.file_id = ?
- AND uf.receiver = ? ORDER BY uf.effective_date DESC LIMIT 1`
- Db.Raw(query, fileid, uid).Scan(&result)
- authId, _ := result["auth_id"].(string)
- originalName, _ := result["original_name"].(string)
- effectiveDate, _ := result["effective_date"].(time.Time)
- return model.RespFileInfo{AuthId: authId, OriginalName: originalName, EffectiveDate: effectiveDate}, nil
- }
- func (f *File) GetFile(id string) (*File, error) {
- err := Db.Model(&f).Where("id = ?", id).First(&f).Error
- return f, err
- }
- func (f *File) GetMyUploadFiles(id int) ([]File, error) {
- var files []File
- err := Db.Model(&f).Where("uploader = ? and is_deleted = 0", id).Order("upload_time desc").Find(&files).Error
- if err != nil {
- return nil, err
- }
- return files, err
- }
|