Kaynağa Gözat

Merge branch 'bzq1/ppt' of eta_server/eta_api into master

鲍自强 9 ay önce
ebeveyn
işleme
9eb83f4d81

+ 116 - 11
controllers/ppt_english.go

@@ -8,7 +8,6 @@ import (
 	"eta/eta_api/services"
 	"eta/eta_api/services/ppt"
 	"eta/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	_ "image/gif"
 	_ "image/jpeg"
 	_ "image/png"
@@ -17,6 +16,8 @@ import (
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // PptEnglishController 新版ppt模块
@@ -91,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)
@@ -125,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
@@ -188,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 = "保存成功"
 	}
@@ -221,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
@@ -268,13 +296,36 @@ 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()
 		return
 	}
 
+	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{
@@ -468,6 +519,29 @@ func (this *PptEnglishController) Publish() {
 		br.ErrMsg = "发布失败,Err:" + err.Error()
 		return
 	}
+
+	pptMap, err := ppt_english.GetPptMappingByPptId(int64(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
+		}
+	}
+
 	//添加发布记录
 	{
 		record := new(ppt_english.PptEnglishPublishRecord)
@@ -636,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() {
@@ -670,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{

+ 11 - 1
controllers/ppt_english_group.go

@@ -301,7 +301,17 @@ func (this *PptEnglishGroupController) MoveGroupPpt() {
 		br.Msg = "请输入目录ID"
 		return
 	}
-	err = ppt.MoveGroupPptEnglish(req.GroupId, req.GroupPptId, req.PrevGroupPptId, req.NextGroupPptId, this.SysUser.AdminId)
+	// 由于是倒序, 所以需要颠倒NextGroupPptId和PrevGroupPptId的位置
+	err = ppt.MoveGroupPptEnglish(req.GroupId, req.GroupPptId, req.NextGroupPptId, req.PrevGroupPptId, this.SysUser.AdminId)
+	if err != nil {
+		br.Msg = err.Error()
+		return
+	}
+	// 增加人为移动的标识
+	mappingInfo := &ppt_english.PptEnglishGroupMapping{}
+	mappingInfo.GroupPptId = req.GroupPptId
+	mappingInfo.IsMoved = true
+	err = mappingInfo.Update([]string{"is_moved"})
 	if err != nil {
 		br.Msg = err.Error()
 		return

+ 111 - 4
controllers/ppt_v2.go

@@ -9,7 +9,6 @@ import (
 	"eta/eta_api/services/ppt"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	_ "image/gif"
 	_ "image/jpeg"
 	_ "image/png"
@@ -18,6 +17,8 @@ import (
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // PptV2Controller 新版ppt模块
@@ -91,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)
@@ -126,6 +137,14 @@ func (this *PptV2Controller) AddPpt() {
 		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
 	if req.PptId <= 0 {
@@ -158,6 +177,7 @@ func (this *PptV2Controller) AddPpt() {
 			AdminId:       this.SysUser.AdminId,
 			AdminRealName: this.SysUser.RealName,
 			PptVersion:    2,
+			PptPage:       len(pptContent),
 		}
 		newId, err = models.AddPptV2(pptInfo)
 		if err != nil {
@@ -189,8 +209,9 @@ func (this *PptV2Controller) 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 = "保存成功"
 	}
@@ -226,6 +247,15 @@ func (this *PptV2Controller) EditPpt() {
 		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
+	}
+
 	item, err := models.GetPptV2ByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取数据异常!"
@@ -269,13 +299,36 @@ func (this *PptV2Controller) 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()
 		return
 	}
 
+	pptMap, err := models.GetPptMappingByPptId(req.PptId)
+	if err != nil {
+		br.Msg = `该PPT信息不存在, 保存失败`
+		br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error()
+		br.IsSendEmail = false
+		return
+	}
+	pptMapList, err := models.GetPptMappingListByGroupId(pptMap.GroupId)
+	if err != nil {
+		br.ErrMsg = "PPT目录信息异常"
+		return
+	}
+	if !pptMap.IsMoved && len(pptMapList) > 1 {
+		// 如果没有人为移动位置, 默认将当前ppt置顶
+		err = ppt.MoveGroupPpt(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 := &models.PptV2SaveLog{
@@ -469,6 +522,29 @@ func (this *PptV2Controller) Publish() {
 		br.ErrMsg = "发布失败,Err:" + err.Error()
 		return
 	}
+
+	pptMap, err := models.GetPptMappingByPptId(int64(req.PptId))
+	if err != nil {
+		br.Msg = `该PPT信息不存在, 保存失败`
+		br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error()
+		br.IsSendEmail = false
+		return
+	}
+	pptMapList, err := models.GetPptMappingListByGroupId(pptMap.GroupId)
+	if err != nil {
+		br.ErrMsg = "PPT目录信息异常"
+		return
+	}
+	if !pptMap.IsMoved && len(pptMapList) > 1 {
+		// 如果没有人为移动位置, 默认将当前ppt置顶
+		err = ppt.MoveGroupPpt(pptMap.GroupId, pptMap.GroupPptId, pptMapList[0].GroupPptId, 0, this.SysUser.AdminId)
+		if err != nil {
+			br.Msg = err.Error()
+			br.ErrMsg = "移动失败,Err:" + err.Error()
+			return
+		}
+	}
+
 	//添加发布记录
 	{
 		record := new(models.PptV2PublishRecord)
@@ -606,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)
@@ -648,7 +731,31 @@ 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))
+	if err != nil {
+		br.Msg = `该PPT信息不存在, 保存失败`
+		br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error()
+		br.IsSendEmail = false
+		return
+	}
+	pptMapList, err := models.GetPptMappingListByGroupId(pptMap.GroupId)
+	if err != nil {
+		br.ErrMsg = "PPT目录信息异常"
+		return
+	}
+	if !pptMap.IsMoved && len(pptMapList) > 1 {
+		// 如果没有人为移动位置, 默认将当前ppt置顶
+		err = ppt.MoveGroupPpt(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 := &models.PptV2SaveLog{

+ 11 - 1
controllers/ppt_v2_group.go

@@ -303,7 +303,17 @@ func (this *PptV2GroupController) MoveGroupPpt() {
 		br.Msg = "请输入目录ID"
 		return
 	}
-	err = ppt.MoveGroupPpt(req.GroupId, req.GroupPptId, req.PrevGroupPptId, req.NextGroupPptId, this.SysUser.AdminId)
+	// 由于是倒序, 所以需要颠倒NextGroupPptId和PrevGroupPptId的位置
+	err = ppt.MoveGroupPpt(req.GroupId, req.GroupPptId, req.NextGroupPptId, req.PrevGroupPptId, this.SysUser.AdminId)
+	if err != nil {
+		br.Msg = err.Error()
+		return
+	}
+	// 增加人为移动的标识
+	mappingInfo := &models.PptV2GroupMapping{}
+	mappingInfo.GroupPptId = req.GroupPptId
+	mappingInfo.IsMoved = true
+	err = mappingInfo.Update([]string{"is_moved"})
 	if err != nil {
 		br.Msg = err.Error()
 		return

+ 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_grant.go

@@ -1,8 +1,9 @@
 package ppt_english
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // PptEnglishGrant Ppt授权表
@@ -98,6 +99,7 @@ type PptEnglishInfoGrantItem struct {
 	ReportCode    string    `description:"关联的报告code"`
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
+	PptPage       int       `description:"PPT总页数"`
 	//GrantId      int64     `orm:"column(grant_id);pk;auto" description:"自增序号"`
 	//PptId        int64     `description:"ppt ID"`
 	//DepartmentId int64     `description:"授权部门id"`

+ 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 {

+ 19 - 1
models/ppt_english/ppt_english_group_mapping.go

@@ -1,8 +1,9 @@
 package ppt_english
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // ppt目录和ppt 映射表
@@ -16,6 +17,7 @@ type PptEnglishGroupMapping struct {
 	AdminId         int       `description:"移动ppt到该目录的系统用户id"`
 	AdminRealName   string    `description:"系统用户名称"`
 	ChildGroupPptId int64     `description:"设置共享后的新映射ID"`
+	IsMoved         bool      `description:"true表示改PPT被人为移动过"`
 }
 
 // AddPptGroupMapping 新增目录和ppt的映射关系
@@ -41,6 +43,22 @@ func GetPptMappingListByGroupId(groupId int64) (list []*PptEnglishGroupMapping,
 	return
 }
 
+// GetPptMappingByPptId 查询目录下, pptId对应的目录映射关系
+func GetPptMappingByPptId(pptId int64) (item *PptEnglishGroupMapping, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` select * from ppt_english_group_mapping where ppt_id=? `
+	err = o.Raw(sql, pptId).QueryRow(&item)
+	return
+}
+
+// GetPptMappingListByGroupId 查询目录下,ppt列表, 降序排列
+func GetPptMappingListByGroupIdDesc(groupId int64) (list []*PptEnglishGroupMapping, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_english_group_mapping where group_id=? order by ppt_sort desc, group_ppt_id desc `
+	_, err = o.Raw(sql, groupId).QueryRows(&list)
+	return
+}
+
 // GetPptMappingListByGroupIds 根据分组ID查找
 func GetPptMappingListByGroupIds(groupIds []int64) (list []*PptEnglishGroupMapping, err error) {
 	_, err = orm.NewOrmUsingDB("rddp").

+ 4 - 1
models/ppt_v2.go

@@ -2,9 +2,10 @@ package models
 
 import (
 	"eta/eta_api/models/ppt_english"
+	"time"
+
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
 )
 
 // PptV2 表
@@ -28,6 +29,7 @@ type PptV2 struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
+	PptPage       int       `description:"PPT的总页数"`
 }
 
 type PptV2Item struct {
@@ -51,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_grant.go

@@ -1,8 +1,9 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // PptV2Grant Ppt授权表
@@ -98,6 +99,7 @@ type PptV2InfoGrantItem struct {
 	ReportCode    string    `description:"关联的报告code"`
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
+	PptPage       int       `description:"ppt正文总页数"`
 
 	//GrantId      int64     `orm:"column(grant_id);pk;auto" description:"自增序号"`
 	//PptId        int64     `description:"ppt ID"`

+ 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 {

+ 13 - 3
models/ppt_v2_group_mapping.go

@@ -1,8 +1,9 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // ppt目录和ppt 映射表
@@ -16,6 +17,7 @@ type PptV2GroupMapping struct {
 	AdminId         int       `description:"移动ppt到该目录的系统用户id"`
 	AdminRealName   string    `description:"系统用户名称"`
 	ChildGroupPptId int64     `description:"设置共享后的新映射ID"`
+	IsMoved         bool      `description:"true表示改PPT被人为移动过"`
 }
 
 // AddPptGroupMapping 新增目录和ppt的映射关系
@@ -36,7 +38,7 @@ func GetPptMappingCountByGroupId(groupId int64) (total int64, err error) {
 // GetPptMappingListByGroupId 查询目录下,ppt列表
 func GetPptMappingListByGroupId(groupId int64) (list []*PptV2GroupMapping, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_v2_group_mapping where group_id=? order by ppt_sort asc, group_ppt_id asc `
+	sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_v2_group_mapping where group_id=? order by ppt_sort desc, group_ppt_id desc `
 	_, err = o.Raw(sql, groupId).QueryRows(&list)
 	return
 }
@@ -46,7 +48,7 @@ func GetPptMappingListByGroupIds(groupIds []int64) (list []*PptV2GroupMapping, e
 	_, err = orm.NewOrmUsingDB("rddp").
 		QueryTable("ppt_v2_group_mapping").
 		Filter("group_id__in", groupIds).
-		OrderBy("-ppt_sort", "group_ppt_id").
+		OrderBy("-ppt_sort", "-group_ppt_id").
 		All(&list)
 
 	return
@@ -60,6 +62,14 @@ func GetPptMappingByGroupPptId(groupPptId int64, adminId int) (item *PptV2GroupM
 	return
 }
 
+// GetPptMappingByPptId 查询根据ppt_Id, 查询当映单个映射关系
+func GetPptMappingByPptId(pptId int64) (item *PptV2GroupMapping, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` select * from ppt_v2_group_mapping where ppt_id=? `
+	err = o.Raw(sql, pptId).QueryRow(&item)
+	return
+}
+
 // Update 更新ppt目录映射的基本信息
 func (item *PptV2GroupMapping) Update(cols []string) (err error) {
 	o := orm.NewOrmUsingDB("rddp")

+ 49 - 1
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"
@@ -371,7 +372,7 @@ func GetGroupPptEnglishList(groupId int64, adminId int) (ret ppt_english.RespGro
 			return
 		}
 		groups = append(groups, groupInfo)
-		groupPptList, tErr = ppt_english.GetPptMappingListByGroupId(groupId)
+		groupPptList, tErr = ppt_english.GetPptMappingListByGroupIdDesc(groupId)
 		if tErr != nil {
 			err = errors.New("目录里的ppt查询出错:" + tErr.Error())
 			return
@@ -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
@@ -1213,7 +1225,15 @@ func GetMyPptEnglishList(adminId int, keyword string) (ret ppt_english.RespGroup
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &ppt_english.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1229,6 +1249,7 @@ func GetMyPptEnglishList(adminId int, keyword string) (ret ppt_english.RespGroup
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1270,7 +1291,15 @@ func GetSharePptEnglishList(adminId int, keyword string, isPrivate bool) (ret pp
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &ppt_english.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1286,6 +1315,7 @@ func GetSharePptEnglishList(adminId int, keyword string, isPrivate bool) (ret pp
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1330,7 +1360,15 @@ func GetGrantPptEnglishList(adminId int, keyword, sourceType string) (ret ppt_en
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &ppt_english.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1347,6 +1385,7 @@ func GetGrantPptEnglishList(adminId int, keyword, sourceType string) (ret ppt_en
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1405,7 +1444,15 @@ func SearchEnglishPptList(adminId int, keyword string) (ret ppt_english.RespGrou
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &ppt_english.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1419,6 +1466,7 @@ func SearchEnglishPptList(adminId int, keyword string) (ret ppt_english.RespGrou
 			PptxUrl:       v.PptxUrl,
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}

+ 47 - 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
@@ -1575,7 +1586,15 @@ func GetMyPptList(adminId int, keyword string) (ret models.RespGroupPptList, err
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &models.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1592,6 +1611,7 @@ func GetMyPptList(adminId int, keyword string) (ret models.RespGroupPptList, err
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1633,7 +1653,15 @@ func GetSharePptList(adminId int, keyword string, isPrivate bool) (ret models.Re
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &models.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1650,6 +1678,7 @@ func GetSharePptList(adminId int, keyword string, isPrivate bool) (ret models.Re
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1694,7 +1723,15 @@ func GetGrantPptList(adminId int, keyword, sourceType string) (ret models.RespGr
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &models.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1711,6 +1748,7 @@ func GetGrantPptList(adminId int, keyword, sourceType string) (ret models.RespGr
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
 			PublishTime:   utils.DealDateTimeZero(v.PublishTime, utils.FormatDateTime),
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}
@@ -1743,7 +1781,15 @@ func SearchPptList(adminId int, keyword string) (ret models.RespGroupPptList, er
 		return
 	}
 
+	var pptContent []services.PPTContent
 	for _, v := range pptList {
+		if v.PptPage == 0 {
+			err = json.Unmarshal([]byte(v.Content), &pptContent)
+			if err != nil {
+				return
+			}
+			v.PptPage = len(pptContent)
+		}
 		tmpV := &models.RespGroupPptListItem{
 			GroupPptId:    int64(v.PptId),
 			PptId:         int64(v.PptId),
@@ -1758,6 +1804,7 @@ func SearchPptList(adminId int, keyword string) (ret models.RespGroupPptList, er
 			PptxUrl:       v.PptxUrl,
 			ReportId:      v.ReportId,
 			ReportCode:    v.ReportCode,
+			PptPage:       v.PptPage,
 		}
 		list = append(list, tmpV)
 	}