瀏覽代碼

发布/提交PPT

hsun 5 月之前
父節點
當前提交
e79fa16e59
共有 2 個文件被更改,包括 73 次插入8 次删除
  1. 67 8
      controllers/ppt_v2.go
  2. 6 0
      services/ppt_report.go

+ 67 - 8
controllers/ppt_v2.go

@@ -497,12 +497,12 @@ func (this *PptV2CommonController) DownloadPptx() {
 func (this *PptV2Controller) Publish() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-
-	//SavePptV2PathReq
-	//PptV2PublishReq
 	var req models.SavePptV2PathReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
@@ -515,14 +515,65 @@ func (this *PptV2Controller) Publish() {
 		br.Msg = "参数错误"
 		return
 	}
-	err = models.EditPptV2Path(pptId, req.PptxUrl)
-	if err != nil {
-		br.Msg = "发布失败"
-		br.ErrMsg = "发布失败,Err:" + err.Error()
+	req.PptxUrl = strings.TrimSpace(req.PptxUrl)
+	if req.PptxUrl == "" {
+		br.Msg = "文件地址为空"
 		return
 	}
+	//err = models.EditPptV2Path(pptId, req.PptxUrl)
+	//if err != nil {
+	//	br.Msg = "发布失败"
+	//	br.ErrMsg = "发布失败,Err:" + err.Error()
+	//	return
+	//}
+
+	pptItem, e := models.GetPptV2ById(pptId)
+	if e != nil {
+		if utils.IsErrNoRow(e) {
+			br.Msg = "PPT不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("获取PPT失败, %v", e)
+		return
+	}
+
+	var updateCols []string
+	updateCols = append(updateCols, "PptxUrl", "ModifyTime")
+	pptItem.PptxUrl = req.PptxUrl
+	pptItem.ModifyTime = time.Now()
+
+	// 本地PPT(不加限制, 想发布就发布)
+	if pptItem.ReportSource == utils.ReportSourceLocal {
+		updateCols = append(updateCols, "State", "PublishTime")
+		pptItem.State = models.ReportStatePublished
+		pptItem.PublishTime = time.Now()
+	}
 
-	// TODO:发布
+	// 外部PPT
+	if pptItem.ReportSource == utils.ReportSourceOuter {
+		// 报告状态
+		if pptItem.OutReportId == "" {
+			br.Msg = "PPT异常"
+			br.ErrMsg = fmt.Sprintf("PPT外部报告ID为空, ID: %d", pptId)
+			return
+		}
+		if pptItem.State != models.ReportStateWaitSubmit && pptItem.State != models.ReportStateRefused {
+			br.Msg = "状态异常, 不允许提交"
+			br.ErrMsg = fmt.Sprintf("PPT报告状态异常, %d", pptItem.State)
+			return
+		}
+		updateCols = append(updateCols, "SubmitTime", "State")
+		pptItem.SubmitTime = time.Now()
+		pptItem.State = models.ReportStateWaitApprove
+	}
+
+	// 更新PPT
+	if e = pptItem.Update(updateCols); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("更新PPT失败, %v", e)
+		return
+	}
 
 	//添加发布记录
 	{
@@ -532,6 +583,14 @@ func (this *PptV2Controller) Publish() {
 		record.PptUrl = req.PptxUrl
 		go models.AddPptV2PublishRecord(record)
 	}
+
+	// TODO:智力共享-报告回调
+	go func() {
+		if pptItem.ReportSource != utils.ReportSourceOuter {
+			return
+		}
+	}()
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "发布成功"

+ 6 - 0
services/ppt_report.go

@@ -4,6 +4,7 @@ import (
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/utils"
 	"fmt"
+	"sync"
 )
 
 // GetPptReportClassifyTreeRecursive 递归获取ppt报告分类树
@@ -29,12 +30,17 @@ func GetPptReportClassifyTreeRecursive(list []*models.Classify, parentId int, cl
 	return res
 }
 
+// 更新分类报告计数加个锁
+var classifyReportNumLock sync.Mutex
+
 // UpdateClassifyReportNum 更新分类报告计数
 func UpdateClassifyReportNum(classifyId int) (err error) {
+	classifyReportNumLock.Lock()
 	defer func() {
 		if err != nil {
 			utils.FileLog.Info(fmt.Sprintf("更新分类报告计数失败, %v", err))
 		}
+		classifyReportNumLock.Unlock()
 	}()
 
 	classifyItem, e := models.GetClassifyById(classifyId)