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.

154 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package FileRelateDao
import (
"dsSzxy/Utils/CommonUtil"
"dsSzxy/Utils/ConfigUtil"
"dsSzxy/Utils/DbUtil"
"dsSzxy/models"
"errors"
"fmt"
"github.com/xormplus/builder"
"net/url"
"time"
)
var db = DbUtil.Engine
/**
功能:生成下载地址带中文名
*/
func GetFileDownLoadUrl(key string, originName string) string {
infix := "?response-content-disposition=attachment%3BfileName%2A%3DUTF-8%27%27"
downloadUrl := ConfigUtil.MinioDownloadPrefix + ConfigUtil.MinioBucket + "/" + key + infix + url.QueryEscape(url.QueryEscape(originName))
return downloadUrl
}
//文件记录
func FileRecord(fileName string, indentityId int32, personId int32, targetGroupId int32, tIdentityId int32, tPersonId int32, systemId int32, fileSize int32, extName string) {
var model models.TZhxyFile
model.FileId = CommonUtil.GetUUID()
model.FileName = fileName
model.FileSize = fileSize
model.BaseId = "-1"
model.BUse = 1
model.ExtName = extName
model.SystemId = systemId
model.TargetGroupId = targetGroupId
model.TargetIdentityId = tIdentityId
model.TargetPersonId = tPersonId
model.SourceIndentityId = indentityId
model.SourcePersonId = personId
model.RecordTime = time.Now()
c, err := GetFileTypeByExtName(extName)
if err == nil {
model.TypeId = int32(c)
} else {
model.TypeId = 0
}
_, err = db.Insert(model)
if err != nil {
fmt.Println(err)
return
}
}
//修改文件名称
func FileUpdate(fileId string, fileName string) {
var myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"file_name": fileName}).
From(`t_zhxy_file`).Where(builder.Eq{"file_id": fileId})
sql, _ := myBuilder.ToBoundSQL()
_, err := db.SQL(sql).Execute()
if err != nil {
fmt.Println(err.Error())
}
}
//复制文件记录
func FileCopy(fileId string, sIdentityId int32, sPersonId int32, tIdentityId int32, tPersonId int32, tGroudpId int32) (bool, error) {
//1、查询这个文件原来是谁的
modelArray := make([]models.TZhxyFile, 0)
err := db.Where("file_id = ?", fileId).Limit(1, 1).Find(&modelArray)
if err != nil {
fmt.Println("在检索时发生错误:", err.Error())
return false, err
}
//2、拷贝一份
if len(modelArray) == 0 {
return false, errors.New("没有找到指定的file_id")
}
model := modelArray[0]
model.FileId = CommonUtil.GetUUID()
model.SourceIndentityId = sIdentityId
model.SourcePersonId = sPersonId
model.TargetIdentityId = tIdentityId
model.TargetPersonId = tPersonId
model.TargetGroupId = tGroudpId
model.RecordTime = time.Now()
_, err = db.Insert(model)
if err != nil {
fmt.Println(err.Error())
return false, errors.New("写入数据库时发生错误")
}
return true, nil
}
/**
功能获取文件扩展名对应的类型ID
*/
func GetFileTypeByExtName(extName string) (int64, error) {
var myBuilder = builder.Dialect(builder.MYSQL).Select(`type_id`).
From(`t_zhxy_file_type_ext`).Where(builder.Eq{"ext_name": extName})
sql, _ := myBuilder.ToBoundSQL()
res, _ := db.SQL(sql).Query().List()
if len(res) == 0 {
return 0, nil
}
return res[0]["type_id"].(int64), nil
}
//增加云盘结点
func AddNode(identityId int32, personId int32, parentNodeId string, nodeName string) (bool, error) {
var model models.TZhxyClouddiskTree
model.NodeId = CommonUtil.GetUUID()
model.NodeName = nodeName
model.IndentityId = identityId
model.PersonId = personId
model.ParentId = parentNodeId
_, err := db.Insert(model)
if err != nil {
return false, err
} else {
return true, nil
}
}
//更新云盘结点名称
func UpdateNode(nodeId string, nodeName string) (bool, error) {
sql := `update t_zhxy_clouddisk_tree set node_name=? where node_id=?`
_, err := db.SQL(sql, nodeName, nodeId).Execute()
if err != nil {
return false, err
}
return true, nil
}
//删除云盘结点
func DelNode(nodeId string) (bool, error) {
sql := `delete from t_zhxy_clouddisk_tree where node_id=?`
_, err := db.SQL(sql, nodeId).Execute()
if err != nil {
return false, err
}
return true, nil
}
//增加云盘结点文件
func addNodeFile(nodeId string, fileId string) {
}
//删除云盘结点文件
func delNodeFile(nodeId string, fileId string) {
}