Browse Source

mod: 更新中英文ppt排序方式,及ppt总页数

zqbao 10 months ago
parent
commit
c8369fc9a8

+ 69 - 10
controllers/ppt_english.go

@@ -92,6 +92,16 @@ func (this *PptEnglishController) ListPpt() {
 		} else {
 			list[i].IsAuth = false
 		}
+		if list[i].PptPage == 0 {
+			var pptContent []services.PPTContent
+			er := json.Unmarshal([]byte(list[i].Content), &pptContent)
+			if er != nil {
+				br.Msg = "content参数解析失败"
+				br.ErrMsg = "content参数解析失败, Err:" + er.Error()
+				return
+			}
+			list[i].PptPage = len(pptContent)
+		}
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(ppt_english.PptEnglishListResp)
@@ -126,6 +136,13 @@ func (this *PptEnglishController) AddPpt() {
 		br.Msg = "标题不能为空"
 		return
 	}
+	var pptContent []services.PPTContent
+	err = json.Unmarshal([]byte(req.Content), &pptContent)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
 
 	var newId int64
 	var msg string
@@ -189,8 +206,9 @@ func (this *PptEnglishController) AddPpt() {
 		pptInfo.Content = req.Content
 		pptInfo.CoverContent = req.CoverContent
 		pptInfo.ModifyTime = time.Now()
+		pptInfo.PptPage = len(pptContent)
 
-		err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent"})
+		err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "ppt_page"})
 
 		msg = "保存成功"
 	}
@@ -222,6 +240,15 @@ func (this *PptEnglishController) EditPpt() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
+
+	var pptContent []services.PPTContent
+	err = json.Unmarshal([]byte(req.Content), &pptContent)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
 	if req.FirstPage.Title == "" {
 		br.Msg = "标题不能为空"
 		return
@@ -269,7 +296,8 @@ func (this *PptEnglishController) EditPpt() {
 	pptInfo.Content = req.Content
 	pptInfo.CoverContent = req.CoverContent
 	pptInfo.ModifyTime = time.Now()
-	err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent"})
+	pptInfo.PptPage = len(pptContent)
+	err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "ppt_page"})
 	if err != nil {
 		br.Msg = "编辑失败"
 		br.ErrMsg = "编辑失败,Err:" + err.Error()
@@ -682,6 +710,13 @@ func (this *PptEnglishController) SaveLog() {
 		return
 	}
 
+	var pageContent []services.PPTContent
+	err = json.Unmarshal([]byte(req.Content), &pageContent)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
 	// 获取ppt
 	item, err := ppt_english.GetPptEnglishByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -716,14 +751,38 @@ func (this *PptEnglishController) SaveLog() {
 			return
 		}
 	}
-	//pptInfo.TemplateType = req.FirstPage.TemplateType
-	//pptInfo.BackgroundImg = req.FirstPage.ImgUrl
-	//pptInfo.Title = req.FirstPage.Title
-	//pptInfo.ReportType = req.FirstPage.ReportType
-	//pptInfo.PptDate = req.FirstPage.PptDate
-	//pptInfo.Content = req.Content
-	//pptInfo.ModifyTime = time.Now()
-	//err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime"})
+
+	pptItem.TemplateType = req.FirstPage.TemplateType
+	pptItem.BackgroundImg = req.FirstPage.ImgUrl
+	pptItem.Title = req.FirstPage.Title
+	pptItem.ReportType = req.FirstPage.ReportType
+	pptItem.PptDate = req.FirstPage.PptDate
+	pptItem.Content = req.Content
+	pptItem.ModifyTime = time.Now()
+	pptItem.PptPage = len(pageContent)
+	err = pptItem.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "ppt_page"})
+
+	pptMap, err := ppt_english.GetPptMappingByPptId(req.PptId)
+	if err != nil {
+		br.Msg = `该PPT信息不存在, 保存失败`
+		br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error()
+		br.IsSendEmail = false
+		return
+	}
+	pptMapList, err := ppt_english.GetPptMappingListByGroupIdDesc(pptMap.GroupId)
+	if err != nil {
+		br.ErrMsg = "PPT目录信息异常"
+		return
+	}
+	if !pptMap.IsMoved && len(pptMapList) > 1 {
+		// 如果没有人为移动位置, 默认将当前ppt置顶
+		err = ppt.MoveGroupPptEnglish(pptMap.GroupId, pptMap.GroupPptId, pptMapList[0].GroupPptId, 0, this.SysUser.AdminId)
+		if err != nil {
+			br.Msg = err.Error()
+			br.ErrMsg = "移动失败,Err:" + err.Error()
+			return
+		}
+	}
 
 	//日志记录
 	logInfo := &ppt_english.PptEnglishSaveLog{

+ 26 - 8
controllers/ppt_v2.go

@@ -92,6 +92,16 @@ func (this *PptV2Controller) ListPpt() {
 		} else {
 			list[i].IsAuth = false
 		}
+		if list[i].PptPage == 0 {
+			var pptContent []services.PPTContent
+			er := json.Unmarshal([]byte(list[i].Content), &pptContent)
+			if er != nil {
+				br.Msg = "content参数解析失败"
+				br.ErrMsg = "content参数解析失败, Err:" + er.Error()
+				return
+			}
+			list[i].PptPage = len(pptContent)
+		}
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.PptV2ListResp)
@@ -127,7 +137,7 @@ func (this *PptV2Controller) AddPpt() {
 		return
 	}
 
