浏览代码

我的图表批量保存

xyxie 5 月之前
父节点
当前提交
eb98e38491
共有 4 个文件被更改,包括 230 次插入23 次删除
  1. 105 0
      controllers/material/material.go
  2. 12 0
      models/material/material.go
  3. 9 0
      routers/commentsRouter.go
  4. 104 23
      services/material/material.go

+ 105 - 0
controllers/material/material.go

@@ -933,6 +933,111 @@ func (this *MaterialController) SaveAsMaterial() {
 	br.Msg = msg
 	br.Msg = msg
 }
 }
 
 
+// MyChartSaveAsMaterial
+// @Title 将我的图表等封面上传至素材库
+// @Description 将图表等封面上传至素材库
+// @Param	request	body material.AddAndEditSandbox true "type json string"
+// @Success 200 {object} material.Material
+// @router /my_chart/saveAs [post]
+func (this *MaterialController) MyChartSaveAsMaterial() {
+	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
+	}
+	var req material.MyChartSaveAsMaterialReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	materialNames := make([]string, 0)
+	for _, v := range req.MaterialList {
+		if v.ClassifyId <= 0 {
+			br.Msg = "请选择分类"
+			return
+		}
+		if v.MaterialName == "" {
+			br.Msg = "请填写图片名称"
+			return
+		}
+		if v.ChartInfoId <= 0 {
+			br.Msg = "请选择图表"
+			return
+		}
+		if v.MyChartId <= 0 {
+			br.Msg = "请选择我的图表"
+			return
+		}
+		materialNames = append(materialNames, v.MaterialName)
+	}
+	if len(materialNames) == 0 {
+		br.Msg = "请填写图片名称"
+		return
+	}
+	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 len(existList) > 0 {
+			msg := "图片名称:"
+			for _, v := range existList {
+				msg += v.MaterialNameEn + " "
+			}
+			br.Msg = fmt.Sprintf("%s 已存在", msg)
+			return
+		}
+	default:
+		// 判断文件名是否已存在
+		existList, err = material.GetMaterialByNames(materialNames)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		if len(existList) > 0 {
+			msg := "图片名称:"
+			for _, v := range existList {
+				msg += v.MaterialName + " "
+			}
+			br.Msg = fmt.Sprintf("%s 已存在", msg)
+			return
+		}
+	}
+	if len(req.MaterialList) > 30 {
+		br.Msg = "最多支持选择30个图表"
+		return
+	}
+
+	err, errMsg := materialService.MyChartAddToMaterial(req, sysUser.AdminId, sysUser.RealName)
+	if err != nil {
+		br.Msg = "保存失败!"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "保存失败,Err:" + err.Error()
+		return
+	}
+
+	msg := "保存成功"
+	br.Ret = 200
+	br.Success = true
+	br.Msg = msg
+}
+
 // Delete
 // Delete
 // @Title 删除素材库
 // @Title 删除素材库
 // @Description 删除素材库接口
 // @Description 删除素材库接口

+ 12 - 0
models/material/material.go

@@ -261,6 +261,18 @@ type SaveAsMaterialReq struct {
 	ObjectType   string `description:"对象类型:chart,excel,sandbox"`
 	ObjectType   string `description:"对象类型:chart,excel,sandbox"`
 }
 }
 
 
