|
@@ -4,12 +4,16 @@ import (
|
|
|
"encoding/json"
|
|
|
"eta_gn/eta_api/models"
|
|
|
"eta_gn/eta_api/models/knowledge"
|
|
|
+ "eta_gn/eta_api/services"
|
|
|
knowledgeServ "eta_gn/eta_api/services/knowledge"
|
|
|
"eta_gn/eta_api/utils"
|
|
|
+ "github.com/h2non/filetype"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
"github.com/tealeg/xlsx"
|
|
|
"html"
|
|
|
+ "io/ioutil"
|
|
|
"os"
|
|
|
+ "path"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -756,7 +760,7 @@ func (c *KnowledgeResourceController) ImportData() {
|
|
|
br.ErrMsg = "获取文件失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- path := "./static/知识资源导入_" + strconv.Itoa(resourceType) + "_" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
|
|
|
+ path := "./static/knowledge_import_" + strconv.Itoa(resourceType) + "_" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
|
|
|
defer file.Close()
|
|
|
err = c.SaveToFile("EntryFile", path)
|
|
|
if err != nil {
|
|
@@ -873,3 +877,162 @@ func (this *KnowledgeResourceController) ImportFailListDownload() {
|
|
|
}
|
|
|
this.Ctx.Output.Download(savePath, finalFileName)
|
|
|
}
|
|
|
+
|
|
|
+// ResourceUpload 上传文件
|
|
|
+// @Title 上传文件
|
|
|
+// @Description 上传文件
|
|
|
+// @Param MenuId query int true "目录ID"
|
|
|
+// @Param File query file true "文件"
|
|
|
+// @Success 200 Ret=200 操作成功
|
|
|
+// @router /resource/upload [post]
|
|
|
+func (this *KnowledgeResourceController) ResourceUpload() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ f, h, e := this.GetFile("File")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取资源信息失败"
|
|
|
+ br.ErrMsg = "获取资源信息失败, Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = f.Close()
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 不依赖于文件扩展名检查文件格式
|
|
|
+ fileData, e := ioutil.ReadAll(f)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "上传失败"
|
|
|
+ br.ErrMsg = "读取文件失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ kind, _ := filetype.Match(fileData)
|
|
|
+ if kind.Extension != "pdf" && kind.Extension != "ppt" && kind.Extension != "docx" && kind.Extension != "doc" {
|
|
|
+ br.Msg = "文件格式有误"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ uploadDir := utils.STATIC_DIR + "hongze/" + time.Now().Format("20060102")
|
|
|
+ if e = os.MkdirAll(uploadDir, utils.DIR_MOD); e != nil {
|
|
|
+ br.Msg = "存储目录创建失败"
|
|
|
+ br.ErrMsg = "存储目录创建失败, Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ext := path.Ext(h.Filename)
|
|
|
+ ossFileName := utils.GetRandStringNoSpecialChar(28) + ext
|
|
|
+ filePath := uploadDir + "/" + ossFileName
|
|
|
+ if e = this.SaveToFile("file", filePath); e != nil {
|
|
|
+ br.Msg = "文件保存失败"
|
|
|
+ br.ErrMsg = "文件保存失败, Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = os.Remove(filePath)
|
|
|
+ }()
|
|
|
+ // 上传到阿里云
|
|
|
+ ossDir := utils.RESOURCE_DIR + "knowledge_resource/"
|
|
|
+
|
|
|
+ resourceUrl := ``
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ resourceItem := &knowledge.UpdateResourceResp{
|
|
|
+ FileUrl: resourceUrl,
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Msg = "上传成功"
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Data = resourceItem
|
|
|
+}
|
|
|
+
|
|
|
+// GetSourceFrom
|
|
|
+// @Title 获取所有来源
|
|
|
+// @Description 获取所有来源
|
|
|
+// @Success 200 {object} models.EdbdataClassifyResp
|
|
|
+// @router /resource/source_from [get]
|
|
|
+func (this *KnowledgeResourceController) GetSourceFrom() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请重新登录"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resourceType, _ := this.GetInt("ResourceType")
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+ resourceObj := new(knowledge.KnowledgeResource)
|
|
|
+ list, err := resourceObj.GetSourceFrom(keyword, resourceType)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取数据失败"
|
|
|
+ br.Msg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(knowledge.GetSourceFromResp)
|
|
|
+ resp.List = list
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// GetAdminList
|
|
|
+// @Title 获取所有来源
|
|
|
+// @Description 获取所有来源
|
|
|
+// @Success 200 {object} models.EdbdataClassifyResp
|
|
|
+// @router /resource/admins [get]
|
|
|
+func (this *KnowledgeResourceController) GetAdminList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请重新登录"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resourceType, _ := this.GetInt("ResourceType")
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+ resourceObj := new(knowledge.KnowledgeResource)
|
|
|
+ list, err := resourceObj.GetSourceFrom(keyword, resourceType)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取数据失败"
|
|
|
+ br.Msg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(knowledge.GetSourceFromResp)
|
|
|
+ resp.List = list
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|