-	var pptContent []models.PptV2Content
+	var pptContent []services.PPTContent
 	err = json.Unmarshal([]byte(req.Content), &pptContent)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -167,7 +177,7 @@ func (this *PptV2Controller) AddPpt() {
 			AdminId:       this.SysUser.AdminId,
 			AdminRealName: this.SysUser.RealName,
 			PptVersion:    2,
-			TotalPages:    len(pptContent),
+			PptPage:       len(pptContent),
 		}
 		newId, err = models.AddPptV2(pptInfo)
 		if err != nil {
@@ -199,9 +209,9 @@ func (this *PptV2Controller) AddPpt() {
 		pptInfo.Content = req.Content
 		pptInfo.CoverContent = req.CoverContent
 		pptInfo.ModifyTime = time.Now()
-		pptInfo.TotalPages = len(pptContent)
+		pptInfo.PptPage = len(pptContent)
 
-		err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "total_pages"})
+		err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "ppt_page"})
 
 		msg = "保存成功"
 	}
@@ -238,7 +248,7 @@ func (this *PptV2Controller) EditPpt() {
 		return
 	}
 
-	var pptContent []models.PptV2Content
+	var pptContent []services.PPTContent
 	err = json.Unmarshal([]byte(req.Content), &pptContent)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -289,8 +299,8 @@ func (this *PptV2Controller) EditPpt() {
 	pptInfo.Content = req.Content
 	pptInfo.CoverContent = req.CoverContent
 	pptInfo.ModifyTime = time.Now()
-	pptInfo.TotalPages = len(pptContent)
-	err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "total_pages"})
+	pptInfo.PptPage = len(pptContent)
+	err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "ppt_page"})
 	if err != nil {
 		br.Msg = "编辑失败"
 		br.ErrMsg = "编辑失败,Err:" + err.Error()
@@ -672,6 +682,13 @@ func (this *PptV2Controller) SaveLog() {
 		br.Msg = "标题不能为空"
 		return
 	}
+	var pptContent []services.PPTContent
+	err = json.Unmarshal([]byte(req.Content), &pptContent)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
 
 	// 获取ppt
 	item, err := models.GetPptV2ByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
@@ -714,7 +731,8 @@ func (this *PptV2Controller) SaveLog() {
 	pptItem.PptDate = req.FirstPage.PptDate
 	pptItem.Content = req.Content
 	pptItem.ModifyTime = time.Now()
-	err = pptItem.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime"})
+	pptItem.PptPage = len(pptContent)
+	err = pptItem.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "ppt_page"})
 
 	// 将更新后的PPT, 置顶
 	pptMap, err := models.GetPptMappingByPptId(int64(req.PptId))

+ 4 - 1
models/ppt_english/ppt_english.go

@@ -1,9 +1,10 @@
 package ppt_english
 
 import (
+	"time"
+
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
 )
 
 // PptEnglish 表
