|
@@ -10,6 +10,7 @@ import (
|
|
|
"hongze/hongze_yb/models/tables/report_chapter_type"
|
|
|
"hongze/hongze_yb/services/company"
|
|
|
"hongze/hongze_yb/services/user"
|
|
|
+ "hongze/hongze_yb/utils"
|
|
|
"log"
|
|
|
)
|
|
|
|
|
@@ -19,25 +20,48 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- if len(reportIds) > 0 {
|
|
|
- reports, tErr := report.GetLatestClassReportsByIDs(reportIds)
|
|
|
- if tErr != nil {
|
|
|
- err = tErr
|
|
|
- return
|
|
|
- }
|
|
|
- //查询有效的章节
|
|
|
- var chapter *report_chapter.ReportChapter
|
|
|
- typeIds, tErr := report_chapter_type.GetEffectTypeID()
|
|
|
- if tErr != nil {
|
|
|
- err = tErr
|
|
|
+ typeIds, tErr := report_chapter_type.GetEffectTypeID()
|
|
|
+ if tErr != nil {
|
|
|
+ err = tErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //获取最新的晨报
|
|
|
+ dayReport, err := report.GetLatestDay()
|
|
|
+ if err != nil {
|
|
|
+ if err == utils.ErrNoRow {
|
|
|
+ dayReport = nil
|
|
|
+ }else{
|
|
|
return
|
|
|
}
|
|
|
- //获取未读数
|
|
|
- unReadItem, tErr := GetUnRead(reportIds, userId)
|
|
|
- if tErr != nil {
|
|
|
- err = tErr
|
|
|
+ }
|
|
|
+ //获取最新的有权限的周报
|
|
|
+ weekReport, err := GetLatestWeek(permissionIds, typeIds)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var reports []*report.Report
|
|
|
+ if len(reportIds) > 0 {
|
|
|
+ reports, err = report.GetLatestClassReportsByIDs(reportIds)
|
|
|
+ if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ }
|
|
|
+ if dayReport != nil {
|
|
|
+ reports = append(reports, dayReport)
|
|
|
+
|
|
|
+ }
|
|
|
+ if weekReport != nil {
|
|
|
+ reports = append(reports, weekReport)
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取未读数
|
|
|
+ unReadItem, tErr := GetUnRead(reportIds, userId)
|
|
|
+ if tErr != nil {
|
|
|
+ err = tErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(reports) > 0 {
|
|
|
for _, v := range reports {
|
|
|
temp := new(purchase.PurchaseListItem)
|
|
|
temp.ReportId = v.Id
|
|
@@ -48,14 +72,7 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
|
|
|
temp.ClassifyIdSecond = v.ClassifyIdSecond
|
|
|
temp.ClassifyNameSecond = v.ClassifyNameSecond
|
|
|
if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" { //晨报或者周报,查询最新的章节信息
|
|
|
- if len(typeIds) <= 0 {
|
|
|
- continue
|
|
|
- }
|
|
|
- chapter, err = report_chapter.GetLatestChapterByReportId(v.Id, typeIds)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- temp.Content = fmt.Sprintf("【第%d期|FICC|%s】%s", temp.Stage, chapter.TypeName, temp.Title)
|
|
|
+ temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.Title)
|
|
|
}else{
|
|
|
if temp.ClassifyIdSecond > 0 { //包含二级分类
|
|
|
temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", temp.Stage, temp.ClassifyNameSecond, temp.ClassifyNameFirst)
|
|
@@ -67,19 +84,17 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
|
|
|
temp.Time = v.PublishTime
|
|
|
temp.Unread = unReadItem[temp.ClassifyNameFirst]
|
|
|
purchaseList = append(purchaseList, temp)
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// GetReportIdsByPermissionIds 获取所有和权限绑定的报告
|
|
|
func GetReportIdsByPermissionIds(permissionIds []int) (reportIds []int, err error) {
|
|
|
- reportIds, err = chart_permission_chapter_mapping.GetReportIdsByPermisssionIds(permissionIds)
|
|
|
+ reportIds, err = chart_permission_chapter_mapping.GetReportIdsByPermisssionIds(permissionIds, "rddp")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// GetListByClassName 根据分类类型,分页获取报告
|
|
|
func GetListByClassName(reportIds []int, className string, offset, limit int ) (list []*report.Report, err error) {
|
|
|
list, err = report.GetListByIDsAndClassID(reportIds, className, offset, limit)
|
|
@@ -89,28 +104,56 @@ func GetListByClassName(reportIds []int, className string, offset, limit int ) (
|
|
|
|
|
|
// GetPurchaseDetail 已购详情页面
|
|
|
func GetPurchaseDetail(permissionIds []int, userId uint64, classifyNameFirst string, offset, pageLimit int) (list []*purchase.Detail, err error) {
|
|
|
- reportIds, err := GetReportIdsByPermissionIds(permissionIds)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- if len(reportIds) > 0 {
|
|
|
+ var reports []*report.Report
|
|
|
+ var reportIds []int
|
|
|
+ if classifyNameFirst == "晨报" {
|
|
|
//分类获取
|
|
|
- reports, tErr := GetListByClassName(reportIds, classifyNameFirst, offset, pageLimit)
|
|
|
- if tErr != nil {
|
|
|
- err = tErr
|
|
|
+ reports, err = report.GetListByClass(classifyNameFirst, offset, pageLimit)
|
|
|
+ if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ for _, v := range reports {
|
|
|
+ reportIds = append(reportIds, v.Id)
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if classifyNameFirst == "周报" {
|
|
|
+ ids, tErr := GetReportChapterIdsByPermissionIds(permissionIds)
|
|
|
+ if tErr != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ typeIds, tErr := report_chapter_type.GetEffectTypeID()
|
|
|
+ if tErr != nil {
|
|
|
+ err = tErr
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- //查询有效的章节
|
|
|
- var chapter *report_chapter.ReportChapter
|
|
|
- typeIds, tErr := report_chapter_type.GetEffectTypeID()
|
|
|
- if tErr != nil {
|
|
|
- err = tErr
|
|
|
- return
|
|
|
+ var newTypeIds []int
|
|
|
+
|
|
|
+ for _, v1 := range typeIds {
|
|
|
+ for _, v2 := range ids {
|
|
|
+ if v1 == v2 {
|
|
|
+ newTypeIds = append(newTypeIds, v2)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ reportIds, err = report_chapter.GetReportIdsByIdsAndClass(newTypeIds, classifyNameFirst)
|
|
|
+ } else {
|
|
|
+ reportIds, err = GetReportIdsByPermissionIds(permissionIds)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
- var viewReportIds []int
|
|
|
|
|
|
+ if len(reportIds) > 0 {
|
|
|
+ //分类获取
|
|
|
+ reports, err = GetListByClassName(reportIds, classifyNameFirst, offset, pageLimit)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(reports) > 0 {
|
|
|
+ var viewReportIds []int
|
|
|
for _, v := range reports {
|
|
|
viewReportIds = append(viewReportIds, v.Id)
|
|
|
temp := new(purchase.Detail)
|
|
@@ -121,14 +164,7 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyNameFirst str
|
|
|
temp.ClassifyIdSecond = v.ClassifyIdSecond
|
|
|
temp.ClassifyNameSecond = v.ClassifyNameSecond
|
|
|
if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" { //晨报或者周报,查询最新的章节信息
|
|
|
- if len(typeIds) <= 0 {
|
|
|
- continue
|
|
|
- }
|
|
|
- chapter, err = report_chapter.GetLatestChapterByReportId(v.Id, typeIds)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- temp.Content = fmt.Sprintf("【第%d期|FICC|%s】%s", temp.Stage, chapter.TypeName, temp.Title)
|
|
|
+ temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.Title)
|
|
|
temp.TopName = temp.Title
|
|
|
}else{
|
|
|
if temp.ClassifyIdSecond > 0 { //包含二级分类
|
|
@@ -140,7 +176,6 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyNameFirst str
|
|
|
}
|
|
|
}
|
|
|
temp.Time = v.PublishTime
|
|
|
-
|
|
|
list = append(list, temp)
|
|
|
}
|
|
|
}
|
|
@@ -154,19 +189,86 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyNameFirst str
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// 获取报告详情
|
|
|
func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail response.ReportDetail, err error) {
|
|
|
reportInfo, err := report.GetByReportId(reportId)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ if reportInfo.Id == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
//判断权限
|
|
|
permissionCheckInfo, err := CheckReportPermission(userinfo, reportId)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- reportDetail.ReportInfo = reportInfo
|
|
|
+ reportItem := new(response.ReportItem)
|
|
|
+ reportItem.ReportId = reportInfo.Id
|
|
|
+ reportItem.Title = reportInfo.Title
|
|
|
+ reportItem.PublishTime = reportInfo.PublishTime
|
|
|
+ reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
|
|
|
+ reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
|
|
|
+ reportItem.Stage = reportInfo.Stage
|
|
|
+ reportItem.Abstract = reportInfo.Abstract
|
|
|
+ reportItem.ContentSub = reportInfo.ContentSub
|
|
|
+ reportItem.Frequency = reportInfo.Frequency
|
|
|
+ reportItem.VideoName = reportInfo.VideoName
|
|
|
+ reportItem.VideoPlaySeconds = reportInfo.VideoPlaySeconds
|
|
|
+ reportItem.Author = reportInfo.Author
|
|
|
+
|
|
|
+ var reportTypeList []*response.ReportTypeListItem
|
|
|
+ if reportInfo.ClassifyNameFirst == "晨报" || reportInfo.ClassifyNameFirst == "周报" {
|
|
|
+ //查询有效的章节
|
|
|
+ typeList, tErr := report_chapter_type.GetEffectTypes()
|
|
|
+ if tErr != nil {
|
|
|
+ err = tErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ typeMap := make(map[uint64]*report_chapter_type.ReportChapterType)
|
|
|
+ for _, v := range typeList {
|
|
|
+ typeMap[v.ReportChapterTypeId] = v
|
|
|
+ }
|
|
|
+ //获取所有当前研报的章节
|
|
|
+ chapterList, tErr := report_chapter.GetListByReportId(reportInfo.Id)
|
|
|
+ if tErr != nil {
|
|
|
+ err = tErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, item := range chapterList {
|
|
|
+ // TODO 只展示有权限的章节
|
|
|
+
|
|
|
+ if typeItem, ok := typeMap[uint64(item.TypeId)]; ok {
|
|
|
+ temp := new(response.ReportTypeListItem)
|
|
|
+ temp.TypeId = item.TypeId
|
|
|
+ temp.Title = item.Title
|
|
|
+ temp.ReportId = item.ReportId
|
|
|
+ temp.Sort = item.Sort
|
|
|
+ temp.PublishTime = item.PublishTime
|
|
|
+
|
|
|
+ temp.BannerUrl = typeItem.BannerUrl
|
|
|
+ temp.PauseEndTime = typeItem.PauseEndTime
|
|
|
+ temp.PauseStartTime = typeItem.PauseStartTime
|
|
|
+ temp.EditImgUrl = typeItem.EditImgUrl
|
|
|
+ temp.ReportChapterTypeKey = typeItem.ReportChapterTypeKey
|
|
|
+ temp.ReportChapterTypeName = typeItem.ReportChapterTypeName
|
|
|
+ temp.ReportChapterTypeThumb = typeItem.ReportChapterTypeThumb
|
|
|
+ reportTypeList = append(reportTypeList, temp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //如果有权限则展示content
|
|
|
+ if permissionCheckInfo.AuthOk == 1 {
|
|
|
+ AddViewRecord(userinfo, reportInfo.Id)
|
|
|
+ reportItem.Content = reportInfo.Content
|
|
|
+ reportItem.VideoUrl = reportInfo.VideoUrl
|
|
|
+ }
|
|
|
+ reportDetail.ReportInfo = reportItem
|
|
|
+ reportDetail.ReportTypeList = reportTypeList
|
|
|
reportDetail.PermissionCheck = &permissionCheckInfo
|
|
|
return
|
|
|
}
|