Browse Source

Merge branch 'yb11.1'

ziwen 2 years ago
parent
commit
8a458c2ac2

+ 23 - 0
controller/company/company_permission.go

@@ -50,5 +50,28 @@ func GetBindFiccPermissions(c *gin.Context) {
 		return
 	}
 
+	response.OkData("获取成功", list, c)
+}
+
+// GetCommoditiesBindFiccPermissions 大宗商品展示有权限的品种列表,无权限的隐藏
+// @Tags 客户模块
+// @Summary  获取FICC品种权限列表
+// @Description 获取FICC品种权限列表
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Success 200 {object} []company.FiccPermissionList
+// @failure 400 {string} string "获取失败"
+// @Router /company/permission/commodities [get]
+func GetCommoditiesBindFiccPermissions(c *gin.Context) {
+	userinfo := userService.GetInfoByClaims(c)
+
+	list, err := company.GetCommoditiesBindFiccPermissions(userinfo)
+	if err !=nil {
+		response.Fail(err.Error(), c)
+		return
+	}
+
 	response.OkData("获取成功", list, c)
 }

+ 47 - 0
controller/report/report.go

@@ -250,3 +250,50 @@ func ReportPptImgList(c *gin.Context) {
 	response.OkData("获取成功", pptImgList, c)
 	return
 }
+
+// VarietyReportList 品种类型研报列表
+func VarietyReportList(c *gin.Context) {
+	reqClassifyId := c.DefaultQuery("classify_id", "")
+	reqChartPermissionId := c.DefaultQuery("chart_permission_id", "")
+	reqPageIndex := c.DefaultQuery("current_index", "1")
+	reqPageSize := c.DefaultQuery("page_size", strconv.Itoa(utils.PageSize20))
+
+	pageIndex, err := strconv.Atoi(reqPageIndex)
+	if err != nil {
+		response.Fail("请输入正确的条数限制", c)
+		return
+	}
+
+	pageSize, err := strconv.Atoi(reqPageSize)
+	if err != nil {
+		response.Fail("请输入正确的页码", c)
+		return
+	}
+
+	if reqChartPermissionId == "" {
+		response.Fail("请输入权限ID", c)
+		return
+	}
+	chartPermissionId, err := strconv.Atoi(reqChartPermissionId)
+	if err != nil {
+		response.Fail("权限ID格式错误", c)
+		return
+	}
+
+	classifyId, err := strconv.Atoi(reqClassifyId)
+	if err != nil {
+		response.Fail("种类ID格式错误", c)
+		return
+	}
+
+	userinfo := userService.GetInfoByClaims(c)
+
+	list, err := report.GetVarietyReportList(userinfo, classifyId, chartPermissionId, pageIndex, pageSize)
+	if err != nil {
+		response.FailMsg("查看研报列表出错", err.Error(), c)
+		return
+	}
+
+	response.OkData("查询成功", list, c)
+	return
+}

+ 27 - 0
models/response/report.go

@@ -229,3 +229,30 @@ func (rc ReportChapterMenuList) Less(i, j int) bool {
 func (rc ReportChapterMenuList) Swap(i, j int) {
 	rc[i], rc[j] = rc[j], rc[i]
 }
+
+type ReportVarietyResp struct {
+	Paging *PagingItem          `json:"paging"`
+	List   []*VarietyReportItem `json:"list"`
+}
+
+type VarietyReportItem struct {
+	ReportId           int       `json:"report_id"`
+	ClassifyNameFirst  string    `description:"一级分类名称" json:"classify_name_first"`
+	ClassifyNameSecond string    `description:"二级分类名称" json:"classify_name_second"`
+	Title              string    `description:"标题" json:"title"`
+	Abstract           string    `description:"摘要" json:"abstract"`
+	Author             string    `description:"作者" json:"author"`
+	Frequency          string    `description:"频度" json:"frequency"`
+	PublishTime        time.Time `description:"发布时间" json:"publish_time"`
+	Stage              int       `description:"期数" json:"stage"`
+	Content            string    `description:"内容" json:"content"`
+	VideoUrl           string    `description:"音频文件URL" json:"video_url"`
+	VideoName          string    `description:"音频文件名称" json:"video_name"`
+	VideoSize          string    `description:"音频文件大小,单位M" json:"video_size"`
+	VideoPlaySeconds   string    `description:"音频播放时长" json:"video_play_seconds"`
+	VideoImg           string    `description:"音频播放条的图片" json:"video_img"`
+	ContentSub         string    `description:"内容前两个章节" json:"content_sub"`
+	BannerUrl          string    `description:"详情页banner" json:"banner_url"`
+	ShareBgImg         string    `description:"分享背景图" json:"share_bg_img"`
+	AuthOk             bool      `json:"auth_ok"`
+}

+ 30 - 0
models/tables/chart_permission_search_key_word_mapping/query.go

@@ -43,4 +43,34 @@ func GetKeyWordsByChartPermissionId(charPermissionId int, from string) (keyWords
 		}
 	}
 	return
+}
+
+// GetKeyWordsByChartPermissionId 根据权限ID, 查询二级分类名称
+func GetKeyWordsByChartPermissionIdOnly(charPermissionId int) (keyWords []string, err error)  {
+	var list []*ChartPermissionSearchKeyWordMapping
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("chart_permission_id = ? ", charPermissionId).Scan(&list).Error
+	if err != nil && err != utils.ErrNoRow {
+		return
+	}
+	if len(list) > 0 {
+		for _, item := range list {
+			keyWords = append(keyWords, item.KeyWord)
+		}
+	}
+	return
+}
+
+// GetKeyWordsByChartPermissionByIds 根据权限ID, 查询二级分类名称
+func GetKeyWordsByChartPermissionByIds(charPermissionIds []int) (keyWords []string, err error)  {
+	var list []*ChartPermissionSearchKeyWordMapping
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("chart_permission_id IN (?) ", charPermissionIds).Scan(&list).Error
+	if err != nil && err != utils.ErrNoRow {
+		return
+	}
+	if len(list) > 0 {
+		for _, item := range list {
+			keyWords = append(keyWords, item.KeyWord)
+		}
+	}
+	return
 }

