Browse Source

fix:研报ppt分类增加可见权限bug

zqbao 3 months ago
parent
commit
255fd40013
5 changed files with 62 additions and 24 deletions
  1. 20 0
      controllers/classify.go
  2. 11 3
      models/classify.go
  3. 9 0
      models/classify_visible.go
  4. 3 2
      models/report.go
  5. 19 19
      services/classify.go

+ 20 - 0
controllers/classify.go

@@ -576,6 +576,26 @@ func (this *ClassifyController) ListClassify() {
 	}
 	list := originList
 
+	visibleUsers, err := models.GetClassifyVisibleAll()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	visibleUserMap := make(map[int][]int)
+
+	for _, v := range visibleUsers {
+		if m, ok := visibleUserMap[v.ClassifyId]; !ok {
+			visibleUserMap[v.ClassifyId] = make([]int, 0)
+			visibleUserMap[v.ClassifyId] = append(visibleUserMap[v.ClassifyId], v.AdminId)
+		} else {
+			visibleUserMap[v.ClassifyId] = append(m, v.AdminId)
+		}
+	}
+
+	for i, v := range list {
+		list[i].VisiableUsers = visibleUserMap[v.Id]
+	}
 	// 指定分类类型(上级中的分类类型可能与最下层的不一致,但是要把上级也一起取出来, 这需求...=_=!)
 	if classifyType > 0 {
 		list = make([]*models.ClassifyList, 0)

+ 11 - 3
models/classify.go

@@ -76,7 +76,7 @@ func GetClassifyById(classifyId int) (item *Classify, err error) {
 }
 
 // 添加分类
-func AddClassify(item *Classify, visibleUserIds []int) (err error) {
+func AddClassify(item *Classify, parentId int, visibleUserIds []int) (err error) {
 	tx := global.DmSQL["rddp"].Begin()
 	defer func() {
 		if err != nil {
@@ -89,6 +89,7 @@ func AddClassify(item *Classify, visibleUserIds []int) (err error) {
 	if err != nil {
 		return
 	}
+	// 添加可见用户
 	if len(visibleUserIds) > 0 {
 		addMappingList := make([]ClassifyVisible, 0)
 		now := time.Now()
@@ -105,8 +106,14 @@ func AddClassify(item *Classify, visibleUserIds []int) (err error) {
 			return
 		}
 	}
-
-	err = global.DmSQL["rddp"].Create(item).Error
+	// 删除父级分类可见权限
+	if parentId > 0 {
+		sql := `DELETE FROM classify_visible WHERE classify_id=? `
+		err = tx.Exec(sql, parentId).Error
+		if err != nil {
+			return
+		}
+	}
 	return
 }
 
@@ -190,6 +197,7 @@ type ClassifyList struct {
 	ClassifyMenuList      []*ClassifyMenu `gorm:"-"`
 	ChartPermissionIdList []int           `gorm:"-"`                                   //`description:"绑定的权限ID"`
 	LevelPath             string          `gorm:"column:level_path" json:"level_path"` //`description:"分类的层级路径,英文逗号分隔"`
+	VisiableUsers         []int           `gorm:"-"`
 }
 
 type ClassifyItem struct {

+ 9 - 0
models/classify_visible.go

@@ -17,6 +17,12 @@ func (ClassifyVisible) TableName() string {
 	return "classify_visible"
 }
 
+func GetClassifyVisibleAll() (items []*ClassifyVisible, err error) {
+	sql := "SELECT * FROM classify_visible"
+	err = global.DmSQL["rddp"].Raw(sql).Find(&items).Error
+	return
+}
+
 func ExtendClassifyVisible(parentId, classifyId int, adminIds []int) (err error) {
 	tx := global.DmSQL["rddp"].Begin()
 	defer func() {
@@ -50,6 +56,9 @@ func UpdateClassifyVisible(classifyId int, adminId []int) (err error) {
 		tx.Commit()
 	}()
 	err = tx.Table(ClassifyVisible{}.TableName()).Where("classify_id =?", classifyId).Delete(&ClassifyVisible{}).Error
+	if err != nil {
+		return
+	}
 	insertList := make([]ClassifyVisible, 0, len(adminId))
 	for _, admin := range adminId {
 		classifyVisible := ClassifyVisible{

+ 3 - 2
models/report.go

@@ -6,10 +6,11 @@ import (
 	"eta_gn/eta_api/global"
 	"eta_gn/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"gorm.io/gorm"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 )
 
 // 报告状态

+ 19 - 19
services/classify.go

@@ -276,7 +276,7 @@ func AddReportClassify(classifyName string, parentId int, classifyType, isRemind
 	classify.ClassifyType = classifyType
 	classify.IsRemind = isRemind
 	classify.RemindTime = remindTime
-	err = models.AddClassify(classify, visibleUserIds)
+	err = models.AddClassify(classify, parentId, visibleUserIds)
 	if err != nil {
 		return
 	}
@@ -297,11 +297,11 @@ func AddReportClassify(classifyName string, parentId int, classifyType, isRemind
 			// 继承父级分类审批流
 			//go inheritReportApproveFlow(parentClassifyItem, classify)
 			moveReportByAddClassify(parentClassifyItem, classify)
-			err = inheritParentClassifyVisibleUser(parentId, classify.Id)
-			if err != nil {
-				errMsg = "继承父类失败"
-				return
-			}
+			// err = models.UpdateClassifyVisible(classify.Id, visibleUserIds)
+			// if err != nil {
+			// 	errMsg = "添加分类可见权限失败"
+			// 	return
+			// }
 		}
 	}
 
@@ -321,19 +321,19 @@ func AddReportClassify(classifyName string, parentId int, classifyType, isRemind
 }
 
 // inheritParentClassifyVisibleUser 继承父类的可见用户
-func inheritParentClassifyVisibleUser(parentClassifyId, currClassifyId int) (err error) {
-	parentUserIds, err := models.GetClassifyVisibleUserIdByClassifyId(parentClassifyId)
-	if err != nil {
-		return
-	}
-	currUserIds, err := models.GetClassifyVisibleUserIdByClassifyId(currClassifyId)
-	if err != nil {
-		return
-	}
-	parentUserIds = append(parentUserIds, currUserIds...)
-	err = models.ExtendClassifyVisible(parentClassifyId, currClassifyId, parentUserIds)
-	return
-}
+// func inheritParentClassifyVisibleUser(parentClassifyId, currClassifyId int) (err error) {
+// 	parentUserIds, err := models.GetClassifyVisibleUserIdByClassifyId(parentClassifyId)
+// 	if err != nil {
+// 		return
+// 	}
+// 	currUserIds, err := models.GetClassifyVisibleUserIdByClassifyId(currClassifyId)
+// 	if err != nil {
+// 		return
+// 	}
+// 	parentUserIds = append(parentUserIds, currUserIds...)
+// 	err = models.ExtendClassifyVisible(parentClassifyId, currClassifyId, parentUserIds)
+// 	return
+// }
 
 // checkClassifyApprove
 // @Description: 判断分类是否存在待操作的审批单