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
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
|
|
}
|
|
|