package service import ( "bkb-seller/global" "bkb-seller/model" "bkb-seller/model/request" "errors" ) func GetSourceFileList(info *request.SearchSourceFileParams, userID string) (err error, list interface{}, total int64) { limit := info.PageSize offset := info.PageSize * (info.Page - 1) db := global.MG_DB.Model(&model.SourceFile{}) if info.Status != "" { db = db.Where("status = ?", info.Status) } if userID != "" { db = db.Where("user_id = ?", userID) } if info.Type != "" { db = db.Where("type = ?", info.Type) } if info.FileName != "" { db = db.Where("file_name like ?", "%"+info.FileName+"%") } var dataList []model.SourceFileList err = db.Count(&total).Error if err != nil { return } err = db.Select("*"). Order("id desc").Limit(limit).Offset(offset).Find(&dataList).Error if err != nil { return } return err, dataList, total } func CreateSourceFile(info model.SourceFile) (model.SourceFile, error) { var ( err error doc model.SourceFile ) if err = global.MG_DB.Model(&model.SourceFile{}).Create(&info).Error; err != nil { return doc, err } doc = info return doc, nil } func UpdateSourceFileStatus(info *request.UpdateSourceFileStatusParams, userID string) error { var ( err error file model.SourceFile uMap = make(map[string]interface{}) ) if err = global.MG_DB.Model(&model.SourceFile{}).Where("id = ? and user_id=?", info.ID, userID).First(&file).Error; err != nil { err = errors.New("文件不存在,或不是您的文件") return err } uMap["status"] = info.Status uMap["remark"] = info.Remark if err = global.MG_DB.Model(&model.SourceFile{}).Where("id = ?", info.ID).Updates(uMap).Error; err != nil { err = errors.New("更新失败") return err } return nil } func DeleteSourceFile(req *request.IdsReq, UserID string) error { var ( err error data []model.SourceFile ) err = global.MG_DB.Model(&model.SourceFile{}).Where("id in (?) and user_id=?", req.Ids, UserID).Find(&data).Error if err != nil { err = errors.New("数据不存在") return err } if len(data) != len(req.Ids) { return errors.New("数据不存在") } err = global.MG_DB.Model(&model.SourceFile{}).Where("id in (?) and user_id=?", req.Ids, UserID).Delete(&model.SourceFile{}).Error if err != nil { err = errors.New("删除失败") return err } return err } func GetSourceFileListCount(userID string) (error, interface{}) { var ( data = make(map[string]interface{}) err error ) db := global.MG_DB.Model(&model.SourceFile{}) if userID != "" { db = db.Where("user_id = ?", userID) } db = db.Select("sum(case when type=2 then 1 else 0 end) video,sum(case when type=1 then 1 else 0 end) image,sum(case when type=4 then 1 else 0 end) audio") err = db.Scan(&data).Error if err != nil { err = errors.New("查询失败") return err, data } return nil, data } func CreateCreateDir(info request.CreateSourceFile, appid, userID string) (model.SourceFile, error) { var ( err error doc model.SourceFile ) doc.Appid = appid doc.UserID = userID doc.FileName = info.FileName doc.ParentID = info.ParentID if err = global.MG_DB.Model(&model.SourceFile{}).Create(&doc).Error; err != nil { return doc, err } return doc, nil } func MoveFile(info request.MoveFile, appid, userID string) error { var ( err error data []model.SourceFile target model.SourceFile ) err = global.MG_DB.Model(&model.SourceFile{}).Where("id in (?) and appid=? and user_id=?", info.SourceID, appid, userID).Find(&data).Error if err != nil { err = errors.New("数据不存在") return err } if len(data) != len(info.SourceID) { return errors.New("数据不存在") } err = global.MG_DB.Model(&model.SourceFile{}).Where("id in (?) and appid=? and user_id=?", info.TargetID, appid, userID).Find(&target).Error if err != nil { err = errors.New("目标文件夹不存在") return err } err = global.MG_DB.Model(&model.SourceFile{}).Where("id in (?) and appid=? and user_id=?", info.SourceID, appid, userID).Update("parent_id", info.TargetID).Error if err != nil { err = errors.New("移动失败") return err } return err } func GetSourceFileTreeList(info *request.FileTreeParams, appid, userID string) (err error, list interface{}) { var ( dataList []model.SourceFile treeList []model.SourceFileTreeList ) db := global.MG_DB.Model(&model.SourceFile{}) if info.OnlyDir { db = db.Where("type = 4") } err = db.Select("*").Where("appid=? and user_id = ?", appid, userID).Find(&dataList).Error if err != nil { return } treeList = convertToTreeList(dataList) return err, treeList } func convertToTreeList(sourceFiles []model.SourceFile) []model.SourceFileTreeList { var treeList []model.SourceFileTreeList for _, sourceFile := range sourceFiles { if sourceFile.ParentID != 0 { continue } tree := model.SourceFileTreeList{ MG_MODEL: sourceFile.MG_MODEL, FileName: sourceFile.FileName, ParentID: sourceFile.ParentID, FileUrl: sourceFile.FileUrl, Height: sourceFile.Height, Width: sourceFile.Width, FileSize: sourceFile.FileSize, } tree.Children = convertToTreeList(getChildren(sourceFiles, sourceFile.ID)) treeList = append(treeList, tree) } return treeList } func getChildren(sourceFiles []model.SourceFile, parentID uint) []model.SourceFile { var children []model.SourceFile for _, sourceFile := range sourceFiles { if sourceFile.ParentID == parentID { children = append(children, sourceFile) } } return children }