Преглед на файлове

已购页面,合并大事点评、会议纪要、年报合集到其他栏

xiexiaoyuan преди 3 години
родител
ревизия
c69fad56d0

+ 1 - 1
models/tables/chart_permission_search_key_word_mapping/query.go

@@ -23,7 +23,7 @@ func GetChartPermissionIdsByKeyWord(keyWord string) (ids []int, err error)  {
 
 // GetChartPermissionByFrom 查询二级分类中的权限
 func GetChartPermissionByFrom(from string) (list []*ChartPermissionSearchKeyWordMapping, err error)  {
-	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("`from` = ? ", from).Scan(&list).Error
+	err = global.DEFAULT_MYSQL.Model(ChartPermissionSearchKeyWordMapping{}).Where("`from` = ? and chart_permission_id != 33", from).Scan(&list).Error
 	if err == utils.ErrNoRow {
 		err = nil
 	}

+ 13 - 0
models/tables/rddp/classify/query.go

@@ -93,6 +93,19 @@ func GetIdsByClassifyNameAndParentId(names []string, parentId int) (ids []int, e
 	return
 }
 
+// GetOtherIdsByClassifyNames 查询
+func GetOtherIdsByClassifyNames(names []string) (ids []int, err error) {
+	var list []*Classify
+	err = global.MYSQL["rddp"].Model(Classify{}).Select("id").Where("classify_name in (?) and parent_id > 0", names).Scan(&list).Error
+	if err != nil {
+		return
+	}
+	for _, v := range list {
+		ids = append(ids, v.Id)
+	}
+	return
+}
+
 
 // GetFirstByPid 根据一级分类查找二级分类
 func GetFirstByPid(pid int) (item *Classify, err error) {

+ 8 - 6
models/tables/rddp/report/query.go

@@ -22,6 +22,7 @@ FROM
 WHERE
 	state = 2 
 	AND classify_id_second IN ?
+	AND classify_name_first !="权益研报"
 GROUP BY
 	classify_id_first`
 	err = global.MYSQL["rddp"].Raw(sql, classifyIdSeconds).Scan(&reportList).Error
@@ -57,11 +58,11 @@ func GetListCountByIDsAndClassifyIdFirst( ids []int, classifyIdFirst int) (total
 	return
 }
 
-// GetListByClassifyIdSecondsAndClassifyIdFirst 分页查询
-func GetListByClassifyIdSecondsAndClassifyIdFirst( classifyIdSeconds []int, classifyIdFirst int,  offset , limit int) (reportList []*Report, err error) {
+// GetListByClassifyIdSeconds 分页查询
+func GetListByClassifyIdSeconds( classifyIdSeconds []int, offset , limit int) (reportList []*Report, err error) {
 	err = global.MYSQL["rddp"].Model(Report{}).
 		Select("id, classify_id_first, classify_name_first, classify_id_second, classify_name_second, title, stage, publish_time").
-		Where("classify_id_second in (?) and classify_id_first=? and state = 2 ", classifyIdSeconds, classifyIdFirst).
+		Where("classify_id_second in (?) and state = 2 ", classifyIdSeconds).
 		Order("publish_time desc, id desc").
 		Offset(offset).
 		Limit(limit).
@@ -69,11 +70,11 @@ func GetListByClassifyIdSecondsAndClassifyIdFirst( classifyIdSeconds []int, clas
 	return
 }
 
-// GetListCountByClassifyIdSecondsAndClassifyIdFirst
-func GetListCountByClassifyIdSecondsAndClassifyIdFirst( classifyIdSeconds []int, classifyIdFirst int) (total int64, err error) {
+// GetListCountByClassifyIdSeconds
+func GetListCountByClassifyIdSeconds( classifyIdSeconds []int) (total int64, err error) {
 	err = global.MYSQL["rddp"].Model(Report{}).
 		Select("id, classify_id_first, classify_name_first, classify_id_second, classify_name_second, title, stage, publish_time").
-		Where("classify_id_second in (?) and classify_id_first=? and state = 2 ", classifyIdSeconds, classifyIdFirst).
+		Where("classify_id_second in (?) and state = 2 ", classifyIdSeconds).
 		Count(&total).Error
 	return
 }
@@ -108,6 +109,7 @@ func GetByReportId(id int) (item *Report, err error) {
 	return
 }
 
+// GetLatestDay 获取最新的晨报
 func GetLatestDay() (item *Report, err error) {
 	err = global.MYSQL["rddp"].Where("state = 2 and classify_name_first= '晨报'").Order("publish_time desc, id desc").First(&item).Error
 	if err == utils.ErrNoRow {

+ 51 - 9
services/report/report.go

@@ -74,9 +74,9 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
 	// 有权限的二级分类
 	var reports []*report.Report
 	var classifyIdSeconds []int
+	classifyIdSecondMap := make(map[int]bool)
 	// 获取晨报和周报以外的其他报告
 	// 获取有权限的二级分类
-
 	chartPermissions, err := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
 	if err != nil {
 		errMsg = err.Error()
@@ -87,8 +87,11 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
 		for _, v := range chartPermissions {
 			for _, myPerId := range permissionIds {
 				if v.ChartPermissionId == myPerId {
-					if classifyNameSecond, ok := classifySecondNameMap[v.KeyWord]; ok{
-						classifyIdSeconds = append(classifyIdSeconds, classifyNameSecond)
+					if classifyIdSecond, ok := classifySecondNameMap[v.KeyWord]; ok {
+						if _, ok2 := classifyIdSecondMap[classifyIdSecond]; !ok2 {
+							classifyIdSeconds = append(classifyIdSeconds, classifyIdSecond)
+							classifyIdSecondMap[classifyIdSecond] = true
+						}
 					}
 					break
 				}
@@ -114,6 +117,27 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
 		return
 	}
 	if len(reports) > 0 {
+		otherLatestItem := new(purchase.PurchaseListItem)
+		// 处理其他报告()
+		for _, v := range reports {
+			temp := new(purchase.PurchaseListItem)
+			temp.ReportId = v.Id
+			temp.ClassifyIdFirst = v.ClassifyIdFirst
+			temp.ClassifyNameFirst = v.ClassifyNameFirst
+			temp.Stage = v.Stage
+			temp.Title = v.Title
+			temp.ClassifyIdSecond = v.ClassifyIdSecond
+			temp.ClassifyNameSecond = v.ClassifyNameSecond
+			temp.Time = v.PublishTime
+			if temp.ClassifyNameFirst == "大事点评" ||  temp.ClassifyNameFirst == "会议纪要" || temp.ClassifyNameFirst == "年报合集"{
+				if otherLatestItem.Time.Format(utils.FormatDateTime) > v.PublishTime.Format(utils.FormatDateTime) {
+					continue
+				}
+				temp.Unread = unReadItem["大事点评"] + unReadItem["会议纪要"] + unReadItem["年报合集"]
+				temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.ClassifyNameFirst)
+				otherLatestItem = temp
+			}
+		}
 		for _, v := range reports {
 			temp := new(purchase.PurchaseListItem)
 			temp.ReportId = v.Id
@@ -123,11 +147,15 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
 			temp.Title = v.Title
 			temp.ClassifyIdSecond = v.ClassifyIdSecond
 			temp.ClassifyNameSecond = v.ClassifyNameSecond
+			temp.Time = v.PublishTime
+			temp.Unread = unReadItem[temp.ClassifyNameFirst]
 			if imgUrl, ok := classifyFirstIconMap[temp.ClassifyIdFirst]; ok {
 				temp.ImgUrl = imgUrl
 			}
 			if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" {  //晨报或者周报,查询最新的章节信息
 				temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.Title)
+			}else if temp.ClassifyNameFirst == "大事点评" ||  temp.ClassifyNameFirst == "会议纪要" || temp.ClassifyNameFirst == "年报合集"{
+				continue
 			}else{
 				if temp.ClassifyIdSecond > 0 {     //包含二级分类
 					temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", temp.Stage, temp.ClassifyNameSecond, temp.ClassifyNameFirst)
@@ -136,14 +164,15 @@ func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*p
 				}
 			}
 
-			temp.Time = v.PublishTime
-			temp.Unread = unReadItem[temp.ClassifyNameFirst]
 			purchaseList = append(purchaseList, temp)
 		}
+		purchaseList = append(purchaseList, otherLatestItem)
 	}
 	return
 }
 
+
+
 // GetPurchaseDetail 已购详情页面
 func GetPurchaseDetail(permissionIds []int, userId uint64, classifyIdFirst int, pageIndex, pageSize int) (ret *purchase.DetailResp, err error)  {
 	var errMsg string
@@ -166,6 +195,8 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyIdFirst int,
 		err = errors.New("分类不存在")
 		return
 	}
+
+
 	classifyNameFirst := classifyInfo.ClassifyName
 	offset := (pageIndex - 1) * pageSize
 	var total int64
@@ -216,14 +247,25 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyIdFirst int,
 				for _, v := range chartPermissions {
 					for _, myPerId := range permissionIds {
 						if v.ChartPermissionId == myPerId {
-							classifyNameSeconds = append(classifyNameSeconds, v.KeyWord)
+							if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集" {
+								if v.KeyWord == "大事点评" || v.KeyWord == "会议纪要" || v.KeyWord == "年报合集" {  //筛选出用户有权限的二级分类ID
+									classifyNameSeconds = append(classifyNameSeconds, v.KeyWord)
+								}
+							}else{
+								classifyNameSeconds = append(classifyNameSeconds, v.KeyWord)
+							}
 							break
 						}
 					}
 				}
 			}
 			//获取所有二级分类的id
-			classifyIdSeconds, tErr = classify.GetIdsByClassifyNameAndParentId(classifyNameSeconds, classifyIdFirst)
+			if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集" {
+				classifyIdSeconds, tErr = classify.GetOtherIdsByClassifyNames(classifyNameSeconds)
+			}else{
+				classifyIdSeconds, tErr = classify.GetIdsByClassifyNameAndParentId(classifyNameSeconds, classifyIdFirst)
+			}
+
 			if tErr != nil {
 				errMsg = tErr.Error()
 				err = errors.New("二级分类查询出错")
@@ -231,11 +273,11 @@ func GetPurchaseDetail(permissionIds []int, userId uint64, classifyIdFirst int,
 			}
 			if len(classifyIdSeconds) > 0 {
 				//分类获取
-				reports, err = report.GetListByClassifyIdSecondsAndClassifyIdFirst(classifyIdSeconds, classifyIdFirst, offset, pageSize)
+				reports, err = report.GetListByClassifyIdSeconds(classifyIdSeconds, offset, pageSize)
 				if err != nil {
 					return
 				}
-				total, err = report.GetListCountByClassifyIdSecondsAndClassifyIdFirst(classifyIdSeconds, classifyIdFirst)
+				total, err = report.GetListCountByClassifyIdSeconds(classifyIdSeconds)
 				if err != nil {
 					errMsg = err.Error()
 					err = errors.New("查询报告总数出错")

+ 10 - 2
services/report/report_view_log.go

@@ -55,8 +55,16 @@ func BatchInsertReportView(weekReportIds []int, userId uint64, classifyNameFirst
 	var newReports []*report.Report
 	pars := make([]interface{}, 0)
 
-	condition := "state = 2 and classify_name_first = ? and publish_time > ? "
-	pars = append(pars, classifyNameFirst, firstDay)
+	var condition string
+	// 特殊处理三种分类
+	if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集"  {
+		condition = "state = 2 and publish_time > ? "
+		pars = append(pars, firstDay)
+	}else{
+		condition = "state = 2 and classify_name_first = ? and publish_time > ? "
+		pars = append(pars, classifyNameFirst, firstDay)
+	}
+
 	if classifyNameFirst == "晨报" {
 	} else if classifyNameFirst == "周报" {
 		condition += " and id in (?)"