|
@@ -8,6 +8,7 @@ import (
|
|
|
"eta/eta_api/services"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
+ "github.com/shopspring/decimal"
|
|
|
"sort"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -227,6 +228,15 @@ 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,
|
|
@@ -234,7 +244,7 @@ func AddGroupPptMapping(pptId int64, groupId int64, adminId int, adminRealName s
|
|
|
AdminRealName: adminRealName,
|
|
|
CreateTime: time.Now(),
|
|
|
ModifyTime: time.Now(),
|
|
|
- PptSort: 0,
|
|
|
+ PptSort: newSort,
|
|
|
}
|
|
|
|
|
|
newId, err = models.AddPptGroupMapping(bindInfo)
|
|
@@ -402,7 +412,7 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
}
|
|
|
|
|
|
newMappings := make([]*models.PptV2GroupMapping, 0)
|
|
|
- for _, v := range newPptList {
|
|
|
+ for i, v := range newPptList {
|
|
|
tmp := &models.PptV2GroupMapping{
|
|
|
GroupId: newGroupId,
|
|
|
PptId: int64(v.PptId),
|
|
@@ -410,7 +420,7 @@ func CopyGroup(groupId int64, adminId int, adminRealName string) (err error) {
|
|
|
ModifyTime: time.Now(),
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
- PptSort: 0,
|
|
|
+ PptSort: float64(i + 1),
|
|
|
}
|
|
|
newMappings = append(newMappings, tmp)
|
|
|
}
|
|
@@ -658,6 +668,101 @@ func GetGroupPptList(groupId int64, adminId int) (ret models.RespGroupPptList, e
|
|
|
}
|
|
|
|
|
|
// MoveGroupPpt 移动ppt操作
|
|
|
+//func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adminId int) (err error) {
|
|
|
+// //查询当前映射是否存在
|
|
|
+// //判断当前登录者是否有共享的权限oo
|
|
|
+// groupPpt, err := models.GetPptMappingByGroupPptId(groupPptId, adminId)
|
|
|
+// if err != nil {
|
|
|
+// if utils.IsErrNoRow(err) {
|
|
|
+// err = errors.New("当前目录下的ppt不存在")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// err = errors.New("目录下的ppt查询出错:" + err.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// var updateStr []string
|
|
|
+// //如果更换了目录,默认当前排序值为0
|
|
|
+// var currentSort, prevSort, nextSort int64
|
|
|
+// //判断是否更换group
|
|
|
+// if groupPpt.GroupId != groupId {
|
|
|
+// _, err = models.GetPptGroupByGroupIdAdminId(groupId, adminId)
|
|
|
+// if err != nil {
|
|
|
+// if utils.IsErrNoRow(err) {
|
|
|
+// err = errors.New("目录不存在")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// err = errors.New("目录查询出错:" + err.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// //判断是否需要解除当个ppt共享
|
|
|
+// //解除共享操作
|
|
|
+// err = CancelShareSingleGroupPpt(groupPpt, adminId)
|
|
|
+// if err != nil {
|
|
|
+// err = errors.New(err.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// groupPpt.GroupId = groupId
|
|
|
+// updateStr = append(updateStr, "group_id")
|
|
|
+// }
|
|
|
+// currentSort = groupPpt.PptSort
|
|
|
+//
|
|
|
+// var prevGroupPpt *models.PptV2GroupMapping
|
|
|
+// var nextGroupPpt *models.PptV2GroupMapping
|
|
|
+// if prevGroupPptId > 0 {
|
|
|
+// prevGroupPpt, err = models.GetPptMappingByGroupPptId(prevGroupPptId, adminId)
|
|
|
+// if err != nil {
|
|
|
+// if utils.IsErrNoRow(err) {
|
|
|
+// err = errors.New("目录下的ppt不存在")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// err = errors.New("目录下的ppt查询出错:" + err.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// prevSort = prevGroupPpt.PptSort
|
|
|
+// }
|
|
|
+//
|
|
|
+// if nextGroupPptId > 0 {
|
|
|
+// nextGroupPpt, err = models.GetPptMappingByGroupPptId(nextGroupPptId, adminId)
|
|
|
+// if err != nil {
|
|
|
+// if utils.IsErrNoRow(err) {
|
|
|
+// err = errors.New("目录下的ppt不存在")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// 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())
|
|
|
+// 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())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// groupPpt.PptSort = nextSort
|
|
|
+// }
|
|
|
+// //更新当前排序
|
|
|
+// err = groupPpt.Update(updateStr)
|
|
|
+// if err != nil {
|
|
|
+// err = errors.New("移动ppt出错:" + err.Error())
|
|
|
+// return
|
|
|
+// }
|
|
|
+// return
|
|
|
+//}
|
|
|
+
|
|
|
func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adminId int) (err error) {
|
|
|
//查询当前映射是否存在
|
|
|
//判断当前登录者是否有共享的权限oo
|
|
@@ -671,8 +776,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)
|
|
@@ -694,7 +797,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
|
|
@@ -708,7 +810,6 @@ func MoveGroupPpt(groupId, groupPptId, prevGroupPptId, nextGroupPptId int64, adm
|
|
|
err = errors.New("目录下的ppt查询出错:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- prevSort = prevGroupPpt.PptSort
|
|
|
}
|
|
|
|
|
|
if nextGroupPptId > 0 {
|
|
@@ -721,29 +822,29 @@ 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)
|
|
|
+ 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 {
|
|
|
+ minSort, err := models.GetMinSortByGroupId(prevGroupPpt.GroupId)
|
|
|
if err != nil {
|
|
|
- err = errors.New("向下移动ppt出错:" + err.Error())
|
|
|
+ err = errors.New("获取最小排序失败:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- groupPpt.PptSort = prevSort
|
|
|
- } else if nextSort <= currentSort && nextSort != 0 {
|
|
|
- //往上移动
|
|
|
- err = models.MoveUpGroupPptBySort(groupId, nextSort, currentSort)
|
|
|
+ pptSort, _ = decimal.NewFromFloat(minSort).Add(decimal.NewFromInt(1)).Float64()
|
|
|
+ } else if nextGroupPpt != nil && nextGroupPpt.PptId > 0 {
|
|
|
+ maxSort, err := models.GetMaxSortByGroupId(prevGroupPpt.GroupId)
|
|
|
if err != nil {
|
|
|
- err = errors.New("向上移动ppt出错:" + err.Error())
|
|
|
+ err = errors.New("获取最小排序失败:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- groupPpt.PptSort = nextSort
|
|
|
+ pptSort, _ = decimal.NewFromFloat(maxSort).Sub(decimal.NewFromInt(1)).Float64()
|
|
|
}
|
|
|
+
|
|
|
+ groupPpt.PptSort = pptSort
|
|
|
+ updateStr = append(updateStr, "ppt_sort")
|
|
|
//更新当前排序
|
|
|
err = groupPpt.Update(updateStr)
|
|
|
if err != nil {
|
|
@@ -962,6 +1063,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,
|
|
@@ -970,7 +1080,7 @@ func CopyPpt(pptId int, groupId int64, adminId int, adminRealName string) (resp
|
|
|
ModifyTime: time.Now(),
|
|
|
AdminId: adminId,
|
|
|
AdminRealName: adminRealName,
|
|
|
- PptSort: 0,
|
|
|
+ PptSort: newSort,
|
|
|
}
|
|
|
newMappings = append(newMappings, newGroupPpt)
|
|
|
|
|
@@ -1068,136 +1178,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,
|
|
|
- PptSort: 0,
|
|
|
- }
|
|
|
- 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,
|
|
|
- PptSort: 0,
|
|
|
- }
|
|
|
- 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
|