+// MyChartSaveAsMaterialReq 添加素材的
+type MyChartSaveAsMaterialReq struct {
+	MaterialList []*MyChartSaveAsMaterialItem
+}
+
+type MyChartSaveAsMaterialItem struct {
+	MaterialName string `description:"素材名称"`
+	ChartInfoId  int    `description:"图表id"`
+	MyChartId    int    `description:"我的图表ID"`
+	ClassifyId   int    `description:"分类id"`
+}
+
 // BatchAddMaterialReq 批量添加素材的请求数据
 // BatchAddMaterialReq 批量添加素材的请求数据
 type BatchAddMaterialReq struct {
 type BatchAddMaterialReq struct {
 	MaterialList []BatchAddMaterialItem
 	MaterialList []BatchAddMaterialItem

+ 9 - 0
routers/commentsRouter.go

@@ -7504,6 +7504,15 @@ func init() {
             Filters: nil,
             Filters: nil,
             Params: nil})
             Params: nil})
 
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
+        beego.ControllerComments{
+            Method: "MyChartSaveAsMaterial",
+            Router: `/my_chart/saveAs`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
     beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/material:MaterialController"],
         beego.ControllerComments{
         beego.ControllerComments{
             Method: "Rename",
             Method: "Rename",

+ 104 - 23
services/material/material.go

@@ -163,6 +163,109 @@ func AddToMaterial(req material.SaveAsMaterialReq, opUserId int, opUserName stri
 		err = fmt.Errorf("不支持的类型")
 		err = fmt.Errorf("不支持的类型")
 		return
 		return
 	}
 	}
+
+	resourceUrl, err, errMsg := uploadToMaterial(oldRsourceUrl)
+	if err != nil {
+		return
+	}
+	// 新增素材库
+
+	sort, err := material.GetMaterialMaxSort()
+	if err != nil {
+		return
+	}
+	//素材主表信息
+	materialInfo := &material.Material{
+		MaterialName:    utils.TrimStr(req.MaterialName),
+		MaterialNameEn:  utils.TrimStr(req.MaterialName),
+		ImgUrl:          utils.TrimStr(resourceUrl),
+		SysUserId:       opUserId,
+		SysUserRealName: opUserName,
+		ModifyTime:      time.Now(),
+		CreateTime:      time.Now(),
+		ClassifyId:      req.ClassifyId,
+		Sort:            sort + 1,
+	}
+
+	//新增素材
+	id, err := material.AddMaterial(materialInfo)
+	if err != nil {
+		return
+	}
+	materialInfo.MaterialId = int(id)
+	return
+}
+
+// MyChartAddToMaterial 将我的
+func MyChartAddToMaterial(req material.MyChartSaveAsMaterialReq, opUserId int, opUserName string) (err error, errMsg string) {
+	// 判断出对应的类型,得倒最终的资源地址
+	// 获取图表ID
+	chartInfoIds := make([]int, 0)
+	for _, v := range req.MaterialList {
+		chartInfoIds = append(chartInfoIds, v.ChartInfoId)
+	}
+	// 获取图表信息
+	if len(chartInfoIds) <= 0 {
+		return
+	}
+	chartInfoList, e := data_manage.GetChartInfoByIdList(chartInfoIds)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			errMsg = "图表不存在"
+			err = fmt.Errorf("图表不存在")
+			return
+		}
+		errMsg = "获取图表信息失败"
+		err = e
+		return
+	}
+	chartInfoMap := make(map[int]string)
+	for _, v := range chartInfoList {
+		if v.ChartImage == "" {
+			errMsg = "图表封面为空"
+			err = fmt.Errorf("图表封面为空")
+			return
+		}
+		chartInfoMap[v.ChartInfoId] = v.ChartImage
+	}
+	addList := make([]*material.Material, 0)
+	sort, err := material.GetMaterialMaxSort()
+	if err != nil {
+		return
+	}
+	for _, v := range req.MaterialList {
+		sort = sort + 1
+		oldResourceUrl, ok := chartInfoMap[v.ChartInfoId]
+		if !ok {
+			return
+		}
+		resourceUrl := ""
+		resourceUrl, err, errMsg = uploadToMaterial(oldResourceUrl)
+		if err != nil {
+			return
+		}
+		// 新增素材库
+
+		//素材主表信息
+		materialInfo := &material.Material{
+			MaterialName:    utils.TrimStr(v.MaterialName),
+			MaterialNameEn:  utils.TrimStr(v.MaterialName),
+			ImgUrl:          utils.TrimStr(resourceUrl),
+			SysUserId:       opUserId,
+			SysUserRealName: opUserName,
+			ModifyTime:      time.Now(),
+			CreateTime:      time.Now(),
+			ClassifyId:      v.ClassifyId,
+			Sort:            sort,
+		}
+		addList = append(addList, materialInfo)
+	}
+	if len(addList) > 0 {
+		err = material.AddMultiMaterial(addList)
+	}
+	return
+}
+func uploadToMaterial(oldRsourceUrl string) (resourceUrl string, err error, errMsg string) {
 	// 下载资源地址内容,并上传至存储空间得倒最终的素材地址
 	// 下载资源地址内容,并上传至存储空间得倒最终的素材地址
 	urlFileName := path.Base(oldRsourceUrl)
 	urlFileName := path.Base(oldRsourceUrl)
 	uploadDir := utils.STATIC_DIR + "hongze/" + time.Now().Format("20060102")
 	uploadDir := utils.STATIC_DIR + "hongze/" + time.Now().Format("20060102")
@@ -205,7 +308,7 @@ func AddToMaterial(req material.SaveAsMaterialReq, opUserId int, opUserName stri
 		err = fmt.Errorf("初始化OSS服务失败")
 		err = fmt.Errorf("初始化OSS服务失败")
 		return
 		return
 	}
 	}
-	resourceUrl, err := ossClient.UploadFile(newFileName, filePath, savePath)
+	resourceUrl, err = ossClient.UploadFile(newFileName, filePath, savePath)
 	if err != nil {
 	if err != nil {
 		err = fmt.Errorf("文件上传失败, Err: %s", err.Error())
 		err = fmt.Errorf("文件上传失败, Err: %s", err.Error())
 		return
 		return
@@ -214,28 +317,6 @@ func AddToMaterial(req material.SaveAsMaterialReq, opUserId int, opUserName stri
 	defer func() {
 	defer func() {
 		os.Remove(filePath)
 		os.Remove(filePath)
 	}()
 	}()
-	// 新增素材库
-
-	sort, err := material.GetMaterialMaxSort()
-	//素材主表信息
-	materialInfo := &material.Material{
-		MaterialName:    utils.TrimStr(req.MaterialName),
-		MaterialNameEn:  utils.TrimStr(req.MaterialName),
-		ImgUrl:          utils.TrimStr(resourceUrl),
-		SysUserId:       opUserId,
-		SysUserRealName: opUserName,
-		ModifyTime:      time.Now(),
-		CreateTime:      time.Now(),
-		ClassifyId:      req.ClassifyId,
-		Sort:            sort + 1,
-	}
-
-	//新增素材
-	id, err := material.AddMaterial(materialInfo)
-	if err != nil {
-		return
-	}
-	materialInfo.MaterialId = int(id)
 	return
 	return
 }
 }