You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

197 lines
5.4 KiB

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
}