Browse Source

fix:修改PPT和研报查询逻辑

zqbao 4 months ago
parent
commit
eae58ddf7e
3 changed files with 161 additions and 84 deletions
  1. 12 3
      controllers/ppt_report.go
  2. 11 1
      controllers/report_v2.go
  3. 138 80
      models/report.go

+ 12 - 3
controllers/ppt_report.go

@@ -266,15 +266,24 @@ func (this *PptV2Controller) ReportList() {
 			pars = append(pars, fmt.Sprint("%", keyword, "%"))
 		}
 	}
-
+	noVisibleClassifyIds, err := models.GetNoVisibleClassifyIdByAdminId(this.SysUser.AdminId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取不可见分类id失败,Err:" + err.Error()
+		return
+	}
+	if len(noVisibleClassifyIds) > 0 {
+		cond += ` AND classify_id NOT IN (?) `
+		pars = append(pars, noVisibleClassifyIds)
+	}
 	pptOb := new(models.PptV2)
-	total, e := pptOb.GetCountByConditionWithAdminId(cond, pars, this.SysUser.AdminId)
+	total, e := pptOb.GetCountByCondition(cond, pars)
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = fmt.Sprintf("获取PPT总数失败, %v", e)
 		return
 	}
-	list, e := pptOb.GetPageItemsByConditionWithAdminId(cond, pars, models.PptReportQueryFields, "modify_time DESC", this.SysUser.AdminId, startSize, pageSize)
+	list, e := pptOb.GetPageItemsByCondition(cond, pars, models.PptReportQueryFields, "modify_time DESC", startSize, pageSize)
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = fmt.Sprintf("获取PPT失败, %v", e)

+ 11 - 1
controllers/report_v2.go