+ 33 - 0
models/tables/rddp/report/query.go

@@ -405,4 +405,37 @@ ORDER BY
 	sql = fmt.Sprintf(sql, firstName, secondId)
 	err = global.MYSQL["rddp"].Raw(sql).First(&items).Error
 	return
+}
+
+// GetCommoditiesReportCollectListByPermission 根据权限相关的分类查询大宗商品报告
+func GetCommoditiesReportCollectListByPermission(classifyIdSeconds []int, offset , limit int) (list []*Report, err error)  {
+	sql := ` SELECT
+id, classify_id_first, classify_name_first, classify_id_second, classify_name_second, title, stage, publish_time, author, create_time, video_url, video_name, video_play_seconds, abstract  
+FROM
+	report
+WHERE
+	classify_name_first != "晨报" 
+	AND classify_name_first != "周报" 
+	AND classify_id_second in ?
+	AND state = 2
+	ORDER BY publish_time DESC, id desc LIMIT ? OFFSET ?
+	`
+	err = global.MYSQL["rddp"].Raw(sql, classifyIdSeconds, limit, offset).Scan(&list).Error
+	return
+}
+
+// GetCommoditiesReportCollectCountByPermission 查询大宗商品报告总页数
+func GetCommoditiesReportCollectCountByPermission(classifyIdSeconds []int) (total int64, err error)  {
+	sql := `select count(*) 
+FROM
+        report
+WHERE
+        classify_name_first != "晨报" 
+        AND classify_name_first != "周报" 
+        AND classify_id_second in ?
+        AND state = 2
+        
+	`
+	err = global.MYSQL["rddp"].Raw(sql, classifyIdSeconds).Count(&total).Error
+	return
 }

+ 1 - 0
routers/company.go

@@ -12,5 +12,6 @@ func InitCompany(r *gin.Engine) {
 		rGroup.GET("/getPermissionList", company.GetHomeFiccPermissions)
 		rGroup.GET("/permission/tree", company.GetPermissionTree)
 		rGroup.GET("/permission/bind", company.GetBindFiccPermissions)
+		rGroup.GET("/permission/commodities", company.GetCommoditiesBindFiccPermissions)
 	}
 }

+ 1 - 0
routers/report.go

