Roc 1 неделя назад
Родитель
Сommit
757fd5eee2

+ 1 - 0
models/ppt_english/ppt_english.go

@@ -25,6 +25,7 @@ type PptEnglish struct {
 	IsShare       int8      `description:"是否分享,0:不分享,1:分享"`
 	PublishTime   time.Time `description:"发布时间"`
 	CoverContent  string    `description:"PPT内容-JSON"`
+	TitleSetting  string    `description:"PPT标题设置"`
 }
 
 type PptEnglishItem struct {

+ 39 - 1
models/ppt_english/ppt_english_group_mapping.go

@@ -9,7 +9,7 @@ import (
 type PptEnglishGroupMapping struct {
 	GroupPptId      int64     `orm:"column(group_ppt_id);pk;auto" description:"自增序号"`
 	GroupId         int64     `description:"ppt目录ID"`
-	PptSort         int64     `description:"Ppt的排序"`
+	PptSort         float64   `description:"Ppt的排序"`
 	PptId           int64     `description:"ppt ID"`
 	CreateTime      time.Time `orm:"auto_now_add;type(datetime)" description:"创建时间"`
 	ModifyTime      time.Time `orm:"auto_now;type(datetime)" description:"修改时间"`
@@ -41,6 +41,14 @@ func GetPptMappingListByGroupId(groupId int64) (list []*PptEnglishGroupMapping,
 	return
 }
 
+// GetPptMappingListByGroupIdDesc 查询目录下,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").
@@ -151,3 +159,33 @@ func GetPublicGroupPptByPptIds(pptIds []string) (list []*PptEnglishGroupMapping,
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }
+
+// GetMaxSortByGroupId
+// @Description: 根据分组id获取最大排序
+// @author: Roc
+// @datetime 2025-03-07 18:22:56
+// @param groupPptId int64
+// @return pptSort float64
+// @return err error
+func GetMaxSortByEnglishGroupId(groupPptId int64) (pptSort float64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `select MAX(ppt_sort) AS count from ppt_english_group_mapping where group_id=?`
+	err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
+
+	return
+}
+
+// GetMinSortByGroupId
+// @Description: 根据分组id获取最大排序
+// @author: Roc
+// @datetime 2025-03-07 18:22:56
+// @param groupPptId int64
+// @return pptSort float64
+// @return err error
+func GetMinSortByEnglishGroupId(groupPptId int64) (pptSort float64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `select MIN(ppt_sort) AS count from ppt_english_group_mapping where group_id=?`
+	err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
+
+	return
+}

+ 33 - 2
models/ppt_v2_group_mapping.go

@@ -9,7 +9,7 @@ import (
 type PptV2GroupMapping struct {
 	GroupPptId      int64     `orm:"column(group_ppt_id);pk;auto" description:"自增序号"`
 	GroupId         int64     `description:"ppt目录ID"`
-	PptSort         int64     `description:"Ppt的排序"`
+	PptSort         float64   `description:"Ppt的排序"`
 	PptId           int64     `description:"ppt ID"`
 	CreateTime      time.Time `orm:"auto_now_add;type(datetime)" description:"创建时间"`
 	ModifyTime      time.Time `orm:"auto_now;type(datetime)" description:"修改时间"`
@@ -36,7 +36,8 @@ 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 a.group_ppt_id, a.group_id, a.ppt_id, a.ppt_sort, a.admin_id, a.admin_real_name, a.create_time from ppt_v2_group_mapping AS a
+            JOIN ppt_v2 b on a.ppt_id = b.ppt_id where a.group_id=? order by a.ppt_sort desc, b.modify_time desc `
 	_, err = o.Raw(sql, groupId).QueryRows(&list)
 	return
 }
@@ -151,3 +152,33 @@ func GetPublicGroupPptByPptIds(pptIds []string) (list []*PptV2GroupMapping, err
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }
+
+// GetMaxSortByGroupId
+// @Description: 根据分组id获取最大排序
+// @author: Roc
+// @datetime 2025-03-07 18:22:56
+// @param groupPptId int64
+// @return pptSort float64
+// @return err error
+func GetMaxSortByGroupId(groupPptId int64) (pptSort float64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `select MAX(ppt_sort) AS count from ppt_v2_group_mapping where group_id=?`
+	err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
+
+	return
+}
+
+// GetMinSortByGroupId
+// @Description: 根据分组id获取最大排序
+// @author: Roc
+// @datetime 2025-03-07 18:22:56
+// @param groupPptId int64
+// @return pptSort float64
+// @return err error
+func GetMinSortByGroupId(groupPptId int64) (pptSort float64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `select MIN(ppt_sort) AS count from ppt_v2_group_mapping where group_id=?`
+	err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
+
+	return
+}

+ 74 - 47
services/ppt/ppt_english_group.go

@@ -7,6 +7,7 @@ import (
 	"eta/eta_mobile/models/system"
 	"eta/eta_mobile/utils"
 	"fmt"
+	"github.com/shopspring/decimal"
 	"sort"
 	"strconv"
 	"strings"
@@ -60,11 +61,23 @@ func AddGroupPptEnglishMapping(pptId int64, groupId int64, adminId int, adminRea
 		err = errors.New("目录查询出错:" + err.Error())
 		return
 	}
+
+	// 获取当前目录下最大的排序
+	pptSort, err := ppt_english.GetMaxSortByEnglishGroupId(groupId)
+	if err != nil {
+		err = errors.New("查询最大排序出错:" + err.Error())
+		return
+	}
+	newSort, _ := decimal.NewFromFloat(pptSort).Add(decimal.NewFromInt(1)).Float64()
+
 	bindInfo := &ppt_english.PptEnglishGroupMapping{
 		GroupId:       groupId,
 		PptId:         pptId,
 		AdminId:       adminId,
 		AdminRealName: adminRealName,
+		PptSort:       newSort,
+		CreateTime:    time.Now(),
+		ModifyTime:    time.Now(),
 	}
 
 	newId, err = ppt_english.AddPptGroupMapping(bindInfo)
@@ -74,12 +87,13 @@ func AddGroupPptEnglishMapping(pptId int64, groupId int64, adminId int, adminRea
 	}
 
 	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
 }
 
@@ -176,7 +190,7 @@ func CopyEnglishGroup(groupId int64, adminId int, adminRealName string) (err err
 		return
 	}
 	//查询该目录下面是否存在ppt,如果存在则批量复制ppt到新目录下
-	mappingList, err := ppt_english.GetPptMappingListByGroupId(groupId)
+	mappingList, err := ppt_english.GetPptMappingListByGroupIdDesc(groupId)
 	if err != nil {
 		err = errors.New("查询目录里的ppt列表出错:" + err.Error())
 		return
@@ -194,6 +208,11 @@ func CopyEnglishGroup(groupId int64, adminId int, adminRealName string) (err err
 		err = errors.New("查询ppt列表出错:" + err.Error())
 		return
 	}
+	pptMap := make(map[int]*ppt_english.PptEnglish)
+	for _, pptItem := range pptList {
+		pptMap[pptItem.PptId] = pptItem
+	}
+
 	pptNames, err := ppt_english.GetAllPptTitle()
 	if err != nil {
 		err = errors.New("查询ppt标题出错:" + err.Error())
@@ -201,23 +220,32 @@ func CopyEnglishGroup(groupId int64, adminId int, adminRealName string) (err err
 	}
 	//批量复制ppt,更新作者为当前账号,并返回新的pptID
 	newPptList := make([]*ppt_english.PptEnglish, 0)
-	for _, v := range pptList {
+	for _, mapping := range mappingList {
+		pptItem, ok := pptMap[int(mapping.PptId)]
+		// 不存在该ppt,那么就过滤
+		if !ok {
+			continue
+		}
+
 		tmp := &ppt_english.PptEnglish{
-			TemplateType:  v.TemplateType,
-			BackgroundImg: v.BackgroundImg,
-			Title:         generateCopyName(v.Title, 1, pptNames),
-			ReportType:    v.ReportType,
-			PptDate:       v.PptDate,
-			Content:       v.Content,
-			CoverContent:  v.CoverContent,
+			TemplateType:  pptItem.TemplateType,
+			BackgroundImg: pptItem.BackgroundImg,
+			Title:         generateCopyName(pptItem.Title, 1, pptNames),
+			ReportType:    pptItem.ReportType,
+			PptDate:       pptItem.PptDate,
+			Content:       pptItem.Content,
+			CoverContent:  pptItem.CoverContent,
 			CreateTime:    time.Now(),
 			ModifyTime:    time.Now(),
 			AdminId:       adminId,
 			AdminRealName: adminRealName,
+			TitleSetting:  pptItem.TitleSetting,
 		}
 		newPptList = append(newPptList, tmp)
 	}
-	if len(newPptList) > 0 {
+
+	pptNum := len(newPptList)
+	if pptNum > 0 {
 		err = ppt_english.AddPptEnglishMulti(newPptList)
 		if err != nil {
 			err = errors.New("复制目录里的ppt出错:" + err.Error())
@@ -225,12 +253,13 @@ func CopyEnglishGroup(groupId int64, adminId int, adminRealName string) (err err
 		}
 
 		newMappings := make([]*ppt_english.PptEnglishGroupMapping, 0)
-		for _, v := range newPptList {
+		for k, v := range newPptList {
 			tmp := &ppt_english.PptEnglishGroupMapping{
 				GroupId:       newGroupId,
 				PptId:         int64(v.PptId),
 				CreateTime:    time.Now(),
 				ModifyTime:    time.Now(),
+				PptSort:       float64(pptNum - k),
 				AdminId:       adminId,
 				AdminRealName: adminRealName,
 			}
@@ -242,15 +271,15 @@ func CopyEnglishGroup(groupId int64, adminId int, adminRealName string) (err err
 			return
 		}
 		//批量更新排序字段
-		var newGroupPptIds []int64
-		for _, v := range newMappings {
-			newGroupPptIds = append(newGroupPptIds, v.GroupPptId)
-		}
-		err = ppt_english.UpdatePptGroupMappingSortMulti(newGroupPptIds)
-		if err != nil {
-			err = errors.New("更新排序标识出错:" + err.Error())
-			return
-		}
+		//var newGroupPptIds []int64
+		//for _, v := range newMappings {
+		//	newGroupPptIds = append(newGroupPptIds, v.GroupPptId)
+		//}
+		//err = ppt_english.UpdatePptGroupMappingSortMulti(newGroupPptIds)
+		//if err != nil {
+		//	err = errors.New("更新排序标识出错:" + err.Error())
+		//	return
+		//}
 	}
 	return
 }
@@ -371,7 +400,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
@@ -462,8 +491,6 @@ func MoveGroupPptEnglish(groupId, groupPptId, prevGroupPptId, nextGroupPptId int
 		return
 	}
 	var updateStr []string
-	//如果更换了目录,默认当前排序值为0
-	var currentSort, prevSort, nextSort int64
 	//判断是否更换group
 	if groupPpt.GroupId != groupId {
 		_, err = ppt_english.GetPptGroupByGroupIdAdminId(groupId, adminId)
@@ -485,7 +512,6 @@ func MoveGroupPptEnglish(groupId, groupPptId, prevGroupPptId, nextGroupPptId int
 		groupPpt.GroupId = groupId
 		updateStr = append(updateStr, "group_id")
 	}
-	currentSort = groupPpt.PptSort
 
 	var prevGroupPpt *ppt_english.PptEnglishGroupMapping
 	var nextGroupPpt *ppt_english.PptEnglishGroupMapping
@@ -499,7 +525,6 @@ func MoveGroupPptEnglish(groupId, groupPptId, prevGroupPptId, nextGroupPptId int
 			err = errors.New("目录下的ppt查询出错:" + err.Error())
 			return
 		}
-		prevSort = prevGroupPpt.PptSort
 	}
 
 	if nextGroupPptId > 0 {
@@ -512,29 +537,31 @@ func MoveGroupPptEnglish(groupId, groupPptId, prevGroupPptId, nextGroupPptId int
 			err = errors.New("目录下的ppt查询出错:" + err.Error())
 			return
 		}
-		nextSort = nextGroupPpt.PptSort
 	}
 
-	updateStr = append(updateStr, "ppt_sort")
-
-	//移到两个排序值中间操作
-	if prevSort >= currentSort {
-		//往下移动
-		err = ppt_english.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 := ppt_english.GetMinSortByEnglishGroupId(prevGroupPpt.GroupId)
+		if tmpErr != nil {
+			err = errors.New("获取最小排序失败:" + tmpErr.Error())
 			return
 		}
-		groupPpt.PptSort = prevSort
-	} else if nextSort <= currentSort && nextSort != 0 {
-		//往上移动
-		err = ppt_english.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 := ppt_english.GetMaxSortByEnglishGroupId(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 {

+ 89 - 185
services/ppt/ppt_group.go

@@ -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
-}
+}