Browse Source

fix:报告分类可见用户

zqbao 4 months ago
parent
commit
3c7e248fde
4 changed files with 67 additions and 4 deletions
  1. 38 1
      controllers/report_open.go
  2. 0 3
      go.sum
  3. 23 0
      models/classify_visible.go
  4. 6 0
      models/sys_admin.go

+ 38 - 1
controllers/report_open.go

@@ -20,6 +20,7 @@ type ReportOpenController struct {
 // @Title 报告分类
 // @Description 报告分类接口
 // @Param   ClassifyType   query   int   false   "分类类型:0-全部(不传默认为0);1-研报;2-PPT"
+// @Param   OutId   query   string   false   "用户工号Id"
 // @Success 200 {object} models.ClassifyTreeItem
 // @router /report/classify [get]
 func (this *ReportOpenController) ClassifyTree() {
@@ -32,6 +33,7 @@ func (this *ReportOpenController) ClassifyTree() {
 		this.ServeJSON()
 	}()
 	classifyType, _ := this.GetInt("ClassifyType", 0)
+	outId := this.GetString("OutId")
 	if classifyType < 0 || classifyType > 2 {
 		classifyType = 0
 	}
@@ -44,12 +46,47 @@ func (this *ReportOpenController) ClassifyTree() {
 		cond += ` AND classify_type = ?`
 		pars = append(pars, classifyType)
 	}
-	list, e := classifyOb.GetItemsByCondition(cond, pars, []string{}, "parent_id ASC, sort ASC, create_time ASC")
+	classifyList, e := classifyOb.GetItemsByCondition(cond, pars, []string{}, "parent_id ASC, sort ASC, create_time ASC")
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = fmt.Sprintf("获取分类列表失败,%v", e)
 		return
 	}
+
+	if outId == "" {
+		br.Msg = "工号不能为空"
+		return
+	}
+	list := make([]*models.Classify, 0)
+	classifyObj := new(models.ClassifyVisible)
+	visibleUsers, err := classifyObj.GetClassifyVisibleAll()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取可见用户失败,%v", err)
+		return
+	}
+	adminObj := new(models.Admin)
+	admin, e := adminObj.GetAdminByOutId(outId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取管理员信息失败,%v", e)
+		return
+	}
+
+	visibleUsersMap := make(map[int][]int)
+	for _, v := range visibleUsers {
+		visibleUsersMap[v.ClassifyId] = append(visibleUsersMap[v.ClassifyId], v.AdminId)
+	}
+
+	for _, v := range classifyList {
+		if visibleUser, ok := visibleUsersMap[v.Id]; ok {
+			if !utils.InArrayByInt(visibleUser, admin.AdminId) {
+				continue
+			}
+		}
+		list = append(list, v)
+	}
+
 	resp := services.GetReportClassifyTreeRecursive(list, 0)
 
 	br.Data = resp

+ 0 - 3
go.sum

@@ -121,9 +121,6 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lib/pq v1.10.5 h1:J+gdV2cUmX7ZqL2B0lFcW0m+egaHC2V3lpO8nWxyYiQ=
-github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
 github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=

+ 23 - 0
models/classify_visible.go

@@ -0,0 +1,23 @@
+package models
+
+import (
+	"eta_gn/eta_report/global"
+	"time"
+)
+
+type ClassifyVisible struct {
+	ClassifyVisibleId int       `gorm:"column:classify_visible_id;primary_key"`
+	ClassifyId        int       `gorm:"column:classify_id"`
+	AdminId           int       `gorm:"column:admin_id"`
+	CreateTime        time.Time `gorm:"column:create_time"`
+}
+
+func (ClassifyVisible) TableName() string {
+	return "classify_visible"
+}
+
+func (c *ClassifyVisible) GetClassifyVisibleAll() (items []*ClassifyVisible, err error) {
+	sql := "SELECT * FROM classify_visible"
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
+	return
+}

+ 6 - 0
models/sys_admin.go

@@ -52,6 +52,12 @@ func (m *Admin) TableName() string {
 	return "admin"
 }
 
+func (m *Admin) GetAdminByOutId(outId string) (item *Admin, err error) {
+	sql := fmt.Sprintf(`SELECT * FROM "admin" WHERE %s = ? LIMIT 1`, "out_id")
+	err = global.DmSQL["eta"].Raw(sql, outId).First(&item).Error
+	return
+}
+
 func (m *Admin) GetItemById(id int) (item *Admin, err error) {
 	sql := fmt.Sprintf(`SELECT * FROM "admin" WHERE %s = ? LIMIT 1`, "admin_id")
 	err = global.DmSQL["eta"].Raw(sql, id).First(&item).Error