|
@@ -133,11 +133,17 @@ func (this *MaterialController) AddMaterialClassify() {
|
|
|
level = parentClassify.Level + 1
|
|
|
levelPath = parentClassify.LevelPath
|
|
|
}
|
|
|
+ var count int
|
|
|
+ switch this.Lang {
|
|
|
+ case utils.LANG_EN:
|
|
|
+ count, err = material.GetMaterialClassifyNameEnCount(req.ClassifyName, req.ParentId)
|
|
|
+ default:
|
|
|
+ count, err = material.GetMaterialClassifyNameCount(req.ClassifyName, req.ParentId)
|
|
|
+ }
|
|
|
|
|
|
- count, e := material.GetMaterialClassifyNameCount(req.ClassifyName, req.ParentId)
|
|
|
- if e != nil {
|
|
|
+ if err != nil {
|
|
|
br.Msg = "判断名称是否已存在失败"
|
|
|
- br.ErrMsg = "判断名称是否已存在失败,Err:" + e.Error()
|
|
|
+ br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
if count > 0 {
|
|
@@ -151,6 +157,7 @@ func (this *MaterialController) AddMaterialClassify() {
|
|
|
maxSort, _ := material.GetMaterialClassifyMaxSort(req.ParentId)
|
|
|
classify.ParentId = req.ParentId
|
|
|
classify.ClassifyName = req.ClassifyName
|
|
|
+ classify.ClassifyNameEn = req.ClassifyName
|
|
|
classify.CreateTime = time.Now()
|
|
|
classify.ModifyTime = time.Now()
|
|
|
classify.SysUserId = this.SysUser.AdminId
|
|
@@ -224,7 +231,19 @@ func (this *MaterialController) EditMaterialClassify() {
|
|
|
br.Msg = "获取分类信息失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- count, err := material.GetMaterialClassifyNameNotSelfCount(req.ClassifyId, req.ClassifyName, item.ParentId)
|
|
|
+ var count int
|
|
|
+ updateStr := make([]string, 0)
|
|
|
+ switch this.Lang {
|
|
|
+ case utils.LANG_EN:
|
|
|
+ count, err = material.GetMaterialClassifyNameEnNotSelfCount(req.ClassifyId, req.ClassifyName, item.ParentId)
|
|
|
+ item.ClassifyNameEn = req.ClassifyName
|
|
|
+ updateStr = append(updateStr, "ClassifyNameEn")
|
|
|
+ default:
|
|
|
+ count, err = material.GetMaterialClassifyNameNotSelfCount(req.ClassifyId, req.ClassifyName, item.ParentId)
|
|
|
+ item.ClassifyName = req.ClassifyName
|
|
|
+ updateStr = append(updateStr, "ClassifyName")
|
|
|
+ }
|
|
|
+
|
|
|
if err != nil {
|
|
|
br.Msg = "判断名称是否已存在失败"
|
|
|
br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
|
|
@@ -235,13 +254,10 @@ func (this *MaterialController) EditMaterialClassify() {
|
|
|
br.IsSendEmail = false
|
|
|
return
|
|
|
}
|
|
|
- //levelPath = fmt.Sprintf("%s,%d", levelPath, req.ClassifyId)
|
|
|
- //item.LevelPath = levelPath
|
|
|
- //item.ParentId = req.ParentId
|
|
|
- item.ClassifyName = req.ClassifyName
|
|
|
+
|
|
|
item.ModifyTime = time.Now()
|
|
|
- //e = item.Update([]string{"LevelPath", "ParentId", "ClassifyName", "ModifyTime"})
|
|
|
- err = item.Update([]string{"ClassifyName", "ModifyTime"})
|
|
|
+ updateStr = append(updateStr, "ModifyTime")
|
|
|
+ err = item.Update(updateStr)
|
|
|
if err != nil {
|
|
|
br.Msg = "保存分类失败"
|
|
|
br.ErrMsg = "保存分类失败,Err:" + err.Error()
|
|
@@ -1179,108 +1195,40 @@ func (this *MaterialController) BatchAdd() {
|
|
|
br.Msg = "请填写图片名称"
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 判断文件名是否已存在
|
|
|
- exist, e := material.GetMaterialByNames(materialNames)
|
|
|
- if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if e == nil && exist.MaterialId > 0 {
|
|
|
- br.Msg = fmt.Sprintf("图片名称:%s 已存在", exist.MaterialName)
|
|
|
- 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
|
|
|
- }
|
|
|
- // 创建目标目录(如果不存在)
|
|
|
- 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
|
|
|
- }
|
|
|
-
|
|
|
- // 处理单个文件(这里假设files是一个多文件字段)
|
|
|
- // 实际上,当使用<input type="file" name="files" multiple>时,
|
|
|
- // 它会作为多个文件字段发送到服务器,名字相同但后缀不同,例如:files, files[1], files[2]等。
|
|
|
- // 所以我们需要遍历这些字段。
|
|
|
-
|
|
|
- // 创建一个map来存储所有文件
|
|
|
- fileUrlMap := make(map[string]string)
|
|
|
-
|
|
|
- // 获取上传文件的头部信息
|
|
|
- //fileHeaders := this.Ctx.Request.Header["Content-Disposition"]
|
|
|
- for k, fileHeader := range files {
|
|
|
- // 解析Content-Disposition头以获取文件名
|
|
|
- // 获取文件名(避免路径遍历攻击,只使用文件名部分)
|
|
|
- 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()
|
|
|
- //http.Error(w, e.Error(), http.StatusInternalServerError)
|
|
|
- return
|
|
|
- }
|
|
|
- defer dst.Close()
|
|
|
- src, e := fileHeader.Open()
|
|
|
- if e != nil {
|
|
|
- br.Msg = "文件打开失败"
|
|
|
- br.ErrMsg = "文件打开失败, Err:" + e.Error()
|
|
|
+ existList := make([]*material.Material, 0)
|
|
|
+ switch this.Lang {
|
|
|
+ case utils.LANG_EN:
|
|
|
+ existList, err = material.GetMaterialByNameEns(materialNames)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- // 将上传的文件内容复制到目标文件
|
|
|
- if _, err = io.Copy(dst, src); err != nil {
|
|
|
- br.Msg = "文件保存失败"
|
|
|
- br.ErrMsg = "文件保存失败, Err:" + err.Error()
|
|
|
+ if len(existList) > 0 {
|
|
|
+ msg := "图片名称:"
|
|
|
+ for _, v := range existList {
|
|
|
+ msg += v.MaterialNameEn + " "
|
|
|
+ }
|
|
|
+ br.Msg = fmt.Sprintf("%s 已存在", msg)
|
|
|
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服务失败"
|
|
|
+ default:
|
|
|
+ // 判断文件名是否已存在
|
|
|
+ existList, err = material.GetMaterialByNames(materialNames)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- resourceUrl, e := ossClient.UploadFile(ossFileName, filePath, savePath)
|
|
|
- if e != nil {
|
|
|
- br.Msg = "文件上传失败"
|
|
|
- br.ErrMsg = "文件上传失败,Err:" + e.Error()
|
|
|
+ if len(existList) > 0 {
|
|
|
+ msg := "图片名称:"
|
|
|
+ for _, v := range existList {
|
|
|
+ msg += v.MaterialName + " "
|
|
|
+ }
|
|
|
+ br.Msg = fmt.Sprintf("%s 已存在", msg)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 将文件保存到map中(这里主要是为了演示,实际使用中可能不需要)
|
|
|
- fileUrlMap[materialNames[k]] = resourceUrl
|
|
|
- }*/
|
|
|
-
|
|
|
+ }
|
|
|
err = materialService.BatchAddMaterial(req.MaterialList, classifyId, sysUser.AdminId, sysUser.AdminName)
|
|
|
if err != nil {
|
|
|
br.Msg = "文件上传失败"
|
|
@@ -1571,28 +1519,41 @@ func (this *MaterialController) Rename() {
|
|
|
br.ErrMsg = "获取素材库信息失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- // 判断名称是否重复
|
|
|
- if info.MaterialName == req.MaterialName {
|
|
|
- br.Msg = "名称未修改"
|
|
|
- return
|
|
|
+ var exist *material.Material
|
|
|
+ updateStr := make([]string, 0)
|
|
|
+ switch this.Lang {
|
|
|
+ case utils.LANG_EN:
|
|
|
+ // 判断名称是否重复
|
|
|
+ if info.MaterialNameEn == req.MaterialName {
|
|
|
+ br.Msg = "名称未修改"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ exist, err = material.GetMaterialByNameEn(req.MaterialName)
|
|
|
+ info.MaterialNameEn = req.MaterialName
|
|
|
+ updateStr = append(updateStr, "MaterialNameEn")
|
|
|
+ default:
|
|
|
+ // 判断名称是否重复
|
|
|
+ if info.MaterialName == req.MaterialName {
|
|
|
+ br.Msg = "名称未修改"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ exist, err = material.GetMaterialByName(req.MaterialName)
|
|
|
+ info.MaterialName = req.MaterialName
|
|
|
+ updateStr = append(updateStr, "MaterialName")
|
|
|
}
|
|
|
-
|
|
|
- // 查询名称是否已存在
|
|
|
- exist, e := material.GetMaterialByNames([]string{req.MaterialName})
|
|
|
- if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
br.Msg = "获取失败"
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- if e == nil && exist.MaterialId > 0 {
|
|
|
+ if err == nil && exist.MaterialId > 0 {
|
|
|
br.Msg = "图片名称已存在"
|
|
|
return
|
|
|
}
|
|
|
- info.MaterialName = req.MaterialName
|
|
|
info.ModifyTime = time.Now()
|
|
|
-
|
|
|
+ updateStr = append(updateStr, "ModifyTime")
|
|
|
//更换分类素材库
|
|
|
- err = info.Update([]string{"MaterialName", "ModifyTime"})
|
|
|
+ err = info.Update(updateStr)
|
|
|
if err != nil {
|
|
|
br.Msg = err.Error()
|
|
|
return
|