|
|
package FileRelateDao
|
|
|
|
|
|
import (
|
|
|
"dsSzxy/Utils/CommonUtil"
|
|
|
"dsSzxy/Utils/ConfigUtil"
|
|
|
"dsSzxy/Utils/DbUtil"
|
|
|
"dsSzxy/Utils/SqlKit"
|
|
|
"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.IdentityId = 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) (bool, error) {
|
|
|
var model models.TZhxyClouddiskTreeFile
|
|
|
model.FileId = fileId
|
|
|
model.NodeId = nodeId
|
|
|
_, err := db.Insert(model)
|
|
|
if err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
//删除云盘结点文件
|
|
|
func DelNodeFile(nodeId string, fileId string) (bool, error) {
|
|
|
sql := `delete from t_zhxy_clouddisk_tree_file where node_id=? and file_id=?`
|
|
|
_, err := db.SQL(sql, nodeId, fileId).Execute()
|
|
|
if err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
//获取指定树型结构下的子目录(同步)
|
|
|
func GetSyncTree(identityId int32, personId int32) (bool, error) {
|
|
|
sql := `select node_id,node_name,parent_id,identity_id,person_id from t_zhxy_clouddisk_tree where identity_id=? and person_id=?`
|
|
|
_, err := db.SQL(sql, identityId, personId).Execute()
|
|
|
if err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
//获取指定树型结构下的子目录(异步)
|
|
|
func GetAsyncTree(identityId int32, personId int32, parentId string) (bool, error) {
|
|
|
sql := `select node_id,node_name,parent_id,identity_id,person_id from t_zhxy_clouddisk_tree where identity_id=? and person_id=? and parent_id=?`
|
|
|
_, err := db.SQL(sql, identityId, personId, parentId).Execute()
|
|
|
if err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
//获取指定树形结构下的文件列表
|
|
|
func GetFileList(identityId int32, personId int32, nodeId string, limit int, offset int) (int32, []map[string]interface{}) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("t1.*,t2.file_name,t2.file_size").
|
|
|
From(`t_zhxy_clouddisk_tree_file as t1`).
|
|
|
InnerJoin("t_zhxy_file as t2", "t1.file_id=t2.file_id").
|
|
|
Where(builder.Eq{"t2.b_use": 1}).
|
|
|
And(builder.Eq{"t1.identity_id": identityId}).
|
|
|
And(builder.Eq{"t1.person_id": personId}).
|
|
|
And(builder.Eq{"t1.node_id": nodeId}).OrderBy("t1.record_time desc")
|
|
|
//获取拼接完成的SQL语句
|
|
|
sql, err := myBuilder.Limit(limit, offset).ToBoundSQL()
|
|
|
if err != nil {
|
|
|
fmt.Println(err.Error())
|
|
|
}
|
|
|
c, err := SqlKit.Count(sql)
|
|
|
if err != nil {
|
|
|
fmt.Println(err.Error())
|
|
|
}
|
|
|
list, err := db.SQL(sql).Query().List()
|
|
|
if err != nil {
|
|
|
fmt.Println(err.Error())
|
|
|
}
|
|
|
return c, list
|
|
|
}
|