|
|
@@ -4,10 +4,14 @@ import (
|
|
|
"crypto/md5"
|
|
|
"encoding/hex"
|
|
|
"errors"
|
|
|
+ "fmt"
|
|
|
"go.uber.org/zap"
|
|
|
"gorm.io/gorm"
|
|
|
"io"
|
|
|
"log-server/global"
|
|
|
+ "log-server/model/common/request"
|
|
|
+ "log-server/model/task"
|
|
|
+ taskReq "log-server/model/task/request"
|
|
|
"log-server/model/task/response"
|
|
|
"log-server/utils"
|
|
|
"mime/multipart"
|
|
|
@@ -35,14 +39,15 @@ func (e *UploadFileService) UploadFileFunc(file *multipart.FileHeader) (string,
|
|
|
// 拼接新文件名
|
|
|
filename := name + "_" + time.Now().Format("20060102150405") + ext
|
|
|
// 尝试创建此路径
|
|
|
- mkdirErr := os.MkdirAll(global.GVA_CONFIG.Local.StorePath, os.ModePerm)
|
|
|
+ mkdirErr := os.MkdirAll(global.GVA_CONFIG.Local.ScriptPath, os.ModePerm)
|
|
|
if mkdirErr != nil {
|
|
|
global.GVA_LOG.Error("function os.MkdirAll() Filed", zap.Any("err", mkdirErr.Error()))
|
|
|
return "", "", "", errors.New("function os.MkdirAll() Filed, err:" + mkdirErr.Error())
|
|
|
}
|
|
|
// 拼接路径和文件名
|
|
|
- p := global.GVA_CONFIG.Local.StorePath + "/" + filename
|
|
|
- filepath := global.GVA_CONFIG.Local.Path + "/" + filename
|
|
|
+ p := global.GVA_CONFIG.Local.ScriptPath + "/" + filename
|
|
|
+ filepath := global.GVA_CONFIG.Local.ScriptPath + "/" + filename
|
|
|
+
|
|
|
|
|
|
f, openError := file.Open() // 读取文件
|
|
|
f1, openErr := file.Open() // 读取文件生成MD5值
|
|
|
@@ -67,6 +72,7 @@ func (e *UploadFileService) UploadFileFunc(file *multipart.FileHeader) (string,
|
|
|
defer out.Close() // 创建文件 defer 关闭
|
|
|
|
|
|
_, copyErr := io.Copy(out, f) // 传输(拷贝)文件
|
|
|
+ fmt.Println("拷贝文件")
|
|
|
if copyErr != nil {
|
|
|
global.GVA_LOG.Error("function io.Copy() Filed", zap.Any("err", copyErr.Error()))
|
|
|
return "", "", "", errors.New("function io.Copy() Filed, err:" + copyErr.Error())
|
|
|
@@ -77,51 +83,56 @@ func (e *UploadFileService) UploadFileFunc(file *multipart.FileHeader) (string,
|
|
|
|
|
|
|
|
|
//上传文件
|
|
|
-func (e *UploadFileService) UploadFile(gameId int, header *multipart.FileHeader) (file response.UploadFileResponse, err error) {
|
|
|
+func (e *UploadFileService) UploadFile(taskId int, user string, header *multipart.FileHeader) (file response.UploadFileResponse, err error) {
|
|
|
//查询数据库记录数
|
|
|
var count int64
|
|
|
//获取最后一条记录
|
|
|
var lastRecord response.UploadFileResponse
|
|
|
var version int
|
|
|
+ //定义下载前缀
|
|
|
+ var prefix string = global.GVA_CONFIG.PrefixUrl.PrefixLocal
|
|
|
filePath, key, md5String, uploadErr := e.UploadFileFunc(header)
|
|
|
if uploadErr != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
- global.GVA_DB.Table("upload_file").Where("game_id = ?", gameId).Count(&count)
|
|
|
+ global.GVA_DB.Table("upload_file").Where("task_id = ?", taskId).Count(&count)
|
|
|
if count == 0 {
|
|
|
version = 1
|
|
|
} else {
|
|
|
- global.GVA_DB.Table("upload_file").Where("game_id = ?", gameId).Last(&lastRecord)
|
|
|
+ global.GVA_DB.Table("upload_file").Where("task_id = ?", taskId).Last(&lastRecord)
|
|
|
version = lastRecord.Version + 1
|
|
|
}
|
|
|
|
|
|
s := strings.Split(header.Filename, ".")
|
|
|
f := response.UploadFileResponse{
|
|
|
- GameID: gameId,
|
|
|
- Url: filePath,
|
|
|
+ TaskID: taskId,
|
|
|
+ ResponsiblePerson: user,
|
|
|
+ Url: prefix + filePath,
|
|
|
Name: header.Filename,
|
|
|
Tag: s[len(s)-1],
|
|
|
Key: key,
|
|
|
Version: version,
|
|
|
Md5String: md5String,
|
|
|
+ State : 1,
|
|
|
}
|
|
|
return f, e.Upload(f)
|
|
|
}
|
|
|
|
|
|
//下载文件
|
|
|
-func (e *UploadFileService) DownloadFile(gameId int, md5String string) (info response.DownloadFile, err error) {
|
|
|
+func (e *UploadFileService) DownloadFile(taskId int, md5String string) (info response.DownloadFile, err error) {
|
|
|
var file response.UploadFileResponse
|
|
|
- var prefix string = global.GVA_CONFIG.PrefixUrl.PrefixLocal
|
|
|
+ //改由存储至数据库的时候拼接前缀
|
|
|
+ //var prefix string = global.GVA_CONFIG.PrefixUrl.PrefixLocal
|
|
|
//数据库中无记录,即不需要更新
|
|
|
- err = global.GVA_DB.Table("upload_file").Where("game_id = ?", gameId).Last(&file).Error
|
|
|
+ err = global.GVA_DB.Table("upload_file").Where("task_id = ? and state = 1", taskId).Last(&file).Error
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
info = response.DownloadFile{
|
|
|
Url: "",
|
|
|
Md5String: "",
|
|
|
Flag: false,
|
|
|
}
|
|
|
- return info, errors.New("无对应game_id")
|
|
|
+ return info, errors.New("无对应脚本")
|
|
|
}
|
|
|
|
|
|
if file.Md5String == md5String {
|
|
|
@@ -131,7 +142,7 @@ func (e *UploadFileService) DownloadFile(gameId int, md5String string) (info res
|
|
|
Flag: false,
|
|
|
}
|
|
|
} else {
|
|
|
- fullUrl := prefix + file.Url
|
|
|
+ fullUrl := file.Url
|
|
|
info = response.DownloadFile{
|
|
|
Url: fullUrl,
|
|
|
Md5String: file.Md5String,
|
|
|
@@ -141,5 +152,65 @@ func (e *UploadFileService) DownloadFile(gameId int, md5String string) (info res
|
|
|
|
|
|
return info, err
|
|
|
|
|
|
+}
|
|
|
+
|
|
|
+//条件查询脚本列表
|
|
|
+func (e *UploadFileService) GetScriptList(script task.GameScriptResponse, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
|
|
|
+ //获取分页数据
|
|
|
+ limit := info.PageSize
|
|
|
+ offset := (info.Page - 1) * info.PageSize
|
|
|
+ //绑定操作结构体
|
|
|
+ db := global.GVA_DB.Table("upload_file").Model(&task.GameScriptResponse{})
|
|
|
+ var scriptList []task.GameScriptResponse
|
|
|
+ //条件查询
|
|
|
+ if script.ResponsiblePerson != "" {
|
|
|
+ db = db.Where("responsible_person = ?", script.ResponsiblePerson)
|
|
|
+ }
|
|
|
+ if script.TaskID != 0 {
|
|
|
+ db = db.Where("task_id = ?", script.TaskID)
|
|
|
+ }
|
|
|
|
|
|
+ //先过滤在排序
|
|
|
+ if err = db.Count(&total).Error; err != nil {
|
|
|
+ return scriptList, total, err
|
|
|
+ } else {
|
|
|
+ //分页
|
|
|
+ db.Limit(limit).Offset(offset)
|
|
|
+ //判断是否有排序字段
|
|
|
+ if order != "" {
|
|
|
+ var orderStr string
|
|
|
+ orderMap := make(map[string]bool, 1)
|
|
|
+ orderMap["create_time"] = true
|
|
|
+ orderMap["task_id"] = true
|
|
|
+ orderMap["name"] = true
|
|
|
+ orderMap["responsible_person"] = true
|
|
|
+ if orderMap[order] {
|
|
|
+ //合法排序字符
|
|
|
+ if desc {
|
|
|
+ orderStr = order + " desc"
|
|
|
+ } else {
|
|
|
+ orderStr = order
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //传入排序字段非法
|
|
|
+ err = fmt.Errorf("传入非法字段 %v", order)
|
|
|
+ return scriptList, total, err
|
|
|
+ }
|
|
|
+ err = db.Order(orderStr).Find(&scriptList).Error
|
|
|
+ } else {
|
|
|
+ //默认按照名字升序排序
|
|
|
+ err = db.Order("name").Find(&scriptList).Error
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return scriptList, total, err
|
|
|
}
|
|
|
+
|
|
|
+//更改脚本状态
|
|
|
+func (e *UploadFileService) UpdateScriptStatus(c taskReq.UpdateScriptStatusRequest) (err error) {
|
|
|
+ err = global.GVA_DB.Table("upload_file").Where("id = ?", c.Id).Error
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ return errors.New("请传入正确的Id")
|
|
|
+ }
|
|
|
+ err = global.GVA_DB.Table("upload_file").Where("id = ?", c.Id).Update("state", c.State).Error
|
|
|
+ return err
|
|
|
+}
|