|
@@ -7,6 +7,7 @@ import (
|
|
|
"eta/eta_mobile/models/system"
|
|
|
"eta/eta_mobile/utils"
|
|
|
"fmt"
|
|
|
+ "github.com/shopspring/decimal"
|
|
|
"sort"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -224,11 +225,23 @@ func AddGroupPptMapping(pptId int64, groupId int64, adminId int, adminRealName s
|
|
|
err = errors.New("目录查询出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ // 获取当前目录下最大的排序
|
|
|
+ pptSort, err := models.GetMaxSortByGroupId(groupId)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("查询最大排序出错:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newSort, _ := decimal.NewFromFloat(pptSort).Add(decimal.NewFromInt(1)).Float64()
|
|
|
+
|
|
|
bindInfo := &models.PptV2GroupMapping{
|
|
|
GroupId: groupId,
|
|
|
PptId: pptId,
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ PptSort: newSort,
|
|
|
}
|
|
|
|
|
|
newId, err = models.AddPptGroupMapping(bindInfo)
|
|
@@ -238,12 +251,12 @@ func AddGroupPptMapping(pptId int64, groupId int64, adminId int, adminRealName s
|
|
|
}
|
|
|
|
|
|
bindInfo.GroupPptId = newId
|
|
|
- bindInfo.PptSort = newId
|
|
|
- err = bindInfo.Update([]string{"ppt_sort"})
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新排序失败:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ //bindInfo.PptSort = newId
|
|
|
+ //err = bindInfo.Update([]string{"ppt_sort"})
|
|
|
+ //if err != nil {
|
|
|
+ // err = errors.New("更新排序失败:" + err.Error())
|
|
|
+ // return
|
|
|
+ //}
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -358,6 +371,11 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
err = errors.New("查询ppt列表出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+ pptMap := make(map[int]*models.PptV2)
|
|
|
+ for _, pptItem := range pptList {
|
|
|
+ pptMap[pptItem.PptId] = pptItem
|
|
|
+ }
|
|
|
+
|
|
|
pptNames, err := models.GetAllPptTitle()
|
|
|
if err != nil {
|
|
|
err = errors.New("查询ppt标题出错:" + err.Error())
|
|
@@ -365,29 +383,35 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
}
|
|
|
//批量复制ppt,更新作者为当前账号,并返回新的pptID
|
|
|
newPptList := make([]*models.PptV2, 0)
|
|
|
- for _, v := range pptList {
|
|
|
- if v.PptVersion != 2 { //只复制新版的ppt,旧版本的ppt忽略
|
|
|
+ for _, mapping := range mappingList {
|
|
|
+ pptItem, ok := pptMap[int(mapping.PptId)]
|
|
|
+ // 不存在该ppt,那么就过滤
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if pptItem.PptVersion != 2 { //只复制新版的ppt,旧版本的ppt忽略
|
|
|
continue
|
|
|
}
|
|
|
tmp := &models.PptV2{
|
|
|
- TemplateType: v.TemplateType,
|
|
|
- BackgroundImg: v.BackgroundImg,
|
|
|
- Title: generateCopyName(v.Title, 1, pptNames),
|
|
|
- ReportType: v.ReportType,
|
|
|
- PptDate: v.PptDate,
|
|
|
- Content: v.Content,
|
|
|
- CoverContent: v.CoverContent,
|
|
|
- PptUrl: v.PptUrl,
|
|
|
- PptxUrl: v.PptxUrl,
|
|
|
+ TemplateType: pptItem.TemplateType,
|
|
|
+ BackgroundImg: pptItem.BackgroundImg,
|
|
|
+ Title: generateCopyName(pptItem.Title, 1, pptNames),
|
|
|
+ ReportType: pptItem.ReportType,
|
|
|
+ PptDate: pptItem.PptDate,
|
|
|
+ Content: pptItem.Content,
|
|
|
+ CoverContent: pptItem.CoverContent,
|
|
|
+ PptUrl: pptItem.PptUrl,
|
|
|
+ PptxUrl: pptItem.PptxUrl,
|
|
|
CreateTime: time.Now(),
|
|
|
ModifyTime: time.Now(),
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
- PptVersion: v.PptVersion,
|
|
|
+ PptVersion: pptItem.PptVersion,
|
|
|
}
|
|
|
newPptList = append(newPptList, tmp)
|
|
|
}
|
|
|
- if len(newPptList) > 0 {
|
|
|
+ pptNum := len(newPptList)
|
|
|
+ if pptNum > 0 {
|
|
|
err = models.AddPptV2Multi(newPptList)
|
|
|
if err != nil {
|
|
|
err = errors.New("复制目录里的ppt出错:" + err.Error())
|
|
@@ -395,7 +419,7 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
}
|
|
|
|
|
|
newMappings := make([]*models.PptV2GroupMapping, 0)
|
|
|
- for _, v := range newPptList {
|
|
|
+ for k, v := range newPptList {
|
|
|
tmp := &models.PptV2GroupMapping{
|
|
|
GroupId: newGroupId,
|
|
|
PptId: int64(v.PptId),
|
|
@@ -403,6 +427,7 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
ModifyTime: time.Now(),
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
+ PptSort: float64(pptNum - k),
|
|
|
}
|
|
|
newMappings = append(newMappings, tmp)
|
|
|
}
|
|
@@ -412,15 +437,15 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
return
|
|
|
}
|
|
|
//批量更新排序字段
|
|
|
- var newGroupPptIds []int64
|
|
|
- for _, v := range newMappings {
|
|
|
- newGroupPptIds = append(newGroupPptIds, v.GroupPptId)
|
|
|
- }
|
|
|
- err = models.UpdatePptGroupMappingSortMulti(newGroupPptIds)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新排序标识出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ //var newGroupPptIds []int64
|
|
|
+ //for _, v := range newMappings {
|
|
|
+ // newGroupPptIds = append(newGroupPptIds, v.GroupPptId)
|
|
|
+ //}
|
|
|
+ //err = models.UpdatePptGroupMappingSortMulti(newGroupPptIds)
|
|
|
+ //if err != nil {
|
|
|
+ // err = errors.New("更新排序标识出错:" + err.Error())
|
|
|
+ // return
|
|
|
+ //}
|
|
|
}
|
|
|
return
|
|
|
}
|
|
@@ -651,8 +676,6 @@ func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adm
|
|
|
return
|
|
|
}
|
|
|
var updateStr []string
|
|
|
- //如果更换了目录,默认当前排序值为0
|
|
|
- var currentSort, prevSort, nextSort int64
|
|
|
//判断是否更换group
|
|
|
if groupPpt.GroupId != groupId {
|
|
|
_, err = models.GetPptGroupByGroupIdAdminId(groupId, adminId)
|
|
@@ -674,7 +697,6 @@ func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adm
|
|
|
groupPpt.GroupId = groupId
|
|
|
updateStr = append(updateStr, "group_id")
|
|
|
}
|
|
|
- currentSort = groupPpt.PptSort
|
|
|
|
|
|
var prevGroupPpt *models.PptV2GroupMapping
|
|
|
var nextGroupPpt *models.PptV2GroupMapping
|
|
@@ -688,7 +710,6 @@ func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adm
|
|
|
err = errors.New("目录下的ppt查询出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- prevSort = prevGroupPpt.PptSort
|
|
|
}
|
|
|
|
|
|
if nextGroupPptId > 0 {
|
|
@@ -701,29 +722,31 @@ func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adm
|
|
|
err = errors.New("目录下的ppt查询出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- nextSort = nextGroupPpt.PptSort
|
|
|
}
|
|
|
|
|
|
- updateStr = append(updateStr, "ppt_sort")
|
|
|
-
|
|
|
- //移到两个排序值中间操作
|
|
|
- if prevSort >= currentSort {
|
|
|
- //往下移动
|
|
|
- err = models.MoveDownGroupPptBySort(groupId, prevSort, currentSort)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("向下移动ppt出错:" + err.Error())
|
|
|
+ pptSort := groupPpt.PptSort
|
|
|
+ if prevGroupPpt != nil && prevGroupPpt.PptId > 0 && nextGroupPpt != nil && nextGroupPpt.PptId > 0 { // 两个之间
|
|
|
+ pptSort, _ = decimal.NewFromFloat(prevGroupPpt.PptSort).Add(decimal.NewFromFloat(nextGroupPpt.PptSort)).Div(decimal.NewFromInt(2)).Float64()
|
|
|
+ } else if prevGroupPpt != nil && prevGroupPpt.PptId > 0 {
|
|
|
+ // 最下面
|
|
|
+ maxSort, tmpErr := models.GetMinSortByGroupId(prevGroupPpt.GroupId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = errors.New("获取最小排序失败:" + tmpErr.Error())
|
|
|
return
|
|
|
}
|
|
|
- groupPpt.PptSort = prevSort
|
|
|
- } else if nextSort <= currentSort && nextSort != 0 {
|
|
|
- //往上移动
|
|
|
- err = models.MoveUpGroupPptBySort(groupId, nextSort, currentSort)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("向上移动ppt出错:" + err.Error())
|
|
|
+ pptSort, _ = decimal.NewFromFloat(maxSort).Sub(decimal.NewFromInt(1)).Float64()
|
|
|
+ } else if nextGroupPpt != nil && nextGroupPpt.PptId > 0 {
|
|
|
+ // 最上面
|
|
|
+ minSort, tmpErr := models.GetMaxSortByGroupId(nextGroupPpt.GroupId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = errors.New("获取最小排序失败:" + tmpErr.Error())
|
|
|
return
|
|
|
}
|
|
|
- groupPpt.PptSort = nextSort
|
|
|
+ pptSort, _ = decimal.NewFromFloat(minSort).Add(decimal.NewFromInt(1)).Float64()
|
|
|
}
|
|
|
+
|
|
|
+ groupPpt.PptSort = pptSort
|
|
|
+ updateStr = append(updateStr, "ppt_sort")
|
|
|
//更新当前排序
|
|
|
err = groupPpt.Update(updateStr)
|
|
|
if err != nil {
|
|
@@ -941,6 +964,15 @@ func CopyPpt(pptId int, groupId int64, adminId int, adminRealName string) (resp
|
|
|
err = errors.New("复制目录里的ppt出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ // 获取当前目录下最大的排序
|
|
|
+ pptSort, err := models.GetMaxSortByGroupId(groupId)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("查询最大排序出错:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newSort, _ := decimal.NewFromFloat(pptSort).Add(decimal.NewFromInt(1)).Float64()
|
|
|
+
|
|
|
var newMappings []*models.PptV2GroupMapping
|
|
|
newGroupPpt := &models.PptV2GroupMapping{
|
|
|
GroupId: groupId,
|
|
@@ -949,6 +981,7 @@ func CopyPpt(pptId int, groupId int64, adminId int, adminRealName string) (resp
|
|
|
ModifyTime: time.Now(),
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
+ PptSort: newSort,
|
|
|
}
|
|
|
newMappings = append(newMappings, newGroupPpt)
|
|
|
|
|
@@ -957,12 +990,12 @@ func CopyPpt(pptId int, groupId int64, adminId int, adminRealName string) (resp
|
|
|
err = errors.New("复制目录里的ppt出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- //批量更新排序字段
|
|
|
- err = models.UpdatePptGroupMappingSortMulti([]int64{newGroupPpt.GroupPptId})
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新排序标识出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ ////批量更新排序字段
|
|
|
+ //err = models.UpdatePptGroupMappingSortMulti([]int64{newGroupPpt.GroupPptId})
|
|
|
+ //if err != nil {
|
|
|
+ // err = errors.New("更新排序标识出错:" + err.Error())
|
|
|
+ // return
|
|
|
+ //}
|
|
|
pptPage := 0
|
|
|
// 因之前并没有存储PPT页数字段,所以此处读取PPT内容的长度
|
|
|
if newPpt.Content != "" {
|
|
@@ -1045,134 +1078,6 @@ func SearchGroupPpt(keyWord string) (ret models.RespSearchGroupPptList, err erro
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// InitPptGroup 初始化目录分组
|
|
|
-func InitPptGroup() (err error) {
|
|
|
- //查询所有的ppt
|
|
|
- now := time.Now()
|
|
|
- pptList, err := models.GetPptV2ByCondition("", []interface{}{})
|
|
|
- if err != nil {
|
|
|
- errors.New("查询所有的ppt出错" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- pptAdminMap := make(map[int]string, 0)
|
|
|
- adminPptListMap := make(map[int][]*models.PptV2)
|
|
|
- oldPptAdminMap := make(map[int]string, 0)
|
|
|
- oldAdminPptListMap := make(map[int][]*models.PptV2)
|
|
|
- //查询所有的ppt作者
|
|
|
- for _, v := range pptList {
|
|
|
- if v.PptVersion == 2 {
|
|
|
- if _, ok := pptAdminMap[v.AdminId]; !ok {
|
|
|
- pptAdminMap[v.AdminId] = v.AdminRealName
|
|
|
- }
|
|
|
- adminPptListMap[v.AdminId] = append(adminPptListMap[v.AdminId], v)
|
|
|
- } else {
|
|
|
- if _, ok := oldPptAdminMap[v.AdminId]; !ok {
|
|
|
- oldPptAdminMap[v.AdminId] = v.AdminRealName
|
|
|
- }
|
|
|
- oldAdminPptListMap[v.AdminId] = append(oldAdminPptListMap[v.AdminId], v)
|
|
|
- }
|
|
|
- }
|
|
|
- //批量生成历史目录,共享目录
|
|
|
- newOldGroupList := make([]*models.PptV2Group, 0)
|
|
|
- //批量生成目录,共享目录
|
|
|
- newGroupList := make([]*models.PptV2Group, 0)
|
|
|
- if len(pptAdminMap) > 0 {
|
|
|
- for k, v := range pptAdminMap {
|
|
|
- tmp := &models.PptV2Group{
|
|
|
- GroupName: v + "的PPT",
|
|
|
- AdminId: k,
|
|
|
- IsShare: 1,
|
|
|
- CreateTime: now,
|
|
|
- ModifyTime: now,
|
|
|
- ShareTime: now,
|
|
|
- }
|
|
|
- newGroupList = append(newGroupList, tmp)
|
|
|
- }
|
|
|
- //批量把对应的ppt放到目录当中
|
|
|
- err = models.AddPptGroupMulti(newGroupList)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("创建目录出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- if len(oldPptAdminMap) > 0 {
|
|
|
- for k, v := range oldPptAdminMap {
|
|
|
- tmp := &models.PptV2Group{
|
|
|
- GroupName: v + "的历史PPT",
|
|
|
- AdminId: k,
|
|
|
- IsShare: 1,
|
|
|
- CreateTime: now,
|
|
|
- ModifyTime: now,
|
|
|
- ShareTime: now,
|
|
|
- }
|
|
|
- newOldGroupList = append(newOldGroupList, tmp)
|
|
|
- }
|
|
|
- //批量把对应的ppt放到目录当中
|
|
|
- err = models.AddPptGroupMulti(newOldGroupList)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("创建目录出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- //批量更新排序字段
|
|
|
- var newGroupIds []int64
|
|
|
- var newMappings []*models.PptV2GroupMapping
|
|
|
- for _, v := range newGroupList {
|
|
|
- newGroupIds = append(newGroupIds, v.GroupId)
|
|
|
- if ppts, ok := adminPptListMap[v.AdminId]; ok {
|
|
|
- for _, p := range ppts {
|
|
|
- tmp := &models.PptV2GroupMapping{
|
|
|
- GroupId: v.GroupId,
|
|
|
- PptId: int64(p.PptId),
|
|
|
- CreateTime: now,
|
|
|
- ModifyTime: now,
|
|
|
- AdminId: p.AdminId,
|
|
|
- AdminRealName: p.AdminRealName,
|
|
|
- }
|
|
|
- newMappings = append(newMappings, tmp)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- for _, v := range newOldGroupList {
|
|
|
- newGroupIds = append(newGroupIds, v.GroupId)
|
|
|
- if oldPpts, ok1 := oldAdminPptListMap[v.AdminId]; ok1 {
|
|
|
- for _, p := range oldPpts {
|
|
|
- tmp := &models.PptV2GroupMapping{
|
|
|
- GroupId: v.GroupId,
|
|
|
- PptId: int64(p.PptId),
|
|
|
- CreateTime: now,
|
|
|
- ModifyTime: now,
|
|
|
- AdminId: p.AdminId,
|
|
|
- AdminRealName: p.AdminRealName,
|
|
|
- }
|
|
|
- newMappings = append(newMappings, tmp)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- err = models.UpdatePptGroupSortMulti(newGroupIds)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新目录排序标识出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- err = models.AddPptGroupMappingMulti(newMappings)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("创建目录里的ppt出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- //批量更新排序字段
|
|
|
- var newGroupPptIds []int64
|
|
|
- for _, v := range newMappings {
|
|
|
- newGroupPptIds = append(newGroupPptIds, v.GroupPptId)
|
|
|
- }
|
|
|
- err = models.UpdatePptGroupMappingSortMulti(newGroupPptIds)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("更新排序标识出错:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
// GetGroupsByAdminIdV2 查询ppt目录列表
|
|
|
// @Author roc
|
|
|
// @Time 2022-08-29 15:22:20
|
|
@@ -1745,7 +1650,6 @@ func GetPptList(adminId int, keyword string) (ret models.RespGroupPptList, err e
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// SearchPptList PPT搜索(我的/公开PPT)
|
|
|
func SearchPptList(adminId int, keyword string) (ret models.RespGroupPptList, err error) {
|
|
|
list := make([]*models.RespGroupPptListItem, 0)
|
|
@@ -1791,4 +1695,4 @@ func SearchPptList(adminId int, keyword string) (ret models.RespGroupPptList, er
|
|
|
ret.List = list
|
|
|
ret.Total = len(list)
|
|
|
return
|
|
|
-}
|
|
|
+}
|