@@ -79,7 +79,6 @@ func (this *ReportController) ListReport() {
 
 	var condition string
 	var pars []interface{}
-	pars = append(pars, this.SysUser.AdminId, this.SysUser.AdminId, this.SysUser.AdminId)
 	if keyWord != "" {
 		condition += ` AND (a.title LIKE ? OR a.admin_real_name LIKE ? ) `
 		pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
@@ -140,6 +139,17 @@ func (this *ReportController) ListReport() {
 		pars = append(pars, this.SysUser.AdminId, this.SysUser.AdminId)
 	}
 
+	noVisibleClassifyIds, err := models.GetNoVisibleClassifyIdByAdminId(this.SysUser.AdminId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取不可见分类id失败,Err:" + err.Error()
+		return
+	}
+	if len(noVisibleClassifyIds) > 0 {
+		condition += ` AND ( CASE WHEN a.classify_id_third > 0 THEN a.classify_id_third WHEN a.classify_id_second > 0 THEN a.classify_id_second ELSE a.classify_id_first END) NOT IN (?) `
+		pars = append(pars, noVisibleClassifyIds)
+	}
+
 	// 共享报告需要连表查询,所以需要单独写
 	if filterReportType == 2 {
 		total, err = models.GetReportListCountByGrant(condition, pars)

+ 138 - 80
models/report.go

@@ -174,26 +174,7 @@ type ReportListResp struct {
 // @return count int
 // @return err error
 func GetReportListCountV1(condition string, pars []interface{}) (count int, err error) {
-	sql := `SELECT COUNT(1) AS count  FROM report as a
-	LEFT JOIN classify_visible c ON (
-		CASE
-			WHEN a.classify_id_third > 0 THEN a.classify_id_third
-			WHEN a.classify_id_second > 0 THEN a.classify_id_second
-			ELSE a.classify_id_first
-		END 
-	) = c.classify_id AND c.admin_id =? 
-	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
-		SELECT id FROM report ta
-		JOIN classify_visible tb ON (
-			CASE
-				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
-				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
-				ELSE ta.classify_id_first
-			END 
-		) = tb.classify_id
-		GROUP BY ta."id"
-		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
-	) `
+	sql := `SELECT COUNT(1) AS count  FROM report as a WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
@@ -201,6 +182,34 @@ func GetReportListCountV1(condition string, pars []interface{}) (count int, err
 	return
 }
 
+// func GetReportListCountV1(condition string, pars []interface{}) (count int, err error) {
+// 	sql := `SELECT COUNT(1) AS count  FROM report as a
+// 	LEFT JOIN classify_visible c ON (
+// 		CASE
+// 			WHEN a.classify_id_third > 0 THEN a.classify_id_third
+// 			WHEN a.classify_id_second > 0 THEN a.classify_id_second
+// 			ELSE a.classify_id_first
+// 		END
+// 	) = c.classify_id AND c.admin_id =?
+// 	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
+// 		SELECT id FROM report ta
+// 		JOIN classify_visible tb ON (
+// 			CASE
+// 				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
+// 				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
+// 				ELSE ta.classify_id_first
+// 			END
+// 		) = tb.classify_id
+// 		GROUP BY ta."id"
+// 		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
+// 	) `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
+// 	return
+// }
+
 // GetReportListV1
 // @Description: 获取普通报告列表的数据
 // @author: Roc
@@ -212,26 +221,7 @@ func GetReportListCountV1(condition string, pars []interface{}) (count int, err
 // @return items []*ReportList
 // @return err error
 func GetReportListV1(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
-	sql := `SELECT * FROM report as a 
-	LEFT JOIN classify_visible c ON (
-		CASE
-			WHEN a.classify_id_third > 0 THEN a.classify_id_third
-			WHEN a.classify_id_second > 0 THEN a.classify_id_second
-			ELSE a.classify_id_first
-		END 
-	) = c.classify_id AND c.admin_id =? 
-	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
-		SELECT id FROM report ta
-		JOIN classify_visible tb ON (
-			CASE
-				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
-				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
-				ELSE ta.classify_id_first
-			END 
-		) = tb.classify_id
-		GROUP BY ta."id"
-		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
-	) `
+	sql := `SELECT * FROM report as a WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
@@ -243,6 +233,38 @@ func GetReportListV1(condition string, pars []interface{}, startSize, pageSize i
 	return
 }
 
+// func GetReportListV1(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
+// 	sql := `SELECT * FROM report as a
+// 	LEFT JOIN classify_visible c ON (
+// 		CASE
+// 			WHEN a.classify_id_third > 0 THEN a.classify_id_third
+// 			WHEN a.classify_id_second > 0 THEN a.classify_id_second
+// 			ELSE a.classify_id_first
+// 		END
+// 	) = c.classify_id AND c.admin_id =?
+// 	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
+// 		SELECT id FROM report ta
+// 		JOIN classify_visible tb ON (
+// 			CASE
+// 				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
+// 				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
+// 				ELSE ta.classify_id_first
+// 			END
+// 		) = tb.classify_id
+// 		GROUP BY ta."id"
+// 		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
+// 	) `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	// 排序:1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过
+// 	sql += `ORDER BY FIELD(state,3,1,4,5,6,2), modify_time DESC LIMIT ?,?`
+// 	pars = append(pars, startSize)
+// 	pars = append(pars, pageSize)
+// 	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
+// 	return
+// }
+
 type ReportPvUv struct {
 	ReportId int
 	PvTotal  int
@@ -270,36 +292,50 @@ func GetReportPvUvByReportIdList(reportIdList []int) (items []ReportPvUv, err er
 func GetReportListCountByGrant(condition string, pars []interface{}) (count int, err error) {
 	sql := `SELECT a.id  FROM report as a 
     JOIN report_grant b on a.id=b.report_id 
-	LEFT JOIN classify_visible c ON (
-		CASE
-			WHEN a.classify_id_third > 0 THEN a.classify_id_third
-			WHEN a.classify_id_second > 0 THEN a.classify_id_second
-			ELSE a.classify_id_first
-		END 
-	) = c.classify_id AND c.admin_id =? 
-	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
-		SELECT id FROM report ta
-		JOIN classify_visible tb ON (
-			CASE
-				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
-				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
-				ELSE ta.classify_id_first
-			END 
-		) = tb.classify_id
-		GROUP BY ta."id"
-		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
-	) `
+	WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
 	sql += " GROUP BY a.id "
 
 	sql = `SELECT COUNT(1) AS count  FROM (` + sql + `) d`
-
 	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
+// func GetReportListCountByGrant(condition string, pars []interface{}) (count int, err error) {
+// 	sql := `SELECT a.id  FROM report as a
+//     JOIN report_grant b on a.id=b.report_id
+// 	LEFT JOIN classify_visible c ON (
+// 		CASE
+// 			WHEN a.classify_id_third > 0 THEN a.classify_id_third
+// 			WHEN a.classify_id_second > 0 THEN a.classify_id_second
+// 			ELSE a.classify_id_first
+// 		END
+// 	) = c.classify_id AND c.admin_id =?
+// 	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
+// 		SELECT id FROM report ta
+// 		JOIN classify_visible tb ON (
+// 			CASE
+// 				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
+// 				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
+// 				ELSE ta.classify_id_first
+// 			END
+// 		) = tb.classify_id
+// 		GROUP BY ta."id"
+// 		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
+// 	) `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += " GROUP BY a.id "
+
+// 	sql = `SELECT COUNT(1) AS count  FROM (` + sql + `) d`
+
+// 	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
+// 	return
+// }
+
 // GetReportListByGrant
 // @Description: 获取共享报告列表的数据
 // @author: Roc
@@ -311,26 +347,7 @@ func GetReportListCountByGrant(condition string, pars []interface{}) (count int,
 // @return items []*ReportList
 // @return err error
 func GetReportListByGrant(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
-	sql := `SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,a.create_time,a.modify_time,a.state,a.publish_time,a.pre_publish_time,a.stage,a.msg_is_send,a.pre_msg_send,a.video_url,a.video_name,a.video_play_seconds,a.report_code,a.video_size,a.report_version,a.ths_msg_is_send,a.has_chapter,a.chapter_type,a.old_report_id,a.msg_send_time,a.admin_id,a.admin_real_name,a.approve_time,a.approve_id,a.detail_img_url,a.detail_pdf_url,a.last_modify_admin_id,a.last_modify_admin_name,a.content_modify_time,a.pv,a.uv,a.canvas_color,a.need_splice,a.head_resource_id,a.end_resource_id,a.classify_id_third,a.classify_name_third,a.collaborate_type,a.report_layout,a.is_public_publish,a.report_create_time,a.inherit_report_id,a.voice_generate_type,a.report_source FROM report as a JOIN report_grant b on a.id = b.report_id 
-	LEFT JOIN classify_visible c ON (
-		CASE
-			WHEN a.classify_id_third > 0 THEN a.classify_id_third
-			WHEN a.classify_id_second > 0 THEN a.classify_id_second
-			ELSE a.classify_id_first
-		END 
-	) = c.classify_id AND c.admin_id =? 
-	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
-		SELECT id FROM report ta
-		JOIN classify_visible tb ON (
-			CASE
-				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
-				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
-				ELSE ta.classify_id_first
-			END 
-		) = tb.classify_id
-		GROUP BY ta."id"
-		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
-	) `
+	sql := `SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,a.create_time,a.modify_time,a.state,a.publish_time,a.pre_publish_time,a.stage,a.msg_is_send,a.pre_msg_send,a.video_url,a.video_name,a.video_play_seconds,a.report_code,a.video_size,a.report_version,a.ths_msg_is_send,a.has_chapter,a.chapter_type,a.old_report_id,a.msg_send_time,a.admin_id,a.admin_real_name,a.approve_time,a.approve_id,a.detail_img_url,a.detail_pdf_url,a.last_modify_admin_id,a.last_modify_admin_name,a.content_modify_time,a.pv,a.uv,a.canvas_color,a.need_splice,a.head_resource_id,a.end_resource_id,a.classify_id_third,a.classify_name_third,a.collaborate_type,a.report_layout,a.is_public_publish,a.report_create_time,a.inherit_report_id,a.voice_generate_type,a.report_source FROM report as a JOIN report_grant b on a.id = b.report_id  WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
@@ -351,6 +368,47 @@ func GetReportListByGrant(condition string, pars []interface{}, startSize, pageS
 	return
 }
 
+// func GetReportListByGrant(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
+// 	sql := `SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,a.create_time,a.modify_time,a.state,a.publish_time,a.pre_publish_time,a.stage,a.msg_is_send,a.pre_msg_send,a.video_url,a.video_name,a.video_play_seconds,a.report_code,a.video_size,a.report_version,a.ths_msg_is_send,a.has_chapter,a.chapter_type,a.old_report_id,a.msg_send_time,a.admin_id,a.admin_real_name,a.approve_time,a.approve_id,a.detail_img_url,a.detail_pdf_url,a.last_modify_admin_id,a.last_modify_admin_name,a.content_modify_time,a.pv,a.uv,a.canvas_color,a.need_splice,a.head_resource_id,a.end_resource_id,a.classify_id_third,a.classify_name_third,a.collaborate_type,a.report_layout,a.is_public_publish,a.report_create_time,a.inherit_report_id,a.voice_generate_type,a.report_source FROM report as a JOIN report_grant b on a.id = b.report_id
+// 	LEFT JOIN classify_visible c ON (
+// 		CASE
+// 			WHEN a.classify_id_third > 0 THEN a.classify_id_third
+// 			WHEN a.classify_id_second > 0 THEN a.classify_id_second
+// 			ELSE a.classify_id_first
+// 		END
+// 	) = c.classify_id AND c.admin_id =?
+// 	WHERE 1=1 AND (c.admin_id IS NULL OR c.admin_id =?) AND a.id NOT IN (
+// 		SELECT id FROM report ta
+// 		JOIN classify_visible tb ON (
+// 			CASE
+// 				WHEN ta.classify_id_third > 0 THEN ta.classify_id_third
+// 				WHEN ta.classify_id_second > 0 THEN ta.classify_id_second
+// 				ELSE ta.classify_id_first
+// 			END
+// 		) = tb.classify_id
+// 		GROUP BY ta."id"
+// 		HAVING SUM(CASE WHEN tb.admin_id = ? THEN 1 ELSE 0 END) = 0
+// 	) `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	// 排序:1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过
+// 	sql += ` GROUP BY a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,a.create_time,a.modify_time,a.state,a.publish_time,a.pre_publish_time,a.stage,a.msg_is_send,a.pre_msg_send,a.video_url,a.video_name,a.video_play_seconds,a.report_code,a.video_size,a.report_version,a.ths_msg_is_send,a.has_chapter,a.chapter_type,a.old_report_id,a.msg_send_time,a.admin_id,a.admin_real_name,a.approve_time,a.approve_id,a.detail_img_url,a.detail_pdf_url,a.last_modify_admin_id,a.last_modify_admin_name,a.content_modify_time,a.pv,a.uv,a.canvas_color,a.need_splice,a.head_resource_id,a.end_resource_id,a.classify_id_third,a.classify_name_third,a.collaborate_type,a.report_layout,a.is_public_publish,a.report_create_time,a.inherit_report_id,a.voice_generate_type,a.report_source
+
+// 		ORDER BY CASE a."state"
+//         WHEN 3 THEN 1
+//         WHEN 1 THEN 2
+//         WHEN 4 THEN 3
+//         WHEN 5 THEN 4
+//         WHEN 6 THEN 5
+//         ELSE 6
+//     END, a.modify_time DESC LIMIT ?,?`
+// 	pars = append(pars, startSize)
+// 	pars = append(pars, pageSize)
+// 	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
+// 	return
+// }
+
 func GetReportListCount(condition string, pars []interface{}) (count int, err error) {
 	sql := `SELECT COUNT(1) AS count  FROM report WHERE 1=1 `
 	if condition != "" {