Sfoglia il codice sorgente

Merge branch 'bzq/306_report_classify' of eta_gn_server/eta_report into master

baoziqiang 3 mesi fa
parent
commit
94369a87c6
6 ha cambiato i file con 81 aggiunte e 4 eliminazioni
  1. 39 1
      controllers/report_open.go
  2. 0 3
      go.sum
  3. 1 0
      models/classify.go
  4. 23 0
      models/classify_visible.go
  5. 6 0
      models/sys_admin.go
  6. 12 0
      services/report_open.go

+ 39 - 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,13 +46,49 @@ 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)
+	resp = services.RecursiveFilterNoChildTreeClassify(resp)
 
 	br.Data = resp
 	br.Ret = 200

+ 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=

+ 1 - 0
models/classify.go

@@ -81,6 +81,7 @@ type ClassifyTreeItem struct {
 	Sort         int                 `description:"排序"`
 	Level        int                 `description:"层级"`
 	ClassifyType int                 `description:"分类类型:1-研报;2-PPT"`
+	HasChild     int                 `json:"-" description:"是否有子级别,0:下面没有子分类,1:下面有子分类;默认:0"` //`description:"是否有子级别,0:下面没有子分类,1:下面有子分类;默认:0"`
 	Children     []*ClassifyTreeItem `description:"子目录"`
 }
 

+ 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

+ 12 - 0
services/report_open.go

@@ -29,6 +29,18 @@ func GetReportClassifyTreeRecursive(list []*models.Classify, parentId int) []*mo
 	return res
 }
 
+func RecursiveFilterNoChildTreeClassify(list []*models.ClassifyTreeItem) []*models.ClassifyTreeItem {
+	res := make([]*models.ClassifyTreeItem, 0)
+	for _, v := range list {
+		v.Children = RecursiveFilterNoChildTreeClassify(v.Children)
+		if len(v.Children) == 0 && v.HasChild == 1 {
+			continue
+		}
+		res = append(res, v)
+	}
+	return res
+}
+
 // GetReportByOutReportId 根据外部ID获取报告
 func GetReportByOutReportId(outReportId int) (reportItem *models.Report, pptItem *models.PptV2) {
 	reportOb := new(models.Report)