@@ -16,6 +16,7 @@ func InitReport(r *gin.Engine) {
 	rGroup.GET("/search", report.Search)
 	rGroup.POST("/detail/rddp_share_img", report.RddpShareImg)
 	rGroup.GET("/ppt_img", report.ReportPptImgList)
+	rGroup.GET("/variety/list", report.VarietyReportList)
 
 	rGroup2 := r.Group("api/classify").Use(middleware.Token())
 	rGroup2.GET("/ficc", report.ClassifyFirstList)

+ 110 - 0
services/company/permission.go

@@ -1001,3 +1001,113 @@ func GetBindFiccPermissions(user user.UserInfo) (ret response.BindPermissionFicc
 	return
 }
 
+func GetCommoditiesBindFiccPermissions(user user.UserInfo) (ret response.BindPermissionFiccResp, err error) {
+	var errMsg string
+	defer func() {
+		if err != nil {
+			global.LOG.Critical(fmt.Sprintf("GetHomeFiccPermissions: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
+		}
+	}()
+	ret.PermissionList = make([]*response.BindPermissionFiccItem, 0)
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+		return
+	}
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+	if !productAuthOk {
+		return
+	}
+	validPermissionList, err := GetValidPermissionByCompany2ProductId(user.CompanyID, 1)
+	if err != nil {
+		return
+	}
+	var validPermissionIds []int
+	for _, item := range validPermissionList {
+		validPermissionIds = append(validPermissionIds, item.ChartPermissionID)
+	}
+	permissionList, err := chart_permission.GetFiccListExceptTacticByProductIdOrderSort()
+	if err != nil {
+		return
+	}
+	permissionMap := make(map[uint64]bool)
+	permissionFirstMap := make(map[string]*response.BindPermissionFiccItem)
+
+	//查询首页展示的图标
+	permissionFirstList, err := chart_permission_first.GetIndexShowListOrderSort()
+	if err != nil {
+		return
+	}
+	for _, v := range permissionFirstList {
+		permissionFirstMap[v.ClassifyName] = &response.BindPermissionFiccItem{
+			Id:          int(v.Id),
+			ClassifyName: v.YbIndexName,
+		}
+	}
+
+	for _, v := range permissionList {
+		permissionMap[v.ChartPermissionID] = false
+		for _, myPerId := range validPermissionIds {
+			if int(v.ChartPermissionID) == myPerId {
+				permissionMap[v.ChartPermissionID] = true
+				break
+			}
+		}
+	}
+
+	for _, v := range permissionList {
+		temp := new(response.BindPermissionFiccSecondItem)
+		temp.ChartPermissionID = int(v.ChartPermissionID)
+		temp.ChartPermissionName = v.PermissionName
+		if _, ok := permissionFirstMap[v.ClassifyName]; ok && permissionMap[v.ChartPermissionID] {
+			permissionFirstMap[v.ClassifyName].List = append(permissionFirstMap[v.ClassifyName].List, temp)
+		}
+	}
+
+	var list []*response.BindPermissionFiccItem
+LOOP:
+	for _, v := range permissionFirstList {
+		item := permissionFirstMap[v.ClassifyName]
+		if len(item.List) > 0 {
+			temp := new(response.BindPermissionFiccItem)
+			temp.Id = item.Id
+			temp.ClassifyName = item.ClassifyName
+			temp.List = item.List
+			//大宗商品分类内合并PTA&MEG
+			if temp.ClassifyName == "化工" {
+				count := 0
+				for i, secondItem := range temp.List {
+					if secondItem.ChartPermissionName == "PTA" || secondItem.ChartPermissionName == "MEG"{
+						count++
+						secondItem.ChartPermissionName = "PTA&MEG"
+						if count > 1 {
+							temp.List = append(temp.List[:i], temp.List[i+1:]...)
+						}
+					}
+				}
+			}
+			if temp.ClassifyName == "宏观经济" {
+				continue LOOP
+			}
+			list = append(list, temp)
+		}
+	}
+
+	ret.PermissionList = list
+	return
+}

+ 74 - 4
services/pc/classify.go

@@ -5,13 +5,17 @@ import (
 	"fmt"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/models/response/pc"
+	"hongze/hongze_yb/models/tables/company_product"
 	"hongze/hongze_yb/models/tables/rddp/classify"
+	"hongze/hongze_yb/services/company"
 	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
 	"sort"
+	"strings"
 )
 
 // GetClassifyFirstList 获取一级分类列表
-func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err error) {
+func GetClassifyFirstList(user user.UserInfo) (resp pc.ClassifyFirstList, err error) {
 	var errMsg string
 	defer func() {
 		if err != nil {
@@ -45,6 +49,7 @@ func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err er
 		err = errors.New("报告查询出错")
 		return
 	}
+	var list pc.ClassifyFirstList
 	for _, item := range classifyParents {
 		temp := new(pc.ClassifyFirstListItem)
 		temp.ClassifyIdFirst = item.Id
@@ -54,7 +59,7 @@ func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err er
 		if temp.Sort == 0 {
 			continue
 		}
-		// ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情
+		// ShowType展示类型:1-列表 2-专栏 3-品种; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情 4-品种类型列表
 		temp.RedirectType = 2
 		if item.ShowType == 2 {
 			temp.RedirectType = 1
@@ -65,19 +70,84 @@ func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err er
 				temp.ClassifyNameSecond = classifyChild[0].ClassifyName
 				temp.RedirectType = 3
 			}
+		} else if item.ShowType == 3 {
+			temp.RedirectType = 4
 		}
 		list = append(list, temp)
 	}
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+	}
+
+	if err != nil && err != utils.ErrNoRow {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+
+	// 获取有效的权限id列表
+	var validPermissionIdList []int
+	//var allClassifySecondIds []int
+	if productAuthOk {
+		validPermissionIdList, err = company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
+		if err != nil && err != utils.ErrNoRow {
+			errMsg = err.Error()
+			err = errors.New("查询分类出错")
+			return
+		}
+	}
+
+	//classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionByIds(validPermissionIdList)
+	//if err != nil {
+	//	errMsg = err.Error()
+	//	err = errors.New("查询权限对应的分类出错")
+	//	return
+	//}
+	//
+	//if len(classifyNames) > 0 {
+	//	allClassifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
+	//	if err != nil {
+	//		errMsg = err.Error()
+	//		err = errors.New("查询分类出错")
+	//		return
+	//	}
+	//}
+
 	for _, item := range list {
+		//无权限用户关闭品种类别入口
+		if item.RedirectType == 4 && !productAuthOk{
+			continue
+		}
+
+		//只有宏观经济权限的用户关闭品种类别入口
+		if len(validPermissionIdList) == 1 && validPermissionIdList[0] == 1 && item.RedirectType == 4{
+			continue
+		}
+
 		for _, report := range reportList {
 			if report.ClassifyNameFirst == item.ClassifyNameFirst {
 				item.Latest = report.Stage
 			}
 		}
+		resp = append(resp, item)
 	}
-	if len(list) > 0 {
-		sort.Sort(list)
+
+	if len(resp) > 0 {
+		sort.Sort(resp)
 	}
 
+
 	return
 }

+ 82 - 17
services/report/classify.go

@@ -50,7 +50,7 @@ func GetClassListByClassifyId(user user.UserInfo, classifyIdFirst int) (list []*
 	}
 	var secondIds []int
 	for _, v := range classifyList {
-		secondIds = append(secondIds,v.Id)
+		secondIds = append(secondIds, v.Id)
 	}
 
 	//查询二级分类中最新的报告ID
@@ -72,7 +72,7 @@ func GetClassListByClassifyId(user user.UserInfo, classifyIdFirst int) (list []*
 		temp.AuthorDescript = item.AuthorDescript
 		temp.Abstract = item.Abstract
 		temp.ReportAuthor = item.ReportAuthor
-		temp.HomeImgUrl = item.AvatarImgUrl	// 此处图片用二级分类的"头像"
+		temp.HomeImgUrl = item.AvatarImgUrl // 此处图片用二级分类的"头像"
 		temp.ClassifyNameSecond = item.ClassifyName
 		temp.VipTitle = item.VipTitle
 		if classifyInfo.ClassifyName == "权益研报" {
@@ -89,7 +89,7 @@ func GetClassListByClassifyId(user user.UserInfo, classifyIdFirst int) (list []*
 	return
 }
 
-func GetClassifyDetail(user user.UserInfo, classifyIdSecond int) (detail *response.ClassifyDetail, err error)  {
+func GetClassifyDetail(user user.UserInfo, classifyIdSecond int) (detail *response.ClassifyDetail, err error) {
 	var errMsg string
 	defer func() {
 		if err != nil {
@@ -142,7 +142,7 @@ func GetClassifyDetail(user user.UserInfo, classifyIdSecond int) (detail *respon
 }
 
 // GetClassifyReportList 查询二级分类下的报告列表
-func GetClassifyReportList(user user.UserInfo, classifyIdSecond int, pageIndex, pageSize int) (list *response.ClassReportList, err error)  {
+func GetClassifyReportList(user user.UserInfo, classifyIdSecond int, pageIndex, pageSize int) (list *response.ClassReportList, err error) {
 	var errMsg string
 	defer func() {
 		if err != nil {
@@ -230,13 +230,13 @@ func GetClassifyReportList(user user.UserInfo, classifyIdSecond int, pageIndex,
 			reportItem.Stage = reportInfo.Stage
 			reportItem.Abstract = reportInfo.Abstract
 			if reportInfo.Abstract != "" {
-				reportItem.Abstract = "<div style=\"overflow: hidden;white-space: nowrap;text-overflow: ellipsis;\">" +reportInfo.Abstract+"</div>"
+				reportItem.Abstract = "<div style=\"overflow: hidden;white-space: nowrap;text-overflow: ellipsis;\">" + reportInfo.Abstract + "</div>"
 			}
 			reportItem.Author = classifyInfo.ReportAuthor
-			reportItem.ReportImgUrl = classifyInfo.AvatarImgUrl	// 此处图片用二级分类的"头像"
+			reportItem.ReportImgUrl = classifyInfo.AvatarImgUrl // 此处图片用二级分类的"头像"
 			reportItem.VideoName = reportInfo.VideoName
 			reportItem.VideoPlaySeconds = reportInfo.VideoPlaySeconds
-			if  reportInfo.VideoUrl != "" && reportInfo.VideoName == "" {
+			if reportInfo.VideoUrl != "" && reportInfo.VideoName == "" {
 				reportItem.VideoName = reportInfo.Title
 			}
 			if authOk {
@@ -289,9 +289,11 @@ func GetClassifySecondSimpleList(user user.UserInfo, classifyIdFirst int) (list
 			temp := new(response.ClassifySimpleListItem)
 			temp.ClassifyIdSecond = item.Id
 			temp.ClassifyNameSecond = item.ClassifyName
-			if index := strings.Index(item.ClassifyName, "双周报"); index > 0{
-				temp.ClassifySecondNameSimple = item.ClassifyName[0 : index]
-			}else{
+			if index := strings.Index(item.ClassifyName, "双周报"); index > 0 {
+				temp.ClassifySecondNameSimple = item.ClassifyName[0:index]
+			} else if item.ClassifyName == "纺织服装与商品价格" {
+				temp.ClassifySecondNameSimple = "纺织服装"
+			} else {
 				temp.ClassifySecondNameSimple = item.ClassifyName
 			}
 
@@ -302,9 +304,8 @@ func GetClassifySecondSimpleList(user user.UserInfo, classifyIdFirst int) (list
 	return
 }
 
-
 // GetClassifyFirstList 获取一级分类列表
-func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList, err error) {
+func GetClassifyFirstList(user user.UserInfo) (resp response.ClassifyFirstList, err error) {
 	var errMsg string
 	defer func() {
 		if err != nil {
@@ -328,6 +329,7 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 		classifyIconMap[v.ClassifyName] = v.YbFiccIcon
 		classifySortMap[v.ClassifyName] = v.YbFiccSort
 	}
+	var list response.ClassifyFirstList
 	for _, item := range classifyParents {
 		temp := new(response.ClassifyFirstListItem)
 		temp.ClassifyIdFirst = item.Id
@@ -337,7 +339,7 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 		if temp.Sort == 0 {
 			continue
 		}
-		// ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情
+		// ShowType展示类型:1-列表 2-专栏 3-品种; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情 4-品种类型列表
 		temp.RedirectType = 2
 		if item.ShowType == 2 {
 			temp.RedirectType = 1
@@ -348,14 +350,77 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 				temp.ClassifyNameSecond = classifyChild[0].ClassifyName
 				temp.RedirectType = 3
 			}
+		} else if item.ShowType == 3 {
+			temp.RedirectType = 4
 		}
 		list = append(list, temp)
 	}
-	if len(list) > 0 {
-		sort.Sort(list)
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+	}
+	if err != nil && err != utils.ErrNoRow {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+
+	// 获取有效的权限id列表
+	var validPermissionIdList []int
+	//var allClassifySecondIds []int
+	if productAuthOk {
+		validPermissionIdList, err = company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
+		if err != nil && err != utils.ErrNoRow {
+			errMsg = err.Error()
+			err = errors.New("查询分类出错")
+			return
+		}
 	}
 
-	return
-}
+	//classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionByIds(validPermissionIdList)
+	//if err != nil {
+	//	errMsg = err.Error()
+	//	err = errors.New("查询权限对应的分类出错")
+	//	return
+	//}
+	//
+	//if len(classifyNames) > 0 {
+	//	allClassifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
+	//	if err != nil {
+	//		errMsg = err.Error()
+	//		err = errors.New("查询分类出错")
+	//		return
+	//	}
+	//}
+	for _, item := range list {
+		//无权限用户关闭品种类别入口
+		if item.RedirectType == 4 && !productAuthOk{
+			continue
+		}
 
+		//只有宏观经济权限的用户关闭品种类别入口
+		if len(validPermissionIdList) == 1 && validPermissionIdList[0] == 1 && item.RedirectType == 4{
+			continue
+		}
+
+
+		resp = append(resp, item)
+	}
 
+	if len(resp) > 0 {
+		sort.Sort(resp)
+	}
+
+	return
+}

+ 587 - 0
services/report/report.go

@@ -1211,3 +1211,590 @@ func GetReportPptImgListByReportIdAndReportChapterId(reportId, reportChapterId i
 
 	return
 }
+
+// GetVarietyReportList 大宗商品报告列表
+func GetVarietyReportList(user user.UserInfo, classifyId, chartPermissionId, pageIndex, pageSize int) (ret *response.ReportList, err error) {
+	var errMsg string
+	defer func() {
+		if err != nil {
+			global.LOG.Critical(fmt.Sprintf("GetCollectReportList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
+		}
+	}()
+
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+	}
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+
+	// 查询权限的基本信息
+	permissionInfo, err := chart_permission.GetByChartPermissionId(chartPermissionId)
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询权限出错")
+		return
+	}
+
+	if permissionInfo.ChartPermissionID == 0 {
+		err = errors.New("权限不存在")
+		return
+	}
+
+	//分类ids
+	var allClassifySecondIds []int
+	var classifySecondIds []int
+
+	classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionIdOnly(chartPermissionId)
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询权限对应的分类出错")
+		return
+	}
+
+	if len(classifyNames) > 0 {
+		allClassifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
+		if err != nil {
+			errMsg = err.Error()
+			err = errors.New("查询分类出错")
+			return
+		}
+	}
+
+	//根据所选一级分类id查询二级分类
+	classifyChild, err := classify.GetChildByPid(classifyId)
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询二级分类出错")
+		return
+	}
+	classifyMap := make(map[int]int, 0)
+	for _, c := range classifyChild {
+		classifyMap[c.Id] = c.Id
+	}
+
+	for _, id := range allClassifySecondIds {
+		if _, ok := classifyMap[id]; ok {
+			classifySecondIds = append(classifySecondIds, id)
+		}
+	}
+
+	listImgMap := make(map[int]string, 0)
+	for i := 0; i < len(classifyChild); i++ {
+		listImgMap[classifyChild[i].Id] = classifyChild[i].YbListImg
+	}
+
+	// 获取有效的权限id列表
+	var validPermissionIdList []int
+	if productAuthOk {
+		validPermissionIdList, err = company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
+		if err != nil && err != utils.ErrNoRow {
+			errMsg = err.Error()
+			err = errors.New("查询分类出错")
+			return
+		}
+	}
+	var authOk bool
+	if len(validPermissionIdList) > 0 {
+	checkLoop:
+		for _, validPerid := range validPermissionIdList {
+			if chartPermissionId == validPerid {
+				authOk = true
+				break checkLoop
+			}
+		}
+	}
+	//// 查询晨报和周报相对应的章节ID
+	//reportChapterTypeIds, err := report_chapter_type_permission.GetTypeIdsByChartPermissionId(chartPermissionId)
+	//if err != nil {
+	//	errMsg = err.Error()
+	//	err = errors.New("查询权限对应的章节出错")
+	//	return
+	//}
+
+	var reportList []*report.Report
+	var total int64
+	if len(classifySecondIds) > 0 {
+		if productAuthOk {
+			offset := (pageIndex - 1) * pageSize
+			reportList, err = report.GetCommoditiesReportCollectListByPermission(classifySecondIds, offset, pageSize)
+			if err != nil {
+				errMsg = err.Error()
+				err = errors.New("查询报告信息出错")
+				return
+			}
+
+			total, err = report.GetCommoditiesReportCollectCountByPermission(classifySecondIds)
+			if err != nil {
+				errMsg = err.Error()
+				err = errors.New("查询报告总数出错")
+				return
+			}
+		}
+	}
+	var list []*response.ReportListItem
+	for _, r := range reportList {
+		// 封面图-默认取二级分类的图片,二级分类图片没有(如晨周报)则取一级
+		coverImg := listImgMap[r.ClassifyIdSecond]
+		if coverImg == "" {
+			coverImg = listImgMap[r.ClassifyIdFirst]
+		}
+		var VideoList []*response.VideoListItem
+		videoItem := response.VideoListItem{
+			VideoUrl:         r.VideoUrl,
+			VideoName:        r.VideoName,
+			VideoPlaySeconds: r.VideoPlaySeconds,
+			VideoImg:         coverImg,
+		}
+		VideoList = append(VideoList, &videoItem)
+		stageStr := r.StageStr
+		if stageStr == "" {
+			stageStr = strconv.Itoa(r.Stage)
+		}
+		item := response.ReportListItem{
+			ReportId:           r.Id,
+			ClassifyIdFirst:    r.ClassifyIdFirst,
+			ClassifyNameFirst:  r.ClassifyNameFirst,
+			ClassifyIdSecond:   r.ClassifyIdSecond,
+			ClassifyNameSecond: r.ClassifyNameSecond,
+			Title:              r.Title,
+			Abstract:           r.Abstract,
+			Author:             r.Author,
+			ReportImgUrl:       coverImg,
+			PublishTime:        r.PublishTime,
+			Stage:              r.Stage,
+			VideoList:          VideoList,
+			AuthOk:             authOk,
+			TitleInfo:          fmt.Sprintf("【第%s期|FICC|%s】", stageStr, r.ClassifyNameSecond),
+		}
+		list = append(list, &item)
+	}
+	ret = new(response.ReportList)
+	ret.List = list
+	ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
+	return
+}
+
+// GetCommoditiesReportList 获取大宗商品报告列表
+//func GetCommoditiesReportList(user user.UserInfo, chartPermissionId, pageIndex, pageSize int) (ret *response.ReportList, err error) {
+//	var errMsg string
+//	defer func() {
+//		if err != nil {
+//			global.LOG.Critical(fmt.Sprintf("GetReportList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
+//		}
+//	}()
+//
+//	// 判断用户状态是否是正常和永续
+//	var productAuthOk bool
+//	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+//	if err == utils.ErrNoRow {
+//		err = nil
+//	}
+//	if err != nil {
+//		errMsg = err.Error()
+//		err = errors.New("查询用户购买产品出错")
+//		return
+//	}
+//	if companyProduct != nil {
+//		// 无FICC权限的客户不可见
+//		if companyProduct.CompanyProductID > 0 {
+//			// 已购或者试用用户可见
+//			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+//				productAuthOk = true
+//			}
+//		}
+//	}
+//
+//	// 查询权限的基本信息
+//	permissionInfo, err := chart_permission.GetByChartPermissionId(chartPermissionId)
+//	if err != nil {
+//		errMsg = err.Error()
+//		err = errors.New("查询权限出错")
+//		return
+//	}
+//
+//	if permissionInfo.ChartPermissionID == 0 {
+//		err = errors.New("权限不存在")
+//		return
+//	}
+//	// 除了晨报和周报以外的其他报告
+//	classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionId(chartPermissionId, "two_week")
+//	if err != nil {
+//		errMsg = err.Error()
+//		err = errors.New("查询权限对应的分类出错")
+//		return
+//	}
+//
+//	var classifySecondIds []int
+//	if len(classifyNames) > 0 {
+//		classifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
+//		if err != nil {
+//			errMsg = err.Error()
+//			err = errors.New("查询分类出错")
+//			return
+//		}
+//	}
+//
+//	var condition string
+//	pars := make([]interface{}, 0)
+//
+//	classifyParent, err := classify.GetByClassifyId(classifyIdFirst)
+//	if err != nil {
+//		errMsg = err.Error()
+//		err = errors.New("分类查询出错")
+//		return
+//	}
+//	if classifyParent.Id == 0 {
+//		err = errors.New("该分类不存在")
+//		return
+//	}
+//	condition = `classify_id_first = ? and state = 2`
+//	pars = append(pars, classifyIdFirst)
+//	permissionMap := make(map[string][]int)
+//	checkPermissionMap := make(map[string]bool)
+//	permissionImageMap := make(map[string]string)
+//	chartPermissionImageMap := make(map[int]string)
+//	var classifyIdSeconds []int
+//	//var reportImgUrl string
+//
+//	chartPermissionList, err := chart_permission.GetFiccListExceptTacticByProductId()
+//	if err != nil {
+//		errMsg = err.Error()
+//		err = errors.New("分类查询出错")
+//		return
+//	}
+//
+//	if len(chartPermissionList) > 0 {
+//		for _, v := range chartPermissionList {
+//			chartPermissionImageMap[int(v.ChartPermissionID)] = v.YbImgUrl
+//		}
+//	}
+//
+//	if classifyIdSecond > 0 && keyWord == "" {
+//		classifyInfo, tErr := classify.GetByClassifyId(classifyIdSecond)
+//		if tErr != nil {
+//			errMsg = tErr.Error()
+//			err = errors.New("分类查询出错")
+//			return
+//		}
+//		if classifyInfo.Id == 0 {
+//			err = errors.New("该二级分类不存在")
+//			return
+//		}
+//
+//		condition += " AND classify_id_second = ?"
+//		pars = append(pars, classifyIdSecond)
+//		//查询二级分类对应的权限
+//		permissionIds, tErr := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
+//		if tErr != nil {
+//			errMsg = tErr.Error()
+//			err = errors.New("分类权限查询出错")
+//			return
+//		}
+//		permissionMap[classifyInfo.ClassifyName] = permissionIds
+//		//if len(permissionIds) > 0 {
+//		//	for _, v := range permissionIds {
+//		//		reportImgUrl = chartPermissionImageMap[v]
+//		//	}
+//		//}
+//
+//	} else {
+//		if classifyParent.ClassifyName == "晨报" || classifyParent.ClassifyName == "周报" {
+//			//reportImgUrl = chartPermissionImageMap[1]
+//			classifyIdSeconds = append(classifyIdSeconds, 0)
+//		}
+//
+//		chartPermissions, tErr := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
+//		if tErr != nil {
+//			errMsg = tErr.Error()
+//			err = errors.New("分类权限查询出错")
+//			return
+//		}
+//
+//		if len(chartPermissions) > 0 {
+//			for _, v := range chartPermissions {
+//				permissionMap[v.KeyWord] = append(permissionMap[v.KeyWord], v.ChartPermissionId)
+//				permissionImageMap[v.KeyWord] = chartPermissionImageMap[v.ChartPermissionId]
+//			}
+//		}
+//
+//		//获取二级分类的所有头像
+//		classifyList, tErr := classify.GetListByPid(classifyIdFirst)
+//		if tErr != nil {
+//			errMsg = tErr.Error()
+//			err = errors.New("二级分类查询出错")
+//			return
+//		}
+//
+//		for _, v := range classifyList {
+//			classifyIdSeconds = append(classifyIdSeconds, v.Id)
+//		}
+//
+//		if len(classifyIdSeconds) == 0 && classifyParent.ClassifyName != "晨报" && classifyParent.ClassifyName != "周报" {
+//			ret = new(response.ReportList)
+//			ret.Paging = response.GetPaging(pageIndex, pageSize, 0)
+//			return
+//		}
+//		condition += ` AND classify_id_second IN ? `
+//		pars = append(pars, classifyIdSeconds)
+//	}
+//
+//	// 获取有效的权限id列表
+//	var validPermissionIdList []int
+//	if productAuthOk {
+//		validPermissionIdList, err = company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
+//		if err != nil && err != utils.ErrNoRow {
+//			errMsg = err.Error()
+//			err = errors.New("查询分类出错")
+//			return
+//		}
+//	}
+//
+//	if len(validPermissionIdList) > 0 {
+//		for classifyName, perIds := range permissionMap {
+//		checkLoop:
+//			for _, checkId := range perIds {
+//				for _, validPerid := range validPermissionIdList {
+//					if checkId == validPerid {
+//						checkPermissionMap[classifyName] = true
+//						break checkLoop
+//					}
+//				}
+//			}
+//		}
+//	}
+//
+//	var total int64
+//	var list []*report.Report
+//	if keyWord == "" {
+//		offset := (pageIndex - 1) * pageSize
+//		list, err = report.GetReportList(condition, pars, offset, pageSize)
+//		if err != nil {
+//			errMsg = err.Error()
+//			err = errors.New("报告查询出错")
+//			return
+//		}
+//		total, err = report.GetReportListCount(condition, pars)
+//		if err != nil {
+//			errMsg = err.Error()
+//			err = errors.New("查询报告总数出错")
+//			return
+//		}
+//	} else {
+//		if classifyIdSecond > 0 {
+//			classifyIdSeconds = append(classifyIdSeconds, classifyIdSecond)
+//		}
+//		if classifyParent.ClassifyName == "晨报" || classifyParent.ClassifyName == "周报" {
+//			classifyIdSeconds = append(classifyIdSeconds, 0)
+//		}
+//		searchResp, total1, tErr := elasticService.ReportListSearch(keyWord, classifyIdFirst, classifyIdSeconds, pageIndex, pageSize)
+//		if tErr != nil {
+//			errMsg = tErr.Error()
+//			err = errors.New("查询失败")
+//			return
+//		}
+//		total = int64(total1)
+//		if searchResp.Hits != nil && total > 0 {
+//			var reportIds []int
+//			for _, v := range searchResp.Hits.Hits {
+//				temp := new(report.Report)
+//				itemJson, tmpErr := v.Source.MarshalJSON()
+//				if tmpErr != nil {
+//					errMsg = tmpErr.Error()
+//					err = errors.New("解析出错")
+//					return
+//				}
+//				reportItem := new(response.EsReportItem)
+//				tmpErr = json.Unmarshal(itemJson, &reportItem)
+//				if tmpErr != nil {
+//					errMsg = tmpErr.Error()
+//					err = errors.New("解析json出错")
+//					return
+//				}
+//				temp.Id = reportItem.ReportId
+//				reportIds = append(reportIds, reportItem.ReportId)
+//				temp.ClassifyIdFirst = reportItem.ClassifyIdFirst
+//				temp.ClassifyNameFirst = reportItem.ClassifyNameFirst
+//				temp.ClassifyIdSecond = reportItem.ClassifyIdSecond
+//				temp.ClassifyNameSecond = reportItem.ClassifyNameSecond
+//				if len(v.Highlight["ClassifyNameSecond"]) > 0 {
+//					temp.ClassifyNameSecond = v.Highlight["ClassifyNameSecond"][0]
+//				}
+//				temp.Abstract = reportItem.Abstract
+//				stageInt, _ := strconv.Atoi(reportItem.StageStr)
+//				temp.Stage = stageInt
+//				temp.StageStr = reportItem.StageStr
+//				temp.Title = reportItem.Title
+//				temp.PublishTime, err = time.ParseInLocation(utils.FormatDateTime, reportItem.PublishTime, time.Local)
+//				if len(v.Highlight["Title"]) > 0 {
+//					temp.Title = v.Highlight["Title"][0]
+//				}
+//				if len(v.Highlight["Abstract"]) > 0 {
+//					temp.Abstract = v.Highlight["Abstract"][0]
+//				}
+//				if len(v.Highlight["StageStr"]) > 0 {
+//					temp.StageStr = v.Highlight["StageStr"][0]
+//				}
+//				list = append(list, temp)
+//			}
+//			reportInfoList, tmpErr := report.GetByReportIds(reportIds)
+//			if tmpErr != nil {
+//				errMsg = tmpErr.Error()
+//				err = errors.New("查询报告出错")
+//				return
+//			}
+//			reportListMap := make(map[int]*report.Report)
+//			for _, temp := range reportInfoList {
+//				reportListMap[temp.Id] = temp
+//			}
+//			for k, reportDetail := range list {
+//				if v, ok := reportListMap[reportDetail.Id]; ok {
+//					list[k].CreateTime = v.CreateTime
+//				}
+//			}
+//		}
+//	}
+//
+//	var reportList []*response.ReportListItem
+//	if len(list) > 0 {
+//		// 封面图
+//		classifyList, e := classify.GetClassifyList()
+//		if e != nil {
+//			err = errors.New("获取报告分类列表失败" + e.Error())
+//			return
+//		}
+//		listImgMap := make(map[int]string, 0)
+//		classifyLen := len(classifyList)
+//		for i := 0; i < classifyLen; i++ {
+//			listImgMap[classifyList[i].Id] = classifyList[i].YbListImg
+//		}
+//
+//		var videoReportIds []int
+//		videoMap := make(map[int][]*response.VideoListItem)
+//		weekAuthMap := make(map[int]bool)
+//		if classifyParent.ClassifyName == "晨报" && productAuthOk {
+//			//获取晨报的音频列表
+//			videoMap, _, errMsg, err = GetReportChapterVideoList(validPermissionIdList, classifyParent.ClassifyName, list)
+//			if err != nil {
+//				return
+//			}
+//		} else if classifyParent.ClassifyName == "周报" {
+//			//查询所有权限typeID
+//			//如果存在可以查看的章节ID
+//			for _, reportInfo := range list {
+//				videoReportIds = append(videoReportIds, reportInfo.Id)
+//			}
+//			// 判断周报权限\查询周报的音频列表
+//			videoMap, weekAuthMap, errMsg, err = GetReportChapterVideoList(validPermissionIdList, classifyParent.ClassifyName, list)
+//			if err != nil {
+//				return
+//			}
+//		}
+//		// 以下分类图标特殊处理 =_=!
+//		//reportImgMap := map[string]string{
+//		//	"晨报": "report_list_chen.png",
+//		//	"周报": "report_list_zhou.png",
+//		//	"月报": "report_list_yue.png",
+//		//	"大事点评": "report_list_dashidianping.png",
+//		//	"会议纪要": "report_list_huiyijiyao.png",
+//		//	"年报合集": "report_list_nianbaoheji.png",
+//		//}
+//		for _, reportInfo := range list {
+//			reportItem := new(response.ReportListItem)
+//			reportItem.ReportId = reportInfo.Id
+//			// 样式限制行数
+//			reportItem.Title = "<div style=\"-webkit-line-clamp: 2;-webkit-box-orient: vertical;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;\">" + reportInfo.Title + "</div>"
+//			reportItem.PublishTime = reportInfo.PublishTime
+//			reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
+//			reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
+//			reportItem.ClassifyIdFirst = reportInfo.ClassifyIdFirst
+//			reportItem.ClassifyIdSecond = reportInfo.ClassifyIdSecond
+//			reportItem.Stage = reportInfo.Stage
+//			reportItem.Abstract = reportInfo.Abstract
+//			if reportInfo.Abstract != "" {
+//				reportItem.Abstract = "<div style=\"overflow: hidden;white-space: nowrap;text-overflow: ellipsis;\">" + reportInfo.Abstract + "</div>"
+//			}
+//			reportItem.Author = reportInfo.Author
+//			stageStr := reportInfo.StageStr
+//			if stageStr == "" {
+//				stageStr = strconv.Itoa(reportInfo.Stage)
+//			}
+//			reportItem.TitleInfo = fmt.Sprintf("【第%s期|FICC|%s】", stageStr, reportItem.ClassifyNameSecond)
+//			//trimClassifyNameSecond := utils.TrimHtml(reportInfo.ClassifyNameSecond)
+//			if reportInfo.ClassifyNameFirst == "晨报" || reportInfo.ClassifyNameFirst == "周报" || classifyIdSecond > 0 {
+//				//reportItem.ReportImgUrl = utils.ALIYUN_YBIMG_HOST + reportImgUrl
+//				reportItem.TitleInfo = fmt.Sprintf("【第%s期|FICC|%s】", stageStr, reportItem.ClassifyNameFirst)
+//			}
+//			//else if url, ok := permissionImageMap[trimClassifyNameSecond]; ok {
+//			//	reportItem.ReportImgUrl = utils.ALIYUN_YBIMG_HOST + url
+//			//}
+//			//if img, ok := reportImgMap[reportInfo.ClassifyNameFirst]; ok {
+//			//	reportItem.ReportImgUrl = utils.ALIYUN_YBIMG_HOST + img
+//			//}
+//			// 封面图-默认取二级分类的图片,二级分类图片没有(如晨周报)则取一级
+//			coverImg := listImgMap[reportInfo.ClassifyIdSecond]
+//			if coverImg == "" {
+//				coverImg = listImgMap[reportInfo.ClassifyIdFirst]
+//			}
+//			reportItem.ReportImgUrl = coverImg
+//
+//			if classifyParent.ClassifyName == "晨报" && productAuthOk {
+//				// 查询当前晨报的所有音频
+//				if vList, ok := videoMap[reportInfo.Id]; ok {
+//					for _, vd := range vList {
+//						vd.VideoImg = reportItem.ReportImgUrl
+//					}
+//					reportItem.VideoList = vList
+//				}
+//				reportItem.AuthOk = productAuthOk
+//			} else if classifyParent.ClassifyName == "周报" {
+//				if wAuth, ok := weekAuthMap[reportInfo.Id]; ok {
+//					reportItem.AuthOk = wAuth
+//					if wAuth {
+//						// 查询当前晨报的所有音频
+//						if vList, ok2 := videoMap[reportInfo.Id]; ok2 {
+//							for _, vd := range vList {
+//								vd.VideoImg = reportItem.ReportImgUrl
+//							}
+//							reportItem.VideoList = vList
+//						}
+//					}
+//				}
+//			} else if authOk, ok := checkPermissionMap[reportInfo.ClassifyNameSecond]; ok && authOk {
+//				if reportInfo.VideoUrl != "" {
+//					videoTemp := new(response.VideoListItem)
+//					videoTemp.VideoUrl = reportInfo.VideoUrl
+//					videoTemp.VideoName = reportInfo.VideoName
+//					if reportInfo.VideoName == "" {
+//						videoTemp.VideoName = reportInfo.Title
+//					}
+//					videoTemp.VideoPlaySeconds = reportInfo.VideoPlaySeconds
+//					videoTemp.VideoImg = reportItem.ReportImgUrl
+//					reportItem.VideoList = append(reportItem.VideoList, videoTemp)
+//				}
+//				reportItem.AuthOk = authOk
+//			}
+//
+//			reportList = append(reportList, reportItem)
+//		}
+//
+//	}
+//	ret = new(response.ReportList)
+//	ret.List = reportList
+//	ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
+//	return
+//}