|
@@ -2,25 +2,49 @@ package knowledge
|
|
|
|
|
|
import (
|
|
|
"eta_gn/eta_report/models"
|
|
|
+ "eta_gn/eta_report/services"
|
|
|
"eta_gn/eta_report/utils"
|
|
|
+ "fmt"
|
|
|
"html"
|
|
|
+ "io/ioutil"
|
|
|
+ "mime/multipart"
|
|
|
+ "os"
|
|
|
+ "path"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
-func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, adminRealName string) (msg string, err error) {
|
|
|
+func ReportKnowledgeResourceAdd(title string, fileUrl []string, adminId int, adminRealName, classifyPath, sourceFrom string, pushTime time.Time) (msg string, err error) {
|
|
|
classifyObj := new(models.KnowledgeClassify)
|
|
|
- childClassifyId, err := classifyObj.GetChildClassifyIdByNamePath("市场研究报告", "内部报告", "日常报告")
|
|
|
- if err != nil {
|
|
|
- if utils.IsErrNoRow(err) {
|
|
|
- msg = "分类不存在,请检查知识资源-报告库中是否存在-市场研究报告/内部报告/日常报告分类"
|
|
|
+ var childClassifyId int
|
|
|
+ if classifyPath != "" {
|
|
|
+ classifyPathArr := strings.Split(classifyPath, "/")
|
|
|
+ var classifyFirst, classifySecond, classifyThird string
|
|
|
+ switch len(classifyPathArr) {
|
|
|
+ case 1:
|
|
|
+ classifyFirst = classifyPathArr[0]
|
|
|
+ case 2:
|
|
|
+ classifyFirst = classifyPathArr[0]
|
|
|
+ classifySecond = classifyPathArr[1]
|
|
|
+ case 3:
|
|
|
+ classifyFirst = classifyPathArr[0]
|
|
|
+ classifySecond = classifyPathArr[1]
|
|
|
+ classifyThird = classifyPathArr[2]
|
|
|
+ }
|
|
|
+ childClassifyId, err = classifyObj.GetChildClassifyIdByNamePath(classifyFirst, classifySecond, classifyThird)
|
|
|
+ if err != nil {
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ msg = "分类不存在,请检查知识资源-报告库中是否存在-" + classifyPath
|
|
|
+ return
|
|
|
+ }
|
|
|
+ msg = "报告库添加失败"
|
|
|
return
|
|
|
}
|
|
|
- msg = "报告库添加失败"
|
|
|
+ } else {
|
|
|
+ msg = "分类不能为空"
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
obj := new(models.KnowledgeResource)
|
|
|
obj.ResourceType = models.KnowledgeResourceTypeReport
|
|
|
obj.ClassifyId = childClassifyId
|
|
@@ -32,15 +56,13 @@ func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, admin
|
|
|
obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
|
|
|
obj.AdminId = adminId
|
|
|
obj.AdminRealName = adminRealName
|
|
|
- obj.SourceFrom = "市场信息研究所"
|
|
|
- currentTime := time.Now()
|
|
|
- obj.StartTime = ¤tTime
|
|
|
+ obj.SourceFrom = sourceFrom
|
|
|
+ obj.StartTime = &pushTime
|
|
|
|
|
|
- obj.FileUrl = fileUrl
|
|
|
- if fileUrl != "" {
|
|
|
+ if len(fileUrl) != 0 {
|
|
|
obj.IsFile = 1
|
|
|
}
|
|
|
- err = obj.Create()
|
|
|
+ err = obj.Create(fileUrl)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -140,7 +162,7 @@ func ViewPointSave(outId, adminId int, adminRealName, title, content, sourceFrom
|
|
|
obj.StartTime = startTime
|
|
|
obj.IsFile = 0
|
|
|
obj.OutId = outId
|
|
|
- err = obj.Create()
|
|
|
+ err = obj.Create([]string{})
|
|
|
if err != nil {
|
|
|
msg = "观点保存失败"
|
|
|
return
|
|
@@ -213,3 +235,77 @@ func ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName string, resourc
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func UploadFormFile(multipartFile map[string][]*multipart.FileHeader) (fileUrl []string, msg string, err error) {
|
|
|
+ client := services.NewOssClient()
|
|
|
+
|
|
|
+
|
|
|
+ allowedExtensions := map[string]bool{
|
|
|
+ ".pdf": true,
|
|
|
+ ".doc": true,
|
|
|
+ ".docx": true,
|
|
|
+ ".ppt": true,
|
|
|
+ ".pptx": true,
|
|
|
+ }
|
|
|
+ for _, file := range multipartFile {
|
|
|
+ for _, f := range file {
|
|
|
+ if f.Filename == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ ext := path.Ext(f.Filename)
|
|
|
+ if !allowedExtensions[ext] {
|
|
|
+ msg = "文件格式不正确"
|
|
|
+ err = fmt.Errorf("文件格式不正确")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ saveName := fmt.Sprint(utils.MD5(f.Filename), time.Now().Format(utils.FormatDateTimeUnSpace), time.Now().Nanosecond(), ext)
|
|
|
+ dataDir := time.Now().Format(utils.FormatDate)
|
|
|
+ filePath := utils.StaticDir + "files/" + dataDir + "/" + saveName
|
|
|
+ ok, _ := utils.PathExists(filePath)
|
|
|
+ if !ok {
|
|
|
+ err = os.MkdirAll(filePath, utils.DIR_MOD)
|
|
|
+ if err != nil {
|
|
|
+ msg = "目录创建失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fileContent, er := f.Open()
|
|
|
+ if er != nil {
|
|
|
+ msg = "文件打开失败"
|
|
|
+ err = er
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fileContentBytes, er := ioutil.ReadAll(fileContent)
|
|
|
+ if er != nil {
|
|
|
+ msg = "文件读取失败"
|
|
|
+ err = er
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ er = utils.SaveToFile(fileContentBytes, filePath)
|
|
|
+ if er != nil {
|
|
|
+ msg = "文件保存失败"
|
|
|
+ err = er
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _, er = os.Stat(filePath)
|
|
|
+ if er != nil {
|
|
|
+ msg = "文件信息获取失败"
|
|
|
+ err = er
|
|
|
+ return
|
|
|
+ }
|
|
|
+ randStr := utils.GetRandStringNoSpecialChar(28)
|
|
|
+ fileName := randStr + ext
|
|
|
+
|
|
|
+ savePath := fmt.Sprintf("%s%s%s", utils.UploadFileDir, time.Now().Format("200601/20060102/"), fileName)
|
|
|
+ resourceUrl, er := client.UploadFile(fileName, filePath, savePath)
|
|
|
+ if er != nil {
|
|
|
+ msg = "文件上传失败"
|
|
|
+ err = er
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fileUrl = append(fileUrl, resourceUrl)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|