|
@@ -5,10 +5,15 @@ import (
|
|
|
"eta/eta_api/controllers"
|
|
|
"eta/eta_api/models"
|
|
|
"eta/eta_api/models/material"
|
|
|
+ "eta/eta_api/services"
|
|
|
materialService "eta/eta_api/services/material"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "io"
|
|
|
+ "os"
|
|
|
+ "path"
|
|
|
+ "path/filepath"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -1021,3 +1026,155 @@ func (this *MaterialController) MaterialClassifyList() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (this *MaterialController) BatchAdd() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyId, _ := this.GetInt("ClassifyId", 0)
|
|
|
+ if classifyId <= 0 {
|
|
|
+ br.Msg = "请选择分类"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ materialNames := this.GetStrings("MaterialNames")
|
|
|
+ if len(materialNames) == 0 {
|
|
|
+ br.Msg = "请填写图片名称"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ count, err := material.GetMaterialCountByNames(materialNames)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if count > 0 {
|
|
|
+ br.Msg = "图片名称已存在,请重新填写"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ files, err := this.GetFiles("Files")
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "文件上传失败"
|
|
|
+ br.ErrMsg = "文件上传失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(files) == 0 {
|
|
|
+ br.Msg = "请选择文件"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(materialNames) != len(files) {
|
|
|
+ br.Msg = "图片数量与名称数量不一致"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ maxSize := int64(10 << 20)
|
|
|
+ for _, file := range files {
|
|
|
+ if file.Size > maxSize {
|
|
|
+ br.Msg = "文件大小超过限制"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ uploadDir := utils.STATIC_DIR + "hongze/" + time.Now().Format("20060102")
|
|
|
+ if err = os.MkdirAll(uploadDir, utils.DIR_MOD); err != nil {
|
|
|
+ br.Msg = "存储目录创建失败"
|
|
|
+ br.ErrMsg = "存储目录创建失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ fileUrlMap := make(map[string]string)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for k, fileHeader := range files {
|
|
|
+
|
|
|
+
|
|
|
+ fileName := filepath.Base(fileHeader.Filename)
|
|
|
+ fileName = strings.TrimSpace(strings.Replace(fileName, "\\", "/", -1))
|
|
|
+ fileName = strings.Trim(fileName, " \"\n\r\t")
|
|
|
+
|
|
|
+ ext := path.Ext(fileName)
|
|
|
+ ossFileName := utils.GetRandStringNoSpecialChar(28) + ext
|
|
|
+ filePath := filepath.Join(uploadDir, ossFileName)
|
|
|
+
|
|
|
+
|
|
|
+ dst, e := os.Create(filePath)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "文件创建失败"
|
|
|
+ br.ErrMsg = "文件创建失败, Err:" + e.Error()
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer dst.Close()
|
|
|
+ src, e := fileHeader.Open()
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "文件打开失败"
|
|
|
+ br.ErrMsg = "文件打开失败, Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if _, err = io.Copy(dst, src); err != nil {
|
|
|
+ br.Msg = "文件保存失败"
|
|
|
+ br.ErrMsg = "文件保存失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ _ = os.Remove(filePath)
|
|
|
+ }()
|
|
|
+
|
|
|
+ ossDir := utils.RESOURCE_DIR + "cloud_disk/"
|
|
|
+
|
|
|
+ savePath := ossDir + time.Now().Format("200601/20060102/") + ossFileName
|
|
|
+ ossClient := services.NewOssClient()
|
|
|
+ if ossClient == nil {
|
|
|
+ br.Msg = "上传失败"
|
|
|
+ br.ErrMsg = "初始化OSS服务失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resourceUrl, e := ossClient.UploadFile(ossFileName, filePath, savePath)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "文件上传失败"
|
|
|
+ br.ErrMsg = "文件上传失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ fileUrlMap[materialNames[k]] = resourceUrl
|
|
|
+ }
|
|
|
+
|
|
|
+ err = materialService.BatchAddMaterial(fileUrlMap, classifyId, sysUser.AdminId, sysUser.AdminName)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "文件上传失败"
|
|
|
+ br.ErrMsg = "文件上传失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ msg := "上传成功"
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = msg
|
|
|
+}
|