@@ -25,6 +26,7 @@ type PptEnglish struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
+	PptPage       int       `description:"PPT正文页数"`
 }
 
 type PptEnglishItem struct {
@@ -46,6 +48,7 @@ type PptEnglishItem struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
+	PptPage       int       `description:"PPT正文页数"`
 }
 
 func GetPptEnglishList(condition string, pars []interface{}, startSize, pageSize int) (items []*PptEnglishItem, err error) {

+ 3 - 1
models/ppt_english/ppt_english_group.go

@@ -1,8 +1,9 @@
 package ppt_english
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 type PptEnglishGroup struct {
@@ -229,6 +230,7 @@ type RespGroupPptListItem struct {
 	ReportId      int    `description:"关联的报告ID"`
 	ReportCode    string `description:"关联的报告code"`
 	PublishTime   string `description:"发布时间"`
+	PptPage       int    `description:"ppt总页数"`
 }
 
 func (p RespGroupPptList) Len() int {

+ 2 - 16
models/ppt_v2.go

@@ -29,22 +29,7 @@ type PptV2 struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
-	TotalPages    int       `description:"PPT的总页数"`
-}
-
-type PptV2Content struct {
-	Id         string
-	Key        string
-	ModelId    int
-	Title      string
-	Elements   []PptV2Elements
-	IsUpdating bool
-}
-
-type PptV2Elements struct {
-	Type     string
-	Position int
-	ChartId  string
+	PptPage       int       `description:"PPT的总页数"`
 }
 
 type PptV2Item struct {
@@ -68,6 +53,7 @@ type PptV2Item struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
+	PptPage       int       `description:"PPT的总页数"`
 }
 
 func GetPptV2List(condition string, pars []interface{}, startSize, pageSize int) (items []*PptV2Item, err error) {

+ 3 - 1
models/ppt_v2_group.go

@@ -1,8 +1,9 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 type PptV2Group struct {
@@ -229,6 +230,7 @@ type RespGroupPptListItem struct {
 	ReportId      int    `description:"关联的报告ID"`
 	ReportCode    string `description:"关联的报告code"`
 	PublishTime   string `description:"发布时间"`
+	PptPage       int    `description:"PPT总页数"`
 }
 
 func (p RespGroupPptList) Len() int {

+ 12 - 0
services/ppt/ppt_english_group.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"eta/eta_api/models/ppt_english"
 	"eta/eta_api/models/system"
+	"eta/eta_api/services"
 	"eta/eta_api/utils"
 	"fmt"
 	"sort"
@@ -403,6 +404,16 @@ func GetGroupPptEnglishList(groupId int64, adminId int) (ret ppt_english.RespGro
 	}
 
 	for _, v := range pptList {
+		// 解决部分历史ppt数据不存在TotalPages的情况
+		if v.PptPage == 0 {
+			var pptContent []services.PPTContent
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				err = errors.New("解析ppt内容出错" + err.Error())
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		pptMap[v.PptId] = v
 	}
 
@@ -430,6 +441,7 @@ func GetGroupPptEnglishList(groupId int64, adminId int) (ret ppt_english.RespGro
 							ReportId:      pptInfo.ReportId,
 							ReportCode:    pptInfo.ReportCode,
 							PublishTime:   utils.DealDateTimeZero(pptInfo.PublishTime, utils.FormatDateTime),
+							PptPage:       pptInfo.PptPage,
 						}
 						if pptV.ChildGroupPptId > 0 {
 							tmp.IsSingleShare = 1

+ 11 - 0
services/ppt/ppt_group.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"eta/eta_api/models"
 	"eta/eta_api/models/system"
+	"eta/eta_api/services"
 	"eta/eta_api/utils"
 	"fmt"
 	"sort"
@@ -591,6 +592,15 @@ func GetGroupPptList(groupId int64, adminId int) (ret models.RespGroupPptList, e
 	}
 
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			var pptContent []services.PPTContent
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				err = errors.New("解析ppt内容出错" + err.Error())
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		pptMap[v.PptId] = v
 	}
 
@@ -619,6 +629,7 @@ func GetGroupPptList(groupId int64, adminId int) (ret models.RespGroupPptList, e
 							ReportId:      pptInfo.ReportId,
 							ReportCode:    pptInfo.ReportCode,
 							PublishTime:   utils.DealDateTimeZero(pptInfo.PublishTime, utils.FormatDateTime),
+							PptPage:       pptInfo.PptPage,
 						}
 						if pptV.ChildGroupPptId > 0 {
 							tmp.IsSingleShare = 1