|
@@ -8,17 +8,18 @@ import (
|
|
|
"hongze/hongze_yb/global"
|
|
|
"hongze/hongze_yb/models/response"
|
|
|
"hongze/hongze_yb/models/response/purchase"
|
|
|
- "hongze/hongze_yb/models/tables/chart_permission"
|
|
|
- "hongze/hongze_yb/models/tables/chart_permission_chapter_mapping"
|
|
|
"hongze/hongze_yb/models/tables/chart_permission_search_key_word_mapping"
|
|
|
"hongze/hongze_yb/models/tables/company_product"
|
|
|
"hongze/hongze_yb/models/tables/daily_base_column"
|
|
|
+ "hongze/hongze_yb/models/tables/rddp/chart_permission"
|
|
|
+ "hongze/hongze_yb/models/tables/rddp/chart_permission_chapter_mapping"
|
|
|
"hongze/hongze_yb/models/tables/rddp/classify"
|
|
|
"hongze/hongze_yb/models/tables/rddp/classify_menu"
|
|
|
"hongze/hongze_yb/models/tables/rddp/report"
|
|
|
"hongze/hongze_yb/models/tables/rddp/report_chapter"
|
|
|
"hongze/hongze_yb/models/tables/rddp/report_chapter_ticker"
|
|
|
"hongze/hongze_yb/models/tables/rddp/report_ppt_img"
|
|
|
+ "hongze/hongze_yb/models/tables/rddp/smart_report_resource"
|
|
|
"hongze/hongze_yb/models/tables/report_chapter_type"
|
|
|
"hongze/hongze_yb/models/tables/report_chapter_type_permission"
|
|
|
"hongze/hongze_yb/models/tables/user_report_chapter_set"
|
|
@@ -408,14 +409,18 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
|
|
|
|
|
|
var authOk bool
|
|
|
var permissionCheckInfo response.PermissionCheckInfo
|
|
|
- var vaildWeekTypeIds []int
|
|
|
- if reportInfo.ClassifyNameFirst == "晨报" {
|
|
|
- authOk, permissionCheckInfo, err = CheckDayReportPermission(userinfo, productAuthOk)
|
|
|
- } else if reportInfo.ClassifyNameFirst == "周报" {
|
|
|
- authOk, permissionCheckInfo, vaildWeekTypeIds, err = CheckWeekReportPermission(userinfo, productAuthOk)
|
|
|
+ //var vaildWeekTypeIds []int
|
|
|
+ var reportChapterIdList []int
|
|
|
+ if reportInfo.HasChapter == 1 {
|
|
|
+ if reportInfo.ClassifyNameFirst == "晨报" {
|
|
|
+ authOk, permissionCheckInfo, err = CheckDayReportPermission(userinfo, productAuthOk)
|
|
|
+ } else {
|
|
|
+ authOk, permissionCheckInfo, _, reportChapterIdList, err = CheckWeekReportPermission(userinfo, reportId, productAuthOk)
|
|
|
+ }
|
|
|
} else {
|
|
|
authOk, permissionCheckInfo, err = CheckReportPermission(userinfo, reportId, productAuthOk)
|
|
|
}
|
|
|
+
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -431,6 +436,35 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
|
|
|
reportItem.ContentSub = html.UnescapeString(reportInfo.ContentSub)
|
|
|
reportItem.Frequency = reportInfo.Frequency
|
|
|
reportItem.VideoName = reportInfo.VideoName
|
|
|
+ reportItem.HasChapter = reportInfo.HasChapter
|
|
|
+ reportItem.ReportLayout = reportInfo.ReportLayout
|
|
|
+ reportItem.HeadImg = reportInfo.HeadImg
|
|
|
+ reportItem.EndImg = reportInfo.EndImg
|
|
|
+ reportItem.CanvasColor = reportInfo.CanvasColor
|
|
|
+
|
|
|
+ // 版头版尾样式
|
|
|
+ {
|
|
|
+ if reportInfo.HeadResourceId > 0 {
|
|
|
+ headResource, tmpErr := smart_report_resource.GetResourceItemById(reportInfo.HeadResourceId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ reportItem.HeadImg = headResource.ImgURL
|
|
|
+ reportItem.HeadStyle = headResource.Style
|
|
|
+ }
|
|
|
+
|
|
|
+ if reportInfo.EndResourceId > 0 {
|
|
|
+ endResource, tmpErr := smart_report_resource.GetResourceItemById(reportInfo.EndResourceId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ reportItem.EndImg = endResource.ImgURL
|
|
|
+ reportItem.EndStyle = endResource.Style
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if reportInfo.VideoName == "" && reportInfo.VideoUrl != "" {
|
|
|
reportItem.VideoName = reportInfo.Title
|
|
|
}
|
|
@@ -453,15 +487,21 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
|
|
|
}
|
|
|
var reportTypeList []*response.ReportChapterListItem
|
|
|
|
|
|
- if reportInfo.ClassifyNameFirst == "晨报" || reportInfo.ClassifyNameFirst == "周报" {
|
|
|
+ if reportInfo.HasChapter == 1 {
|
|
|
//(晨报和周报的banner图)
|
|
|
if reportInfo.ClassifyNameFirst == "晨报" {
|
|
|
reportItem.BannerUrl = utils.ALIYUN_YBIMG_HOST + "report_banner_day.jpg"
|
|
|
} else {
|
|
|
reportItem.BannerUrl = utils.ALIYUN_YBIMG_HOST + "report_banner_week.jpg"
|
|
|
}
|
|
|
+
|
|
|
+ // 如果还没有配置banner图,则取晨报的
|
|
|
+ if reportItem.BannerUrl == `` {
|
|
|
+ reportItem.BannerUrl = utils.ALIYUN_YBIMG_HOST + "report_banner_day.jpg"
|
|
|
+ }
|
|
|
+
|
|
|
if authOk {
|
|
|
- reportTypeList, err = GetChapterListByReport(reportInfo.ClassifyNameFirst, reportInfo.Id, vaildWeekTypeIds, reportInfo.CreateTime)
|
|
|
+ reportTypeList, err = GetChapterListByReportChapterIdList(reportInfo.ClassifyNameFirst, reportInfo.Id, reportChapterIdList)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -705,7 +745,7 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
//}
|
|
|
|
|
|
} else {
|
|
|
- if classifyParent.ClassifyName == "晨报" || classifyParent.ClassifyName == "周报" {
|
|
|
+ if classifyParent.HasChild == 0 {
|
|
|
//reportImgUrl = chartPermissionImageMap[1]
|
|
|
classifyIdSeconds = append(classifyIdSeconds, 0)
|
|
|
}
|
|
@@ -833,6 +873,10 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
temp.ClassifyNameFirst = reportItem.ClassifyNameFirst
|
|
|
temp.ClassifyIdSecond = reportItem.ClassifyIdSecond
|
|
|
temp.ClassifyNameSecond = reportItem.ClassifyNameSecond
|
|
|
+ if reportItem.ClassifyIdSecond > 0 && reportItem.ClassifyIdSecond != reportItem.ClassifyId {
|
|
|
+ temp.ClassifyIdThird = reportItem.ClassifyId
|
|
|
+ temp.ClassifyNameThird = reportItem.ClassifyName
|
|
|
+ }
|
|
|
if len(v.Highlight["ClassifyNameSecond"]) > 0 {
|
|
|
temp.ClassifyNameSecond = v.Highlight["ClassifyNameSecond"][0]
|
|
|
}
|
|
@@ -890,22 +934,23 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
var videoReportIds []int
|
|
|
videoMap := make(map[int][]*response.VideoListItem)
|
|
|
weekAuthMap := make(map[int]bool)
|
|
|
+
|
|
|
+ // 判断周报权限\查询章节报告的音频列表
|
|
|
+ videoMap, weekAuthMap, errMsg, err = GetReportChapterVideoList(validPermissionIdList, classifyParent.ClassifyName, list, user.UserID)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是晨报,那么就要过滤掉weekAuthMap的授权
|
|
|
if classifyParent.ClassifyName == "晨报" && productAuthOk {
|
|
|
- //获取晨报的音频列表
|
|
|
- videoMap, _, errMsg, err = GetReportChapterVideoList(validPermissionIdList, classifyParent.ClassifyName, list, user.UserID)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- } else if classifyParent.ClassifyName == "周报" {
|
|
|
+ weekAuthMap = map[int]bool{}
|
|
|
+ } else {
|
|
|
//查询所有权限typeID
|
|
|
//如果存在可以查看的章节ID
|
|
|
for _, reportInfo := range list {
|
|
|
- videoReportIds = append(videoReportIds, reportInfo.Id)
|
|
|
- }
|
|
|
- // 判断周报权限\查询周报的音频列表
|
|
|
- videoMap, weekAuthMap, errMsg, err = GetReportChapterVideoList(validPermissionIdList, classifyParent.ClassifyName, list, user.UserID)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
+ if reportInfo.HasChapter == 1 {
|
|
|
+ videoReportIds = append(videoReportIds, reportInfo.Id)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
// 以下分类图标特殊处理 =_=!
|
|
@@ -920,6 +965,10 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
for _, reportInfo := range list {
|
|
|
reportItem := new(response.ReportListItem)
|
|
|
reportItem.ReportId = reportInfo.Id
|
|
|
+ reportItem.HasChapter = reportInfo.HasChapter
|
|
|
+ reportItem.VideoUrl = reportInfo.VideoUrl
|
|
|
+ reportItem.VideoName = reportInfo.VideoName
|
|
|
+ reportItem.VideoPlaySeconds = reportInfo.VideoPlaySeconds
|
|
|
// 样式限制行数
|
|
|
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
|
|
@@ -929,6 +978,8 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
reportItem.ClassifyNameSecond = classifyNameMap[reportInfo.ClassifyIdSecond]
|
|
|
reportItem.ClassifyIdFirst = reportInfo.ClassifyIdFirst
|
|
|
reportItem.ClassifyIdSecond = reportInfo.ClassifyIdSecond
|
|
|
+ reportItem.ClassifyIdThird = reportInfo.ClassifyIdThird
|
|
|
+ reportItem.ClassifyNameThird = reportInfo.ClassifyNameThird
|
|
|
reportItem.Stage = reportInfo.Stage
|
|
|
reportItem.Abstract = reportInfo.Abstract
|
|
|
if reportInfo.Abstract != "" {
|
|
@@ -940,6 +991,9 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
stageStr = strconv.Itoa(reportInfo.Stage)
|
|
|
}
|
|
|
reportItem.TitleInfo = fmt.Sprintf("【第%s期|FICC|%s】", stageStr, reportItem.ClassifyNameSecond)
|
|
|
+ if reportItem.ClassifyNameThird != `` {
|
|
|
+ reportItem.TitleInfo = fmt.Sprintf("%s|%s】", reportItem.TitleInfo, reportItem.ClassifyNameThird)
|
|
|
+ }
|
|
|
//trimClassifyNameSecond := utils.TrimHtml(reportInfo.ClassifyNameSecond)
|
|
|
if reportItem.ClassifyNameFirst == "晨报" || reportItem.ClassifyNameFirst == "周报" || classifyIdSecond > 0 {
|
|
|
//reportItem.ReportImgUrl = utils.ALIYUN_YBIMG_HOST + reportImgUrl
|
|
@@ -957,26 +1011,29 @@ func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classify
|
|
|
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.VideoImg = reportItem.ReportImgUrl
|
|
|
+
|
|
|
+ if reportItem.HasChapter == 1 {
|
|
|
+ if classifyParent.ClassifyName == "晨报" && productAuthOk {
|
|
|
+ // 查询当前晨报的所有音频
|
|
|
+ if vList, ok := videoMap[reportInfo.Id]; ok {
|
|
|
+ for _, vd := range vList {
|
|
|
+ vd.VideoImg = reportItem.ReportImgUrl
|
|
|
+ }
|
|
|
+ reportItem.VideoList = vList
|
|
|
}
|
|
|
- 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.AuthOk = productAuthOk
|
|
|
+ } else {
|
|
|
+ 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
|
|
|
}
|
|
|
- reportItem.VideoList = vList
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1022,6 +1079,97 @@ func GetCollectReportList(user user.UserInfo, chartPermissionId, pageIndex, page
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if permissionInfo.ChartPermissionID == 0 {
|
|
|
+ err = errors.New("权限不存在")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 除了晨报和周报以外的其他报告
|
|
|
+ classifyIdList, err := chart_permission_search_key_word_mapping.GetClassifyIdsByChartPermissionId(chartPermissionId, "rddp")
|
|
|
+ if err != nil {
|
|
|
+ errMsg = err.Error()
|
|
|
+ err = errors.New("查询权限对应的分类出错")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var firstClassifyIdList, secondClassifyIdList, thirdClassifyIdList []int
|
|
|
+ {
|
|
|
+ classifyList, tmpErr := classify.GetListByClassifyIdList(classifyIdList)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsg = tmpErr.Error()
|
|
|
+ err = errors.New("查询分类信息失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range classifyList {
|
|
|
+ switch v.Level {
|
|
|
+ case 1:
|
|
|
+ firstClassifyIdList = append(firstClassifyIdList, v.Id)
|
|
|
+ case 2:
|
|
|
+ secondClassifyIdList = append(secondClassifyIdList, v.Id)
|
|
|
+ case 3:
|
|
|
+ thirdClassifyIdList = append(thirdClassifyIdList, v.Id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var reportList []*response.ReportCollectListItem
|
|
|
+ list := response.ReportCollectListResp{}
|
|
|
+ var total int64
|
|
|
+
|
|
|
+ {
|
|
|
+ offset := (pageIndex - 1) * pageSize
|
|
|
+ reportList, err = report.GetReportCollectListByPermissionV1(chartPermissionId, firstClassifyIdList, secondClassifyIdList, thirdClassifyIdList, offset, pageSize)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = err.Error()
|
|
|
+ err = errors.New("查询报告信息出错")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ listMap := make(map[string]*response.ReportCollectList)
|
|
|
+ for _, v := range reportList {
|
|
|
+ v.ContentSub = GetReportContentSub(v.ContentSub, true)
|
|
|
+ if _, ok := listMap[v.PublishTime.Format("2006-01-02")]; !ok {
|
|
|
+ temp := new(response.ReportCollectList)
|
|
|
+ temp.Date = v.PublishTime.Format("2006-01-02")
|
|
|
+ listMap[v.PublishTime.Format("2006-01-02")] = temp
|
|
|
+ }
|
|
|
+ listMap[v.PublishTime.Format("2006-01-02")].SubList = append(listMap[v.PublishTime.Format("2006-01-02")].SubList, v)
|
|
|
+ }
|
|
|
+ for _, v := range listMap {
|
|
|
+ list = append(list, v)
|
|
|
+ }
|
|
|
+ total, err = report.GetReportCollectCountByPermissionV1(chartPermissionId, classifyIdList)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = err.Error()
|
|
|
+ err = errors.New("查询报告总数出错")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(list) > 0 {
|
|
|
+ sort.Sort(list)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = new(response.ReportCollectResp)
|
|
|
+ ret.List = list
|
|
|
+ ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetCollectReportListBak(user user.UserInfo, chartPermissionId, pageIndex, pageSize int) (ret *response.ReportCollectResp, 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))
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 查询权限的基本信息
|
|
|
+ permissionInfo, err := chart_permission.GetByChartPermissionId(chartPermissionId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = err.Error()
|
|
|
+ err = errors.New("查询权限出错")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
if permissionInfo.ChartPermissionID == 0 {
|
|
|
err = errors.New("权限不存在")
|
|
|
return
|
|
@@ -1107,6 +1255,7 @@ func SearchReport(user user.UserInfo, keyWord string, pageIndex, pageSize int) (
|
|
|
err = errors.New("分类查询出错")
|
|
|
return
|
|
|
}
|
|
|
+ classifyIdList := make([]int, 0)
|
|
|
var classifyIdFirsts []int
|
|
|
classifyIdSeconds := []int{0}
|
|
|
for _, v := range classifys {
|
|
@@ -1115,9 +1264,10 @@ func SearchReport(user user.UserInfo, keyWord string, pageIndex, pageSize int) (
|
|
|
} else {
|
|
|
classifyIdSeconds = append(classifyIdSeconds, v.Id)
|
|
|
}
|
|
|
+ classifyIdList = append(classifyIdList, v.Id)
|
|
|
}
|
|
|
keyWord = addAliasToKeyword(keyWord)
|
|
|
- searchResp, total, err := elasticService.SearchReport(keyWord, classifyIdFirsts, classifyIdSeconds, pageIndex, pageSize)
|
|
|
+ searchResp, total, err := elasticService.SearchReport(keyWord, classifyIdList, pageIndex, pageSize)
|
|
|
if err != nil {
|
|
|
errMsg = err.Error()
|
|
|
err = errors.New("查询失败")
|
|
@@ -1146,6 +1296,8 @@ func SearchReport(user user.UserInfo, keyWord string, pageIndex, pageSize int) (
|
|
|
temp.ClassifyNameFirst = reportItem.ClassifyNameFirst
|
|
|
temp.ClassifyIdSecond = reportItem.ClassifyIdSecond
|
|
|
temp.ClassifyNameSecond = reportItem.ClassifyNameSecond
|
|
|
+ temp.ClassifyId = reportItem.ClassifyId
|
|
|
+ temp.ClassifyName = reportItem.ClassifyName
|
|
|
temp.Title = reportItem.Title
|
|
|
temp.ContentSub = reportItem.BodyContent
|
|
|
temp.PublishTime, err = time.ParseInLocation(utils.FormatDateTime, reportItem.PublishTime, time.Local)
|
|
@@ -1490,6 +1642,37 @@ func GetVarietyReportList(user user.UserInfo, classifyId, chartPermissionId, pag
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// GetMinClassify
|
|
|
+// @Description: 获取最小分类ID
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-06-20 09:23:19
|
|
|
+// @param reportInfo *models.Report
|
|
|
+// @return minClassifyId int
|
|
|
+// @return minClassifyName string
|
|
|
+// @return err error
|
|
|
+func GetMinClassify(reportInfo *report.Report) (minClassifyId int, minClassifyName string, err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("获取最小分类ID失败,报告ID:%d,Err:%s", reportInfo.Id, err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ minClassifyId = reportInfo.ClassifyIdThird
|
|
|
+ minClassifyName = reportInfo.ClassifyNameThird
|
|
|
+ if minClassifyId <= 0 {
|
|
|
+ minClassifyId = reportInfo.ClassifyIdSecond
|
|
|
+ minClassifyName = reportInfo.ClassifyNameSecond
|
|
|
+ }
|
|
|
+ if minClassifyId <= 0 {
|
|
|
+ minClassifyId = reportInfo.ClassifyIdFirst
|
|
|
+ minClassifyName = reportInfo.ClassifyNameFirst
|
|
|
+ }
|
|
|
+ if minClassifyId <= 0 {
|
|
|
+ err = errors.New("分类异常")
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// GetCommoditiesReportList 获取大宗商品报告列表
|
|
|
//func GetCommoditiesReportList(user user.UserInfo, chartPermissionId, pageIndex, pageSize int) (ret *response.ReportList, err error) {
|
|
|
// var errMsg string
|